Message ID | 20200528193202.41505-1-kurt@intricatesoftware.com |
---|---|
State | New |
Headers | show |
Series | rockchip: rockpro64: Set cooling levels for pwm-fan | expand |
On Thu, May 28, 2020 at 8:32 PM Kurt Miller <kurt at intricatesoftware.com> wrote: > > The cooling levels are tuned to the fan that comes with the rockpro64 NAS > case. A gpu_thermal zone was not added because having two active cooling > maps control one physical fan causes them to compete for the fan speed > which results in erratic fan behavior. Is there any reason this shouldn't go to the linux kernel first and then be synced back to the standard rk3399-rockpro64.dtsi? > Signed-off-by: Kurt Miller <kurt at intricatesoftware.com> > --- > > arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 43 +++++++++++++++++++++++ > 1 file changed, 43 insertions(+) > > diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi > index deaa3efd39..c0e0396758 100644 > --- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi > +++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi > @@ -13,6 +13,49 @@ > chosen { > u-boot,spl-boot-order = "same-as-spl", &sdmmc, &sdhci; > }; > + > + fan: pwm-fan { > + cooling-levels = <0 40 80 255>; > + }; > +}; > + > +&cpu_thermal { > + trips { > + cpu_warm: cpu_warm { > + temperature = <50000>; > + hysteresis = <2000>; > + type = "active"; > + }; > + > + cpu_med: cpu_med { > + temperature = <60000>; > + hysteresis = <2000>; > + type = "active"; > + }; > + > + cpu_hot: cpu_hot { > + temperature = <65000>; > + hysteresis = <2000>; > + type = "active"; > + }; > + }; > + > + cooling-maps { > + map2 { > + trip = <&cpu_warm>; > + cooling-device = <&fan THERMAL_NO_LIMIT 1>; > + }; > + > + map3 { > + trip = <&cpu_med>; > + cooling-device = <&fan THERMAL_NO_LIMIT 2>; > + }; > + > + map4 { > + trip = <&cpu_hot>; > + cooling-device = <&fan 2 THERMAL_NO_LIMIT>; > + }; > + }; > }; > > &vdd_center { > -- > 2.26.2 >
On Fri, 2020-05-29 at 09:27 +0100, Peter Robinson wrote: > On Thu, May 28, 2020 at 8:32 PM Kurt Miller <kurt at intricatesoftware.com> wrote: > > > > > > The cooling levels are tuned to the fan that comes with the rockpro64 NAS > > case. A gpu_thermal zone was not added because having two active cooling > > maps control one physical fan causes them to compete for the fan speed > > which results in erratic fan behavior. > Is there any reason this shouldn't go to the linux kernel first and > then be synced back to the standard rk3399-rockpro64.dtsi? Is that a requirement? I do my primary development on OpenBSD and while I use Linux for work tasks, I don't have available time right now to push these changes to Linux kernel first. > > > > > Signed-off-by: Kurt Miller <kurt at intricatesoftware.com> > > --- > > > > ?arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 43 +++++++++++++++++++++++ > > ?1 file changed, 43 insertions(+) > > > > diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi > > index deaa3efd39..c0e0396758 100644 > > --- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi > > +++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi > > @@ -13,6 +13,49 @@ > > ????????chosen { > > ????????????????u-boot,spl-boot-order = "same-as-spl", &sdmmc, &sdhci; > > ????????}; > > + > > +???????fan: pwm-fan { > > +???????????????cooling-levels = <0 40 80 255>; > > +???????}; > > +}; > > + > > +&cpu_thermal { > > +???????trips { > > +???????????????cpu_warm: cpu_warm { > > +???????????????????????temperature = <50000>; > > +???????????????????????hysteresis = <2000>; > > +???????????????????????type = "active"; > > +???????????????}; > > + > > +???????????????cpu_med: cpu_med { > > +???????????????????????temperature = <60000>; > > +???????????????????????hysteresis = <2000>; > > +???????????????????????type = "active"; > > +???????????????}; > > + > > +???????????????cpu_hot: cpu_hot { > > +???????????????????????temperature = <65000>; > > +???????????????????????hysteresis = <2000>; > > +???????????????????????type = "active"; > > +???????????????}; > > +???????}; > > + > > +???????cooling-maps { > > +???????????????map2 { > > +???????????????????????trip = <&cpu_warm>; > > +???????????????????????cooling-device = <&fan THERMAL_NO_LIMIT 1>; > > +???????????????}; > > + > > +???????????????map3 { > > +???????????????????????trip = <&cpu_med>; > > +???????????????????????cooling-device = <&fan THERMAL_NO_LIMIT 2>; > > +???????????????}; > > + > > +???????????????map4 { > > +???????????????????????trip = <&cpu_hot>; > > +???????????????????????cooling-device = <&fan 2 THERMAL_NO_LIMIT>; > > +???????????????}; > > +???????}; > > ?}; > > > > ?&vdd_center { > > -- > > 2.26.2 > >
Hi Kurt, On Fri, 29 May 2020 at 06:42, Kurt Miller <kurt at intricatesoftware.com> wrote: > > On Fri, 2020-05-29 at 09:27 +0100, Peter Robinson wrote: > > On Thu, May 28, 2020 at 8:32 PM Kurt Miller <kurt at intricatesoftware.com> wrote: > > > > > > > > > The cooling levels are tuned to the fan that comes with the rockpro64 NAS > > > case. A gpu_thermal zone was not added because having two active cooling > > > maps control one physical fan causes them to compete for the fan speed > > > which results in erratic fan behavior. > > Is there any reason this shouldn't go to the linux kernel first and > > then be synced back to the standard rk3399-rockpro64.dtsi? > > Is that a requirement? I do my primary development on OpenBSD and > while I use Linux for work tasks, I don't have available time right > now to push these changes to Linux kernel first. > The problem is that we need to keep Linux and U-Boot in sync. If a DT change is submitted only to one then it isn't clear who is taking on the task of syncing them up. You don't actually need to be using Linux to send a DT change - just clone Linux, apply your patch and send to devicetree at vger.kernel.org. I wonder if it would be good enough to cc that group and the Linux maintainer on these patches, assuming the files are currently in sync? But probably a new patch is needed. Regards, Simon
diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi index deaa3efd39..c0e0396758 100644 --- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi +++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi @@ -13,6 +13,49 @@ chosen { u-boot,spl-boot-order = "same-as-spl", &sdmmc, &sdhci; }; + + fan: pwm-fan { + cooling-levels = <0 40 80 255>; + }; +}; + +&cpu_thermal { + trips { + cpu_warm: cpu_warm { + temperature = <50000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_med: cpu_med { + temperature = <60000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_hot: cpu_hot { + temperature = <65000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map2 { + trip = <&cpu_warm>; + cooling-device = <&fan THERMAL_NO_LIMIT 1>; + }; + + map3 { + trip = <&cpu_med>; + cooling-device = <&fan THERMAL_NO_LIMIT 2>; + }; + + map4 { + trip = <&cpu_hot>; + cooling-device = <&fan 2 THERMAL_NO_LIMIT>; + }; + }; }; &vdd_center {
The cooling levels are tuned to the fan that comes with the rockpro64 NAS case. A gpu_thermal zone was not added because having two active cooling maps control one physical fan causes them to compete for the fan speed which results in erratic fan behavior. Signed-off-by: Kurt Miller <kurt at intricatesoftware.com> --- arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+)