[alsa-devel] [PATCH v4 09/15] soundwire: Add slave status handling

Vinod Koul vinod.koul at intel.com
Mon Dec 4 04:21:00 CET 2017


On Sun, Dec 03, 2017 at 09:11:39PM -0600, Pierre-Louis Bossart wrote:
> On 12/3/17 11:11 AM, Vinod Koul wrote:
> >On Fri, Dec 01, 2017 at 05:52:03PM -0600, Pierre-Louis Bossart wrote:
> >
> >>>+		status = sdw_read(slave, SDW_DP0_INT);
> >>>+		if (status < 0) {
> >>>+			dev_err(slave->bus->dev,
> >>>+				"SDW_DP0_INT read failed:%d", status);
> >>>+			return status;
> >>>+		}
> >>>+
> >>>+		count++;
> >>>+
> >>>+		/* we can get alerts while processing so keep retrying */
> >>
> >>This is not incorrect, but this goes beyond what the spec requires.
> >>
> >>The additional read is to make sure some interrupts are not lost due to a
> >>known race condition. It would be enough to mask the status read the second
> >>time to only check if the interrupts sources which were cleared are still
> >>signaling something.
> >>
> >>With the code as it is, you may catch *new* interrupt sources, which could
> >>impact the arbitration/priority/policy in handling interrupts. It's not
> >>necessarily bad, but you'd need to document whether you want to deal with
> >>the race condition described in the MIPI spec or try to be smarter.
> >
> >This was based on your last comment, lets discuss more offline on this to
> >see what else is required here.
> 
> I am fine if you leave the code as is for now, it's not bad but can be
> optimized.

Not bad is not good here :)

Okay I still havent grabbed my coffee, so help me out here. I am not sure I
understand here, can you point me to the part of spec handling you were
referring and what should be *ideally* done

-- 
~Vinod


More information about the Alsa-devel mailing list