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

menuconfig SYS_POWER_MANAGEMENT
	bool "System Power management"
	select TICKLESS_IDLE
	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 SYS_POWER_MANAGEMENT
choice POWER_MANAGEMENT_CONTROL
	prompt "Power Management Control"
	default PM_CONTROL_APP
	help
	  Select the Application managed or OS managed power saving
	  mechanism.

config PM_CONTROL_APP
	bool
	prompt "Handled at Application level"
	help
	  This option enables the Application to handle all the Power
	  Management flows for the platform.

config PM_CONTROL_OS
	bool
	prompt "Handle at OS level"
	help
	  This option allows the OS to handle all the Power
	  Management flows for the platform.

endchoice # POWER_MANAGEMENT_CONTROL

config SYS_POWER_LOW_POWER_STATES
	bool "Low Power states"
	depends on SYS_POWER_LOW_POWER_STATES_SUPPORTED
	help
	  This option enables the kernel to interface with a power manager
	  application.  This permits the system to enter a custom CPU low power
	  state when the kernel becomes idle. The low power state could be any of
	  the CPU low power states supported by the processor.  Generally the one
	  saving most power.

config SYS_POWER_DEEP_SLEEP_STATES
	bool "Deep Sleep states"
	depends on SYS_POWER_DEEP_SLEEP_STATES_SUPPORTED
	help
	  This option enables the kernel to interface with a power manager
	  application. This permits the system to enter a Deep sleep state
	  supported by the SOC where the system clock is turned off while RAM is
	  retained. This state would be entered when the kernel becomes idle for
	  extended periods and would have a high wake latency.  Resume would be
	  from the reset vector same as cold boot. The interface allows
	  restoration of states that were saved at the time of suspend.

endif # SYS_POWER_MANAGEMENT

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