Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 06 Aug 2026 06:42:47 +0000
From:      Corvi=?utf-8?Q?n K=C3=B6h?=ne <corvink@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc:        YannickV <Y.Vossen@beckhoff.com>
Subject:   git: c2bd655dc3f9 - main - gpio: add Intel Tiger Lake-H GPIO driver
Message-ID:  <6a742ce7.31823.13fcef5@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by corvink:

URL: https://cgit.FreeBSD.org/src/commit/?id=c2bd655dc3f9c09e3063321e160cb3d367ef2c79

commit c2bd655dc3f9c09e3063321e160cb3d367ef2c79
Author:     YannickV <Y.Vossen@beckhoff.com>
AuthorDate: 2026-04-29 13:03:23 +0000
Commit:     Corvin Köhne <corvink@FreeBSD.org>
CommitDate: 2026-08-06 06:42:08 +0000

    gpio: add Intel Tiger Lake-H GPIO driver
    
    Add a GPIO driver for the Intel Tiger Lake-H platform based on the generic
    intelgpio framework. The driver defines five GPIO communities with pad groups
    GPP_A through GPP_K, vGPIO and JTAG, and matches ACPI hardware ID INT34C6.
    The kernel module build infrastructure and the wiring into files.x86 are
    included.
    
    Reviewed by:            vexeduxr
    MFC after:              1 week
    Sponsored by:           Beckhoff Automation GmbH & Co. KG
    Pull Request:           https://github.com/freebsd/freebsd-src/pull/2205
---
 sys/conf/files.x86            |   3 +-
 sys/dev/gpio/intel/tglhgpio.c | 106 ++++++++++++++++++++++++++++++++++++++++++
 sys/modules/Makefile          |   2 +
 sys/modules/tglhgpio/Makefile |   6 +++
 4 files changed, 116 insertions(+), 1 deletion(-)

diff --git a/sys/conf/files.x86 b/sys/conf/files.x86
index c5048ae9a38d..a5c85cd08955 100644
--- a/sys/conf/files.x86
+++ b/sys/conf/files.x86
@@ -100,7 +100,8 @@ dev/fdc/fdc_isa.c		optional	fdc isa
 dev/gpio/bytgpio.c		optional	bytgpio
 dev/gpio/chvgpio.c		optional	chvgpio
 dev/gpio/intel/adlngpio.c	optional	adlngpio
-dev/gpio/intel/intelgpio.c	optional	adlngpio
+dev/gpio/intel/intelgpio.c	optional	adlngpio | tglhgpio
+dev/gpio/intel/tglhgpio.c	optional	tglhgpio
 dev/hpt27xx/hpt27xx_os_bsd.c	optional	hpt27xx
 dev/hpt27xx/hpt27xx_osm_bsd.c	optional	hpt27xx
 dev/hpt27xx/hpt27xx_config.c	optional	hpt27xx
diff --git a/sys/dev/gpio/intel/tglhgpio.c b/sys/dev/gpio/intel/tglhgpio.c
new file mode 100644
index 000000000000..06500549ec4a
--- /dev/null
+++ b/sys/dev/gpio/intel/tglhgpio.c
@@ -0,0 +1,106 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2026 Beckhoff Automation GmbH & Co. KG
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/gpio.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+
+#include <dev/acpica/acpivar.h>
+#include <dev/gpio/gpiobusvar.h>
+
+#include "intelgpio.h"
+
+#include "gpio_if.h"
+#include "opt_acpi.h"
+
+/* Community 0: GPP_A, GPP_R, GPP_B, vGPIO_0 */
+static const struct intelgpio_padgroup tglh_com0_groups[] = {
+	{ .first_pad = 0, .npads = 25, .gpio_base = 0, .name = "GPP_A" },
+	{ .first_pad = 25, .npads = 20, .gpio_base = 32, .name = "GPP_R" },
+	{ .first_pad = 45, .npads = 26, .gpio_base = 64, .name = "GPP_B" },
+	{ .first_pad = 71, .npads = 8, .gpio_base = 96, .name = "vGPIO_0" },
+};
+
+/* Community 1: GPP_D, GPP_C, GPP_S, GPP_G, vGPIO */
+static const struct intelgpio_padgroup tglh_com1_groups[] = {
+	{ .first_pad = 79, .npads = 26, .gpio_base = 128, .name = "GPP_D" },
+	{ .first_pad = 105, .npads = 24, .gpio_base = 160, .name = "GPP_C" },
+	{ .first_pad = 129, .npads = 8, .gpio_base = 192, .name = "GPP_S" },
+	{ .first_pad = 137, .npads = 17, .gpio_base = 224, .name = "GPP_G" },
+	{ .first_pad = 154, .npads = 27, .gpio_base = 256, .name = "vGPIO" },
+};
+
+/* Community 3: GPP_E, GPP_F */
+static const struct intelgpio_padgroup tglh_com3_groups[] = {
+	{ .first_pad = 181, .npads = 13, .gpio_base = 288, .name = "GPP_E" },
+	{ .first_pad = 194, .npads = 24, .gpio_base = 320, .name = "GPP_F" },
+};
+
+/* Community 4: GPP_H, GPP_J, GPP_K */
+static const struct intelgpio_padgroup tglh_com4_groups[] = {
+	{ .first_pad = 218, .npads = 24, .gpio_base = 352, .name = "GPP_H" },
+	{ .first_pad = 242, .npads = 10, .gpio_base = 384, .name = "GPP_J" },
+	{ .first_pad = 252, .npads = 15, .gpio_base = 416, .name = "GPP_K" },
+};
+
+/* Community 5: GPP_I, JTAG */
+static const struct intelgpio_padgroup tglh_com5_groups[] = {
+	{ .first_pad = 267, .npads = 15, .gpio_base = 448, .name = "GPP_I" },
+	{ .first_pad = 282,
+	    .npads = 9,
+	    .gpio_base = INTELGPIO_GPIO_NOMAP,
+	    .name = "JTAG" },
+};
+
+static const struct intelgpio_community tglh_communities[] = {
+	{ .ngroups = nitems(tglh_com0_groups), .groups = tglh_com0_groups },
+	{ .ngroups = nitems(tglh_com1_groups), .groups = tglh_com1_groups },
+	{ .ngroups = nitems(tglh_com3_groups), .groups = tglh_com3_groups },
+	{ .ngroups = nitems(tglh_com4_groups), .groups = tglh_com4_groups },
+	{ .ngroups = nitems(tglh_com5_groups), .groups = tglh_com5_groups },
+};
+
+static char *tglh_hids[] = { "INT34C6", NULL };
+
+static const struct intelgpio_platform tglh_platform = {
+	.communities = tglh_communities,
+	.ncommunities = nitems(tglh_communities),
+	.hids = tglh_hids,
+	.desc = "Intel Tiger Lake-H GPIO",
+};
+
+static int
+tglh_gpio_probe(device_t dev)
+{
+	return (intelgpio_probe(dev, &tglh_platform));
+}
+
+static int
+tglh_gpio_attach(device_t dev)
+{
+	return (intelgpio_attach(dev, &tglh_platform));
+}
+
+static device_method_t tglh_methods[] = {
+	DEVMETHOD(device_probe, tglh_gpio_probe),
+	DEVMETHOD(device_attach, tglh_gpio_attach),
+
+	DEVMETHOD_END
+};
+
+DEFINE_CLASS_1(gpio, tglh_driver, tglh_methods,
+    sizeof(struct intelgpio_softc), intelgpio_driver);
+
+DRIVER_MODULE(tglhgpio, acpi, tglh_driver, NULL, NULL);
+MODULE_DEPEND(tglhgpio, acpi, 1, 1, 1);
+MODULE_DEPEND(tglhgpio, gpiobus, 1, 1, 1);
+MODULE_VERSION(tglhgpio, 1);
+ACPI_PNP_INFO(tglh_hids);
diff --git a/sys/modules/Makefile b/sys/modules/Makefile
index bf2fda77ab1d..c0de2b698bc2 100644
--- a/sys/modules/Makefile
+++ b/sys/modules/Makefile
@@ -403,6 +403,7 @@ SUBDIR=	\
 	sysvipc \
 	tarfs \
 	tcp \
+	${_tglhgpio} \
 	${_thunderbolt} \
 	${_ti} \
 	tmpfs \
@@ -853,6 +854,7 @@ _pchtherm = pchtherm
 _s3=		s3
 _sdhci_acpi=	sdhci_acpi
 _superio=	superio
+_tglhgpio=	tglhgpio
 _vesa=		vesa
 _viawd=		viawd
 _vmd=		vmd
diff --git a/sys/modules/tglhgpio/Makefile b/sys/modules/tglhgpio/Makefile
new file mode 100644
index 000000000000..a484393c9bbd
--- /dev/null
+++ b/sys/modules/tglhgpio/Makefile
@@ -0,0 +1,6 @@
+.PATH:	${SRCTOP}/sys/dev/gpio/intel
+KMOD=	tglhgpio
+SRCS=	intelgpio.c tglhgpio.c
+SRCS+=	acpi_if.h device_if.h bus_if.h gpio_if.h opt_acpi.h opt_platform.h
+
+.include <bsd.kmod.mk>


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a742ce7.31823.13fcef5>