Date: Thu, 06 Aug 2026 06:42:46 +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: 8c7a3ccf54f9 - main - gpio: add Intel Alder Lake-N GPIO driver Message-ID: <6a742ce6.31fa0.f84860d@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=8c7a3ccf54f93330830ef9ffd20e71d5834936ed commit 8c7a3ccf54f93330830ef9ffd20e71d5834936ed Author: YannickV <Y.Vossen@beckhoff.com> AuthorDate: 2026-04-29 13:02:08 +0000 Commit: Corvin Köhne <corvink@FreeBSD.org> CommitDate: 2026-08-06 06:41:54 +0000 gpio: add Intel Alder Lake-N GPIO driver Add a GPIO driver for the Intel Alder Lake-N platform based on the generic intelgpio framework. The driver provides pad group definitions for four GPIO communities covering groups GPP_A through GPP_T, vGPIO and HVCMOS, and matches ACPI hardware IDs INTC1056, INTC1057 and INTC1085. 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 | 2 + sys/dev/gpio/intel/adlngpio.c | 94 +++++++++++++++++++++++++++++++++++++++++++ sys/modules/Makefile | 2 + sys/modules/adlngpio/Makefile | 6 +++ 4 files changed, 104 insertions(+) diff --git a/sys/conf/files.x86 b/sys/conf/files.x86 index 8c02edbb6a35..c5048ae9a38d 100644 --- a/sys/conf/files.x86 +++ b/sys/conf/files.x86 @@ -99,6 +99,8 @@ dev/fdc/fdc_acpi.c optional fdc 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/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/adlngpio.c b/sys/dev/gpio/intel/adlngpio.c new file mode 100644 index 000000000000..55e903c95aaa --- /dev/null +++ b/sys/dev/gpio/intel/adlngpio.c @@ -0,0 +1,94 @@ +/*- + * 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" + +static const struct intelgpio_padgroup adln_com0_groups[] = { + { .first_pad = 0, .npads = 26, .gpio_base = 0, .name = "GPP_B" }, + { .first_pad = 26, .npads = 16, .gpio_base = 32, .name = "GPP_T" }, + { .first_pad = 42, .npads = 25, .gpio_base = 64, .name = "GPP_A" }, +}; + +static const struct intelgpio_padgroup adln_com1_groups[] = { + { .first_pad = 67, .npads = 8, .gpio_base = 96, .name = "GPP_S" }, + { .first_pad = 75, .npads = 20, .gpio_base = 128, .name = "GPP_I" }, + { .first_pad = 95, .npads = 24, .gpio_base = 160, .name = "GPP_H" }, + { .first_pad = 119, .npads = 21, .gpio_base = 192, .name = "GPP_D" }, + { .first_pad = 140, .npads = 29, .gpio_base = 224, .name = "vGPIO" }, +}; + +static const struct intelgpio_padgroup adln_com4_groups[] = { + { .first_pad = 169, .npads = 24, .gpio_base = 256, .name = "GPP_C" }, + { .first_pad = 193, .npads = 25, .gpio_base = 288, .name = "GPP_F" }, + { .first_pad = 218, + .npads = 6, + .gpio_base = INTELGPIO_GPIO_NOMAP, + .name = "HVCMOS" }, + { .first_pad = 224, .npads = 25, .gpio_base = 320, .name = "GPP_E" }, +}; + +static const struct intelgpio_padgroup adln_com5_groups[] = { + { .first_pad = 249, .npads = 8, .gpio_base = 352, .name = "GPP_R" }, +}; + +static const struct intelgpio_community adln_communities[] = { + { .ngroups = nitems(adln_com0_groups), .groups = adln_com0_groups }, + { .ngroups = nitems(adln_com1_groups), .groups = adln_com1_groups }, + { .ngroups = nitems(adln_com4_groups), .groups = adln_com4_groups }, + { .ngroups = nitems(adln_com5_groups), .groups = adln_com5_groups }, +}; + +static char *adln_hids[] = { "INTC1056", "INTC1057", "INTC1085", NULL }; + +static const struct intelgpio_platform adln_platform = { + .communities = adln_communities, + .ncommunities = nitems(adln_communities), + .hids = adln_hids, + .desc = "Intel Alder Lake-N GPIO", +}; + +static int +adln_probe(device_t dev) +{ + return (intelgpio_probe(dev, &adln_platform)); +} + +static int +adln_attach(device_t dev) +{ + return (intelgpio_attach(dev, &adln_platform)); +} + +static device_method_t adln_methods[] = { + DEVMETHOD(device_probe, adln_probe), + DEVMETHOD(device_attach, adln_attach), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(gpio, adln_driver, adln_methods, + sizeof(struct intelgpio_softc), intelgpio_driver); + +DRIVER_MODULE(adlngpio, acpi, adln_driver, NULL, NULL); +MODULE_DEPEND(adlngpio, acpi, 1, 1, 1); +MODULE_DEPEND(adlngpio, gpiobus, 1, 1, 1); +MODULE_VERSION(adlngpio, 1); +ACPI_PNP_INFO(adln_hids); diff --git a/sys/modules/Makefile b/sys/modules/Makefile index df4cb4b63ded..bf2fda77ab1d 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -73,6 +73,7 @@ SUBDIR= \ bridgestp \ bwi \ bwn \ + ${_adlngpio} \ ${_bytgpio} \ ${_chvgpio} \ cam \ @@ -797,6 +798,7 @@ _wdatwd= wdatwd _aac= aac _aacraid= aacraid +_adlngpio= adlngpio .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _aesni= aesni .endif diff --git a/sys/modules/adlngpio/Makefile b/sys/modules/adlngpio/Makefile new file mode 100644 index 000000000000..c1a276198efa --- /dev/null +++ b/sys/modules/adlngpio/Makefile @@ -0,0 +1,6 @@ +.PATH: ${SRCTOP}/sys/dev/gpio/intel +KMOD= adlngpio +SRCS= intelgpio.c adlngpio.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?6a742ce6.31fa0.f84860d>
