diff options
author | Markus Pargmann <mpa@pengutronix.de> | 2013-03-09 15:21:33 -0800 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-03-12 08:50:20 -0700 |
commit | 540792753c292bce53f42eb7b8fb3d3510f57e00 (patch) | |
tree | 2f715f6bd9fd7e3f1b88d554115fb134a2237f82 /drivers/input/touchscreen/wm9712.c | |
parent | fa45255ee72649bd061116f7d3a765f5784bf078 (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.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/input/touchscreen/wm9712.c b/drivers/input/touchscreen/wm9712.c index a983da1744e..3b4eed4b869 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; |