diff --git a/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan b/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan new file mode 100644 index 00000000000000..1a5fd3606f24c8 --- /dev/null +++ b/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan @@ -0,0 +1,26 @@ +# +# Copyright (C) 2024 openwrt.org +# + +. /lib/functions.sh + +board=$(board_name) + +case "$board" in +d-link,dgs-1210-28mp-f) + # Enable fan control + FAN_CTRL='/sys/class/hwmon/hwmon0' + echo 1 > "$FAN_PATH/pwm1_enable" + + # Set fan script execution in crontab + grep -s -q fan_ctrl.sh /etc/crontabs/root && exit 0 + + echo "# dlink fan script runs every 5 minutes" >> /etc/crontabs/root + echo "*/5 * * * * /sbin/fan_ctrl.sh" >> /etc/crontabs/root + + # Execute one time after initial flash (instead of waiting 5 min for cron) + /sbin/fan_ctrl.sh + ;; +esac + +exit 0 diff --git a/target/linux/realtek/base-files/sbin/fan_ctrl.sh b/target/linux/realtek/base-files/sbin/fan_ctrl.sh new file mode 100755 index 00000000000000..e7b661d7bb6685 --- /dev/null +++ b/target/linux/realtek/base-files/sbin/fan_ctrl.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +PSU_TEMP=$(cut -c1-2 /sys/class/hwmon/hwmon0/temp1_input) + +FAN_CTRL='/sys/class/hwmon/hwmon0/pwm1' + +PSU_THRESH=51000 + +if [ "$PSU_TEMP" -ge "$PSU_THRESH" ];then + echo "250" > $FAN_CTRL +else + echo "156" > $FAN_CTRL +fi diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts index d1419cf7ed19d5..4c20a4ae6e2aa6 100644 --- a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts @@ -9,6 +9,22 @@ / { compatible = "d-link,dgs-1210-28mp-f", "realtek,rtl8382-soc", "realtek,rtl838x-soc"; model = "D-Link DGS-1210-28MP F"; + + /* LM63 */ + i2c-gpio-4 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>; + i2c-gpio,delay-us = <2>; + i2c-gpio,scl-open-drain; /* should be replaced by i2c-gpio,scl-has-no-pullup in kernel 6.6 */ + #address-cells = <1>; + #size-cells = <0>; + + lm63@4c { + compatible = "national,lm63"; + reg = <0x4c>; + }; + }; }; &leds { diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk index 05574e5375d68f..c44e3a74f7ecca 100644 --- a/target/linux/realtek/image/rtl838x.mk +++ b/target/linux/realtek/image/rtl838x.mk @@ -71,7 +71,7 @@ define Device/d-link_dgs-1210-28mp-f SOC := rtl8382 DEVICE_MODEL := DGS-1210-28MP DEVICE_VARIANT := F - DEVICE_PACKAGES += realtek-poe + DEVICE_PACKAGES += realtek-poe kmod-hwmon-lm63 endef TARGET_DEVICES += d-link_dgs-1210-28mp-f