policy_sleep.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (c) 2018 Intel Corporation.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include <zephyr.h>
  7. #include <kernel.h>
  8. #include <pm/pm.h>
  9. static struct pm_state_info g_pm_stat_info = {
  10. .state = PM_STATE_ACTIVE,
  11. .substate_id = 0,
  12. .min_residency_us = 0,
  13. };
  14. static volatile bool b_enter_sleep;
  15. #if 0
  16. static void _sys_pm_enter_sleep(int deep)
  17. {
  18. #if defined(CONFIG_PM_DIRECT_FORCE_MODE)
  19. struct pm_state_info pm_stat;
  20. if(deep) {
  21. pm_stat.state = PM_STATE_SUSPEND_TO_RAM;
  22. pm_power_state_force(pm_stat);
  23. }else{
  24. pm_stat.state = PM_STATE_STANDBY;
  25. pm_power_state_force(pm_stat);
  26. }
  27. #endif
  28. }
  29. #endif
  30. void sys_pm_enter_deep_sleep(void)
  31. {
  32. printk("enter deep sleep\n");
  33. b_enter_sleep = true;
  34. }
  35. #if 0
  36. void sys_pm_enter_light_sleep(void)
  37. {
  38. _sys_pm_enter_sleep(0);
  39. }
  40. #endif
  41. struct pm_state_info pm_policy_next_state(int32_t ticks)
  42. {
  43. if(b_enter_sleep){
  44. b_enter_sleep = false;
  45. g_pm_stat_info.state = PM_STATE_SUSPEND_TO_RAM;
  46. //g_pm_stat_info.state = PM_STATE_STANDBY;
  47. printk("deep sleep, ticks=%d\n", ticks);
  48. }else{
  49. g_pm_stat_info.state = PM_STATE_ACTIVE;
  50. }
  51. return g_pm_stat_info;
  52. }
  53. bool pm_policy_low_power_devices(enum pm_state state)
  54. {
  55. return pm_is_sleep_state(state);
  56. }