arm64: dts: allwinner: h616: Add thermal sensor and zones
authorMartin Botka <martin.botka@somainline.org>
Mon, 19 Feb 2024 15:36:39 +0000 (15:36 +0000)
committerJernej Skrabec <jernej.skrabec@gmail.com>
Fri, 23 Feb 2024 20:38:21 +0000 (21:38 +0100)
There are four thermal sensors:
- CPU
- GPU
- VE
- DRAM

Add the thermal sensor configuration and the thermal zones.

Signed-off-by: Martin Botka <martin.botka@somainline.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20240219153639.179814-8-andre.przywara@arm.com
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi

index a07d3aa789f9259543dc8dd15a867ab755bc5b67..b2e85e52d1a12217e94cfd3b64b00b131075e76c 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/clock/sun6i-rtc.h>
 #include <dt-bindings/reset/sun50i-h616-ccu.h>
 #include <dt-bindings/reset/sun50i-h6-r-ccu.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
        interrupt-parent = <&gic>;
                        reg = <0x03006000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <1>;
+
+                       ths_calibration: thermal-sensor-calibration@14 {
+                               reg = <0x14 0x8>;
+                       };
                };
 
                watchdog: watchdog@30090a0 {
                        status = "disabled";
                };
 
+               ths: thermal-sensor@5070400 {
+                       compatible = "allwinner,sun50i-h616-ths";
+                       reg = <0x05070400 0x400>;
+                       interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_THS>;
+                       clock-names = "bus";
+                       resets = <&ccu RST_BUS_THS>;
+                       nvmem-cells = <&ths_calibration>;
+                       nvmem-cell-names = "calibration";
+                       allwinner,sram = <&syscon>;
+                       #thermal-sensor-cells = <1>;
+               };
+
                usbotg: usb@5100000 {
                        compatible = "allwinner,sun50i-h616-musb",
                                     "allwinner,sun8i-h3-musb";
                        #size-cells = <0>;
                };
        };
+
+       thermal-zones {
+               cpu-thermal {
+                       polling-delay-passive = <500>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&ths 2>;
+                       sustainable-power = <1000>;
+
+                       trips {
+                               cpu_threshold: cpu-trip-0 {
+                                       temperature = <60000>;
+                                       type = "passive";
+                                       hysteresis = <0>;
+                               };
+                               cpu_target: cpu-trip-1 {
+                                       temperature = <70000>;
+                                       type = "passive";
+                                       hysteresis = <0>;
+                               };
+                               cpu_critical: cpu-trip-2 {
+                                       temperature = <110000>;
+                                       type = "critical";
+                                       hysteresis = <0>;
+                               };
+                       };
+               };
+
+               gpu-thermal {
+                       polling-delay-passive = <500>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&ths 0>;
+                       sustainable-power = <1100>;
+
+                       trips {
+                               gpu_temp_critical: gpu-trip-0 {
+                                       temperature = <110000>;
+                                       type = "critical";
+                                       hysteresis = <0>;
+                               };
+                       };
+               };
+
+               ve-thermal {
+                       polling-delay-passive = <0>;
+                       polling-delay = <0>;
+                       thermal-sensors = <&ths 1>;
+
+                       trips {
+                               ve_temp_critical: ve-trip-0 {
+                                       temperature = <110000>;
+                                       type = "critical";
+                                       hysteresis = <0>;
+                               };
+                       };
+               };
+
+               ddr-thermal {
+                       polling-delay-passive = <0>;
+                       polling-delay = <0>;
+                       thermal-sensors = <&ths 3>;
+
+                       trips {
+                               ddr_temp_critical: ddr-trip-0 {
+                                       temperature = <110000>;
+                                       type = "critical";
+                                       hysteresis = <0>;
+                               };
+                       };
+               };
+       };
 };