Identity
| Part | Goodix GT917S |
| Role | Capacitive touchscreen controller — 720×1440, 5-touch multitouch |
| Bus / address | DTS &i2c3, 7-bit address 0x14; FreeBSD logs shifted addr 0x28 on iicbus1 |
| GPIO / IRQ | IRQ on GPIO3_B5 (edge-rising), reset on GPIO3_B4 |
| Datasheet | Goodix GT917S (Pine64 mirror) |
| Pine64 wiki | PinePhone Pro Hardware |
| Schematic | sheet 9 (touch panel) |
Status — ● working
The driver attaches at goodix0 and produces evdev MT-Protocol-B events through /dev/input/eventN. After 2972362 rk_i2c + goodix: fix iicbus child IRQ alloc landed the rk_i2c iicbus child IRQ allocation fix, interrupt-driven mode replaced the 100 Hz polling fallback; latency dropped and idle current went down. Multitouch works on both Sway and X11 — pinch-zoom in a web browser, two-finger scroll in a terminal.
Driver
- Our tree:
src/sys/dev/iicbus/goodix.c— ~500 lines, evdev MT-B, 8-byte-per-contact data layout, status register0x814Ecleared after each read. - Linux mainline:
drivers/input/touchscreen/goodix.c - FreeBSD upstream: none — this driver is only in our tree.
The driver is FreeBSD-native (not a Linux compat shim). At attach it pulses reset, reads firmware version, programs the standard contact format, and registers an evdev device exposing ABS_MT_POSITION_X/Y and ABS_MT_TRACKING_ID. It now has a model table for both the PinePhone Pro’s goodix,gt917s node and PineTab2’s goodix,gt911 node; the tablet-specific page tracks that bench-pending instance. The interrupt path required five missing INTRNG PIC methods to be added to rk_gpio before bus_setup_intr would stop returning ENXIO — see essay 06 for the full debugging arc and the eventual rk_pic_enable_intr / rk_pic_disable_intr / rk_pic_pre_ithread / rk_pic_post_ithread / rk_pic_post_filter additions across 5d6a594 rk_gpio: add missing PIC methods for GPIO interrupts (enable/disable/pre/post) and follow-ups.
Open work
- Firmware version polling and gesture suppression remain on the future-work list; today the driver does raw multitouch only.
- No power management hooks — the panel stays awake whenever the kernel is up.
Related
- Goodix and the PIC methods that didn’t exist — the bring-up war story.
- Goodix GT911 touchscreen — PineTab2 instance of the same driver.
- Hardware reference — full chip manifest.
- Cross-driver audit 2026-04-30 — context on which i2c devices benefited from the rk_i2c fix.