From: Soeren Sonnenburg Date: Sat, 13 Oct 2007 04:31:15 +0000 (-0400) Subject: Input: appletouch - another fix for idle reset logic X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=937ad5c1e35191d29d305280525394fe87f4ac4f;p=linux-beck.git Input: appletouch - another fix for idle reset logic Make sure we reset idlecount when we get a good (non-empty) packet. Signed-off-by: Soeren Sonnenburg Signed-off-by: Dmitry Torokhov --- diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c index a1804bfdbb8c..0117817bf538 100644 --- a/drivers/input/mouse/appletouch.c +++ b/drivers/input/mouse/appletouch.c @@ -502,18 +502,23 @@ static void atp_complete(struct urb* urb) /* reset the accumulator on release */ memset(dev->xy_acc, 0, sizeof(dev->xy_acc)); + } + + /* Geyser 3 will continue to send packets continually after + the first touch unless reinitialised. Do so if it's been + idle for a while in order to avoid waking the kernel up + several hundred times a second */ - /* Geyser 3 will continue to send packets continually after - the first touch unless reinitialised. Do so if it's been - idle for a while in order to avoid waking the kernel up - several hundred times a second */ - if (!key && atp_is_geyser_3(dev)) { + if (atp_is_geyser_3(dev)) { + if (!x && !y && !key) { dev->idlecount++; if (dev->idlecount == 10) { dev->valid = 0; schedule_work(&dev->work); } } + else + dev->idlecount = 0; } input_report_key(dev->input, BTN_LEFT, key);