Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2efda904 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull thermal management update from Zhang Rui:
 "Summary:

   - of-thermal extension to allow drivers to register and use its
     functionality in a better way, without exploiting thermal core.
     From Lukasz Majewski.

   - Fix a bug in intel_soc_dts_thermal driver which calls a sleep
     function in interrupt handler.  From Maurice Petallo.

   - add a thermal UAPI header file for exporting the thermal generic
     netlink information to user-space.  From Florian Fainelli.

   - First round of refactoring in Exynos driver.  Bartlomiej and Lukasz
     are attempting to make it lean and easier to understand.

   - New thermal driver for Rockchip (rk3288), with support for DT
     thermal.  From Caesar Wang.

   - New thermal driver for Nvidia, Tegra124 SOCTHERM driver, with
     support for DT thermal.  From Mikko Perttunen.

   - New cooling device, based on common clock framework.  From Eduardo
     Valentin.

   - a couple of small fixes in thermal core framework.  From Srinivas
     Pandruvada, Javi Merino, Luis Henriques.

   - Dropping Armada A375-Z1 SoC thermal support as the chip is not in
     the market, armada folks decided to drop its support.

   - a couple of small fixes and cleanups in int340x thermal driver"

* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux: (58 commits)
  thermal: provide an UAPI header file
  Thermal/int340x: Clear the error value of the last acpi_bus_get_device() call
  thermal/powerclamp: add id for braswell cpu
  thermal: Intel SoC DTS: Don't do thermal zone update inside spin_lock
  Thermal: fix platform_no_drv_owner.cocci warnings
  Thermal/int340x: avoid unnecessary pointer casting
  thermal: int3403: Delete a check before thermal_zone_device_unregister()
  thermal/int3400: export uuids
  thermal: of: Extend current of-thermal.c code to allow setting emulated temp
  thermal: of: Extend of-thermal to export table of trip points
  thermal: of: Rename struct __thermal_trip to struct thermal_trip
  thermal: of: Extend of-thermal.c to provide check if trip point is valid
  thermal: of: Extend of-thermal.c to provide number of trip points
  thermal: Fix error path in thermal_init()
  thermal: lock the thermal zone when switching governors
  thermal: core: ignore invalid trip temperature
  thermal: armada: Remove support for A375-Z1 SoC
  thermal: rockchip: add driver for thermal
  dt-bindings: document Rockchip thermal
  thermal: exynos: remove exynos_tmu_data.h include
  ...
parents 0b4954c4 2707dbd0
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -5,17 +5,9 @@ Required properties:
- compatible:	Should be set to one of the following:
		marvell,armada370-thermal
		marvell,armada375-thermal
		marvell,armada375-z1-thermal
		marvell,armada380-thermal
		marvell,armadaxp-thermal

		Note: As the name suggests, "marvell,armada375-z1-thermal"
		applies for the SoC Z1 stepping only. On such stepping
		some quirks need to be done and the register offset differs
		from the one in the A0 stepping.
		The operating system may auto-detect the SoC stepping and
		update the compatible and register offsets at runtime.

- reg:		Device's register space.
		Two entries are expected, see the examples below.
		The first one is required for the sensor register;
+68 −0
Original line number Diff line number Diff line
* Temperature Sensor ADC (TSADC) on rockchip SoCs

Required properties:
- compatible : "rockchip,rk3288-tsadc"
- reg : physical base address of the controller and length of memory mapped
	region.
- interrupts : The interrupt number to the cpu. The interrupt specifier format
	       depends on the interrupt controller.
- clocks : Must contain an entry for each entry in clock-names.
- clock-names : Shall be "tsadc" for the converter-clock, and "apb_pclk" for
		the peripheral clock.
- resets : Must contain an entry for each entry in reset-names.
	   See ../reset/reset.txt for details.
- reset-names : Must include the name "tsadc-apb".
- #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description.
- rockchip,hw-tshut-temp : The hardware-controlled shutdown temperature value.
- rockchip,hw-tshut-mode : The hardware-controlled shutdown mode 0:CRU 1:GPIO.
- rockchip,hw-tshut-polarity : The hardware-controlled active polarity 0:LOW
			       1:HIGH.

Exiample:
tsadc: tsadc@ff280000 {
	compatible = "rockchip,rk3288-tsadc";
	reg = <0xff280000 0x100>;
	interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
	clock-names = "tsadc", "apb_pclk";
	resets = <&cru SRST_TSADC>;
	reset-names = "tsadc-apb";
	pinctrl-names = "default";
	pinctrl-0 = <&otp_out>;
	#thermal-sensor-cells = <1>;
	rockchip,hw-tshut-temp = <95000>;
	rockchip,hw-tshut-mode = <0>;
	rockchip,hw-tshut-polarity = <0>;
};

Example: referring to thermal sensors:
thermal-zones {
	cpu_thermal: cpu_thermal {
		polling-delay-passive = <1000>; /* milliseconds */
		polling-delay = <5000>; /* milliseconds */

		/* sensor	ID */
		thermal-sensors = <&tsadc	1>;

		trips {
			cpu_alert0: cpu_alert {
				temperature = <70000>; /* millicelsius */
				hysteresis = <2000>; /* millicelsius */
				type = "passive";
			};
			cpu_crit: cpu_crit {
				temperature = <90000>; /* millicelsius */
				hysteresis = <2000>; /* millicelsius */
				type = "critical";
			};
		};

		cooling-maps {
			map0 {
				trip = <&cpu_alert0>;
				cooling-device =
				    <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
			};
		};
	};
};
+53 −0
Original line number Diff line number Diff line
Tegra124 SOCTHERM thermal management system

The SOCTHERM IP block contains thermal sensors, support for polled
or interrupt-based thermal monitoring, CPU and GPU throttling based
on temperature trip points, and handling external overcurrent
notifications. It is also used to manage emergency shutdown in an
overheating situation.

Required properties :
- compatible : "nvidia,tegra124-soctherm".
- reg : Should contain 1 entry:
  - SOCTHERM register set
- interrupts : Defines the interrupt used by SOCTHERM
- clocks : Must contain an entry for each entry in clock-names.
  See ../clocks/clock-bindings.txt for details.
- clock-names : Must include the following entries:
  - tsensor
  - soctherm
- resets : Must contain an entry for each entry in reset-names.
  See ../reset/reset.txt for details.
- reset-names : Must include the following entries:
  - soctherm
- #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description
    of this property. See <dt-bindings/thermal/tegra124-soctherm.h> for a
    list of valid values when referring to thermal sensors.


Example :

	soctherm@0,700e2000 {
		compatible = "nvidia,tegra124-soctherm";
		reg = <0x0 0x700e2000 0x0 0x1000>;
		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&tegra_car TEGRA124_CLK_TSENSOR>,
			<&tegra_car TEGRA124_CLK_SOC_THERM>;
		clock-names = "tsensor", "soctherm";
		resets = <&tegra_car 78>;
		reset-names = "soctherm";

		#thermal-sensor-cells = <1>;
	};

Example: referring to thermal sensors :

       thermal-zones {
                cpu {
                        polling-delay-passive = <1000>;
                        polling-delay = <1000>;

                        thermal-sensors =
                                <&soctherm TEGRA124_SOCTHERM_SENSOR_CPU>;
                };
	};
+1 −0
Original line number Diff line number Diff line
@@ -9516,6 +9516,7 @@ Q: https://patchwork.kernel.org/project/linux-pm/list/
S:	Supported
F:	drivers/thermal/
F:	include/linux/thermal.h
F:	include/uapi/linux/thermal.h
F:	include/linux/cpu_cooling.h
F:	Documentation/devicetree/bindings/thermal/

+44 −0
Original line number Diff line number Diff line
@@ -1942,4 +1942,48 @@
			 <&tegra_car TEGRA124_CLK_EXTERN1>;
		clock-names = "pll_a", "pll_a_out0", "mclk";
	};

	thermal-zones {
		cpu {
			trips {
				trip@0 {
					temperature = <101000>;
					hysteresis = <0>;
					type = "critical";
				};
			};

			cooling-maps {
				/* There are currently no cooling maps because there are no cooling devices */
			};
		};

		mem {
			trips {
				trip@0 {
					temperature = <101000>;
					hysteresis = <0>;
					type = "critical";
				};
			};

			cooling-maps {
				/* There are currently no cooling maps because there are no cooling devices */
			};
		};

		gpu {
			trips {
				trip@0 {
					temperature = <101000>;
					hysteresis = <0>;
					type = "critical";
				};
			};

			cooling-maps {
				/* There are currently no cooling maps because there are no cooling devices */
			};
		};
	};
};
Loading