[alsa-devel] [PATCH v3 1/2] ASoC: cs35l33: Initial commit of the cs35l33 CODEC driver.
Paul Handrigan
paul.handrigan at cirrus.com
Fri May 27 00:34:08 CEST 2016
On Mon, 16 May 2016, Mark Brown wrote:
> On Mon, May 16, 2016 at 10:20:24AM -0500, Paul Handrigan wrote:
> > On Fri, 13 May 2016, Mark Brown wrote:
> > > On Fri, May 13, 2016 at 03:50:28PM -0500, Paul.Handrigan at cirrus.com wrote:
>
> > > > + for (i = 0; i < CS35L33_INT_ATTEMPTS; i++) {
> > > > + /* ack the irq by reading both status registers */
>
> > > Why do we need this...?
>
> > The we need to keep handling the unmasked interrupts until they are
> > all cleared. We could get another interrupt while handling the first
> > triggered interrupt, but the interrupt line could be de-asserted due to
> > the read-to-clear nature of the interrupt status registers.
>
> This doesn't follow? Clear to read shouldn't be affected by reading
> repeatedly, or at least I don't see that helps any problems in a
> non-racy fashion, and the interrupt subsystem will happily call the
> handler again if the interrupt reasserts during handling so new
> interrupts shouldn't be an issue either. New interrupts are an issue
> for most devices so we really ought to have handling for that in the
> interrupt subsystem if it's needed, or possibly the usage of the
> subsystem needs to change to take advantage of preexisting handling...
>
After taking a closer look at it, it would make sence to remove the for
loop. We will still need to attempt clear the unmasked interrupt status
bits since it may take a few reads to clear those bits.
More information about the Alsa-devel
mailing list