[PATCH 1/2] ipq807x: ZyXEL NBG7815: add fan support

Enrico Mioso mrkiko.rs at gmail.com
Sat Feb 18 12:43:58 PST 2023




On Sat, 18 Feb 2023, Robert Marko wrote:

> Date: Sat, 18 Feb 2023 12:50:19
> From: Robert Marko <robimarko at gmail.com>
> To: Enrico Mioso <mrkiko.rs at gmail.com>
> Cc: openwrt-devel at lists.openwrt.org, Andre Valentin <avalentin at marcant.net>,
>     Karol Przybylski <karol.przybylski at esm-technology.pl>
> Subject: Re: [PATCH 1/2] ipq807x: ZyXEL NBG7815: add fan support
> 
> On Sat, 18 Feb 2023 at 00:58, Enrico Mioso <mrkiko.rs at gmail.com> wrote:
>>
>> Add on/off fan support for the ZyXEL NBG7815. Single CPU cores, cluster
>> CPU temperatures and the Aquantia PHY temperature sensor are monitored. The
>> tmp103 sensor is missing from this patch, and can be added later, when kernel
>> is bumped to 6.x, as it seems to require non-trivial hwmon backporting.
>> Add kmod-phy-aquantia as default package while at it.
>>
>> Note: this patch has been marked RFT, since temperature values tuning is
>> needed from someone actively using this device in high load conditions.
>> Thanks to robimarko for helping me out.
>>
>> CC: Andre Valentin <avalentin at marcant.net>
>> CC: Karol Przybylski <karol.przybylski at esm-technology.pl>
>> Signed-off-by: Enrico Mioso <mrkiko.rs at gmail.com>
>> ---
>>  .../arm64/boot/dts/qcom/ipq8074-nbg7815.dts   | 119 ++++++++++++++++++
>>  target/linux/ipq807x/image/generic.mk         |   2 +-
>>  2 files changed, 120 insertions(+), 1 deletion(-)
>>
>> diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts
>> index 537dd52032..0ec602cf31 100644
>> --- a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts
>> +++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts
>> @@ -39,6 +39,22 @@
>>                         gpios = <&tlmm 54 GPIO_ACTIVE_LOW>;
>>                 };
>>         };
>> +
>> +       fan: gpio_fan {
>> +               compatible = "gpio-fan";
>> +               gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
>> +               gpio-fan,speed-map = <0    0
>> +                                                       4500 1>;
>> +               #cooling-cells = <2>;
>> +       };
>> +
>> +       thermal-zones {
>> +               aqr_thermal: aqr-thermal {
>
> This is weird, why are you adding only the thermal zone here, then
> using the label to add the trips and cooling device
> down in the DTS?
>
>> +                       polling-delay-passive = <1000>;
>> +                       polling-delay = <1000>;
>> +                       thermal-sensors = <&aqr113c>;
>> +               };
>> +       };
>>  };
>>
>>  &tlmm {
>> @@ -291,6 +307,7 @@
>>                 compatible = "ethernet-phy-ieee802.3-c45";
>>                 reg = <8>;
>>                 reset-gpios = <&tlmm 63 GPIO_ACTIVE_LOW>;
>> +               #thermal-sensor-cells = <0>;
>>         };
>>  };
>>
>> @@ -443,3 +460,105 @@
>>
>>         qcom,ath11k-calibration-variant = "Zyxel-NBG7815";
>>  };
>> +
>> +&cpu0_thermal {
>> +       trips {
>> +               cpu0_active: cpu0-active {
>> +                       temperature = <70000>;
>> +                       hysteresis = <5000>;
>> +                       type = "active";
>> +               };
>> +       };
>> +
>> +       cooling-maps {
>> +               map1 {
>> +                       trip = <&cpu0_active>;
>> +                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> +               };
>> +       };
>> +};
>> +
>> +&cpu1_thermal {
>> +       trips {
>> +               cpu1_active: cpu1-active {
>> +                       temperature = <70000>;
>> +                       hysteresis = <5000>;
>> +                       type = "active";
>> +               };
>> +       };
>> +
>> +       cooling-maps {
>> +               map1 {
>> +                       trip = <&cpu1_active>;
>> +                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> +               };
>> +       };
>> +};
>> +
>> +&cpu2_thermal {
>> +       trips {
>> +               cpu2_active: cpu2-active {
>> +                       temperature = <70000>;
>> +                       hysteresis = <5000>;
>> +                       type = "active";
>> +               };
>> +       };
>> +
>> +       cooling-maps {
>> +               map1 {
>> +                       trip = <&cpu2_active>;
>> +                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> +               };
>> +       };
>> +};
>> +
>> +&cpu3_thermal {
>> +       trips {
>> +               cpu3_active: cpu3-active {
>> +                       temperature = <70000>;
>> +                       hysteresis = <5000>;
>> +                       type = "active";
>> +               };
>> +       };
>> +
>> +       cooling-maps {
>> +               map1 {
>> +                       trip = <&cpu3_active>;
>> +                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> +               };
>> +       };
>> +};
>> +
>> +&cluster_thermal {
>> +       trips {
>> +               cluster_active: cluster-active {
>> +                       temperature = <70000>;
>> +                       hysteresis = <5000>;
>> +                       type = "active";
>> +               };
>> +       };
>> +
>> +       cooling-maps {
>> +               map1 {
>> +                       trip = <&cluster_active>;
>> +                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> +               };
>> +       };
>> +};
>> +
>> +&aqr_thermal {
>
> This ties into my question for the zone, why not just add it directly

Thanks for your review and feedback! :)

Well - there is no particular reason - it was just a matter of taste; I tought it was nicer to be able to see / tune temp values in a single zone of the file.
I will however move this up in the thermal zone next revision.

Thanks again,
Enrico

> in the node?
>> +       trips {
>> +               aqr_thermal_active: aqr-thermal-active {
>> +                       temperature = <70000>;
>> +                       hysteresis = <5000>;
>> +                       type = "active";
>> +               };
>> +       };
>> +
>> +       cooling-maps {
>> +               map1 {
>> +                       trip = <&aqr_thermal_active>;
>> +                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> +               };
>> +       };
>> +};
>> diff --git a/target/linux/ipq807x/image/generic.mk b/target/linux/ipq807x/image/generic.mk
>> index 38770a5f24..bbdb8c5d8b 100644
>> --- a/target/linux/ipq807x/image/generic.mk
>> +++ b/target/linux/ipq807x/image/generic.mk
>> @@ -141,6 +141,6 @@ define Device/zyxel_nbg7815
>>         IMAGES += factory.bin sysupgrade.bin
>>         IMAGE/factory.bin := append-rootfs | pad-rootfs | pad-to 64k
>>         IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-to 64k | sysupgrade-tar rootfs=$$$$@ | append-metadata
>> -       DEVICE_PACKAGES := ipq-wifi-zyxel_nbg7815 kmod-ath11k-pci e2fsprogs kmod-fs-ext4 losetup kmod-hwmon-tmp103
>> +       DEVICE_PACKAGES := ipq-wifi-zyxel_nbg7815 kmod-ath11k-pci e2fsprogs kmod-fs-ext4 losetup kmod-hwmon-tmp103 kmod-hwmon-gpiofan kmod-phy-aquantia
>>  endef
>
> No need to add AQR kmod as it's included by default on the target.
>
> Regards,
> Robert
>>  TARGET_DEVICES += zyxel_nbg7815
>> --
>> 2.39.2
>>
>>
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>



More information about the openwrt-devel mailing list