From f628a9f49cb9b80945f8bc2f55788e5c08da35f1 Mon Sep 17 00:00:00 2001
From: j1nx
Date: Sun, 11 Feb 2024 11:46:51 +0000
Subject: [PATCH] [WIP] Add libgpiod2 and tools for debugging
---
buildroot-external/Config.in | 1 +
buildroot-external/configs/rpi4_64_defconfig | 6 ++--
.../package/libgpiod2/Config.in | 27 +++++++++++++++++
.../package/libgpiod2/libgpiod2.hash | 4 +++
.../package/libgpiod2/libgpiod2.mk | 30 +++++++++++++++++++
5 files changed, 65 insertions(+), 3 deletions(-)
create mode 100644 buildroot-external/package/libgpiod2/Config.in
create mode 100644 buildroot-external/package/libgpiod2/libgpiod2.hash
create mode 100644 buildroot-external/package/libgpiod2/libgpiod2.mk
diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in
index ae0bc661..6e3b8a30 100644
--- a/buildroot-external/Config.in
+++ b/buildroot-external/Config.in
@@ -94,6 +94,7 @@ menu "KDE Framework and Plasma"
endmenu
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ksm-preload/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/libcanberra/Config.in"
+ source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/libgpiod2/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/libre/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/librem/Config.in"
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/lottie-qml/Config.in"
diff --git a/buildroot-external/configs/rpi4_64_defconfig b/buildroot-external/configs/rpi4_64_defconfig
index 9cad983b..05b2299d 100644
--- a/buildroot-external/configs/rpi4_64_defconfig
+++ b/buildroot-external/configs/rpi4_64_defconfig
@@ -141,7 +141,6 @@ BR2_PACKAGE_PYTHON3_PY_PYC=y
BR2_PACKAGE_PYTHON_GOBJECT=y
BR2_PACKAGE_PYTHON_PIP=y
BR2_PACKAGE_PYTHON_PODMAN_COMPOSE=y
-BR2_PACKAGE_PYTHON_RPI_GPIO=y
BR2_PACKAGE_PYTHON_SPIDEV=y
BR2_PACKAGE_ALSA_PLUGINS=y
BR2_PACKAGE_LIBVORBIS=y
@@ -319,6 +318,8 @@ BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_PKGCONF=y
BR2_PACKAGE_BTSPEAKER=y
BR2_PACKAGE_HOSTNAME_SERVICE=y
+BR2_PACKAGE_LIBGPIOD2=y
+BR2_PACKAGE_LIBGPIOD2_TOOLS=y
BR2_PACKAGE_NCPAMIXER=y
BR2_PACKAGE_OVOS_BUS_SERVER=y
BR2_PACKAGE_OVOS_CONTAINERS=y
@@ -332,6 +333,5 @@ BR2_PACKAGE_RPI_EEPROM=y
BR2_PACKAGE_USERLAND_TOOLS=y
BR2_PACKAGE_VOCALFUSION=y
BR2_PACKAGE_WIFI_CONNECT=y
-BR2_PACKAGE_PYTHON_SMBUS2=y
BR2_PACKAGE_PYTHON_ADAFRUIT_BLINKA=y
-BR2_PACKAGE_PYTHON_GPIOD=y
\ No newline at end of file
+BR2_PACKAGE_PYTHON_SMBUS2=y
diff --git a/buildroot-external/package/libgpiod2/Config.in b/buildroot-external/package/libgpiod2/Config.in
new file mode 100644
index 00000000..9775ed42
--- /dev/null
+++ b/buildroot-external/package/libgpiod2/Config.in
@@ -0,0 +1,27 @@
+config BR2_PACKAGE_LIBGPIOD2
+ bool "libgpiod2"
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
+ depends on !BR2_PACKAGE_LIBGPIOD
+ help
+ This is a C library that abstracts the GPIO character
+ device operations on linux.
+
+ https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/
+
+ This package is the continuation of the libgpiod package
+ for versions 2.0 and above.
+
+ Note that a kernel of 5.10 or above is required for the
+ ioctls to work.
+
+if BR2_PACKAGE_LIBGPIOD2
+
+config BR2_PACKAGE_LIBGPIOD2_TOOLS
+ bool "install tools"
+ help
+ Include a set of command-line tools for managing GPIOs.
+
+endif
+
+comment "Consider upgrading to libgpiod2"
+ depends on BR2_PACKAGE_LIBGPIOD
diff --git a/buildroot-external/package/libgpiod2/libgpiod2.hash b/buildroot-external/package/libgpiod2/libgpiod2.hash
new file mode 100644
index 00000000..b5488496
--- /dev/null
+++ b/buildroot-external/package/libgpiod2/libgpiod2.hash
@@ -0,0 +1,4 @@
+# From https://www.kernel.org/pub/software/libs/libgpiod/sha256sums.asc
+sha256 fa4024a080121c958502f9a46a5bda44bea85e7a4dd7fcb3dead463b6fc4261c libgpiod-2.1.tar.xz
+# Hash for license file
+sha256 eb17a56966db5d986bec449ee44ed61f01f9e3fafa952e527db67a8f9594fd11 COPYING
diff --git a/buildroot-external/package/libgpiod2/libgpiod2.mk b/buildroot-external/package/libgpiod2/libgpiod2.mk
new file mode 100644
index 00000000..8489fda4
--- /dev/null
+++ b/buildroot-external/package/libgpiod2/libgpiod2.mk
@@ -0,0 +1,30 @@
+################################################################################
+#
+# libgpiod2
+#
+################################################################################
+
+# Be careful when bumping versions.
+# Dependency on kernel header versions may change.
+LIBGPIOD2_VERSION = 2.1
+LIBGPIOD2_SOURCE = libgpiod-$(LIBGPIOD2_VERSION).tar.xz
+LIBGPIOD2_SITE = https://www.kernel.org/pub/software/libs/libgpiod
+LIBGPIOD2_LICENSE = LGPL-2.1+
+LIBGPIOD2_LICENSE_FILES = COPYING
+LIBGPIOD2_INSTALL_STAGING = YES
+LIBGPIOD2_DEPENDENCIES = host-pkgconf host-autoconf-archive
+LIBGPIOD2_CONF_OPTS = --disable-tests --disable-examples --disable-bindings-python
+
+ifeq ($(BR2_PACKAGE_LIBGPIOD2_TOOLS),y)
+LIBGPIOD2_CONF_OPTS += --enable-tools
+else
+LIBGPIOD2_CONF_OPTS += --disable-tools
+endif
+
+ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
+LIBGPIOD2_CONF_OPTS += --enable-bindings-cxx
+else
+LIBGPIOD2_CONF_OPTS += --disable-bindings-cxx
+endif
+
+$(eval $(autotools-package))