[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