| # Copyright (c) 2014-2015 Wind River Systems, Inc. |
| # Copyright (c) 2016 Intel Corporation |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menu "Power Management" |
| |
| menuconfig PM |
| bool "System Power Management" |
| depends on SYS_CLOCK_EXISTS && !HAS_NO_PM |
| help |
| This option enables the board to implement extra power management |
| policies whenever the kernel becomes idle. The kernel informs the |
| power management subsystem of the number of ticks until the next kernel |
| timer is due to expire. |
| |
| if PM |
| |
| module = PM |
| module-str = System Power Management |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| config PM_STATS |
| bool "System Power Management Stats" |
| depends on STATS |
| help |
| Enable System Power Management Stats. |
| |
| choice PM_POLICY |
| prompt "Idle State Power Management Policy" |
| default PM_POLICY_DEFAULT |
| help |
| Select the idle state power management policy. |
| |
| config PM_POLICY_DEFAULT |
| bool "Default PM policy" |
| help |
| This option selects the default PM policy. Default policy is based |
| on CPU residency times and other constraints imposed by the drivers or |
| application. |
| |
| config PM_POLICY_CUSTOM |
| bool "Custom PM Policy" |
| help |
| This options allows applications to override the default policy with |
| a custom implementation. |
| |
| endchoice |
| |
| endif # PM |
| |
| config HAS_NO_PM |
| bool |
| help |
| This option blocks selection of PM. It can be selected in SOC |
| targets where system power management is not supported, for example |
| on support core of a multi-core device where SoC power management is |
| the responsibility of a different core. |
| |
| config PM_DEVICE |
| bool "Device Power Management" |
| help |
| This option enables the device power management interface. The |
| interface consists of hook functions implemented by device drivers |
| that get called by the power manager application when the system |
| is going to suspend state or resuming from suspend state. This allows |
| device drivers to do any necessary power management operations |
| like turning off device clocks and peripherals. The device drivers |
| may also save and restore states in these hook functions. |
| |
| if PM_DEVICE |
| |
| module = PM_DEVICE |
| module-str = Device Power Management |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| config PM_DEVICE_POWER_DOMAIN |
| bool "Power domain" |
| depends on PM_DEVICE |
| default y |
| help |
| Enable support for Power Domain. With power domain enabled, |
| devices that depend on a domain will be notified when this |
| domain is suspended or resumed. |
| |
| config PM_DEVICE_POWER_DOMAIN_DYNAMIC |
| bool "Dynamically bind devices to a Power Pomain" |
| depends on PM_DEVICE_POWER_DOMAIN |
| select HAS_DYNAMIC_DEVICE_HANDLES |
| help |
| Enable support for dynamically bind devices to a Power Domain. |
| |
| config PM_DEVICE_POWER_DOMAIN_DYNAMIC_NUM |
| int "Number of devices that can dynamically be bind to a Power Domain" |
| depends on PM_DEVICE_POWER_DOMAIN_DYNAMIC |
| default 1 |
| help |
| The number of devices that can dynamically be bind to a Power Domain. |
| |
| config PM_DEVICE_RUNTIME |
| bool "Runtime Device Power Management" |
| help |
| Enable Runtime Power Management to save power. With device runtime PM |
| enabled, devices can be suspended or resumed based on the device |
| usage even while the CPU or system is running. |
| |
| config PM_DEVICE_RUNTIME_EXCLUSIVE |
| depends on PM_DEVICE_RUNTIME |
| bool "Use only on Runtime Power Management on system suspend / resume" |
| default y |
| help |
| On system suspend / resume do not trigger the Device PM hooks but |
| only rely on Runtime PM to manage the devices power states. |
| |
| endif # PM_DEVICE |
| |
| endmenu |