#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menuconfig PM
	bool "Power management (PM) driver interfaces"
	default n
	---help---
		Power management (PM) driver interfaces.  These interfaces are used
		to manage power usage of a platform by monitoring driver activity
		and by placing drivers into reduce power usage modes when the
		drivers are not active.

if PM

config PM_SLICEMS
	int "PM time slice (msec)"
	default 100
	---help---
		The power management module collects activity counts in time slices.
		At the end of the time slice, the count accumulated during that
		interval is applied to an averaging algorithm to determine the
		activity level.

		CONFIG_PM_SLICEMS provides the duration of that time slice in
		milliseconds.  Default: 100 Milliseconds

config PM_NDOMAINS
	int "Number of PM activity domains"
	default 1
	---help---
		Defines the number of "domains" that activity may be monitored on.
		For example, you may want to separately manage the power from the
		Network domain, shutting down the network when it is not be used,
		from the UI domain, shutting down the UI when it is not in use.

config PM_MEMORY
	int "PM memory (msec)"
	default 2
	range 1 6
	---help---
		The averaging algorithm is simply: Y = (An*X + SUM(Ai*Yi))/SUM(Aj),
		where i = 1..n-1 and j= 1..n, n is the length of the "memory",
		Ai is the weight applied to each value, and X is the current
		activity.  These weights may be negative and a limited to the
		range of int16_t.

			CONFIG_PM_MEMORY provides the memory for the algorithm.  Default: 2
			CONFIG_PM_COEFn provides weight for each sample.  Default: 1

		Setting CONFIG_PM_MEMORY=1 disables all smoothing.

config PM_COEFN
	int "PM coefficient"
	default 1
	---help---
		See help associated with CONFIG_PM_MEMORY.

config PM_COEF1
	int "PM coefficient 1"
	default 1
	---help---
		See help associated with CONFIG_PM_MEMORY.

config PM_COEF2
	int "PM coefficient 2"
	default 1
	---help---
		See help associated with CONFIG_PM_MEMORY

		Ignored if CONFIG_PM_MEMORY <= 2

config PM_COEF3
	int "PM coefficient 3"
	default 1
	---help---
		See help associated with CONFIG_PM_MEMORY

		 Ignored if CONFIG_PM_MEMORY <= 3

config PM_COEF4
	int "PM coefficient 4"
	default 1
	---help---
		See help associated with CONFIG_PM_MEMORY

		Ignored if CONFIG_PM_MEMORY <= 4

config PM_COEF5
	int "PM coefficient 5"
	default 1
	---help---
		See help associated with CONFIG_PM_MEMORY

		Ignored if CONFIG_PM_MEMORY <= 5

config PM_IDLEENTER_THRESH
	int "PM IDLE enter threshold"
	default 1
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: <=1: Essentially no activity

config PM_IDLEEXIT_THRESH
	int "PM IDLE exit threshold"
	default 2
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: >=2: Active

config PM_IDLEENTER_COUNT
	int "PM IDLE enter count"
	default 30
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: Thirty IDLE slices to enter IDLE mode from normal

config PM_STANDBYENTER_THRESH
	int "PM STANDBY enter threshold"
	default 1
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: <=1: Essentially no activity

config PM_STANDBYEXIT_THRESH
	int "PM STANDBY exit threshold"
	default 2
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: >=2: Active

config PM_STANDBYENTER_COUNT
	int "PM STANDBY enter count"
	default 50
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: Fifty IDLE slices to enter STANDBY mode from IDLE

config PM_SLEEPENTER_THRESH
	int "PM SLEEP enter threshold"
	default 1
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: <=1: Essentially no activity

config PM_SLEEPEXIT_THRESH
	int "PM SLEEP exit threshold"
	default 2
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: >=2: Active

config PM_SLEEPENTER_COUNT
	int "PM SLEEP enter count"
	default 70
	---help---
		State changes then occur when the weight activity account crosses
		threshold values for certain periods of time (time slice count).

			CONFIG_PM_xxxENTER_THRESH is the threshold value for entering state xxx.
			CONFIG_PM_xxxENTER_COUNT is the count for entering state xxx.

		Resuming to normal state, on the other hand, is usually immediate and
		controlled by wakeup conditions established by the platform.  The PM

		Default: Fifty IDLE slices to enter SLEEP mode from STANDBY

endif # PM

menuconfig POWER
	bool "Power Management Support"
	default n
	---help---
		Enable building of power-related devices (battery monitors, chargers,
		etc).

if POWER

config BATTERY_CHARGER
	bool "Battery Charger support"
	default n

config BQ2425X
	bool "BQ2425X Battery charger support"
	default n
	select I2C
	select I2C_BQ2425X
	depends on BATTERY_CHARGER
	---help---
		The BQ24250/BQ24251 are battery charger for lithium-ion batteries.

config BATTERY_GAUGE
	bool "Battery Fuel Gauge support"
	default n
	
config MAX1704X
	bool "MAX1704X Battery fuel gauge support"
	default n
	select I2C
	select I2C_MAX1704X
	depends on BATTERY_GAUGE
	---help---
		The MAX17040/MAX17041 are ultra-compact, low-cost, host-side fuel-gauge
		systems for lithium-ion (Li+) batteries in handheld and portable equipment.
		The MAX17040 is configured to operate with a single lithium cell and the
		MAX17041 is configured for a dual-cell 2S pack.

config I2C_BQ2425X
	bool
	default y if BQ2425X

config I2C_MAX1704X
	bool
	default y if MAX1704X

endif # POWER
