I2C trackpad doesn't work on Lenovo Yoga 700-11ISK, due to an interrupt conflict between pata_legacy and sunrisepoint-pinctrl.
Kernel log (excerpts):
[ +0.000209] genirq: Flags mismatch irq 14. 00000080 (INT344B:00) vs. 00000000 (platform[pata_legacy.0])
[ +0.000079] sunrisepoint-pinctrl INT344B:00: failed to request interrupt
[ +0.020469] sunrisepoint-pinctrl: probe of INT344B:00 failed with error -16
[ +0.226303] i2c_hid i2c-ITE8350:00: Failed to get GPIO interrupt
[ +0.009366] i2c_hid: probe of i2c-ITE8350:00 failed with error -2
[ +0.019873] i2c_hid i2c-SYNA2B23:00: Failed to get GPIO interrupt
[ +0.012687] i2c_hid: probe of i2c-SYNA2B23:00 failed with error -2
- pata_legacy acquires IRQ 14 without IRQF_SHARED.
- the pin controller (sunrise point) is therefore unable to initialise the GPIO chip
- i2c_hid then fails on calling gpiod_get()
- trackpad is connected via I2C, and therefore unusable
pata_legacy is an IDE driver, and therefore not needed on a modern laptop. Since it's included in the initrd, blacklisting via modprobe.d is insufficient - it needs to be either blacklisted via a kernel parameter or removed from the initrd completely (how to best do this is distro-specific).
pata_legacy should release the interrupt after it has established there are no IDE devices present.
This affects kernel 4.4 and later. 4.3 is unaffected.
Tested under Sabayon amd64.
Since Sunrise Point is the chipset used with Intel Skylake CPUs, other Skylake devices may be affected.