From d35fabb64f7292ed1f41609cf7856db36c4aa7f6 Mon Sep 17 00:00:00 2001 From: Nick Mello Date: Sat, 7 Feb 2026 00:28:04 -0600 Subject: [PATCH] gpio-keyboard-driver: Add driver Adds the gpio keyboard driver to the BSP. The driver probes but fails to find device tree information it is looking for. Signed-off-by: Nicholas Mello --- Config.in | 5 +++++ board/arcade.dts | 8 +++++++ board/skeleton-device-table.txt | 4 ++++ board/skeleton/etc/init.d/S20driver-setup | 22 +++++++++++++++++++ configs/arcade_defconfig | 5 ++++- external.desc | 2 +- external.mk | 2 ++ package/gpio-keyboard-driver/Config.in | 9 ++++++++ .../gpio-keyboard-driver.mk | 12 ++++++++++ 9 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 board/arcade.dts create mode 100644 board/skeleton-device-table.txt create mode 100644 board/skeleton/etc/init.d/S20driver-setup create mode 100644 package/gpio-keyboard-driver/Config.in create mode 100644 package/gpio-keyboard-driver/gpio-keyboard-driver.mk diff --git a/Config.in b/Config.in index e69de29..56bcc4d 100644 --- a/Config.in +++ b/Config.in @@ -0,0 +1,5 @@ +menu "Arcade Machine Customizations" + +source "$BR2_EXTERNAL_ARCADE_PATH/package/gpio-keyboard-driver/Config.in" + +endmenu diff --git a/board/arcade.dts b/board/arcade.dts new file mode 100644 index 0000000..511195b --- /dev/null +++ b/board/arcade.dts @@ -0,0 +1,8 @@ +#include "broadcom/bcm2711-rpi-4-b.dts" + +/ { + gpio-keyboard { + compatible = "arcade,gpio-keyboard"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + }; +}; diff --git a/board/skeleton-device-table.txt b/board/skeleton-device-table.txt new file mode 100644 index 0000000..5ffc455 --- /dev/null +++ b/board/skeleton-device-table.txt @@ -0,0 +1,4 @@ +# +/etc d 755 0 0 - - - - - +/etc/init.d d 755 0 0 - - - - - +/etc/init.d/S20driver-setup f 755 0 0 - - - - - diff --git a/board/skeleton/etc/init.d/S20driver-setup b/board/skeleton/etc/init.d/S20driver-setup new file mode 100644 index 0000000..236ef73 --- /dev/null +++ b/board/skeleton/etc/init.d/S20driver-setup @@ -0,0 +1,22 @@ +#!/bin/sh + +start() { + modprobe gpio_keyboard_driver +} + +stop() { + rmmod gpio_keyboard_driver +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; +esac diff --git a/configs/arcade_defconfig b/configs/arcade_defconfig index c0a33c3..6a67c40 100644 --- a/configs/arcade_defconfig +++ b/configs/arcade_defconfig @@ -6,7 +6,9 @@ BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt $(BR2_EXTERNAL_ARCADE_PATH)/board/skeleton-device-table.txt" BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_ARCADE_PATH)/board/skeleton/" BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" BR2_LINUX_KERNEL=y @@ -14,7 +16,7 @@ BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ac69f097e1fba94502cbd36278db204120a37943)/linux-ac69f097e1fba94502cbd36278db204120a37943.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b broadcom/bcm2711-rpi-400 broadcom/bcm2711-rpi-cm4 broadcom/bcm2711-rpi-cm4s" +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_ARCADE_PATH)/board/arcade.dts" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_XZ=y @@ -31,3 +33,4 @@ BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_KMOD_XZ=y BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_GPIO_KEYBOARD_DRIVER=y diff --git a/external.desc b/external.desc index 064334c..33f7fa7 100644 --- a/external.desc +++ b/external.desc @@ -1,3 +1,3 @@ -name: arcade +name: ARCADE desc: Project for building the operating system for an arcade machine url: https://github.com/nicholasmello/arcade diff --git a/external.mk b/external.mk index e69de29..0490c10 100644 --- a/external.mk +++ b/external.mk @@ -0,0 +1,2 @@ +$(info Including custom arcade packages) +include $(BR2_EXTERNAL_ARCADE_PATH)/package/*/*.mk diff --git a/package/gpio-keyboard-driver/Config.in b/package/gpio-keyboard-driver/Config.in new file mode 100644 index 0000000..5992727 --- /dev/null +++ b/package/gpio-keyboard-driver/Config.in @@ -0,0 +1,9 @@ +comment "gpio-keyboard-driver needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_GPIO_KEYBOARD_DRIVER + bool "gpio-keyboard-driver" + depends on BR2_LINUX_KERNEL + help + Driver for converting GPIO pins to keyboard actions with run time + configuration diff --git a/package/gpio-keyboard-driver/gpio-keyboard-driver.mk b/package/gpio-keyboard-driver/gpio-keyboard-driver.mk new file mode 100644 index 0000000..539b022 --- /dev/null +++ b/package/gpio-keyboard-driver/gpio-keyboard-driver.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# gpio-keyboard-driver +# +################################################################################ + +GPIO_KEYBOARD_DRIVER_VERSION = 7e57df0d3b39fb64fb278f433292a378e1fd0515 +GPIO_KEYBOARD_DRIVER_SITE = gitea@ssh.git.home.arpa:arcade/gpio-keyboard-driver.git +GPIO_KEYBOARD_DRIVER_SITE_METHOD = git + +$(eval $(kernel-module)) +$(eval $(generic-package)) -- 2.47.3