mirror of https://gitee.com/openkylin/linux.git
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: mfd: Clean up after WM83xx AUXADC interrupt if it arrives late
This commit is contained in:
commit
6a251b0ab6
|
@ -349,6 +349,9 @@ int wm831x_auxadc_read(struct wm831x *wm831x, enum wm831x_auxadc input)
|
||||||
goto disable;
|
goto disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If an interrupt arrived late clean up after it */
|
||||||
|
try_wait_for_completion(&wm831x->auxadc_done);
|
||||||
|
|
||||||
/* Ignore the result to allow us to soldier on without IRQ hookup */
|
/* Ignore the result to allow us to soldier on without IRQ hookup */
|
||||||
wait_for_completion_timeout(&wm831x->auxadc_done, msecs_to_jiffies(5));
|
wait_for_completion_timeout(&wm831x->auxadc_done, msecs_to_jiffies(5));
|
||||||
|
|
||||||
|
|
|
@ -363,6 +363,10 @@ int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale, int vref)
|
||||||
reg |= 1 << channel | WM8350_AUXADC_POLL;
|
reg |= 1 << channel | WM8350_AUXADC_POLL;
|
||||||
wm8350_reg_write(wm8350, WM8350_DIGITISER_CONTROL_1, reg);
|
wm8350_reg_write(wm8350, WM8350_DIGITISER_CONTROL_1, reg);
|
||||||
|
|
||||||
|
/* If a late IRQ left the completion signalled then consume
|
||||||
|
* the completion. */
|
||||||
|
try_wait_for_completion(&wm8350->auxadc_done);
|
||||||
|
|
||||||
/* We ignore the result of the completion and just check for a
|
/* We ignore the result of the completion and just check for a
|
||||||
* conversion result, allowing us to soldier on if the IRQ
|
* conversion result, allowing us to soldier on if the IRQ
|
||||||
* infrastructure is not set up for the chip. */
|
* infrastructure is not set up for the chip. */
|
||||||
|
|
Loading…
Reference in New Issue