[PATCH 2/5] qt602240_ts: move clearing of pending interrupt closer to request_threaded_irq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux