Messages in this thread | | | Date | Mon, 29 Aug 2022 10:50:34 +0100 | Subject | Re: [PATCH 3/3] soundwire: bus: Fix lost UNATTACH when re-enumerating | From | Richard Fitzgerald <> |
| |
On 26/08/2022 09:06, Pierre-Louis Bossart wrote: > <SNIP> > > Thanks for the detailed answer, this sequence of events will certainly > defeat the Cadence IP and the way sticky bits were handled. > > The UNATTACHED case was assumed to be a really rare case of losing sync, > i.e. a SOFT_RESET in SoundWire parlance. > > If you explicitly do a device reset, that would be a new scenario that > was not considered before on any of the existing SoundWire commercial > devices. It's however something we need to support, and your work here > is much appreciated. > > I still think we should re-check the actual status from a PING frame, in > order to work with more current data than the sticky bits taken at an > earlier time, but that would only be a minor improvement. > > I also have a vague feeling that additional work is needed to make sure > the DAIs are not used before that second enumeration and all firmware > download complete. I did a couple of tests last year where I used the > debugfs interface to issue a device reset command while streaming audio, > and the detach/reattach was not handled at the ASoC level. > > I really don't see any logical flaws in your patch as is, so > > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> >
I have pushed an alternative fix that waits until it sees an UNATTACHED status before reprogramming the device ID. https://lore.kernel.org/lkml/20220829094458.1169504-1-rf@opensource.cirrus.com/T/#t
I've tested it with 4 amps on the same bus, all being reset after their firmware has been downloaded.
I leave it to you to choose which fix you prefer. The second fix is simpler and I didn't see any problems in testing.
| |