Hello,
I'm reporting an I2C touchpad problem on a Google Chromebook Edgar running OpenBSD 7.9 amd64. Hardware: - Google Chromebook Edgar - Intel Celeron N3160 - 4 GB RAM - Coreboot / MrChromebox 2606.1 - OpenBSD 7.9 amd64 The touchpad is detected, but its interrupt cannot be established: dwiic1 at acpi0 I2C6 addr 0xfccdc000/0x1000 irq 37 iic1 at dwiic1 ietp0 at iic1 addr 0x15, can't establish interrupt The touchpad works with an Artix Linux live system on the same hardware, and a USB mouse works normally under OpenBSD. I investigated the failure through ietp_attach(), iic_intr_establish(), and dwiic_i2c_intr_establish(). The touchpad's ACPI interrupt resource refers to the GPNC GPIO controller. I found that IETP attempts to establish its interrupt before the GPNC GPIO driver has attached. At that point the ACPI node exists, but its GPIO information has not been initialized. As an experiment, I modified dwiic to defer IETP discovery if its GPIO provider has not attached yet. After the GPIO driver attaches, I rescan the DWIIC ACPI devices. With this change the ordering becomes: chvgpio1 at acpi0 GPNC ... ietp0 at iic1 addr 0x15 gpio 18 and the touchpad works. I have attached the experimental patch/workaround. This is intended mainly to demonstrate the cause and provide a working test case. The modified source tree is available here in the branch chromebook-cb3-431 : https://github.com/Grabyy/OpenBSD_src_Chromebook-CB3-431_custom/tree/chromebook-cb3-431 If you need any additional information or testing, please let me know. I'm new to OpenBSD kernel development, so I'm happy to provide anything that would be useful. Thanks,Gabriel.
dwiic-ietp.patch
Description: Binary data
