[openwrt/openwrt] x86: add led driver for PC Engines APU1
LEDE Commits
lede-commits at lists.infradead.org
Sat Feb 20 05:29:37 EST 2021
aparcar pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/a3e6521c1a7d4c78d825833e224272ec89a38bf2
commit a3e6521c1a7d4c78d825833e224272ec89a38bf2
Author: Andreas Eberlein <foodeas at aeberlein.de>
AuthorDate: Tue Jun 23 22:59:26 2020 +0200
x86: add led driver for PC Engines APU1
This driver adds the LED support for the PC Engines APU1.
This integrates the Linux kernel driver and includes a patch to support
newer firmware versions. Also the default LED configuration is updated
to use the correct devices.
Signed-off-by: Andreas Eberlein <foodeas at aeberlein.de>
---
package/kernel/linux/modules/leds.mk | 16 +++++++++
target/linux/x86/base-files/etc/board.d/01_leds | 8 ++---
target/linux/x86/base-files/etc/board.d/02_network | 2 +-
target/linux/x86/base-files/lib/preinit/01_sysinfo | 4 +++
.../x86/patches-5.4/300-pcengines_apu1_led.patch | 41 ++++++++++++++++++++++
5 files changed, 66 insertions(+), 5 deletions(-)
diff --git a/package/kernel/linux/modules/leds.mk b/package/kernel/linux/modules/leds.mk
index bc94e54ae1..2e5a56df1a 100644
--- a/package/kernel/linux/modules/leds.mk
+++ b/package/kernel/linux/modules/leds.mk
@@ -84,6 +84,22 @@ endef
$(eval $(call KernelPackage,ledtrig-oneshot))
+define KernelPackage/leds-apu
+ SUBMENU:=$(LEDS_MENU)
+ TITLE:=PC Engines APU1 LED support
+ DEPENDS:= @GPIO_SUPPORT @TARGET_x86
+ KCONFIG:=CONFIG_LEDS_APU
+ FILES:=$(LINUX_DIR)/drivers/leds/leds-apu.ko
+ AUTOLOAD:=$(call AutoLoad,60,leds-apu,1)
+endef
+
+define KernelPackage/leds-apu/description
+ Driver for the PC Engines APU1 LEDs.
+endef
+
+$(eval $(call KernelPackage,leds-apu))
+
+
define KernelPackage/leds-pca963x
SUBMENU:=$(LEDS_MENU)
TITLE:=PCA963x LED support
diff --git a/target/linux/x86/base-files/etc/board.d/01_leds b/target/linux/x86/base-files/etc/board.d/01_leds
index 25dc4aeeb1..e9133e8877 100755
--- a/target/linux/x86/base-files/etc/board.d/01_leds
+++ b/target/linux/x86/base-files/etc/board.d/01_leds
@@ -8,10 +8,10 @@
board_config_update
case "$(board_name)" in
-pc-engines-apu|pc-engines-apu2|pc-engines-apu3)
- ucidef_set_led_netdev "wan" "WAN" "apu2:green:led3" "eth0"
- ucidef_set_led_netdev "lan" "LAN" "apu2:green:led2" "br-lan"
- ucidef_set_led_default "diag" "DIAG" "apu2:green:power" "1"
+pc-engines-apu1|pc-engines-apu2|pc-engines-apu3)
+ ucidef_set_led_netdev "wan" "WAN" "apu:green:3" "eth0"
+ ucidef_set_led_netdev "lan" "LAN" "apu:green:2" "br-lan"
+ ucidef_set_led_default "diag" "DIAG" "apu:green:1" "1"
;;
traverse-technologies-geos)
ucidef_set_led_netdev "lan" "LAN" "geos:1" "br-lan" "tx rx"
diff --git a/target/linux/x86/base-files/etc/board.d/02_network b/target/linux/x86/base-files/etc/board.d/02_network
index c6e381b946..05a68967bc 100755
--- a/target/linux/x86/base-files/etc/board.d/02_network
+++ b/target/linux/x86/base-files/etc/board.d/02_network
@@ -9,7 +9,7 @@
board_config_update
case "$(board_name)" in
-pc-engines-apu|pc-engines-apu2|pc-engines-apu3)
+pc-engines-apu1|pc-engines-apu2|pc-engines-apu3)
ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
;;
traverse-technologies-geos)
diff --git a/target/linux/x86/base-files/lib/preinit/01_sysinfo b/target/linux/x86/base-files/lib/preinit/01_sysinfo
index 466c831e7e..b608d4edab 100644
--- a/target/linux/x86/base-files/lib/preinit/01_sysinfo
+++ b/target/linux/x86/base-files/lib/preinit/01_sysinfo
@@ -18,6 +18,10 @@ do_sysinfo_x86() {
for file in product_name board_name; do
product="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)"
case "$vendor:$product" in
+ "PC Engines:APU")
+ product="apu1"
+ break
+ ;;
"Supermicro:Super Server")
continue
;;
diff --git a/target/linux/x86/patches-5.4/300-pcengines_apu1_led.patch b/target/linux/x86/patches-5.4/300-pcengines_apu1_led.patch
new file mode 100644
index 0000000000..9d1e4ab9c2
--- /dev/null
+++ b/target/linux/x86/patches-5.4/300-pcengines_apu1_led.patch
@@ -0,0 +1,41 @@
+From: Andreas Eberlein <foodeas at aeberlein.de>
+Subject: x86: add LED support for PC Engines APU1 with mainline bios
+
+This adds support for the LEDs on PC Engines APU1 with the mainline bios.
+
+Signed-off-by: Andreas Eberlein <foodeas at aeberlein.de>
+---
+--- a/drivers/leds/leds-apu.c
++++ b/drivers/leds/leds-apu.c
+@@ -83,6 +83,7 @@ static const struct apu_led_profile apu1
+ };
+
+ static const struct dmi_system_id apu_led_dmi_table[] __initconst = {
++ /* PC Engines APU with "Legacy" bios < 4.0.8 */
+ {
+ .ident = "apu",
+ .matches = {
+@@ -90,6 +91,14 @@ static const struct dmi_system_id apu_le
+ DMI_MATCH(DMI_PRODUCT_NAME, "APU")
+ }
+ },
++ /* PC Engines APU with "Mainline" bios >= 4.0.8 */
++ {
++ .ident = "apu",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "apu1")
++ }
++ },
+ {}
+ };
+ MODULE_DEVICE_TABLE(dmi, apu_led_dmi_table);
+@@ -173,7 +182,7 @@ static int __init apu_led_init(void)
+ int err;
+
+ if (!(dmi_match(DMI_SYS_VENDOR, "PC Engines") &&
+- dmi_match(DMI_PRODUCT_NAME, "APU"))) {
++ (dmi_match(DMI_PRODUCT_NAME, "APU") || dmi_match(DMI_PRODUCT_NAME, "apu1")))) {
+ pr_err("No PC Engines APUv1 board detected. For APUv2,3 support, enable CONFIG_PCENGINES_APU2\n");
+ return -ENODEV;
+ }
More information about the lede-commits
mailing list