blob: 5b968c2756ef00b000a10225a207378063155ecc [file] [log] [blame]
# 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