Skip to content

Commit d4a7c71

Browse files
committed
feat: add gpio-pinctrl extension for Intel Apollo Lake platforms
This extension provides pinctrl-intel and pinctrl-broxton kernel modules for GPIO access on Intel Apollo Lake platforms (INT3452 ACPI device). Signed-off-by: Serge van Ginderachter <[email protected]>
1 parent 2f503ed commit d4a7c71

File tree

8 files changed

+128
-2
lines changed

8 files changed

+128
-2
lines changed

.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2024-08-29T14:13:04Z by kres b5ca957.
3+
# Generated on 2025-11-25T14:31:25Z by kres e1d6dac.
44

55
*
66
!CHANGELOG.md
77
!MAINTAINERS.md
88
!README.md
9+
!gpio-extension-implementation.md
910
!pkg.yaml

.kres.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ spec:
1919
- ecr-credential-provider
2020
- fuse3
2121
- gasket-driver
22+
- gpio-pinctrl
2223
- glibc
2324
- gvisor
2425
- gvisor-debug

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2025-11-15T05:31:19Z by kres e1d6dac.
3+
# Generated on 2025-11-25T14:31:25Z by kres e1d6dac.
44

55
# common variables
66

@@ -76,6 +76,7 @@ TARGETS += dvb-m88ds3103
7676
TARGETS += ecr-credential-provider
7777
TARGETS += fuse3
7878
TARGETS += gasket-driver
79+
TARGETS += gpio-pinctrl
7980
TARGETS += glibc
8081
TARGETS += gvisor
8182
TARGETS += gvisor-debug

drivers/gpio-pinctrl/README.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# gpio-pinctrl extension
2+
3+
This extension provides Intel GPIO/Pinctrl drivers for Apollo Lake platforms.
4+
5+
## Installation
6+
7+
See [Installing Extensions](https://github.com/siderolabs/extensions#installing-extensions).
8+
9+
## Included Modules
10+
11+
- `pinctrl-intel` - Intel pinctrl core driver
12+
- `pinctrl-broxton` - Intel Apollo Lake (Broxton) pinctrl driver
13+
14+
## Usage
15+
16+
Enable the modules in your machine configuration:
17+
18+
```yaml
19+
machine:
20+
kernel:
21+
modules:
22+
- name: pinctrl-intel
23+
- name: pinctrl-broxton
24+
```
25+
26+
## Verification
27+
28+
Check that modules are loaded:
29+
30+
```bash
31+
talosctl -n <node-ip> read /proc/modules | grep pinctrl
32+
```
33+
34+
Expected output:
35+
```
36+
pinctrl_broxton 24576 0 - Live 0x...
37+
pinctrl_intel 40960 1 pinctrl_broxton, Live 0x...
38+
```
39+
40+
Verify GPIO devices are available:
41+
42+
```bash
43+
talosctl -n <node-ip> ls -la /dev/gpiochip*
44+
```
45+
46+
Check dmesg for driver initialization:
47+
48+
```bash
49+
talosctl -n <node-ip> dmesg | grep -i 'pinctrl.*INT3452'
50+
```
51+
52+
## Testing with libgpiod
53+
54+
From a privileged pod with `/dev` mounted:
55+
56+
```bash
57+
gpiodetect
58+
gpioinfo
59+
```
60+
61+
## Troubleshooting
62+
63+
### Module not loading
64+
65+
Ensure the extension is properly installed and the modules are listed in your machine config.
66+
67+
### No /dev/gpiochip* devices
68+
69+
Verify Talos is running a kernel built with `CONFIG_GPIO_CDEV=y`. Check dmesg for pinctrl driver initialization messages.
70+
71+
### ABI/signature errors
72+
73+
Ensure the extension was built against the same kernel version as your Talos installation.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
modules.order
2+
modules.builtin
3+
modules.builtin.modinfo
4+
kernel/drivers/pinctrl/intel/pinctrl-intel.ko
5+
kernel/drivers/pinctrl/intel/pinctrl-broxton.ko
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: v1alpha1
2+
metadata:
3+
name: gpio-pinctrl
4+
version: "{{ .VERSION }}"
5+
author: autops
6+
description: |
7+
[{{ .TIER }}] Intel Apollo Lake GPIO/Pinctrl drivers.
8+
Provides pinctrl-intel and pinctrl-broxton kernel modules for GPIO access
9+
on Intel Apollo Lake platforms (INT3452 ACPI device).
10+
compatibility:
11+
talos:
12+
version: ">= v1.11.0"

drivers/gpio-pinctrl/pkg.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: gpio-pinctrl
2+
variant: scratch
3+
shell: /bin/bash
4+
dependencies:
5+
- stage: base
6+
# The pkgs version for a particular release of Talos as defined in
7+
# https://github.com/siderolabs/talos/blob/<talos version>/pkg/machinery/gendata/data/pkgs
8+
- image: "{{ .BUILD_ARG_PKGS_PREFIX }}/kernel:{{ .BUILD_ARG_PKGS }}"
9+
steps:
10+
- install:
11+
- |
12+
export KERNELRELEASE=$(find /usr/lib/modules -type d -name "*-talos" -exec basename {} \+)
13+
14+
mkdir -p /rootfs
15+
16+
xargs -a /pkg/files/modules.txt -I {} install -D /usr/lib/modules/${KERNELRELEASE}/{} /rootfs/usr/lib/modules/${KERNELRELEASE}/{}
17+
depmod -b /rootfs/usr ${KERNELRELEASE}
18+
- test:
19+
- |
20+
# https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html#signed-modules-and-stripping
21+
find /rootfs/usr/lib/modules -name '*.ko' -exec grep -FL '~Module signature appended~' {} \+
22+
- |
23+
mkdir -p /extensions-validator-rootfs
24+
cp -r /rootfs/ /extensions-validator-rootfs/rootfs
25+
cp /pkg/manifest.yaml /extensions-validator-rootfs/manifest.yaml
26+
/extensions-validator validate --rootfs=/extensions-validator-rootfs --pkg-name="${PKG_NAME}"
27+
finalize:
28+
- from: /rootfs
29+
to: /rootfs
30+
- from: /pkg/manifest.yaml
31+
to: /

drivers/gpio-pinctrl/vars.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
VERSION: "{{ .BUILD_ARG_TAG }}"
2+
TIER: "extra"

0 commit comments

Comments
 (0)