gpio-cdev: re-add nu801 userspace driver

This reverts commit 80b7a8a7f5.

Now that 5.10 is the default kernel for all platforms, we can
bring back the NU801 userspace driver for platforms that rely
on it. Currently it's used on the MX100 x86_64 target, but
other Meraki platforms use this controller.

Note that we also now change how we load nu801. The way we did
this previously with procd worked, but it meant it didn't load
until everything was up and working.

To fix this, let's call nu801 from boot and re-trigger the
preinit blink sequence. Since nu801 runs as a daemon this is
now something we can do.

Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
(removed empty line, currently only MX100 uses it so: @TARGET_x86)
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
Chris Blake 2022-03-19 17:13:42 -05:00 committed by Christian Lamparter
parent cb6f4be137
commit 3f874519b4
4 changed files with 55 additions and 2 deletions

View File

@ -0,0 +1,39 @@
# SPDX-License-Identifier: GPL-2.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=nu801
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/chunkeey/nu801.git
PKG_SOURCE_VERSION:=d9942c0ceb949080b93366a9431028de3608e535
PKG_MAINTAINER:=Christian Lamparter <chunkeey@gmail.com>
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/nu801
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=Userspace GPIO Drivers
DEPENDS:=@TARGET_x86 +kmod-leds-uleds
KCONFIG:=CONFIG_GPIO_CDEV=y
TITLE:=NU801 LED Driver
endef
define Package/nu801/description
This package contains a userspace driver to power the NUMEN Tech. NU801 LED Driver.
endef
define Package/nu801/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/nu801 $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/nu801.init $(1)/etc/init.d/nu801
endef
$(eval $(call BuildPackage,nu801))

View File

@ -0,0 +1,14 @@
#!/bin/sh /etc/rc.common
# SPDX-License-Identifier: GPL-2.0-or-later
START=11
boot() {
. /lib/functions.sh
/usr/sbin/nu801 "$(board_name)"
# Because this is a userspace driver, we need to trigger diag.sh after
# we start the driver, but before boot is complete so we blink.
. /etc/diag.sh
set_state preinit_regular
}

View File

@ -9,7 +9,7 @@ board_config_update
case "$(board_name)" in
cisco-mx100-hw)
ucidef_set_led_usbport "usb" "USB" "mx100:green:usb" "1-1-port2"
ucidef_set_led_default "diag" "DIAG" "mx100:green:ha" "1"
ucidef_set_led_default "diag" "DIAG" "mx100:green:tricolor" "1"
;;
pc-engines-apu1|pc-engines-apu2|pc-engines-apu3)
ucidef_set_led_netdev "wan" "WAN" "apu:green:3" "eth0"

View File

@ -88,7 +88,7 @@ define KernelPackage/meraki-mx100
SUBMENU:=$(OTHER_MENU)
TITLE:=Cisco Meraki MX100 Platform Driver
DEPENDS:=@TARGET_x86 @!LINUX_5_4 +kmod-tg3 +kmod-gpio-button-hotplug +kmod-leds-gpio \
+kmod-usb-ledtrig-usbport +kmod-itco-wdt
+kmod-usb-ledtrig-usbport +nu801 +kmod-itco-wdt
KCONFIG:=CONFIG_MERAKI_MX100
FILES:=$(LINUX_DIR)/drivers/platform/x86/meraki-mx100.ko
AUTOLOAD:=$(call AutoLoad,60,meraki-mx100,1)