#
# ACPI INT340x thermal drivers configuration
#

config INT340X_THERMAL
	tristate "ACPI INT340X thermal drivers"
	depends on X86 && ACPI
	select THERMAL_GOV_USER_SPACE
	select ACPI_THERMAL_REL
	select ACPI_FAN
	select INTEL_SOC_DTS_IOSF_CORE
	help
	  Newer laptops and tablets that use ACPI may have thermal sensors and
	  other devices with thermal control capabilities outside the core
	  CPU/SOC, for thermal safety reasons.
	  They are exposed for the OS to use via the INT3400 ACPI device object
	  as the master, and INT3401~INT340B ACPI device objects as the slaves.
	  Enable this to expose the temperature information and cooling ability
	  from these objects to userspace via the normal thermal framework.
	  This means that a wide range of applications and GUI widgets can show
	  the information to the user or use this information for making
	  decisions. For example, the Intel Thermal Daemon can use this
	  information to allow the user to select his laptop to run without
	  turning on the fans.

config ACPI_THERMAL_REL
	tristate
	depends on ACPI

if INT340X_THERMAL

config INT3406_THERMAL
	tristate "ACPI INT3406 display thermal driver"
	depends on ACPI_VIDEO
	help
	  The display thermal device represents the LED/LCD display panel
	  that may or may not include touch support. The main function of
	  the display thermal device is to allow control of the display
	  brightness in order to address a thermal condition or to reduce
	  power consumed by display device.

endif
