Lines Matching refs:power
94 dev->power.is_prepared = false; in device_pm_sleep_init()
95 dev->power.is_suspended = false; in device_pm_sleep_init()
96 dev->power.is_noirq_suspended = false; in device_pm_sleep_init()
97 dev->power.is_late_suspended = false; in device_pm_sleep_init()
98 init_completion(&dev->power.completion); in device_pm_sleep_init()
99 complete_all(&dev->power.completion); in device_pm_sleep_init()
100 dev->power.wakeup = NULL; in device_pm_sleep_init()
101 INIT_LIST_HEAD(&dev->power.entry); in device_pm_sleep_init()
130 if (dev->parent && dev->parent->power.is_prepared) in device_pm_add()
133 list_add_tail(&dev->power.entry, &dpm_list); in device_pm_add()
134 dev->power.in_dpm_list = true; in device_pm_add()
146 complete_all(&dev->power.completion); in device_pm_remove()
148 list_del_init(&dev->power.entry); in device_pm_remove()
149 dev->power.in_dpm_list = false; in device_pm_remove()
167 list_move_tail(&deva->power.entry, &devb->power.entry); in device_pm_move_before()
181 list_move(&deva->power.entry, &devb->power.entry); in device_pm_move_after()
192 list_move_tail(&dev->power.entry, &dpm_list); in device_pm_move_last()
232 if (async || (pm_async_enabled && dev->power.async_suspend)) in dpm_wait()
233 wait_for_completion(&dev->power.completion); in dpm_wait()
535 dev->power.is_late_suspended = false; in dev_pm_skip_next_resume_phases()
536 dev->power.is_suspended = false; in dev_pm_skip_next_resume_phases()
566 return !dev->power.must_resume && pm_transition.event != PM_EVENT_RESTORE; in dev_pm_may_skip_resume()
625 if (dev->power.syscore || dev->power.direct_complete) in device_resume_noirq()
628 if (!dev->power.is_noirq_suspended) in device_resume_noirq()
673 dev->power.is_noirq_suspended = false; in device_resume_noirq()
688 complete_all(&dev->power.completion); in device_resume_noirq()
695 return dev->power.async_suspend && pm_async_enabled in is_async()
725 list_for_each_entry(dev, &dpm_noirq_list, power.entry) { in dpm_noirq_resume_devices()
726 reinit_completion(&dev->power.completion); in dpm_noirq_resume_devices()
736 list_move_tail(&dev->power.entry, &dpm_late_early_list); in dpm_noirq_resume_devices()
826 if (dev->power.syscore || dev->power.direct_complete) in device_resume_early()
829 if (!dev->power.is_late_suspended) in device_resume_early()
842 dev->power.is_late_suspended = false; in device_resume_early()
848 complete_all(&dev->power.completion); in device_resume_early()
882 list_for_each_entry(dev, &dpm_late_early_list, power.entry) { in dpm_resume_early()
883 reinit_completion(&dev->power.completion); in dpm_resume_early()
893 list_move_tail(&dev->power.entry, &dpm_suspended_list); in dpm_resume_early()
943 if (dev->power.syscore) in device_resume()
946 if (dev->power.direct_complete) { in device_resume()
960 dev->power.is_prepared = false; in device_resume()
962 if (!dev->power.is_suspended) in device_resume()
1002 dev->power.is_suspended = false; in device_resume()
1009 complete_all(&dev->power.completion); in device_resume()
1046 list_for_each_entry(dev, &dpm_suspended_list, power.entry) { in dpm_resume()
1047 reinit_completion(&dev->power.completion); in dpm_resume()
1072 if (!list_empty(&dev->power.entry)) in dpm_resume()
1073 list_move_tail(&dev->power.entry, &dpm_prepared_list); in dpm_resume()
1094 if (dev->power.syscore) in device_complete()
1148 dev->power.is_prepared = false; in dpm_complete()
1149 list_move(&dev->power.entry, &list); in dpm_complete()
1211 dev->parent->power.must_resume = true; in dpm_superior_set_must_resume()
1216 link->supplier->power.must_resume = true; in dpm_superior_set_must_resume()
1273 return !dev->power.may_skip_resume; in device_must_resume()
1305 if (dev->power.syscore || dev->power.direct_complete) in __device_suspend_noirq()
1330 dev->power.is_noirq_suspended = true; in __device_suspend_noirq()
1333 dev->power.must_resume = dev->power.must_resume || in __device_suspend_noirq()
1334 atomic_read(&dev->power.usage_count) > 1 || in __device_suspend_noirq()
1337 dev->power.must_resume = true; in __device_suspend_noirq()
1340 if (dev->power.must_resume) in __device_suspend_noirq()
1344 complete_all(&dev->power.completion); in __device_suspend_noirq()
1365 reinit_completion(&dev->power.completion); in device_suspend_noirq()
1407 if (!list_empty(&dev->power.entry)) in dpm_noirq_suspend_devices()
1408 list_move(&dev->power.entry, &dpm_noirq_list); in dpm_noirq_suspend_devices()
1454 spin_lock_irq(&parent->power.lock); in dpm_propagate_wakeup_to_parent()
1456 if (dev->power.wakeup_path && !parent->power.ignore_children) in dpm_propagate_wakeup_to_parent()
1457 parent->power.wakeup_path = true; in dpm_propagate_wakeup_to_parent()
1459 spin_unlock_irq(&parent->power.lock); in dpm_propagate_wakeup_to_parent()
1520 if (dev->power.syscore || dev->power.direct_complete) in __device_suspend_late()
1545 dev->power.is_late_suspended = true; in __device_suspend_late()
1549 complete_all(&dev->power.completion); in __device_suspend_late()
1568 reinit_completion(&dev->power.completion); in device_suspend_late()
1602 if (!list_empty(&dev->power.entry)) in dpm_suspend_late()
1603 list_move(&dev->power.entry, &dpm_late_early_list); in dpm_suspend_late()
1682 spin_lock_irq(&dev->parent->power.lock); in dpm_clear_superiors_direct_complete()
1683 dev->parent->power.direct_complete = false; in dpm_clear_superiors_direct_complete()
1684 spin_unlock_irq(&dev->parent->power.lock); in dpm_clear_superiors_direct_complete()
1690 spin_lock_irq(&link->supplier->power.lock); in dpm_clear_superiors_direct_complete()
1691 link->supplier->power.direct_complete = false; in dpm_clear_superiors_direct_complete()
1692 spin_unlock_irq(&link->supplier->power.lock); in dpm_clear_superiors_direct_complete()
1717 dev->power.direct_complete = false; in __device_suspend()
1731 dev->power.direct_complete = false; in __device_suspend()
1736 if (dev->power.syscore) in __device_suspend()
1739 if (dev->power.direct_complete) { in __device_suspend()
1747 dev->power.direct_complete = false; in __device_suspend()
1750 dev->power.may_skip_resume = false; in __device_suspend()
1751 dev->power.must_resume = false; in __device_suspend()
1796 dev->power.is_suspended = true; in __device_suspend()
1798 dev->power.wakeup_path = true; in __device_suspend()
1811 complete_all(&dev->power.completion); in __device_suspend()
1832 reinit_completion(&dev->power.completion); in device_suspend()
1875 if (!list_empty(&dev->power.entry)) in dpm_suspend()
1876 list_move(&dev->power.entry, &dpm_suspended_list); in dpm_suspend()
1907 if (dev->power.syscore) in device_prepare()
1924 dev->power.wakeup_path = false; in device_prepare()
1926 if (dev->power.no_pm_callbacks) in device_prepare()
1959 spin_lock_irq(&dev->power.lock); in device_prepare()
1960 dev->power.direct_complete = state.event == PM_EVENT_SUSPEND && in device_prepare()
1962 dev->power.no_pm_callbacks) && in device_prepare()
1964 spin_unlock_irq(&dev->power.lock); in device_prepare()
2019 dev->power.is_prepared = true; in dpm_prepare()
2020 if (!list_empty(&dev->power.entry)) in dpm_prepare()
2021 list_move_tail(&dev->power.entry, &dpm_prepared_list); in dpm_prepare()
2064 dpm_wait(dev, subordinate->power.async_suspend); in device_pm_wait_for_dev()
2085 list_for_each_entry(dev, &dpm_list, power.entry) in dpm_for_each_dev()
2108 spin_lock_irq(&dev->power.lock); in device_pm_check_callbacks()
2109 dev->power.no_pm_callbacks = in device_pm_check_callbacks()
2117 spin_unlock_irq(&dev->power.lock); in device_pm_check_callbacks()