config QCOM_TSENS
	tristate "Qualcomm TSENS Temperature Alarm"
	depends on THERMAL
	depends on QCOM_QFPROM
	depends on ARCH_QCOM || COMPILE_TEST
	help
	  This enables the thermal sysfs driver for the TSENS 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.

config MSM_BCL_PERIPHERAL_CTL
	bool "BCL driver to control the PMIC BCL peripheral"
	depends on SPMI && THERMAL_OF
	help
	  Say Y here to enable this BCL PMIC peripheral driver. This driver
	  provides routines to configure and monitor the BCL
	  PMIC peripheral. This driver registers the battery current and
	  voltage sensors with the thermal core framework and can take
	  threshold input and notify the thermal core when the threshold is
	  reached.

config QTI_THERMAL_LIMITS_DCVS
	bool "QTI LMH DCVS Driver"
	depends on THERMAL_OF
	help
	  This enables the driver for Limits Management Hardware - DCVS block
	  for the application processors. The h/w block that is available for
	  each cluster can be used to perform quick thermal mitigations by
	  tracking temperatures of the CPUs and taking thermal action in the
	  hardware without s/w intervention.

config QTI_VIRTUAL_SENSOR
	bool "QTI Virtual Sensor driver"
	depends on THERMAL_OF
	help
	  This driver has the information about the virtual sensors used by
	  QTI chipset's and registers the virtual sensors to a thermal zone.
	  The virtual sensor information includes the underlying thermal
	  sensors to query for temperature and the aggregation logic to
	  determine the virtual sensor temperature.

config QTI_AOP_REG_COOLING_DEVICE
	bool "QTI AOP Regulator cooling device"
	depends on THERMAL_OF && MSM_QMP
	help
	  This enables the AOP based Regulator cooling device. This cooling
	  device will be used by QTI chipset to place a floor voltage
	  restriction at low temperatures. The cooling device will message
	  the AOP using mail box to establish the floor voltage.

config QTI_QMI_COOLING_DEVICE
	bool "QTI QMI cooling devices"
	depends on MSM_QMI_INTERFACE && THERMAL_OF
	help
	   This enables the QTI remote subsystem cooling devices. These cooling
	   devices will be used by QTI chipset to place various remote
	   subsystem mitigations like remote processor passive mitigation,
	   remote subsystem voltage restriction at low temperatures etc.
	   The QMI cooling device will interface with remote subsystem
	   using QTI QMI interface.

config REGULATOR_COOLING_DEVICE
	bool "Regulator voltage floor cooling device"
	depends on REGULATOR && THERMAL_OF
	help
	  This implements a mitigation device to place a minimum voltage floor
	  on a particular regulator. This mitigation device will be used by low
	  temperature reliability rules to mitigate a regulator at nominal
	  voltage.

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