diff mbox series

[V15,RESEND,5/5] arm64: dts: imx: add i.MX8QXP thermal support

Message ID 1582161028-2844-5-git-send-email-Anson.Huang@nxp.com (mailing list archive)
State New, archived
Headers show
Series [V15,RESEND,1/5] dt-bindings: fsl: scu: add thermal binding | expand

Commit Message

Anson Huang Feb. 20, 2020, 1:10 a.m. UTC
Add i.MX8QXP CPU thermal zone support.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
No change.
---
 arch/arm64/boot/dts/freescale/imx8qxp.dtsi | 36 ++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

Comments

Daniel Lezcano Feb. 21, 2020, 1:04 p.m. UTC | #1
On Thu, Feb 20, 2020 at 09:10:28AM +0800, Anson Huang wrote:
> Add i.MX8QXP CPU thermal zone support.
> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> ---
> No change.
> ---
>  arch/arm64/boot/dts/freescale/imx8qxp.dtsi | 36 ++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> index fb5f752..0a14fe4 100644
> --- a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> @@ -11,6 +11,7 @@
>  #include <dt-bindings/input/input.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include <dt-bindings/pinctrl/pads-imx8qxp.h>
> +#include <dt-bindings/thermal/thermal.h>
>  
>  / {
>  	interrupt-parent = <&gic>;
> @@ -189,6 +190,11 @@
>  			compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
>  			timeout-sec = <60>;
>  		};
> +
> +		tsens: thermal-sensor {
> +			compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
> +			#thermal-sensor-cells = <1>;
> +		};
>  	};
>  
>  	timer {
> @@ -586,4 +592,34 @@
>  			#clock-cells = <1>;
>  		};
>  	};
> +
> +	thermal_zones: thermal-zones {
> +		cpu-thermal0 {
> +			polling-delay-passive = <250>;
> +			polling-delay = <2000>;
> +			thermal-sensors = <&tsens IMX_SC_R_SYSTEM>;
> +			trips {
> +				cpu_alert0: trip0 {
> +					temperature = <107000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};

May be you can add a 'hot' trip point before 'critical' for future use before
reaching the emergency shutdown.

> +				cpu_crit0: trip1 {
> +					temperature = <127000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu_alert0>;
> +					cooling-device =
> +						<&A35_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +						<&A35_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +						<&A35_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +						<&A35_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +	};
>  };
> -- 
> 2.7.4
>
Daniel Lezcano Feb. 21, 2020, 1:05 p.m. UTC | #2
On Thu, Feb 20, 2020 at 09:10:28AM +0800, Anson Huang wrote:
> Add i.MX8QXP CPU thermal zone support.
> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> ---
> No change.
> ---
>  arch/arm64/boot/dts/freescale/imx8qxp.dtsi | 36 ++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> index fb5f752..0a14fe4 100644
> --- a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> @@ -11,6 +11,7 @@
>  #include <dt-bindings/input/input.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include <dt-bindings/pinctrl/pads-imx8qxp.h>
> +#include <dt-bindings/thermal/thermal.h>
>  
>  / {
>  	interrupt-parent = <&gic>;
> @@ -189,6 +190,11 @@
>  			compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
>  			timeout-sec = <60>;
>  		};
> +
> +		tsens: thermal-sensor {
> +			compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
> +			#thermal-sensor-cells = <1>;
> +		};
>  	};
>  
>  	timer {
> @@ -586,4 +592,34 @@
>  			#clock-cells = <1>;
>  		};
>  	};
> +
> +	thermal_zones: thermal-zones {
> +		cpu-thermal0 {
> +			polling-delay-passive = <250>;
> +			polling-delay = <2000>;
> +			thermal-sensors = <&tsens IMX_SC_R_SYSTEM>;
> +			trips {
> +				cpu_alert0: trip0 {
> +					temperature = <107000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};

Same comment as previous patch.

> +				cpu_crit0: trip1 {
> +					temperature = <127000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu_alert0>;
> +					cooling-device =
> +						<&A35_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +						<&A35_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +						<&A35_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +						<&A35_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +	};
>  };
> -- 
> 2.7.4
>
Anson Huang Feb. 21, 2020, 11:53 p.m. UTC | #3
Hi, Daniel

> Subject: Re: [PATCH V15 RESEND 5/5] arm64: dts: imx: add i.MX8QXP thermal
> support
> 
> On Thu, Feb 20, 2020 at 09:10:28AM +0800, Anson Huang wrote:
> > Add i.MX8QXP CPU thermal zone support.
> >
> > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > ---
> > No change.
> > ---
> >  arch/arm64/boot/dts/freescale/imx8qxp.dtsi | 36
> > ++++++++++++++++++++++++++++++
> >  1 file changed, 36 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> > b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> > index fb5f752..0a14fe4 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
> > @@ -11,6 +11,7 @@
> >  #include <dt-bindings/input/input.h>
> >  #include <dt-bindings/interrupt-controller/arm-gic.h>
> >  #include <dt-bindings/pinctrl/pads-imx8qxp.h>
> > +#include <dt-bindings/thermal/thermal.h>
> >
> >  / {
> >  	interrupt-parent = <&gic>;
> > @@ -189,6 +190,11 @@
> >  			compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
> >  			timeout-sec = <60>;
> >  		};
> > +
> > +		tsens: thermal-sensor {
> > +			compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-
> thermal";
> > +			#thermal-sensor-cells = <1>;
> > +		};
> >  	};
> >
> >  	timer {
> > @@ -586,4 +592,34 @@
> >  			#clock-cells = <1>;
> >  		};
> >  	};
> > +
> > +	thermal_zones: thermal-zones {
> > +		cpu-thermal0 {
> > +			polling-delay-passive = <250>;
> > +			polling-delay = <2000>;
> > +			thermal-sensors = <&tsens IMX_SC_R_SYSTEM>;
> > +			trips {
> > +				cpu_alert0: trip0 {
> > +					temperature = <107000>;
> > +					hysteresis = <2000>;
> > +					type = "passive";
> > +				};
> 
> May be you can add a 'hot' trip point before 'critical' for future use before
> reaching the emergency shutdown.

The 'passive' trip is actually the 'hot' trip point you mentioned, and I have combined it to
below cooling map which will throttle cpu-freq when passive (hot) point is reached.
We all use 'passive' as 'hot' alarm and trigger cpu-freq throttle on i.MX platforms. 

Thanks,
Anson

> 
> > +				cpu_crit0: trip1 {
> > +					temperature = <127000>;
> > +					hysteresis = <2000>;
> > +					type = "critical";
> > +				};
> > +			};
> > +			cooling-maps {
> > +				map0 {
> > +					trip = <&cpu_alert0>;
> > +					cooling-device =
> > +						<&A35_0
> THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +						<&A35_1
> THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +						<&A35_2
> THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +						<&A35_3
> THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> > +				};
> > +			};
> > +		};
> > +	};
> >  };
> > --
> > 2.7.4
> >
> 
> --
> 
> 
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.
> linaro.org%2F&amp;data=02%7C01%7CAnson.Huang%40nxp.com%7Cd6c0d
> 0ce57a14985a39008d7b6cea4ff%7C686ea1d3bc2b4c6fa92cd99c5c301635%7
> C0%7C0%7C637178870951977751&amp;sdata=a7BXeoGKPsYlXmy0sCmA6IM
> SbexdiXwZEXAe8o%2BI3j0%3D&amp;reserved=0> Linaro.org │ Open source
> software for ARM SoCs
> 
> Follow Linaro:
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.
> facebook.com%2Fpages%2FLinaro&amp;data=02%7C01%7CAnson.Huang%4
> 0nxp.com%7Cd6c0d0ce57a14985a39008d7b6cea4ff%7C686ea1d3bc2b4c6fa9
> 2cd99c5c301635%7C0%7C0%7C637178870951977751&amp;sdata=MVpiED%
> 2Blp4h%2FV4EQsMS%2FWT4QvLJYjOZ%2FIpugeO401Vc%3D&amp;reserved=
> 0> Facebook |
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftwitte
> r.com%2F%23!%2Flinaroorg&amp;data=02%7C01%7CAnson.Huang%40nxp.c
> om%7Cd6c0d0ce57a14985a39008d7b6cea4ff%7C686ea1d3bc2b4c6fa92cd99
> c5c301635%7C0%7C0%7C637178870951977751&amp;sdata=8sLeSLpoO9TtIsf
> jG8hco5a%2FJv5h%2BbDjM4YB43uy%2FF0%3D&amp;reserved=0> Twitter |
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.
> linaro.org%2Flinaro-
> blog%2F&amp;data=02%7C01%7CAnson.Huang%40nxp.com%7Cd6c0d0ce57
> a14985a39008d7b6cea4ff%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C
> 0%7C637178870951977751&amp;sdata=XL58fpKLCFqOlQWpi7midoItJJsBamij
> XFyA2qT%2BwjM%3D&amp;reserved=0> Blog
Daniel Lezcano Feb. 22, 2020, 7:51 a.m. UTC | #4
On 22/02/2020 00:53, Anson Huang wrote:
> Hi, Daniel
> 

[ ... ]

>>> +
>>> +	thermal_zones: thermal-zones {
>>> +		cpu-thermal0 {
>>> +			polling-delay-passive = <250>;
>>> +			polling-delay = <2000>;
>>> +			thermal-sensors = <&tsens IMX_SC_R_SYSTEM>;
>>> +			trips {
>>> +				cpu_alert0: trip0 {
>>> +					temperature = <107000>;
>>> +					hysteresis = <2000>;
>>> +					type = "passive";
>>> +				};
>>
>> May be you can add a 'hot' trip point before 'critical' for future use before
>> reaching the emergency shutdown.
> 
> The 'passive' trip is actually the 'hot' trip point you mentioned, and I have combined it to
> below cooling map which will throttle cpu-freq when passive (hot) point is reached.
> We all use 'passive' as 'hot' alarm and trigger cpu-freq throttle on i.MX platforms. 

Sorry, I'm not sure to get the point. A 'hot' trip point is not a
'passive' trip point. The 'hot' trip point is a critical temperature and
a notification is raised [1][2].

It is the last chance for the system to do something before the next
trip point 'critical' is reached and where an emergency shutdown is done.

The 'passive' trip point is the target temperature for mitigation in a
normal situation when the system is loaded.

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/thermal/thermal_core.c#n288
[2]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/thermal/thermal_core.c#n420
Anson Huang Feb. 22, 2020, 12:19 p.m. UTC | #5
Hi, Daniel

> Subject: Re: [PATCH V15 RESEND 5/5] arm64: dts: imx: add i.MX8QXP thermal
> support
> 
> On 22/02/2020 00:53, Anson Huang wrote:
> > Hi, Daniel
> >
> 
> [ ... ]
> 
> >>> +
> >>> +	thermal_zones: thermal-zones {
> >>> +		cpu-thermal0 {
> >>> +			polling-delay-passive = <250>;
> >>> +			polling-delay = <2000>;
> >>> +			thermal-sensors = <&tsens IMX_SC_R_SYSTEM>;
> >>> +			trips {
> >>> +				cpu_alert0: trip0 {
> >>> +					temperature = <107000>;
> >>> +					hysteresis = <2000>;
> >>> +					type = "passive";
> >>> +				};
> >>
> >> May be you can add a 'hot' trip point before 'critical' for future
> >> use before reaching the emergency shutdown.
> >
> > The 'passive' trip is actually the 'hot' trip point you mentioned, and
> > I have combined it to below cooling map which will throttle cpu-freq when
> passive (hot) point is reached.
> > We all use 'passive' as 'hot' alarm and trigger cpu-freq throttle on i.MX
> platforms.
> 
> Sorry, I'm not sure to get the point. A 'hot' trip point is not a 'passive' trip
> point. The 'hot' trip point is a critical temperature and a notification is raised
> [1][2].
> 
> It is the last chance for the system to do something before the next trip point
> 'critical' is reached and where an emergency shutdown is done.
> 
> The 'passive' trip point is the target temperature for mitigation in a normal
> situation when the system is loaded.

Ah, now I understand your point, as all i.MX SoCs ONLY support passive and critical
point, and never support the notification of hot trip point, so I think it should be OK
to leave i.MX8QXP same as other i.MX SoCs, if we plan to support hot trip point notification,
I will cut another patch for all i.MX SoCs, does it make sense to you? If yes, please help
review the V16 patch set I sent out.

thanks again for review,
Anson


> 
> [1]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ker
> nel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2F
> tree%2Fdrivers%2Fthermal%2Fthermal_core.c%23n288&amp;data=02%7C01
> %7Canson.huang%40nxp.com%7C2a1422c3cb0f46c3b13308d7b76c198c%7C
> 686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637179547223360051&a
> mp;sdata=fRmsFbCVFdv3VwFEqp1sSHxt2rucQ33yYnnaPE5gs1g%3D&amp;res
> erved=0
> [2]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.ker
> nel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2F
> tree%2Fdrivers%2Fthermal%2Fthermal_core.c%23n420&amp;data=02%7C01
> %7Canson.huang%40nxp.com%7C2a1422c3cb0f46c3b13308d7b76c198c%7C
> 686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637179547223360051&a
> mp;sdata=QEiwQcL8FZKg6Rs7y9h9XKvFf%2FlVeo20MwKTiqUbMwA%3D&am
> p;reserved=0
> 
> 
> 
> 
> --
> 
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.
> linaro.org%2F&amp;data=02%7C01%7Canson.huang%40nxp.com%7C2a1422
> c3cb0f46c3b13308d7b76c198c%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C
> 0%7C0%7C637179547223360051&amp;sdata=xT2UtNHHA826aziV1aUmPXpa
> Bnq7dBm%2FJPFG4S2%2F5qQ%3D&amp;reserved=0> Linaro.org │ Open
> source software for ARM SoCs
> 
> Follow Linaro:
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.
> facebook.com%2Fpages%2FLinaro&amp;data=02%7C01%7Canson.huang%4
> 0nxp.com%7C2a1422c3cb0f46c3b13308d7b76c198c%7C686ea1d3bc2b4c6fa9
> 2cd99c5c301635%7C0%7C0%7C637179547223360051&amp;sdata=eSr89jm2
> Qxzpi2bX%2BN%2FchizrkF372ypyLgv5%2BuI82Ic%3D&amp;reserved=0>
> Facebook |
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftwitte
> r.com%2F%23!%2Flinaroorg&amp;data=02%7C01%7Canson.huang%40nxp.c
> om%7C2a1422c3cb0f46c3b13308d7b76c198c%7C686ea1d3bc2b4c6fa92cd99
> c5c301635%7C0%7C0%7C637179547223360051&amp;sdata=cRydP%2FJpfuD
> uZFXUivk6F4At1lc%2FsOHdSzDDnDtDOug%3D&amp;reserved=0> Twitter |
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.
> linaro.org%2Flinaro-
> blog%2F&amp;data=02%7C01%7Canson.huang%40nxp.com%7C2a1422c3cb0
> f46c3b13308d7b76c198c%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0
> %7C637179547223360051&amp;sdata=wlwlbrLGXt%2Fdpuvw2xpCToiAIweud
> QDvLc8x0kgJOoQ%3D&amp;reserved=0> Blog
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
index fb5f752..0a14fe4 100644
--- a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
@@ -11,6 +11,7 @@ 
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/pinctrl/pads-imx8qxp.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
 	interrupt-parent = <&gic>;
@@ -189,6 +190,11 @@ 
 			compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
 			timeout-sec = <60>;
 		};
+
+		tsens: thermal-sensor {
+			compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
+			#thermal-sensor-cells = <1>;
+		};
 	};
 
 	timer {
@@ -586,4 +592,34 @@ 
 			#clock-cells = <1>;
 		};
 	};
+
+	thermal_zones: thermal-zones {
+		cpu-thermal0 {
+			polling-delay-passive = <250>;
+			polling-delay = <2000>;
+			thermal-sensors = <&tsens IMX_SC_R_SYSTEM>;
+			trips {
+				cpu_alert0: trip0 {
+					temperature = <107000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit0: trip1 {
+					temperature = <127000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+			cooling-maps {
+				map0 {
+					trip = <&cpu_alert0>;
+					cooling-device =
+						<&A35_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+						<&A35_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+						<&A35_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+						<&A35_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+	};
 };