diff options
| -rw-r--r-- | drivers/mfd/wm831x-core.c | 3 | ||||
| -rw-r--r-- | drivers/mfd/wm8350-core.c | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/mfd/wm831x-core.c b/drivers/mfd/wm831x-core.c index a3d5728b6449..f2ab025ad97a 100644 --- a/drivers/mfd/wm831x-core.c +++ b/drivers/mfd/wm831x-core.c | |||
| @@ -349,6 +349,9 @@ int wm831x_auxadc_read(struct wm831x *wm831x, enum wm831x_auxadc input) | |||
| 349 | goto disable; | 349 | goto disable; |
| 350 | } | 350 | } |
| 351 | 351 | ||
| 352 | /* If an interrupt arrived late clean up after it */ | ||
| 353 | try_wait_for_completion(&wm831x->auxadc_done); | ||
| 354 | |||
| 352 | /* Ignore the result to allow us to soldier on without IRQ hookup */ | 355 | /* Ignore the result to allow us to soldier on without IRQ hookup */ |
| 353 | wait_for_completion_timeout(&wm831x->auxadc_done, msecs_to_jiffies(5)); | 356 | wait_for_completion_timeout(&wm831x->auxadc_done, msecs_to_jiffies(5)); |
| 354 | 357 | ||
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index e400a3bed063..b5807484b4c9 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
| @@ -363,6 +363,10 @@ int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale, int vref) | |||
| 363 | reg |= 1 << channel | WM8350_AUXADC_POLL; | 363 | reg |= 1 << channel | WM8350_AUXADC_POLL; |
| 364 | wm8350_reg_write(wm8350, WM8350_DIGITISER_CONTROL_1, reg); | 364 | wm8350_reg_write(wm8350, WM8350_DIGITISER_CONTROL_1, reg); |
| 365 | 365 | ||
| 366 | /* If a late IRQ left the completion signalled then consume | ||
| 367 | * the completion. */ | ||
| 368 | try_wait_for_completion(&wm8350->auxadc_done); | ||
| 369 | |||
| 366 | /* We ignore the result of the completion and just check for a | 370 | /* We ignore the result of the completion and just check for a |
| 367 | * conversion result, allowing us to soldier on if the IRQ | 371 | * conversion result, allowing us to soldier on if the IRQ |
| 368 | * infrastructure is not set up for the chip. */ | 372 | * infrastructure is not set up for the chip. */ |
