kernel/sunxi: Restore kernel files for v6.1
[openwrt/openwrt.git] / target / linux / sunxi / patches-6.1 / 016-v6.9-arm64-dts-allwinner-h616-Add-thermal-sensor-and-zones.patch
diff --git a/target/linux/sunxi/patches-6.1/016-v6.9-arm64-dts-allwinner-h616-Add-thermal-sensor-and-zones.patch b/target/linux/sunxi/patches-6.1/016-v6.9-arm64-dts-allwinner-h616-Add-thermal-sensor-and-zones.patch
new file mode 100644 (file)
index 0000000..cd6542b
--- /dev/null
@@ -0,0 +1,138 @@
+From f4318af40544b8e7ff5a6b667ede60e6cf808262 Mon Sep 17 00:00:00 2001
+From: Martin Botka <martin.botka@somainline.org>
+Date: Mon, 19 Feb 2024 15:36:39 +0000
+Subject: [PATCH] arm64: dts: allwinner: h616: Add thermal sensor and zones
+
+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>
+---
+ .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 88 +++++++++++++++++++
+ 1 file changed, 88 insertions(+)
+
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
+@@ -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>;
+@@ -138,6 +139,10 @@
+                       reg = <0x03006000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
++
++                      ths_calibration: thermal-sensor-calibration@14 {
++                              reg = <0x14 0x8>;
++                      };
+               };
+               watchdog: watchdog@30090a0 {
+@@ -511,6 +516,19 @@
+                       };
+               };
++              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";
+@@ -755,4 +773,74 @@
+                       #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>;
++                              };
++                      };
++              };
++      };
+ };