summaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/wm9712.c
diff options
context:
space:
mode:
authorMarkus Pargmann <mpa@pengutronix.de>2013-03-09 15:21:33 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2013-03-12 08:50:20 -0700
commit540792753c292bce53f42eb7b8fb3d3510f57e00 (patch)
tree2f715f6bd9fd7e3f1b88d554115fb134a2237f82 /drivers/input/touchscreen/wm9712.c
parentfa45255ee72649bd061116f7d3a765f5784bf078 (diff)
Input: wm9712 - fix wrong pen up readings
Often a reading can be wrong. This patch assures that this is really a pen up event and not a false reading. Based on wm9712: pen up by Teresa Gámez and Christian Hemp. Signed-off-by: Markus Pargmann <mpa@pengutronix.de> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/touchscreen/wm9712.c')
-rw-r--r--drivers/input/touchscreen/wm9712.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/input/touchscreen/wm9712.c b/drivers/input/touchscreen/wm9712.c
index a983da1744e8..3b4eed4b8690 100644
--- a/drivers/input/touchscreen/wm9712.c
+++ b/drivers/input/touchscreen/wm9712.c
@@ -302,8 +302,12 @@ static int wm9712_poll_sample(struct wm97xx *wm, int adcsel, int *sample)
}
if (wants_pen && !(*sample & WM97XX_PEN_DOWN)) {
- wm->pen_probably_down = 0;
- return RC_PENUP;
+ /* Sometimes it reads a wrong value the first time. */
+ *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
+ if (!(*sample & WM97XX_PEN_DOWN)) {
+ wm->pen_probably_down = 0;
+ return RC_PENUP;
+ }
}
return RC_VALID;