This platform has three auxiliary NTC thermistors, connected to the
SoC's ADC pins. Enable the auxadc in order to be able to read the
ADC values, add a generic-adc-thermal LUT for each and finally assign
them to the SoC's thermal zones.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
.../boot/dts/mediatek/mt8195-cherry.dtsi | 124 ++++++++++++++++++
1 file changed, 124 insertions(+)
diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
index 24669093fbed..ae2052a7160d 100644
--- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
@@ -104,6 +104,108 @@ ppvar_sys: regulator-ppvar-sys {
regulator-boot-on;
};
+ tboard_thermistor1: thermal-sensor-t1 {
+ compatible = "generic-adc-thermal";
+ #thermal-sensor-cells = <0>;
+ io-channels = <&auxadc 0>;
+ io-channel-names = "sensor-channel";
+ temperature-lookup-table = < (-5000) 4241
+ 0 4063
+ 5000 3856
+ 10000 3621
+ 15000 3364
+ 20000 3091
+ 25000 2810
+ 30000 2526
+ 35000 2247
+ 40000 1982
+ 45000 1734
+ 50000 1507
+ 55000 1305
+ 60000 1122
+ 65000 964
+ 70000 827
+ 75000 710
+ 80000 606
+ 85000 519
+ 90000 445
+ 95000 382
+ 100000 330
+ 105000 284
+ 110000 245
+ 115000 213
+ 120000 183
+ 125000 161>;
+ };
+
+ tboard_thermistor2: thermal-sensor-t2 {
+ compatible = "generic-adc-thermal";
+ #thermal-sensor-cells = <0>;
+ io-channels = <&auxadc 0>;
+ io-channel-names = "sensor-channel";
+ temperature-lookup-table = < (-5000) 4241
+ 0 4063
+ 5000 3856
+ 10000 3621
+ 15000 3364
+ 20000 3091
+ 25000 2810
+ 30000 2526
+ 35000 2247
+ 40000 1982
+ 45000 1734
+ 50000 1507
+ 55000 1305
+ 60000 1122
+ 65000 964
+ 70000 827
+ 75000 710
+ 80000 606
+ 85000 519
+ 90000 445
+ 95000 382
+ 100000 330
+ 105000 284
+ 110000 245
+ 115000 213
+ 120000 183
+ 125000 161>;
+ };
+
+ tboard_thermistor3: thermal-sensor-t3 {
+ compatible = "generic-adc-thermal";
+ #thermal-sensor-cells = <0>;
+ io-channels = <&auxadc 0>;
+ io-channel-names = "sensor-channel";
+ temperature-lookup-table = < (-5000) 4241
+ 0 4063
+ 5000 3856
+ 10000 3621
+ 15000 3364
+ 20000 3091
+ 25000 2810
+ 30000 2526
+ 35000 2247
+ 40000 1982
+ 45000 1734
+ 50000 1507
+ 55000 1305
+ 60000 1122
+ 65000 964
+ 70000 827
+ 75000 710
+ 80000 606
+ 85000 519
+ 90000 445
+ 95000 382
+ 100000 330
+ 105000 284
+ 110000 245
+ 115000 213
+ 120000 183
+ 125000 161>;
+ };
+
usb_vbus: regulator-5v0-usb-vbus {
compatible = "regulator-fixed";
regulator-name = "usb-vbus";
@@ -243,6 +345,10 @@ &gpu {
mali-supply = <&mt6315_7_vbuck1>;
};
+&auxadc {
+ status = "okay";
+};
+
&i2c0 {
status = "okay";
@@ -1074,6 +1180,24 @@ mt6315_7_vbuck1: vbuck1 {
};
};
+&thermal_zones {
+ ap_ntc1 {
+ polling-delay = <1000>;
+ polling-delay-passive = <0>;
+ thermal-sensors = <&tboard_thermistor1>;
+ };
+ ap_ntc2 {
+ polling-delay = <1000>;
+ polling-delay-passive = <0>;
+ thermal-sensors = <&tboard_thermistor2>;
+ };
+ ap_ntc3 {
+ polling-delay = <1000>;
+ polling-delay-passive = <0>;
+ thermal-sensors = <&tboard_thermistor3>;
+ };
+};
+
&u3phy0 {
status = "okay";
};
--
2.39.2
On Thu, Feb 23, 2023 at 10:55 PM AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> wrote: > > This platform has three auxiliary NTC thermistors, connected to the > SoC's ADC pins. Enable the auxadc in order to be able to read the > ADC values, add a generic-adc-thermal LUT for each and finally assign > them to the SoC's thermal zones. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > --- > .../boot/dts/mediatek/mt8195-cherry.dtsi | 124 ++++++++++++++++++ > 1 file changed, 124 insertions(+) > > diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi > index 24669093fbed..ae2052a7160d 100644 > --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi > +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi > @@ -104,6 +104,108 @@ ppvar_sys: regulator-ppvar-sys { > regulator-boot-on; > }; > > + tboard_thermistor1: thermal-sensor-t1 { > + compatible = "generic-adc-thermal"; > + #thermal-sensor-cells = <0>; > + io-channels = <&auxadc 0>; > + io-channel-names = "sensor-channel"; > + temperature-lookup-table = < (-5000) 4241 > + 0 4063 > + 5000 3856 > + 10000 3621 > + 15000 3364 > + 20000 3091 > + 25000 2810 > + 30000 2526 > + 35000 2247 > + 40000 1982 > + 45000 1734 > + 50000 1507 > + 55000 1305 > + 60000 1122 > + 65000 964 > + 70000 827 > + 75000 710 > + 80000 606 > + 85000 519 > + 90000 445 > + 95000 382 > + 100000 330 > + 105000 284 > + 110000 245 > + 115000 213 > + 120000 183 > + 125000 161>; > + }; > + > + tboard_thermistor2: thermal-sensor-t2 { > + compatible = "generic-adc-thermal"; > + #thermal-sensor-cells = <0>; > + io-channels = <&auxadc 0>; You are reusing the same channel for all three sensors. That doesn't make a lot of sense. Furthermore, the design only has two thermistors, connected to the first two ADC channels. The first one is located near the SoC; the second one is near the PMIC. ChenYu > + io-channel-names = "sensor-channel"; > + temperature-lookup-table = < (-5000) 4241 > + 0 4063 > + 5000 3856 > + 10000 3621 > + 15000 3364 > + 20000 3091 > + 25000 2810 > + 30000 2526 > + 35000 2247 > + 40000 1982 > + 45000 1734 > + 50000 1507 > + 55000 1305 > + 60000 1122 > + 65000 964 > + 70000 827 > + 75000 710 > + 80000 606 > + 85000 519 > + 90000 445 > + 95000 382 > + 100000 330 > + 105000 284 > + 110000 245 > + 115000 213 > + 120000 183 > + 125000 161>; > + }; > + > + tboard_thermistor3: thermal-sensor-t3 { > + compatible = "generic-adc-thermal"; > + #thermal-sensor-cells = <0>; > + io-channels = <&auxadc 0>; > + io-channel-names = "sensor-channel"; > + temperature-lookup-table = < (-5000) 4241 > + 0 4063 > + 5000 3856 > + 10000 3621 > + 15000 3364 > + 20000 3091 > + 25000 2810 > + 30000 2526 > + 35000 2247 > + 40000 1982 > + 45000 1734 > + 50000 1507 > + 55000 1305 > + 60000 1122 > + 65000 964 > + 70000 827 > + 75000 710 > + 80000 606 > + 85000 519 > + 90000 445 > + 95000 382 > + 100000 330 > + 105000 284 > + 110000 245 > + 115000 213 > + 120000 183 > + 125000 161>; > + }; > + > usb_vbus: regulator-5v0-usb-vbus { > compatible = "regulator-fixed"; > regulator-name = "usb-vbus"; > @@ -243,6 +345,10 @@ &gpu { > mali-supply = <&mt6315_7_vbuck1>; > }; > > +&auxadc { > + status = "okay"; > +}; > + > &i2c0 { > status = "okay"; > > @@ -1074,6 +1180,24 @@ mt6315_7_vbuck1: vbuck1 { > }; > }; > > +&thermal_zones { > + ap_ntc1 { > + polling-delay = <1000>; > + polling-delay-passive = <0>; > + thermal-sensors = <&tboard_thermistor1>; > + }; > + ap_ntc2 { > + polling-delay = <1000>; > + polling-delay-passive = <0>; > + thermal-sensors = <&tboard_thermistor2>; > + }; > + ap_ntc3 { > + polling-delay = <1000>; > + polling-delay-passive = <0>; > + thermal-sensors = <&tboard_thermistor3>; > + }; > +}; > + > &u3phy0 { > status = "okay"; > }; > -- > 2.39.2 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Thu, Feb 23, 2023 at 10:55 PM AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> wrote: > > This platform has three auxiliary NTC thermistors, connected to the > SoC's ADC pins. Enable the auxadc in order to be able to read the > ADC values, add a generic-adc-thermal LUT for each and finally assign > them to the SoC's thermal zones. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > --- > .../boot/dts/mediatek/mt8195-cherry.dtsi | 124 ++++++++++++++++++ > 1 file changed, 124 insertions(+) > > diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi > index 24669093fbed..ae2052a7160d 100644 > --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi > +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi > @@ -104,6 +104,108 @@ ppvar_sys: regulator-ppvar-sys { > regulator-boot-on; > }; > > + tboard_thermistor1: thermal-sensor-t1 { > + compatible = "generic-adc-thermal"; > + #thermal-sensor-cells = <0>; > + io-channels = <&auxadc 0>; > + io-channel-names = "sensor-channel"; > + temperature-lookup-table = < (-5000) 4241 > + 0 4063 > + 5000 3856 > + 10000 3621 > + 15000 3364 > + 20000 3091 > + 25000 2810 > + 30000 2526 > + 35000 2247 > + 40000 1982 > + 45000 1734 > + 50000 1507 > + 55000 1305 > + 60000 1122 > + 65000 964 > + 70000 827 > + 75000 710 > + 80000 606 > + 85000 519 > + 90000 445 > + 95000 382 > + 100000 330 > + 105000 284 > + 110000 245 > + 115000 213 > + 120000 183 > + 125000 161>; > + }; > + > + tboard_thermistor2: thermal-sensor-t2 { > + compatible = "generic-adc-thermal"; > + #thermal-sensor-cells = <0>; > + io-channels = <&auxadc 0>; > + io-channel-names = "sensor-channel"; > + temperature-lookup-table = < (-5000) 4241 > + 0 4063 > + 5000 3856 > + 10000 3621 > + 15000 3364 > + 20000 3091 > + 25000 2810 > + 30000 2526 > + 35000 2247 > + 40000 1982 > + 45000 1734 > + 50000 1507 > + 55000 1305 > + 60000 1122 > + 65000 964 > + 70000 827 > + 75000 710 > + 80000 606 > + 85000 519 > + 90000 445 > + 95000 382 > + 100000 330 > + 105000 284 > + 110000 245 > + 115000 213 > + 120000 183 > + 125000 161>; > + }; > + > + tboard_thermistor3: thermal-sensor-t3 { > + compatible = "generic-adc-thermal"; > + #thermal-sensor-cells = <0>; > + io-channels = <&auxadc 0>; > + io-channel-names = "sensor-channel"; > + temperature-lookup-table = < (-5000) 4241 > + 0 4063 > + 5000 3856 > + 10000 3621 > + 15000 3364 > + 20000 3091 > + 25000 2810 > + 30000 2526 > + 35000 2247 > + 40000 1982 > + 45000 1734 > + 50000 1507 > + 55000 1305 > + 60000 1122 > + 65000 964 > + 70000 827 > + 75000 710 > + 80000 606 > + 85000 519 > + 90000 445 > + 95000 382 > + 100000 330 > + 105000 284 > + 110000 245 > + 115000 213 > + 120000 183 > + 125000 161>; > + }; > + > usb_vbus: regulator-5v0-usb-vbus { > compatible = "regulator-fixed"; > regulator-name = "usb-vbus"; > @@ -243,6 +345,10 @@ &gpu { > mali-supply = <&mt6315_7_vbuck1>; > }; > > +&auxadc { > + status = "okay"; > +}; > + > &i2c0 { > status = "okay"; > > @@ -1074,6 +1180,24 @@ mt6315_7_vbuck1: vbuck1 { > }; > }; > > +&thermal_zones { > + ap_ntc1 { > + polling-delay = <1000>; > + polling-delay-passive = <0>; > + thermal-sensors = <&tboard_thermistor1>; Without trip points, this doesn't satisfy the bindings, nor does the driver probe. > + }; > + ap_ntc2 { > + polling-delay = <1000>; > + polling-delay-passive = <0>; > + thermal-sensors = <&tboard_thermistor2>; > + }; > + ap_ntc3 { > + polling-delay = <1000>; > + polling-delay-passive = <0>; > + thermal-sensors = <&tboard_thermistor3>; > + }; > +}; > + > &u3phy0 { > status = "okay"; > }; > -- > 2.39.2 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
© 2016 - 2024 Red Hat, Inc.