#
# Generic thermal sysfs drivers configuration
#

menuconfig THERMAL
	tristate "Generic Thermal sysfs driver"
	help
	  Generic Thermal Sysfs driver offers a generic mechanism for
	  thermal management. Usually it's made up of one or more thermal
	  zone and cooling device.
	  Each thermal zone contains its own temperature, trip points,
	  cooling devices.
	  All platforms with ACPI thermal support can use this driver.
	  If you want this support, you should say Y or M here.

if THERMAL

config THERMAL_HWMON
	bool
	depends on HWMON=y || HWMON=THERMAL
	default y

choice
	prompt "Default Thermal governor"
	default THERMAL_DEFAULT_GOV_STEP_WISE
	help
	  This option sets which thermal governor shall be loaded at
	  startup. If in doubt, select 'step_wise'.

config THERMAL_DEFAULT_GOV_STEP_WISE
	bool "step_wise"
	select THERMAL_GOV_STEP_WISE
	help
	  Use the step_wise governor as default. This throttles the
	  devices one step at a time.

config THERMAL_DEFAULT_GOV_FAIR_SHARE
	bool "fair_share"
	select THERMAL_GOV_FAIR_SHARE
	help
	  Use the fair_share governor as default. This throttles the
	  devices based on their 'contribution' to a zone. The
	  contribution should be provided through platform data.

config THERMAL_DEFAULT_GOV_USER_SPACE
	bool "user_space"
	select THERMAL_GOV_USER_SPACE
	help
	  Select this if you want to let the user space manage the
	  lpatform thermals.

endchoice

config THERMAL_GOV_FAIR_SHARE
	bool "Fair-share thermal governor"
	help
	  Enable this to manage platform thermals using fair-share governor.

config THERMAL_GOV_STEP_WISE
	bool "Step_wise thermal governor"
	help
	  Enable this to manage platform thermals using a simple linear

config THERMAL_GOV_USER_SPACE
	bool "User_space thermal governor"
	help
	  Enable this to let the user space manage the platform thermals.

config CPU_THERMAL
	bool "generic cpu cooling support"
	depends on CPU_FREQ
	help
	  This implements the generic cpu cooling mechanism through frequency
	  reduction. An ACPI version of this already exists
	  (drivers/acpi/processor_thermal.c).
	  This will be useful for platforms using the generic thermal interface
	  and not the ACPI interface.

	  If you want this support, you should say Y here.

config THERMAL_EMULATION
	bool "Thermal emulation mode support"
	help
	  Enable this option to make a emul_temp sysfs node in thermal zone
	  directory to support temperature emulation. With emulation sysfs node,
	  user can manually input temperature and test the different trip
	  threshold behaviour for simulation purpose.

	  WARNING: Be careful while enabling this option on production systems,
	  because userland can easily disable the thermal policy by simply
	  flooding this sysfs node with low temperature values.

config THERMAL_TSENS8974
	tristate "Qualcomm 8974 TSENS Temperature driver"
	depends on THERMAL
	help
	  This enables the thermal sysfs driver for the TSENS device. It shows
	  up in Sysfs as a thermal zone with multiple trip points. Also able
	  to set threshold temperature for both warm and cool and update
	  thermal userspace client when a threshold is reached. Warm/Cool
	  temperature thresholds can be set independently for each sensor.

config LIMITS_MONITOR
	bool "LMH monitor driver"
	depends on THERMAL
	help
	  Enable this to manage the limits hardware for interrupts, throttling
	  intensities, and LMH device profiles. This driver also registers the
	  Limits hardware's monitoring entities as sensors with the thermal
	  framework.

config LIMITS_LITE_HW
	bool "LMH Lite hardware driver"
	depends on LIMITS_MONITOR
	help
	 Enable this option for interacting with LMH Lite hardware. This
	 implements the APIs required for getting the details about sensors
	 supported by LMH Lite, their throttling intensity and the operating
	 profiles.

config THERMAL_MONITOR
	bool "Monitor thermal state and limit CPU Frequency"
	depends on THERMAL_TSENS8960 || THERMAL_TSENS8974
	depends on CPU_FREQ || CPU_FREQ_MSM
	default n
	help
	  This enables thermal monitoring capability in the kernel in the
	  absence of a system wide thermal monitoring entity or until such an
	  entity starts running in the userspace. Monitors TSENS temperature
	  and limits the max frequency of the cores.

config SUPPLY_LM_MONITOR
	bool "SUPPLY current monitor driver"
	depends on THERMAL && PM_OPP && CPU_FREQ
	help
	 This enables to monitor power states of different HW blocks
	 including cpu, gpu and modem, number of cores online and SoC
	 temperature. Based on these inputs, the driver throttles
	 apps subsystem.

config SPEAR_THERMAL
	bool "SPEAr thermal sensor driver"
	depends on PLAT_SPEAR
	depends on OF
	help
	  Enable this to plug the SPEAr thermal sensor driver into the Linux
	  thermal framework

config RCAR_THERMAL
	tristate "Renesas R-Car thermal driver"
	depends on ARCH_SHMOBILE
	help
	  Enable this to plug the R-Car thermal sensor driver into the Linux
	  thermal framework

config KIRKWOOD_THERMAL
	tristate "Temperature sensor on Marvell Kirkwood SoCs"
	depends on ARCH_KIRKWOOD
	depends on OF
	help
	  Support for the Kirkwood thermal sensor driver into the Linux thermal
	  framework. Only kirkwood 88F6282 and 88F6283 have this sensor.

config EXYNOS_THERMAL
	tristate "Temperature sensor on Samsung EXYNOS"
	depends on (ARCH_EXYNOS4 || ARCH_EXYNOS5)
	depends on CPU_THERMAL
	help
	  If you say yes here you get support for TMU (Thermal Management
	  Unit) on SAMSUNG EXYNOS series of SoC.

config DOVE_THERMAL
	tristate "Temperature sensor on Marvell Dove SoCs"
	depends on ARCH_DOVE
	depends on OF
	help
	  Support for the Dove thermal sensor driver in the Linux thermal
	  framework.

config DB8500_THERMAL
	bool "DB8500 thermal management"
	depends on ARCH_U8500
	default y
	help
	  Adds DB8500 thermal management implementation according to the thermal
	  management framework. A thermal zone with several trip points will be
	  created. Cooling devices can be bound to the trip points to cool this
	  thermal zone if trip points reached.

config ARMADA_THERMAL
	tristate "Armada 370/XP thermal management"
	depends on ARCH_MVEBU
	depends on OF
	help
	  Enable this option if you want to have support for thermal management
	  controller present in Armada 370 and Armada XP SoC.

config DB8500_CPUFREQ_COOLING
	tristate "DB8500 cpufreq cooling"
	depends on ARCH_U8500
	depends on CPU_THERMAL
	default y
	help
	  Adds DB8500 cpufreq cooling devices, and these cooling devices can be
	  bound to thermal zone trip points. When a trip point reached, the
	  bound cpufreq cooling device turns active to set CPU frequency low to
	  cool down the CPU.

config INTEL_POWERCLAMP
	tristate "Intel PowerClamp idle injection driver"
	depends on THERMAL
	depends on X86
	depends on CPU_SUP_INTEL
	help
	  Enable this to enable Intel PowerClamp idle injection driver. This
	  enforce idle time which results in more package C-state residency. The
	  user interface is exposed via generic thermal framework.

config THERMAL_QPNP
	tristate "Qualcomm Plug-and-Play PMIC Temperature Alarm"
	depends on THERMAL
	depends on OF
	depends on SPMI
	depends on OF_SPMI
	help
	  This enables a thermal Sysfs driver for Qualcomm plug-and-play (QPNP)
	  PMIC devices. It shows up in Sysfs as a thermal zone with multiple
	  trip points. The temperature reported by the thermal zone reflects the
	  real time die temperature if an ADC is present or an estimate of the
	  temperature based upon the over temperature stage value if no ADC is
	  available. If allowed via compile time configuration; enabling the
	  thermal zone device via the mode file results in shifting PMIC over
	  temperature shutdown control from hardware to software.

config THERMAL_QPNP_ADC_TM
	tristate "Qualcomm 8974 Thermal Monitor ADC Driver"
	depends on THERMAL && SPMI
	help
	  This enables the thermal Sysfs driver for the ADC thermal monitoring
	  device. It shows up in Sysfs as a thermal zone with multiple trip points.
	  Disabling the thermal zone device via the mode file results in disabling
	  the sensor. Also able to set threshold temperature for both hot and cold
	  and update when a threshold is reached.
endif
