Loading Documentation/devicetree/bindings/thermal/exynos-thermal.txt +15 −3 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ "samsung,exynos5420-tmu" for TMU channel 0, 1 on Exynos5420 "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 Exynos5420 (Must pass triminfo base and triminfo clock) "samsung,exynos5433-tmu" "samsung,exynos5440-tmu" "samsung,exynos7-tmu" - interrupt-parent : The phandle for the interrupt controller Loading Loading @@ -40,9 +41,14 @@ for current TMU channel -- "tmu_sclk" clock for functional operation of the current TMU channel - vtmu-supply: This entry is optional and provides the regulator node supplying voltage to TMU. If needed this entry can be placed inside board/platform specific dts file. The Exynos TMU supports generating interrupts when reaching given temperature thresholds. Number of supported thermal trip points depends on the SoC (only first trip points defined in DT will be configured): - most of SoC: 4 - samsung,exynos5433-tmu: 8 - samsung,exynos7-tmu: 8 Following properties are mandatory (depending on SoC): - samsung,tmu_gain: Gain value for internal TMU operation. - samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage Loading @@ -56,6 +62,12 @@ Following properties are mandatory (depending on SoC): - samsung,tmu_default_temp_offset: Default temperature offset - samsung,tmu_cal_type: Callibration type ** Optional properties: - vtmu-supply: This entry is optional and provides the regulator node supplying voltage to TMU. If needed this entry can be placed inside board/platform specific dts file. Example 1): tmu@100C0000 { Loading Documentation/devicetree/bindings/thermal/mediatek-thermal.txt 0 → 100644 +43 −0 Original line number Diff line number Diff line * Mediatek Thermal This describes the device tree binding for the Mediatek thermal controller which measures the on-SoC temperatures. This device does not have its own ADC, instead it directly controls the AUXADC via AHB bus accesses. For this reason this device needs phandles to the AUXADC. Also it controls a mux in the apmixedsys register space via AHB bus accesses, so a phandle to the APMIXEDSYS is also needed. Required properties: - compatible: "mediatek,mt8173-thermal" - reg: Address range of the thermal controller - interrupts: IRQ for the thermal controller - clocks, clock-names: Clocks needed for the thermal controller. required clocks are: "therm": Main clock needed for register access "auxadc": The AUXADC clock - resets: Reference to the reset controller controlling the thermal controller. - mediatek,auxadc: A phandle to the AUXADC which the thermal controller uses - mediatek,apmixedsys: A phandle to the APMIXEDSYS controller. - #thermal-sensor-cells : Should be 0. See ./thermal.txt for a description. Optional properties: - nvmem-cells: A phandle to the calibration data provided by a nvmem device. If unspecified default values shall be used. - nvmem-cell-names: Should be "calibration-data" Example: thermal: thermal@1100b000 { #thermal-sensor-cells = <1>; compatible = "mediatek,mt8173-thermal"; reg = <0 0x1100b000 0 0x1000>; interrupts = <0 70 IRQ_TYPE_LEVEL_LOW>; clocks = <&pericfg CLK_PERI_THERM>, <&pericfg CLK_PERI_AUXADC>; clock-names = "therm", "auxadc"; resets = <&pericfg MT8173_PERI_THERM_SW_RST>; reset-names = "therm"; mediatek,auxadc = <&auxadc>; mediatek,apmixedsys = <&apmixedsys>; nvmem-cells = <&thermal_calibration_data>; nvmem-cell-names = "calibration-data"; }; Documentation/thermal/sysfs-api.txt +68 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,74 @@ temperature) and throttle appropriate devices. It deletes the corresponding entry form /sys/class/thermal folder and unbind all the thermal cooling devices it uses. 1.1.3 struct thermal_zone_device *thermal_zone_of_sensor_register( struct device *dev, int sensor_id, void *data, const struct thermal_zone_of_device_ops *ops) This interface adds a new sensor to a DT thermal zone. This function will search the list of thermal zones described in device tree and look for the zone that refer to the sensor device pointed by dev->of_node as temperature providers. For the zone pointing to the sensor node, the sensor will be added to the DT thermal zone device. The parameters for this interface are: dev: Device node of sensor containing valid node pointer in dev->of_node. sensor_id: a sensor identifier, in case the sensor IP has more than one sensors data: a private pointer (owned by the caller) that will be passed back, when a temperature reading is needed. ops: struct thermal_zone_of_device_ops *. get_temp: a pointer to a function that reads the sensor temperature. This is mandatory callback provided by sensor driver. get_trend: a pointer to a function that reads the sensor temperature trend. set_emul_temp: a pointer to a function that sets sensor emulated temperature. The thermal zone temperature is provided by the get_temp() function pointer of thermal_zone_of_device_ops. When called, it will have the private pointer @data back. It returns error pointer if fails otherwise valid thermal zone device handle. Caller should check the return handle with IS_ERR() for finding whether success or not. 1.1.4 void thermal_zone_of_sensor_unregister(struct device *dev, struct thermal_zone_device *tzd) This interface unregisters a sensor from a DT thermal zone which was successfully added by interface thermal_zone_of_sensor_register(). This function removes the sensor callbacks and private data from the thermal zone device registered with thermal_zone_of_sensor_register() interface. It will also silent the zone by remove the .get_temp() and get_trend() thermal zone device callbacks. 1.1.5 struct thermal_zone_device *devm_thermal_zone_of_sensor_register( struct device *dev, int sensor_id, void *data, const struct thermal_zone_of_device_ops *ops) This interface is resource managed version of thermal_zone_of_sensor_register(). All details of thermal_zone_of_sensor_register() described in section 1.1.3 is applicable here. The benefit of using this interface to register sensor is that it is not require to explicitly call thermal_zone_of_sensor_unregister() in error path or during driver unbinding as this is done by driver resource manager. 1.1.6 void devm_thermal_zone_of_sensor_unregister(struct device *dev, struct thermal_zone_device *tzd) This interface is resource managed version of thermal_zone_of_sensor_unregister(). All details of thermal_zone_of_sensor_unregister() described in section 1.1.4 is applicable here. Normally this function will not need to be called and the resource management code will ensure that the resource is freed. 1.2 thermal cooling device interface 1.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name, void *devdata, struct thermal_cooling_device_ops *) Loading drivers/thermal/Kconfig +19 −2 Original line number Diff line number Diff line Loading @@ -178,6 +178,7 @@ config THERMAL_EMULATION config HISI_THERMAL tristate "Hisilicon thermal driver" depends on (ARCH_HISI && CPU_THERMAL && OF) || COMPILE_TEST depends on HAS_IOMEM help Enable this to plug hisilicon's thermal sensor driver into the Linux thermal framework. cpufreq is used as the cooling device to throttle Loading @@ -197,6 +198,7 @@ config IMX_THERMAL config SPEAR_THERMAL tristate "SPEAr thermal sensor driver" depends on PLAT_SPEAR || COMPILE_TEST depends on HAS_IOMEM depends on OF help Enable this to plug the SPEAr thermal sensor driver into the Linux Loading @@ -206,6 +208,7 @@ config ROCKCHIP_THERMAL tristate "Rockchip thermal driver" depends on ARCH_ROCKCHIP || COMPILE_TEST depends on RESET_CONTROLLER depends on HAS_IOMEM help Rockchip thermal driver provides support for Temperature sensor ADC (TS-ADC) found on Rockchip SoCs. It supports one critical Loading @@ -214,7 +217,7 @@ config ROCKCHIP_THERMAL config RCAR_THERMAL tristate "Renesas R-Car thermal driver" depends on ARCH_SHMOBILE || COMPILE_TEST depends on ARCH_RENESAS || COMPILE_TEST depends on HAS_IOMEM help Enable this to plug the R-Car thermal sensor driver into the Linux Loading @@ -223,6 +226,7 @@ config RCAR_THERMAL config KIRKWOOD_THERMAL tristate "Temperature sensor on Marvell Kirkwood SoCs" depends on MACH_KIRKWOOD || COMPILE_TEST depends on HAS_IOMEM depends on OF help Support for the Kirkwood thermal sensor driver into the Linux thermal Loading @@ -231,6 +235,7 @@ config KIRKWOOD_THERMAL config DOVE_THERMAL tristate "Temperature sensor on Marvell Dove SoCs" depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST depends on HAS_IOMEM depends on OF help Support for the Dove thermal sensor driver in the Linux thermal Loading @@ -249,6 +254,7 @@ config DB8500_THERMAL config ARMADA_THERMAL tristate "Armada 370/XP thermal management" depends on ARCH_MVEBU || COMPILE_TEST depends on HAS_IOMEM depends on OF help Enable this option if you want to have support for thermal management Loading @@ -266,7 +272,8 @@ config TEGRA_SOCTHERM config DB8500_CPUFREQ_COOLING tristate "DB8500 cpufreq cooling" depends on ARCH_U8500 depends on ARCH_U8500 || COMPILE_TEST depends on HAS_IOMEM depends on CPU_THERMAL default y help Loading Loading @@ -365,8 +372,18 @@ config INTEL_PCH_THERMAL Thermal reporting device will provide temperature reading, programmable trip points and other information. config MTK_THERMAL tristate "Temperature sensor driver for mediatek SoCs" depends on ARCH_MEDIATEK || COMPILE_TEST depends on HAS_IOMEM default y help Enable this option if you want to have support for thermal management controller present in Mediatek SoCs menu "Texas Instruments thermal drivers" depends on ARCH_HAS_BANDGAP || COMPILE_TEST depends on HAS_IOMEM source "drivers/thermal/ti-soc-thermal/Kconfig" endmenu Loading drivers/thermal/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -48,3 +48,4 @@ obj-$(CONFIG_INTEL_PCH_THERMAL) += intel_pch_thermal.o obj-$(CONFIG_ST_THERMAL) += st/ obj-$(CONFIG_TEGRA_SOCTHERM) += tegra_soctherm.o obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o obj-$(CONFIG_MTK_THERMAL) += mtk_thermal.o Loading
Documentation/devicetree/bindings/thermal/exynos-thermal.txt +15 −3 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ "samsung,exynos5420-tmu" for TMU channel 0, 1 on Exynos5420 "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 Exynos5420 (Must pass triminfo base and triminfo clock) "samsung,exynos5433-tmu" "samsung,exynos5440-tmu" "samsung,exynos7-tmu" - interrupt-parent : The phandle for the interrupt controller Loading Loading @@ -40,9 +41,14 @@ for current TMU channel -- "tmu_sclk" clock for functional operation of the current TMU channel - vtmu-supply: This entry is optional and provides the regulator node supplying voltage to TMU. If needed this entry can be placed inside board/platform specific dts file. The Exynos TMU supports generating interrupts when reaching given temperature thresholds. Number of supported thermal trip points depends on the SoC (only first trip points defined in DT will be configured): - most of SoC: 4 - samsung,exynos5433-tmu: 8 - samsung,exynos7-tmu: 8 Following properties are mandatory (depending on SoC): - samsung,tmu_gain: Gain value for internal TMU operation. - samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage Loading @@ -56,6 +62,12 @@ Following properties are mandatory (depending on SoC): - samsung,tmu_default_temp_offset: Default temperature offset - samsung,tmu_cal_type: Callibration type ** Optional properties: - vtmu-supply: This entry is optional and provides the regulator node supplying voltage to TMU. If needed this entry can be placed inside board/platform specific dts file. Example 1): tmu@100C0000 { Loading
Documentation/devicetree/bindings/thermal/mediatek-thermal.txt 0 → 100644 +43 −0 Original line number Diff line number Diff line * Mediatek Thermal This describes the device tree binding for the Mediatek thermal controller which measures the on-SoC temperatures. This device does not have its own ADC, instead it directly controls the AUXADC via AHB bus accesses. For this reason this device needs phandles to the AUXADC. Also it controls a mux in the apmixedsys register space via AHB bus accesses, so a phandle to the APMIXEDSYS is also needed. Required properties: - compatible: "mediatek,mt8173-thermal" - reg: Address range of the thermal controller - interrupts: IRQ for the thermal controller - clocks, clock-names: Clocks needed for the thermal controller. required clocks are: "therm": Main clock needed for register access "auxadc": The AUXADC clock - resets: Reference to the reset controller controlling the thermal controller. - mediatek,auxadc: A phandle to the AUXADC which the thermal controller uses - mediatek,apmixedsys: A phandle to the APMIXEDSYS controller. - #thermal-sensor-cells : Should be 0. See ./thermal.txt for a description. Optional properties: - nvmem-cells: A phandle to the calibration data provided by a nvmem device. If unspecified default values shall be used. - nvmem-cell-names: Should be "calibration-data" Example: thermal: thermal@1100b000 { #thermal-sensor-cells = <1>; compatible = "mediatek,mt8173-thermal"; reg = <0 0x1100b000 0 0x1000>; interrupts = <0 70 IRQ_TYPE_LEVEL_LOW>; clocks = <&pericfg CLK_PERI_THERM>, <&pericfg CLK_PERI_AUXADC>; clock-names = "therm", "auxadc"; resets = <&pericfg MT8173_PERI_THERM_SW_RST>; reset-names = "therm"; mediatek,auxadc = <&auxadc>; mediatek,apmixedsys = <&apmixedsys>; nvmem-cells = <&thermal_calibration_data>; nvmem-cell-names = "calibration-data"; };
Documentation/thermal/sysfs-api.txt +68 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,74 @@ temperature) and throttle appropriate devices. It deletes the corresponding entry form /sys/class/thermal folder and unbind all the thermal cooling devices it uses. 1.1.3 struct thermal_zone_device *thermal_zone_of_sensor_register( struct device *dev, int sensor_id, void *data, const struct thermal_zone_of_device_ops *ops) This interface adds a new sensor to a DT thermal zone. This function will search the list of thermal zones described in device tree and look for the zone that refer to the sensor device pointed by dev->of_node as temperature providers. For the zone pointing to the sensor node, the sensor will be added to the DT thermal zone device. The parameters for this interface are: dev: Device node of sensor containing valid node pointer in dev->of_node. sensor_id: a sensor identifier, in case the sensor IP has more than one sensors data: a private pointer (owned by the caller) that will be passed back, when a temperature reading is needed. ops: struct thermal_zone_of_device_ops *. get_temp: a pointer to a function that reads the sensor temperature. This is mandatory callback provided by sensor driver. get_trend: a pointer to a function that reads the sensor temperature trend. set_emul_temp: a pointer to a function that sets sensor emulated temperature. The thermal zone temperature is provided by the get_temp() function pointer of thermal_zone_of_device_ops. When called, it will have the private pointer @data back. It returns error pointer if fails otherwise valid thermal zone device handle. Caller should check the return handle with IS_ERR() for finding whether success or not. 1.1.4 void thermal_zone_of_sensor_unregister(struct device *dev, struct thermal_zone_device *tzd) This interface unregisters a sensor from a DT thermal zone which was successfully added by interface thermal_zone_of_sensor_register(). This function removes the sensor callbacks and private data from the thermal zone device registered with thermal_zone_of_sensor_register() interface. It will also silent the zone by remove the .get_temp() and get_trend() thermal zone device callbacks. 1.1.5 struct thermal_zone_device *devm_thermal_zone_of_sensor_register( struct device *dev, int sensor_id, void *data, const struct thermal_zone_of_device_ops *ops) This interface is resource managed version of thermal_zone_of_sensor_register(). All details of thermal_zone_of_sensor_register() described in section 1.1.3 is applicable here. The benefit of using this interface to register sensor is that it is not require to explicitly call thermal_zone_of_sensor_unregister() in error path or during driver unbinding as this is done by driver resource manager. 1.1.6 void devm_thermal_zone_of_sensor_unregister(struct device *dev, struct thermal_zone_device *tzd) This interface is resource managed version of thermal_zone_of_sensor_unregister(). All details of thermal_zone_of_sensor_unregister() described in section 1.1.4 is applicable here. Normally this function will not need to be called and the resource management code will ensure that the resource is freed. 1.2 thermal cooling device interface 1.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name, void *devdata, struct thermal_cooling_device_ops *) Loading
drivers/thermal/Kconfig +19 −2 Original line number Diff line number Diff line Loading @@ -178,6 +178,7 @@ config THERMAL_EMULATION config HISI_THERMAL tristate "Hisilicon thermal driver" depends on (ARCH_HISI && CPU_THERMAL && OF) || COMPILE_TEST depends on HAS_IOMEM help Enable this to plug hisilicon's thermal sensor driver into the Linux thermal framework. cpufreq is used as the cooling device to throttle Loading @@ -197,6 +198,7 @@ config IMX_THERMAL config SPEAR_THERMAL tristate "SPEAr thermal sensor driver" depends on PLAT_SPEAR || COMPILE_TEST depends on HAS_IOMEM depends on OF help Enable this to plug the SPEAr thermal sensor driver into the Linux Loading @@ -206,6 +208,7 @@ config ROCKCHIP_THERMAL tristate "Rockchip thermal driver" depends on ARCH_ROCKCHIP || COMPILE_TEST depends on RESET_CONTROLLER depends on HAS_IOMEM help Rockchip thermal driver provides support for Temperature sensor ADC (TS-ADC) found on Rockchip SoCs. It supports one critical Loading @@ -214,7 +217,7 @@ config ROCKCHIP_THERMAL config RCAR_THERMAL tristate "Renesas R-Car thermal driver" depends on ARCH_SHMOBILE || COMPILE_TEST depends on ARCH_RENESAS || COMPILE_TEST depends on HAS_IOMEM help Enable this to plug the R-Car thermal sensor driver into the Linux Loading @@ -223,6 +226,7 @@ config RCAR_THERMAL config KIRKWOOD_THERMAL tristate "Temperature sensor on Marvell Kirkwood SoCs" depends on MACH_KIRKWOOD || COMPILE_TEST depends on HAS_IOMEM depends on OF help Support for the Kirkwood thermal sensor driver into the Linux thermal Loading @@ -231,6 +235,7 @@ config KIRKWOOD_THERMAL config DOVE_THERMAL tristate "Temperature sensor on Marvell Dove SoCs" depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST depends on HAS_IOMEM depends on OF help Support for the Dove thermal sensor driver in the Linux thermal Loading @@ -249,6 +254,7 @@ config DB8500_THERMAL config ARMADA_THERMAL tristate "Armada 370/XP thermal management" depends on ARCH_MVEBU || COMPILE_TEST depends on HAS_IOMEM depends on OF help Enable this option if you want to have support for thermal management Loading @@ -266,7 +272,8 @@ config TEGRA_SOCTHERM config DB8500_CPUFREQ_COOLING tristate "DB8500 cpufreq cooling" depends on ARCH_U8500 depends on ARCH_U8500 || COMPILE_TEST depends on HAS_IOMEM depends on CPU_THERMAL default y help Loading Loading @@ -365,8 +372,18 @@ config INTEL_PCH_THERMAL Thermal reporting device will provide temperature reading, programmable trip points and other information. config MTK_THERMAL tristate "Temperature sensor driver for mediatek SoCs" depends on ARCH_MEDIATEK || COMPILE_TEST depends on HAS_IOMEM default y help Enable this option if you want to have support for thermal management controller present in Mediatek SoCs menu "Texas Instruments thermal drivers" depends on ARCH_HAS_BANDGAP || COMPILE_TEST depends on HAS_IOMEM source "drivers/thermal/ti-soc-thermal/Kconfig" endmenu Loading
drivers/thermal/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -48,3 +48,4 @@ obj-$(CONFIG_INTEL_PCH_THERMAL) += intel_pch_thermal.o obj-$(CONFIG_ST_THERMAL) += st/ obj-$(CONFIG_TEGRA_SOCTHERM) += tegra_soctherm.o obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o obj-$(CONFIG_MTK_THERMAL) += mtk_thermal.o