Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a251b0a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '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
parents 9e766d81 5051d411
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -349,6 +349,9 @@ int wm831x_auxadc_read(struct wm831x *wm831x, enum wm831x_auxadc input)
		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 */
	wait_for_completion_timeout(&wm831x->auxadc_done, msecs_to_jiffies(5));

+4 −0
Original line number Diff line number Diff line
@@ -363,6 +363,10 @@ int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale, int vref)
	reg |= 1 << channel | WM8350_AUXADC_POLL;
	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
	 * conversion result, allowing us to soldier on if the IRQ
	 * infrastructure is not set up for the chip. */