[PATCH 3/4] arm64: dts: qcom: Add PMIC thermal support for Shikra CQ2390M SoM platform
From: Jishnu Prakash
Date: Sat Jun 13 2026 - 04:10:25 EST
Add ADC channels for system thermistors, used for thermal mitigation.
Add ADC thermal bridge nodes for pa/quiet/msm thermistors. Enable temperature
alarm nodes for PM4125 and PM8005. Add thermal zones for temp-alarm devices
and system thermistors exposed as thermal bridge nodes.
Co-developed-by: Rakesh Kota <rakesh.kota@xxxxxxxxxxxxxxxx>
Signed-off-by: Rakesh Kota <rakesh.kota@xxxxxxxxxxxxxxxx>
Signed-off-by: Jishnu Prakash <jishnu.prakash@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi | 184 +++++++++++++++++++++++++++
1 file changed, 184 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
index dc3861489f64..c6c09d773abe 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
@@ -4,6 +4,7 @@
*/
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include "shikra.dtsi"
@@ -27,9 +28,184 @@ key-volume-up {
linux,can-disable;
};
};
+
+ pm4125_msm_therm_bridge: pm4125-msm-therm-bridge {
+ compatible = "generic-adc-thermal";
+ io-channels = <&pm4125_adc ADC5_AMUX_THM3_100K_PU>;
+ io-channel-names = "sensor-channel";
+ #thermal-sensor-cells = <0>;
+ };
+
+ pm4125_pa_therm_bridge: pm4125-pa-therm-bridge {
+ compatible = "generic-adc-thermal";
+ io-channels = <&pm4125_adc ADC5_AMUX_THM1_100K_PU>;
+ io-channel-names = "sensor-channel";
+ #thermal-sensor-cells = <0>;
+ };
+
+ pm4125_quiet_therm_bridge: pm4125-quiet-therm-bridge {
+ compatible = "generic-adc-thermal";
+ io-channels = <&pm4125_adc ADC5_AMUX_THM2_100K_PU>;
+ io-channel-names = "sensor-channel";
+ #thermal-sensor-cells = <0>;
+ };
+
+ thermal-zones {
+ pm4125-thermal {
+ polling-delay-passive = <100>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm4125_tz>;
+
+ trips {
+ pm4125_trip0: trip0 {
+ temperature = <105000>;
+ hysteresis = <0>;
+ type = "passive";
+ };
+
+ pm4125_trip1: trip1 {
+ temperature = <125000>;
+ hysteresis = <0>;
+ type = "hot";
+ };
+
+ pm4125_trip2: trip2 {
+ temperature = <155000>;
+ hysteresis = <0>;
+ type = "critical";
+ };
+ };
+ };
+
+ pm8005-thermal {
+ polling-delay-passive = <0>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm8005_tz>;
+
+ trips {
+ pm8005_trip0: trip0 {
+ temperature = <105000>;
+ hysteresis = <0>;
+ type = "passive";
+ };
+
+ pm8005_trip1: trip1 {
+ temperature = <125000>;
+ hysteresis = <0>;
+ type = "passive";
+ };
+
+ pm8005_trip2: trip2 {
+ temperature = <145000>;
+ hysteresis = <0>;
+ type = "passive";
+ };
+ };
+ };
+
+ sys-1-thermal {
+ polling-delay-passive = <2000>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm4125_pa_therm_bridge>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+
+ sys-2-thermal {
+ polling-delay-passive = <2000>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm4125_quiet_therm_bridge>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+
+ sys-3-thermal {
+ polling-delay-passive = <2000>;
+ polling-delay = <0>;
+ thermal-sensors = <&pm4125_msm_therm_bridge>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+ };
+};
+
+&pm4125_adc {
+ pinctrl-0 = <&pm4125_adc_gpio5_default>, <&pm4125_adc_gpio6_default>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ channel@4d {
+ reg = <ADC5_AMUX_THM1_100K_PU>;
+ label = "pa_therm";
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ };
+
+ channel@4e {
+ reg = <ADC5_AMUX_THM2_100K_PU>;
+ label = "quiet_therm";
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ };
+
+ channel@4f {
+ reg = <ADC5_AMUX_THM3_100K_PU>;
+ label = "msm_therm";
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ };
+
+ channel@54 {
+ reg = <ADC5_GPIO3_100K_PU>;
+ label = "chgr_skin";
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ };
+
+ channel@55 {
+ reg = <ADC5_GPIO4_100K_PU>;
+ label = "gnss_therm";
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ };
};
&pm4125_gpios {
+ pm4125_adc_gpio5_default: pm4125-adc-gpio5-state {
+ pins = "gpio5";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ bias-high-impedance;
+ };
+
+ pm4125_adc_gpio6_default: pm4125-adc-gpio6-state {
+ pins = "gpio6";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ bias-high-impedance;
+ };
+
vol_up_n: vol-up-n-state {
pins = "gpio9";
function = PMIC_GPIO_FUNC_NORMAL;
@@ -45,10 +221,18 @@ &pm4125_resin {
status = "okay";
};
+&pm4125_tz {
+ status = "okay";
+};
+
&pm8005_regulators {
status = "disabled";
};
+&pm8005_tz {
+ status = "okay";
+};
+
&rpm_requests {
regulators {
compatible = "qcom,rpm-pm2250-regulators";
--
2.43.0