You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
5.8 KiB
199 lines
5.8 KiB
# 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 workqueue 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 workqueue 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
|
|
|