mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
3c152904c2
The DGS-1210-28MP has a LM63 fan controller connected via i2c of the RTL8231. The clock line is always low if the property i2c-gpio,scl-open-drain is not set; with this property, the GPIO pin is force-drive and the clock works as expected. The LM63 is not configured by U-Boot, thus only manual fan control is possible by settings pwm1_enable to "1" and writing the desired values to pwm1. The OEM firmware drives the fan from user mode and sets it up like this: // PWM LUT/value r/w, PWM Clock = 1.4kHz 0x4a 0x28 // Tachometer spinup disabled, spin-up cycles bypassed 0x4b 0x00 // PWM Frequency = default 0x4d 0x17 // PWM Value (28) 0x4c 0x1c // If > 0 C, use 0x50 0x00 // PWM = 28 0x51 0x1c // If > 51 C, use 0x52 0x33 // PWM = 44 0x53 0x2e // Set hysteresis to 100 = default 0x4f 0x03 // Turn on automatic mode and w/p the LUT values 0x4a 0x08 A thread in the OEM firmware polls the ALERT status register for fan failures. Unfortunately, the lm63 kernel driver does not perform any initialization of the chip and it does not support changing some config registers (like PWM frequency or LUT). Hence, we are stuck with the defaults and need to do fan control in software. Signed-off-by: Andreas Böhler <dev@aboehler.at> Link: https://github.com/openwrt/openwrt/pull/15616 Signed-off-by: Sander Vanheule <sander@svanheule.net>
14 lines
227 B
Bash
Executable File
14 lines
227 B
Bash
Executable File
#!/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
|