[PATCH v3 6/6] arm64: dts: qcom: hamoa: add thermal hw-bin support

From: Gaurav Kohli

Date: Fri Nov 13 2026 - 07:45:17 EST


From: Amit Kucheria <amit.kucheria@xxxxxxxxxxxxxxxx>

hamoa-based SoCs expose their manufacturing bin in a single i-temp bit
of a qfprom fuse. Add the i-temp nvmem cell to the qfprom node
and wire the tsens controllers to it so the tsens driver can feed
the bin to the thermal core.

Use that bin for the GPU passive trip points so industrial-temp
parts keep the higher 105C threshold without a board-specific
override.

Signed-off-by: Amit Kucheria <amit.kucheria@xxxxxxxxxxxxxxxx>
Co-developed-by: Gaurav Kohli <gaurav.kohli@xxxxxxxxxxxxxxxx>
Signed-off-by: Gaurav Kohli <gaurav.kohli@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 66 ------------------------------
arch/arm64/boot/dts/qcom/hamoa.dtsi | 42 +++++++++++++++----
2 files changed, 34 insertions(+), 74 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
index 484cb9ee18a2..1124da9817f4 100644
--- a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
+++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
@@ -1478,72 +1478,6 @@ &usb_mp_hsphy1 {
phys = <&eusb6_repeater>;
};

-&thermal_zones {
- gpuss-0-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-1-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-2-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-3-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-4-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-5-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-6-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-
- gpuss-7-thermal {
- trips {
- trip-point0 {
- temperature = <105000>;
- };
- };
- };
-};
-
&nsp0_alert0 {
temperature = <105000>;
};
diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi
index 443c1a5c212d..e25729ff23c8 100644
--- a/arch/arm64/boot/dts/qcom/hamoa.dtsi
+++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi
@@ -2767,6 +2767,9 @@ tsens0: thermal-sensor@c271000 {
interrupt-names = "uplow",
"critical";

+ nvmem-cells = <&i_temp>;
+ nvmem-cell-names = "i-temp";
+
#qcom,sensors = <16>;

#thermal-sensor-cells = <1>;
@@ -2782,6 +2785,9 @@ tsens1: thermal-sensor@c272000 {
interrupt-names = "uplow",
"critical";

+ nvmem-cells = <&i_temp>;
+ nvmem-cell-names = "i-temp";
+
#qcom,sensors = <16>;

#thermal-sensor-cells = <1>;
@@ -2797,6 +2803,9 @@ tsens2: thermal-sensor@c273000 {
interrupt-names = "uplow",
"critical";

+ nvmem-cells = <&i_temp>;
+ nvmem-cell-names = "i-temp";
+
#qcom,sensors = <16>;

#thermal-sensor-cells = <1>;
@@ -2812,6 +2821,9 @@ tsens3: thermal-sensor@c274000 {
interrupt-names = "uplow",
"critical";

+ nvmem-cells = <&i_temp>;
+ nvmem-cell-names = "i-temp";
+
#qcom,sensors = <16>;

#thermal-sensor-cells = <1>;
@@ -8829,6 +8841,12 @@ gpu_speed_bin: gpu-speed-bin@119 {
reg = <0x119 0x2>;
bits = <7 8>;
};
+
+ i_temp: i-temp@180 {
+ reg = <0x180 0x4>;
+ /* bits = <offset width>: 1 bit at offset 0 */
+ bits = <0 1>;
+ };
};

pmu@24091000 {
@@ -9751,7 +9769,8 @@ map0 {

trips {
gpuss0_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9778,7 +9797,8 @@ map0 {

trips {
gpuss1_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9805,7 +9825,8 @@ map0 {

trips {
gpuss2_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9832,7 +9853,8 @@ map0 {

trips {
gpuss3_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9859,7 +9881,8 @@ map0 {

trips {
gpuss4_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9886,7 +9909,8 @@ map0 {

trips {
gpuss5_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9913,7 +9937,8 @@ map0 {

trips {
gpuss6_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};
@@ -9940,7 +9965,8 @@ map0 {

trips {
gpuss7_alert0: trip-point0 {
- temperature = <95000>;
+ temperature-bin = <95000>, <105000>;
+ thermal-hw-bin = <0x1>, <0x2>;
hysteresis = <1000>;
type = "passive";
};

--
2.34.1