mt_spm_idle.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef _MT_SPM_IDLE_
  2. #define _MT_SPM_IDLE_
  3. #include <linux/kernel.h>
  4. #include "mt_spm.h"
  5. #include "mt_spm_sleep.h"
  6. #include <mach/mt_gpt.h>
  7. #define TAG "SPM-Idle"
  8. #define spm_idle_err(fmt, args...) pr_emerg(TAG fmt, ##args)
  9. #define spm_idle_warn(fmt, args...) pr_warn(TAG fmt, ##args)
  10. #define spm_idle_dbg(fmt, args...) pr_notice(TAG fmt, ##args)
  11. #define spm_idle_info(fmt, args...) pr_info(TAG fmt, ##args)
  12. #define spm_idle_ver(fmt, args...) pr_debug(TAG fmt, ##args)
  13. /*
  14. * for Deep Idle
  15. */
  16. void spm_dpidle_before_wfi(void); /* can be redefined */
  17. void spm_dpidle_after_wfi(void); /* can be redefined */
  18. wake_reason_t spm_go_to_dpidle(u32 spm_flags, u32 spm_data, u32 dump_log);
  19. wake_reason_t spm_go_to_sleep_dpidle(u32 spm_flags, u32 spm_data);
  20. int spm_set_dpidle_wakesrc(u32 wakesrc, bool enable, bool replace);
  21. void spm_deepidle_init(void);
  22. /* #define SPM_DEEPIDLE_PROFILE_TIME */
  23. #ifdef SPM_DEEPIDLE_PROFILE_TIME
  24. #define SPM_PROFILE_APXGPT GPT2
  25. extern unsigned int dpidle_profile[4];
  26. #endif
  27. #define DEEPIDLE_LOG_NONE 0
  28. #define DEEPIDLE_LOG_REDUCED 1
  29. #define DEEPIDLE_LOG_FULL 2
  30. /*
  31. * for Screen On Deep Idle
  32. */
  33. void soidle_before_wfi(int cpu);
  34. void soidle_after_wfi(int cpu);
  35. void spm_go_to_sodi(u32 spm_flags, u32 spm_data);
  36. void spm_sodi_lcm_video_mode(bool IsLcmVideoMode);
  37. void spm_sodi_mempll_pwr_mode(bool pwr_mode);
  38. void spm_enable_sodi(bool);
  39. bool spm_get_sodi_en(void);
  40. void spm_sodi_init(void);
  41. /* #define SPM_SODI_PROFILE_TIME */
  42. #ifdef SPM_SODI_PROFILE_TIME
  43. #define SPM_SODI_PROFILE_APXGPT GPT2
  44. #endif
  45. /*
  46. * for Multi Core Deep Idle
  47. */
  48. enum spm_mcdi_lock_id {
  49. SPM_MCDI_IDLE = 0,
  50. SPM_MCDI_VCORE_DVFS,
  51. SPM_MCDI_EARLY_SUSPEND,
  52. };
  53. int spm_mcdi_init(void);
  54. void spm_mcdi_wakeup_all_cores(void);
  55. void spm_mcdi_switch_on_off(enum spm_mcdi_lock_id id, int mcdi_en);
  56. bool spm_mcdi_wfi(int core_id);
  57. bool spm_mcdi_can_enter(void);
  58. bool spm_is_cpu_irq_occur(int core_id);
  59. #endif