Hey, Sorry I took this long to look into this. On Thu, 2017-03-30 at 15:33 +0200, Paul Cercueil wrote: > The Goodix panel triggers an interrupt on touch events. However, its > registers will contain the valid values a short time after the > interrupt, and not when it's raised. At that moment, the 'buffer > status' > bit is set. > > Previously, if the 'buffer status' bit was not set when the registers > were read, the data was discarded and no input event was emitted, > causing "finger down" or "finger up" events to be missed sometimes. > > This went unnoticed until v4.9, as the DesignWare I2C driver commonly > used with this driver had enough latency for that bug to never > trigger. > > Now, in the IRQ handler we will poll (with a timeout) I don't like the fact that the timeout isn't actually a timeout, but a loop counter... > the 'buffer status' > bit and process the data of the panel as soon as this bit gets set. OK. > Note that the Goodix panel will send a few spurious interrupts after > the > 'finger up' event, in which the 'buffer status' bit will never be > set. Can you please re-send the patch with diff option that makes it easier to comment on whole patch? There's various block levels being mixed because they have a linefeed in common... I'm also CC:ing Hans to test it out as my Goodix tablet is still out of commission. Cheers -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html