On Tue, Feb 19, 2019 at 11:30:27AM -0800, Jim Broadus wrote: > A previous change allowed I2C client devices to discover new IRQs upon > reprobe by clearing the IRQ in i2c_device_remove. However, if an IRQ was > assigned in i2c_new_device, that information is lost. > > For example, the touchscreen and trackpad devices on a Dell Inspiron laptop > are I2C devices whose IRQs are defined by ACPI extended IRQ types. The > client device structures are initialized during an ACPI walk. After > removing the i2c_hid device, modprobe fails. > > This change caches the initial IRQ value in i2c_new_device and then resets > the client device IRQ to the initial value in i2c_device_remove. > > Fixes: 6f108dd70d30 ("i2c: Clear client->irq in i2c_device_remove") > Signed-off-by: Jim Broadus <jbroadus@xxxxxxxxx> Applied to for-next, thanks! I didn't want to apply to for-current because I didn't feel comfortable changing the I2C core in this very last days before the release. It will hit linus tree during next merge window and go back to older releases via stable. That all being said, I'd really love to see the proper fix (move irq assignment from init to probe time) being worked on rather soonish before we forget all the details we know at this moment. I'll be there for it.
Attachment:
signature.asc
Description: PGP signature