# Copyright (c) 2014-2015 Wind River Systems, Inc.
# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menu "Power Management"

config SYS_POWER_MANAGEMENT
	bool "System Power management"
	select PM
	help
	  This option is deprecated. Please use CONFIG_PM instead.

menuconfig PM
	bool "System Power management"
	select TICKLESS_IDLE
	depends on SYS_CLOCK_EXISTS && !HAS_NO_SYS_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

config PM_STATE_LOCK
	bool "Power State locking capability"
	help
	  Enable Power Management system state locking capability
	  if any application wants to temporarily disable certain
	  Power States while doing any critical work or needs quick
	  response from hardware resources.

config PM_DIRECT_FORCE_MODE
	bool "System power management direct force trigger mode"
	help
	  Enable system power management direct force trigger mode. In
	  this mode application thread can directly put system in sleep
	  or deep sleep mode instead of waiting for idle thread to do
	  it, so that it can reduce latency to enter low power mode.

config PM_DEBUG
	bool "System Power Management debug hooks"
	help
	  Enable System Power Management debugging hooks.

source "subsys/power/policy/Kconfig"

module = PM
module-str = System Power Management
source "subsys/logging/Kconfig.template.log_config"


endif # PM

config HAS_NO_SYS_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.

config DEVICE_POWER_MANAGEMENT
	bool "Device Power Management"
	select PM_DEVICE
	help
	  This option is deprecated, please use CONFIG_PM_DEVICE instead.

config PM_MAX_DEVICES
	int "Max number of devices support power management"
	depends on PM_DEVICE
	default 15

config PM_DEVICE_IDLE
	bool "Device Idle Power Management"
	depends on PM_DEVICE
	select POLL
	help
	  Enable device Idle Power Management to save power.
	  With device Idle PM enabled, devices can be suspended or
	  resumed based on the device usage even while the CPU or
	  system is running.
endmenu
