From 9f14216a2c4c9d669d8033df31f40f2ca05ce41d Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 28 Mar 2020 21:55:31 +0000 Subject: [PATCH] oxnas: some improvements for Shuttle KD20 * install kmod-hwmon-drivetemp by default * wire up thermal zone * fix fan GPIO polarity * fix i2c-gpio GPIO_OPEN_DRAIN Signed-off-by: Daniel Golle --- target/linux/oxnas/config-5.4 | 6 +++ .../arch/arm/boot/dts/ox820-shuttle-kd20.dts | 54 +++++++++++++++++-- target/linux/oxnas/image/ox820.mk | 6 +-- 3 files changed, 59 insertions(+), 7 deletions(-) diff --git a/target/linux/oxnas/config-5.4 b/target/linux/oxnas/config-5.4 index 973bbc79dda..112d4e43be5 100644 --- a/target/linux/oxnas/config-5.4 +++ b/target/linux/oxnas/config-5.4 @@ -328,6 +328,12 @@ CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y CONFIG_SWPHY=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_THERMAL=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TIMER_OF=y CONFIG_TIMER_PROBE=y diff --git a/target/linux/oxnas/files/arch/arm/boot/dts/ox820-shuttle-kd20.dts b/target/linux/oxnas/files/arch/arm/boot/dts/ox820-shuttle-kd20.dts index 61ea2b57a74..0bcd2fcf000 100644 --- a/target/linux/oxnas/files/arch/arm/boot/dts/ox820-shuttle-kd20.dts +++ b/target/linux/oxnas/files/arch/arm/boot/dts/ox820-shuttle-kd20.dts @@ -4,6 +4,7 @@ #include #include +#include / { model = "Shuttle KD20"; @@ -30,13 +31,48 @@ led-upgrade = &led_warn; }; + thermal_zones { + chassis-thermal { + /* Poll every 20 seconds */ + polling-delay = <20000>; + /* Poll every 2nd second when cooling */ + polling-delay-passive = <2000>; + + thermal-sensors = <&hdd0_temp>, <&hdd1_temp>; + + trips { + chassis_alert0: chassis-alert0 { + /* At 43 degrees turn on fan */ + temperature = <43000>; + hysteresis = <3000>; + type = "active"; + }; + + chassis_alert1: chassis-alert1 { + /* At 60 degrees emergency shutdown */ + temperature = <60000>; + hysteresis = <2000>; + type = "critical"; + }; + }; + + cooling-maps { + map0 { + trip = <&chassis_alert0>; + cooling-device = <&system_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + }; + i2c-gpio { compatible = "i2c-gpio"; - sda-gpios = <&gpio1 9 (GPIO_ACTIVE_HIGH|GPIO_LINE_OPEN_DRAIN)>; - sck-gpios = <&gpio1 10 (GPIO_ACTIVE_HIGH|GPIO_LINE_OPEN_DRAIN)>; + sda-gpios = <&gpio1 9 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + sck-gpios = <&gpio1 10 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; i2c-gpio,delay-us = <10>; #address-cells = <1>; #size-cells = <0>; + rtc0: rtc@51 { compatible = "nxp,pcf8563"; reg = <0x51>; @@ -112,9 +148,9 @@ gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; }; - gpio-fan { + system_fan: gpio-fan { compatible = "gpio-fan"; - gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; gpio-fan,speed-map = <0 0 3000 1>; }; @@ -193,6 +229,16 @@ &sata { status = "okay"; nr-ports = <2>; + + hdd0_temp: sata-port@0 { + reg = <0>; + #thermal-sensor-cells = <0>; + }; + + hdd1_temp: sata-port@1 { + reg = <1>; + #thermal-sensor-cells = <0>; + }; }; &pcie_phy { diff --git a/target/linux/oxnas/image/ox820.mk b/target/linux/oxnas/image/ox820.mk index 7a41e1641bc..2a9295bd971 100644 --- a/target/linux/oxnas/image/ox820.mk +++ b/target/linux/oxnas/image/ox820.mk @@ -73,9 +73,9 @@ define Device/shuttle_kd20 KERNEL_INITRAMFS = kernel-bin | append-dtb | uImage none | omninas-factory | \ encrypt-3des sohmuntitnlaes DEVICE_PACKAGES := kmod-usb2-oxnas kmod-usb3 kmod-usb-ledtrig-usbport \ - kmod-i2c-gpio kmod-rtc-pcf8563 kmod-gpio-beeper kmod-hwmon-gpiofan \ - kmod-ata-oxnas-sata kmod-md-mod kmod-md-raid0 kmod-md-raid1 kmod-fs-ext4 \ - kmod-fs-xfs + kmod-i2c-gpio kmod-rtc-pcf8563 kmod-gpio-beeper kmod-hwmon-drivetemp \ + kmod-hwmon-gpiofan kmod-ata-oxnas-sata kmod-md-mod kmod-md-raid0 \ + kmod-md-raid1 kmod-fs-ext4 kmod-fs-xfs endef TARGET_DEVICES += shuttle_kd20 -- 2.30.2