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

menuconfig SYS_POWER_MANAGEMENT
	bool
	prompt "Power management"
	default n
	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
config SYS_POWER_LOW_POWER_STATE
	bool
	prompt "Low power state"
	default n
	depends on SYS_POWER_LOW_POWER_STATE_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
	bool
	prompt "Deep sleep state"
	default n
	depends on SYS_POWER_DEEP_SLEEP_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.

config DEVICE_POWER_MANAGEMENT
	bool
	prompt "Device power management"
	default n
	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 TICKLESS_IDLE
	bool
	prompt "Tickless idle"
	default y
	help
	This option suppresses periodic system clock interrupts whenever the
	kernel becomes idle. This permits the system to remain in a power
	saving state for extended periods without having to wake up to
	service each tick as it occurs.

config TICKLESS_IDLE_THRESH
	int
	prompt "Tickless idle threshold"
	default 3
	depends on TICKLESS_IDLE
	help
	This option enables clock interrupt suppression when the kernel idles
	for only a short period of time. It specifies the minimum number of
	ticks that must occur before the next kernel timer expires in order
	for suppression to happen.

endif
