Async now uses its own work queue, which means it consumes more resources. Since not all applications need the async API, we can make it optional without any penalty for those applications. Signed-off-by: Flavio Ceolin <flavio@hubblenetwork.com>
199 lines
5.8 KiB
Text
199 lines
5.8 KiB
Text
# 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
|