I've seen interrupts asserted on the CHG pin between the call to make_highcgh() during initialization and registering the interrupt handler, leaving CHG low and no events get passed up. This moves the clearing of pending messages to right before the call to request_threaded_irq(). I still think there's a race here that could leave CHG stuck low, but worry about clearing the message queue while the interrupt handler is registered without some sort of additional locking. Signed-off-by: Chris Leech <christopher.leech@xxxxxxxxxxxxxxx> --- drivers/input/touchscreen/qt602240_ts.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/input/touchscreen/qt602240_ts.c b/drivers/input/touchscreen/qt602240_ts.c index 0b92c9d..95496ec 100644 --- a/drivers/input/touchscreen/qt602240_ts.c +++ b/drivers/input/touchscreen/qt602240_ts.c @@ -991,10 +991,6 @@ static int qt602240_initialize(struct qt602240_data *data) if (error) return error; - error = qt602240_make_highchg(data); - if (error) - return error; - qt602240_handle_pdata(data); /* Backup to memory */ @@ -1280,6 +1276,10 @@ static int __devinit qt602240_probe(struct i2c_client *client, if (error) goto err_free_object; + error = qt602240_make_highchg(data); + if (error) + goto err_free_object; + error = request_threaded_irq(client->irq, NULL, qt602240_interrupt, IRQF_TRIGGER_FALLING, client->dev.driver->name, data); if (error) { -- 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