在 2023/12/13 00:57, Jiri Kosina 写道:
On Mon, 11 Dec 2023, xiongxin wrote:
In this scenario, unmask_irq() will not be called, and then gpio corresponding interrupt pin will be masked. Finally, in the suspend() process driven by gpio interrupt controller, the interrupt mask register will be saved, and then masked will continue to be read when resuming () process. After the kernel resumed, the i2c hid gpio interrupt was masked and the i2c hid device was unavailable.
In addition to what Thomas already wrote -- what exactly is the problem you are trying to solve here?
Is it that your device drive by i2c-hid driver is no longer sending any data reports after a suspend/resume cycle? What makes you think that it's because of its IRQ being disabled?
Don't you just perhaps need I2C_HID_QUIRK_RESET_ON_RESUME quirk for that device?
I have confirmed I2C_HID_QUIRK_RESET_ON_RESUME quirk, the current BUG is related to GPIO interrupt masking, and has little to do with hid code.
I explained the detailed process of the BUG in another email.