Re: [PATCH 1/5] arm64: dts: mediatek: cherry: Add platform thermal configuration

From: Chen-Yu Tsai
Date: Mon Apr 24 2023 - 03:38:43 EST


On Mon, Apr 24, 2023 at 2:31 PM AngeloGioacchino Del Regno
<angelogioacchino.delregno@xxxxxxxxxxxxx> wrote:
>
> Il 21/04/23 22:53, Nícolas F. R. A. Prado ha scritto:
> > On Fri, Apr 21, 2023 at 03:37:52PM +0800, Chen-Yu Tsai wrote:
> >> On Thu, Apr 20, 2023 at 5:45 PM AngeloGioacchino Del Regno
> >> <angelogioacchino.delregno@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx>
> >>> ---
> >>> .../boot/dts/mediatek/mt8195-cherry.dtsi | 105 ++++++++++++++++++
> >>> 1 file changed, 105 insertions(+)
> >>>
> >>> diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
> >>> index 8ac80a136c37..0820e9ba3829 100644
> >>> --- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
> >>> +++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
> >>> @@ -114,6 +114,77 @@ ppvar_sys: regulator-ppvar-sys {
> >>> regulator-boot-on;
> >>> };
> >>>
> >>> + /* Murata NCP03WF104F05RL */
> >>> + 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 = < (-10000) 1553
> >>> + (-5000) 1485
> >>> + 0 1406
> >>> + 5000 1317
> >>> + 10000 1219
> >>> + 15000 1115
> >>> + 20000 1007
> >>> + 25000 900
> >>> + 30000 796
> >>> + 35000 697
> >>> + 40000 605
> >>> + 45000 523
> >>> + 50000 449
> >>> + 55000 384
> >>> + 60000 327
> >>> + 65000 279
> >>> + 70000 237
> >>> + 75000 202
> >>> + 80000 172
> >>> + 85000 147
> >>> + 90000 125
> >>> + 95000 107
> >>> + 100000 92
> >>> + 105000 79
> >>> + 110000 68
> >>> + 115000 59
> >>> + 120000 51
> >>> + 125000 44>;
> >>> + };
> >>> +
> >>> + tboard_thermistor2: thermal-sensor-t2 {
> >>> + compatible = "generic-adc-thermal";
> >>> + #thermal-sensor-cells = <0>;
> >>> + io-channels = <&auxadc 1>;
> >>> + io-channel-names = "sensor-channel";
> >>> + temperature-lookup-table = < (-10000) 1553
> >>> + (-5000) 1485
> >>> + 0 1406
> >>> + 5000 1317
> >>> + 10000 1219
> >>> + 15000 1115
> >>> + 20000 1007
> >>> + 25000 900
> >>> + 30000 796
> >>> + 35000 697
> >>> + 40000 605
> >>> + 45000 523
> >>> + 50000 449
> >>> + 55000 384
> >>> + 60000 327
> >>> + 65000 279
> >>> + 70000 237
> >>> + 75000 202
> >>> + 80000 172
> >>> + 85000 147
> >>> + 90000 125
> >>> + 95000 107
> >>> + 100000 92
> >>> + 105000 79
> >>> + 110000 68
> >>> + 115000 59
> >>> + 120000 51
> >>> + 125000 44>;
> >>> + };
> >>> +
> >>> usb_vbus: regulator-5v0-usb-vbus {
> >>> compatible = "regulator-fixed";
> >>> regulator-name = "usb-vbus";
> >>> @@ -260,6 +331,10 @@ &gpu {
> >>> mali-supply = <&mt6315_7_vbuck1>;
> >>> };
> >>>
> >>> +&auxadc {
> >>> + status = "okay";
> >>> +};
> >>> +
> >>> &i2c0 {
> >>> status = "okay";
> >>>
> >>> @@ -1098,6 +1173,36 @@ mt6315_7_vbuck1: vbuck1 {
> >>> };
> >>> };
> >>>
> >>> +&thermal_zones {
> >>> + soc_area_ntc {
> >
> > Not sure if that's what's causing the issue, but the thermal zone name should
> > end with -thermal as per the binding. Also note that it needs to be under 20
> > characters otherwise it will fail to be registered with -22 like below.
> > (Also, node names shouldn't contain underscore)
> >
> > Thanks,
> > Nícolas
> >
> >>> + polling-delay = <1000>;
> >>> + polling-delay-passive = <250>;
> >>> + thermal-sensors = <&tboard_thermistor1>;
> >>> +
> >>> + trips {
> >>> + trip-crit {
> >>> + temperature = <95000>;
> >>> + hysteresis = <2000>;
> >>> + type = "critical";
> >>> + };
> >>> + };
> >>> + };
> >>> +
> >>> + pmic_area_ntc {
> >>> + polling-delay = <1000>;
> >>> + polling-delay-passive = <0>;
> >>> + thermal-sensors = <&tboard_thermistor2>;
> >>> +
> >>> + trips {
> >>> + trip-crit {
> >>> + temperature = <95000>;
> >>> + hysteresis = <2000>;
> >>> + type = "critical";
> >>> + };
> >>> + };
> >>> + };
> >>
> >> I'm still getting:
> >>
> >> thermal_sys: Failed to find 'trips' node
> >> thermal_sys: Failed to find trip points for thermal-sensor-t1 id=0
> >> generic-adc-thermal thermal-sensor-t1: Thermal zone sensor register failed: -22
> >> generic-adc-thermal: probe of thermal-sensor-t1 failed with error -22
> >> thermal_sys: Failed to find 'trips' node
> >> thermal_sys: Failed to find trip points for thermal-sensor-t2 id=0
> >> generic-adc-thermal thermal-sensor-t2: Thermal zone sensor register failed: -22
> >> generic-adc-thermal: probe of thermal-sensor-t2 failed with error -22
> >> thermal_sys: Failed to find 'trips' node
> >> thermal_sys: Failed to find trip points for thermal-sensor-t3 id=0
> >> generic-adc-thermal thermal-sensor-t3: Thermal zone sensor register failed: -22
> >> generic-adc-thermal: probe of thermal-sensor-t3 failed with error -22
> >>
>
> I think you have something wrong locally - there's no thermal-sensor-t3 in this
> devicetree...

I seem to have run a stale kernel image. Rebuilt the kernel and everything
seems to work OK now.

BTW, I think the design went for a lower trip point. At least the hardware
thermal protection IC on the Acer device trips at 85 degrees C, instead of
95 degrees C. Maybe that's accounting for the fact that these are external
thermal sensors and have some latency and temperature difference. The PMIC
specifies 85 degrees C maximum ambient air temperature. The SoC doesn't
specify.

Either way this is

Tested-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>
Reviewed-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>