From 0a7c8ed9d94930ba062c71df79f63c06eeab4543 Mon Sep 17 00:00:00 2001
From: Fabian Groffen <grobian@gentoo.org>
Date: Wed, 15 Jan 2025 20:12:02 +0100
Subject: [PATCH] realtek: HPE 1920 24G PoE+ 180W/370W move fans to hwmon

Apply the equivalent of commit f64541db020e ("realtek: HPE 1920 8G PoE+
180W move fans to hwmon") to the 24-ports variants of the HPE 1920 PoE+
switches, with model numbers JG925A and JG926A.

Copy from the original commit message:

  Move to using hwmon and gpio-fan. This is by adding gpio_fan_array to
  DTS and kmod-hwmon-gpiofan to DEVICE_PACKAGES.

  In combination with the new rtl8231 gpio driver the default fan
  behaviour will be maximum fan speed.

  Bump compat value to 1.1 due to existing config in /etc/config/system
  via gpio_switch. Also notify in device compat that fan is now going to
  be at bootloader setting (maximum in this case) by default unless turned
  down.

As the init script 03_gpio_switches does not perform any action after
removing these devices from it, the file can be dropped.

Link: https://github.com/openwrt/openwrt/pull/17598
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
---
 .../base-files/etc/board.d/03_gpio_switches     | 17 -----------------
 .../base-files/etc/board.d/05_compat-version    |  4 +++-
 .../dts/rtl8382_hpe_1920-24g-poe-180w.dts       | 11 +++++++++++
 .../dts/rtl8382_hpe_1920-24g-poe-370w.dts       | 11 +++++++++++
 target/linux/realtek/image/rtl838x.mk           |  6 ++++--
 5 files changed, 29 insertions(+), 20 deletions(-)
 delete mode 100644 target/linux/realtek/base-files/etc/board.d/03_gpio_switches

diff --git a/target/linux/realtek/base-files/etc/board.d/03_gpio_switches b/target/linux/realtek/base-files/etc/board.d/03_gpio_switches
deleted file mode 100644
index c178bd4330..0000000000
--- a/target/linux/realtek/base-files/etc/board.d/03_gpio_switches
+++ /dev/null
@@ -1,17 +0,0 @@
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-board=$(board_name)
-
-case "$board" in
-hpe,1920-24g-poe-180w|\
-hpe,1920-24g-poe-370w)
-	ucidef_add_gpio_switch "fan_ctrl" "Fan control" "456" "0"
-	;;
-esac
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/realtek/base-files/etc/board.d/05_compat-version b/target/linux/realtek/base-files/etc/board.d/05_compat-version
index 687cbb32a5..9c27314b24 100644
--- a/target/linux/realtek/base-files/etc/board.d/05_compat-version
+++ b/target/linux/realtek/base-files/etc/board.d/05_compat-version
@@ -8,7 +8,9 @@
 board_config_update
 
 case "$(board_name)" in
-	hpe,1920-8g-poe-180w)
+	hpe,1920-8g-poe-180w | \
+	hpe,1920-24g-poe-180w | \
+	hpe,1920-24g-poe-370w)
 		ucidef_set_compat_version "1.1"
 	;;
 	zyxel,gs1900-8 | \
diff --git a/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-180w.dts b/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-180w.dts
index 4783cec15c..69e647c59a 100644
--- a/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-180w.dts
+++ b/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-180w.dts
@@ -5,6 +5,17 @@
 / {
 	compatible = "hpe,1920-24g-poe-180w", "realtek,rtl838x-soc";
 	model = "HPE 1920-24G-PoE+ 180W (JG925A)";
+
+	gpio_fan_array {
+		compatible = "gpio-fan";
+
+		gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map =    <5000 0>,
+					<8200 1>;
+
+		alarm-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		#cooling-cells = <2>;
+	};
 };
 
 &uart1 {
diff --git a/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-370w.dts b/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-370w.dts
index ccdcf71d1b..532f23ab2f 100644
--- a/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-370w.dts
+++ b/target/linux/realtek/dts/rtl8382_hpe_1920-24g-poe-370w.dts
@@ -5,6 +5,17 @@
 / {
 	compatible = "hpe,1920-24g-poe-370w", "realtek,rtl838x-soc";
 	model = "HPE 1920-24G-PoE+ 370W (JG926A)";
+
+	gpio_fan_array {
+		compatible = "gpio-fan";
+
+		gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map =    <5000 0>,
+					<8200 1>;
+
+		alarm-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		#cooling-cells = <2>;
+	};
 };
 
 &uart1 {
diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk
index 27dbc6ce59..34464316c7 100644
--- a/target/linux/realtek/image/rtl838x.mk
+++ b/target/linux/realtek/image/rtl838x.mk
@@ -147,18 +147,20 @@ TARGET_DEVICES += hpe_1920-24g
 
 define Device/hpe_1920-24g-poe-180w
   $(Device/hpe_1920)
+  $(Device/hwmon-fan-migration)
   SOC := rtl8382
   DEVICE_MODEL := 1920-24G-PoE+ 180W (JG925A)
-  DEVICE_PACKAGES += realtek-poe
+  DEVICE_PACKAGES += realtek-poe kmod-hwmon-gpiofan
   H3C_DEVICE_ID := 0x00010028
 endef
 TARGET_DEVICES += hpe_1920-24g-poe-180w
 
 define Device/hpe_1920-24g-poe-370w
   $(Device/hpe_1920)
+  $(Device/hwmon-fan-migration)
   SOC := rtl8382
   DEVICE_MODEL := 1920-24G-PoE+ 370W (JG926A)
-  DEVICE_PACKAGES += realtek-poe
+  DEVICE_PACKAGES += realtek-poe kmod-hwmon-gpiofan
   H3C_DEVICE_ID := 0x00010029
 endef
 TARGET_DEVICES += hpe_1920-24g-poe-370w
-- 
2.30.2