aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen/wm9712.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/touchscreen/wm9712.c')
-rw-r--r--drivers/input/touchscreen/wm9712.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/input/touchscreen/wm9712.c b/drivers/input/touchscreen/wm9712.c
index 2bc2fb801009..d26093f479d1 100644
--- a/drivers/input/touchscreen/wm9712.c
+++ b/drivers/input/touchscreen/wm9712.c
@@ -264,13 +264,10 @@ static int wm9712_poll_sample(struct wm97xx *wm, int adcsel, int *sample)
264 } 264 }
265 265
266 /* set up digitiser */ 266 /* set up digitiser */
267 if (adcsel & 0x8000)
268 adcsel = ((adcsel & 0x7fff) + 3) << 12;
269
270 if (wm->mach_ops && wm->mach_ops->pre_sample) 267 if (wm->mach_ops && wm->mach_ops->pre_sample)
271 wm->mach_ops->pre_sample(adcsel); 268 wm->mach_ops->pre_sample(adcsel);
272 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, 269 wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, (adcsel & WM97XX_ADCSEL_MASK)
273 adcsel | WM97XX_POLL | WM97XX_DELAY(delay)); 270 | WM97XX_POLL | WM97XX_DELAY(delay));
274 271
275 /* wait 3 AC97 time slots + delay for conversion */ 272 /* wait 3 AC97 time slots + delay for conversion */
276 poll_delay(delay); 273 poll_delay(delay);
@@ -296,9 +293,10 @@ static int wm9712_poll_sample(struct wm97xx *wm, int adcsel, int *sample)
296 wm->mach_ops->post_sample(adcsel); 293 wm->mach_ops->post_sample(adcsel);
297 294
298 /* check we have correct sample */ 295 /* check we have correct sample */
299 if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) { 296 if ((*sample ^ adcsel) & WM97XX_ADCSEL_MASK) {
300 dev_dbg(wm->dev, "adc wrong sample, read %x got %x", adcsel, 297 dev_dbg(wm->dev, "adc wrong sample, wanted %x got %x",
301 *sample & WM97XX_ADCSEL_MASK); 298 adcsel & WM97XX_ADCSEL_MASK,
299 *sample & WM97XX_ADCSEL_MASK);
302 return RC_PENUP; 300 return RC_PENUP;
303 } 301 }
304 302