apm821xx: wndr4700: add preliminary drivetemp sensor
authorChristian Lamparter <chunkeey@gmail.com>
Sat, 21 Mar 2020 20:40:15 +0000 (21:40 +0100)
committerChristian Lamparter <chunkeey@gmail.com>
Sun, 22 Mar 2020 22:02:09 +0000 (23:02 +0100)
This patch prepares the WNDR4700 to use the HDD sensor for
the thermal zone. While the kernel's thermal.txt device-tree
binding documentation files talks about supporting multiple
sensors for a zone. This sadly is NOT the case. Even the most
current upstream kernels (5.6-rc) supports just >one< sensor
per zone: (driver/base/of-thermal.c:886)
| * REVIST: for now, the thermal framework supports only
| * one sensor per thermal zone. Thus, we are considering
| * only the first two values as slope and offset.

I do hope that this warning will prevent others wasteing time
on trying to figure out why their multi-sensor thermal-zones
definitions are not working as specified.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
target/linux/apm821xx/dts/netgear-wndr4700.dts
target/linux/apm821xx/image/Makefile

index 24603c4247f9ccbce80ca8b88d452e47c1a33c4b..8972d2b030cf15c51b2065089b9267d6c62b7bd4 100644 (file)
 
                        thermal-sensors = <&temp0 1>;
 
+                       /*
+                        * REVISIT:
+                        *
+                        * Add the <&drive_temp>; sensor there and wire up
+                        * the coefficients = <1 1>; property.
+                        *
+                        * Note: The kernel does not yet support more than
+                        * one sensor (see of_thermal.c's function:
+                        * thermal_of_build_thermal_zon()). Once this is
+                        * implemented.
+                        */
+
                        trips {
                                /*
                                 * Once the thermal governers are a bit smarter
                                 * and do hysteresis properly, we can disable
                                 * the fan when the HDD and CPU has < 39 C.
                                 */
-                               cpu_alert0: cpu-alert0 {
+                               cpu_alert0: board-alert0 {
                                        temperature = <25000>;
                                        hysteresis = <2000>;
                                        type = "active";
 
 &SATA1 {
        status = "okay";
+
+       /*
+        * This drive may have a temperature sensor with a
+        * thermal zone we can use for thermal control of the
+        * chassis temperature using the fan.
+        */
+
+       drive_temp: sata-port@0 {
+               reg = <0>;
+               #thermal-sensor-cells = <0>;
+       };
 };
 
 &USBOTG0 {
index 27c7f122da15e67f8607301a92f46ccef7acfdbe..d732141c8f88b72aa2705c8292853b1d47a78a42 100644 (file)
@@ -191,7 +191,7 @@ TARGET_DEVICES += netgear_wndap660
 define Device/netgear_wndr4700
   DEVICE_VENDOR := NETGEAR
   DEVICE_MODEL := Centria N900 WNDR4700/WNDR4720
-  DEVICE_PACKAGES := badblocks block-mount e2fsprogs \
+  DEVICE_PACKAGES := badblocks block-mount e2fsprogs kmod-hwmon-drivetemp \
        kmod-dm kmod-fs-ext4 kmod-fs-vfat kmod-usb-ledtrig-usbport \
        kmod-md-mod kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-iso8859-15 \
        kmod-nls-utf8 kmod-usb3 kmod-usb-dwc2 kmod-usb-storage \