# Copyright (c) 2014-2015 Wind River Systems, Inc. # Copyright (c) 2016 Intel Corporation # SPDX-License-Identifier: Apache-2.0 menu "Power Management" config HAS_PM bool help This option must be selected by SoCs that provide PM hooks, that is, calls to configure low-power states. config PM bool "System Power Management" depends on SYS_CLOCK_EXISTS && HAS_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. rsource "policy/Kconfig" 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. config PM_S2RAM bool "Suspend-to-RAM (S2RAM)" depends on ARCH_HAS_SUSPEND_TO_RAM help This option enables suspend-to-RAM (S2RAM). config PM_S2RAM_CUSTOM_MARKING bool "Use custom marking functions" depends on PM_S2RAM help By default a magic word in RAM is used to mark entering suspend-to-RAM. Enabling this option allows custom implementation of functions which handle the marking. config PM_NEED_ALL_DEVICES_IDLE bool "System Low Power Mode Needs All Devices Idle" depends on PM_DEVICE && !SMP help When this option is enabled, check that no devices are busy before entering into system low power mode. choice PM_PREWAKEUP_CONV_MODE prompt "Pre-wakeup microseconds to ticks conversion method" default PM_PREWAKEUP_CONV_MODE_NEAR help Exit latency for each power state is given in microseconds. It is converted to ticks and system clock is set to wake up the core earlier before scheduled wake up. This option specifies rounding that is used when converting exit latency from microseconds to system ticks. config PM_PREWAKEUP_CONV_MODE_NEAR bool "Nearest" config PM_PREWAKEUP_CONV_MODE_CEIL bool "Round up" config PM_PREWAKEUP_CONV_MODE_FLOOR bool "Round down" endchoice endif # PM config PM_DEVICE bool "Device Power Management" help This option enables the device power management interface. The interface implemented by device drivers are called by the power management subsystem. This allows device drivers to do any necessary power management operations like turning off device clocks and peripherals. 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 Domain" depends on PM_DEVICE_POWER_DOMAIN && DEVICE_DEPS_DYNAMIC 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" select EVENTS 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. if PM_DEVICE_RUNTIME config PM_DEVICE_DRIVER_NEEDS_DEDICATED_WQ bool config PM_DEVICE_RUNTIME_ASYNC bool "Asynchronous device runtime power management" default y help Use this option to enable support for asynchronous operation in the power management device runtime. if PM_DEVICE_RUNTIME_ASYNC choice PM_DEVICE_RUNTIME_WQ prompt "Work queue to be used by pm device runtime async" default PM_DEVICE_RUNTIME_USE_DEDICATED_WQ if PM_DEVICE_DRIVER_NEEDS_DEDICATED_WQ default PM_DEVICE_RUNTIME_USE_SYSTEM_WQ config PM_DEVICE_RUNTIME_USE_SYSTEM_WQ bool "Use the system workqueue" help When this option is enabled the power management subsystem will use the system worqueue instead of defining its own queue. config PM_DEVICE_RUNTIME_USE_DEDICATED_WQ bool "Use a dedicated workqueue" help When this option is enabled the power management subsystem will use a dedicated worqueue instead of the system work queue. if PM_DEVICE_RUNTIME_USE_DEDICATED_WQ config PM_DEVICE_RUNTIME_DEDICATED_WQ_STACK_SIZE int "Stack size for pm runtime async workqueue" default 1024 help Defines the size of the stack on the workqueue used for async operations. config PM_DEVICE_RUNTIME_DEDICATED_WQ_PRIO int "PM device runtime workqueue priority. Should be pre-emptible." default SYSTEM_WORKQUEUE_PRIORITY if PM_DEVICE_RUNTIME_USE_SYSTEM_WQ default 0 config PM_DEVICE_RUNTIME_DEDICATED_WQ_INIT_PRIO int "PM device runtime workqueue init priority" default 50 help Init priority level to setup the device runtime workqueue. endif #PM_DEVICE_RUNTIME_USE_DEDICATED_WQ endchoice endif # PM_DEVICE_RUNTIME_ASYNC endif # PM_DEVICE_RUNTIME config PM_DEVICE_SHELL bool "Device Power Management shell" depends on SHELL help Enable the device power management shell, for triggering device power management events through the shell interface. config PM_DEVICE_SYSTEM_MANAGED bool "System-Managed Device Power Management" default y if !PM_DEVICE_RUNTIME help This option enables the system-managed device power management. The power management subsystem will suspend devices before entering a low power state. Conversely, after the core wakes up from low power mode all suspended devices are resumed. endif # PM_DEVICE endmenu