Appendix · reference

Goodix GT917S touchscreen

5-touch capacitive panel on DTS i2c3, interrupt-driven.

Identity

PartGoodix GT917S
RoleCapacitive touchscreen controller — 720×1440, 5-touch multitouch
Bus / addressDTS &i2c3, 7-bit address 0x14; FreeBSD logs shifted addr 0x28 on iicbus1
GPIO / IRQIRQ on GPIO3_B5 (edge-rising), reset on GPIO3_B4
DatasheetGoodix GT917S (Pine64 mirror)
Pine64 wikiPinePhone Pro Hardware
Schematicsheet 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

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