Re: [PATCH 3/4] arm64: dts: qcom: Add PMIC thermal support for Shikra CQ2390M SoM platform

From: Dmitry Baryshkov

Date: Sun Jun 14 2026 - 17:45:52 EST


On Sat, Jun 13, 2026 at 01:39:23PM +0530, Jishnu Prakash wrote:
> 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 {

Generic node names, please. See, how other platforms name them.

> + 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>;

This should be a part of the pm4125.dtsi

> +
> + 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>;

pm8005.dtsi

> +
> + 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";

Passive cooling at 125°C sounds very strange. Especially without any
cooling device attached.

> + };
> + };
> + };
> +
> + 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";

Empty line before status.

> +
> + 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
>

--
With best wishes
Dmitry