summary refs log tree commit diff
path: root/Documentation/sphinx-static
diff options
context:
space:
mode:
authorRichard Fitzgerald <rf@opensource.cirrus.com>2022-09-14 17:02:45 +0100
committerVinod Koul <vkoul@kernel.org>2022-09-20 10:29:31 +0530
commitf605f32e59d8021a032746c2ca73b1adc46873d7 (patch)
tree30a1e49ccfdf80ce6d3d4f120a177f16cbc60196 /Documentation/sphinx-static
parentfbbc73a20f38dcadf8a250bc761962588cd91f7e (diff)
downloadlinux-f605f32e59d8021a032746c2ca73b1adc46873d7.tar.gz
soundwire: bus: Don't lose unattach notifications
Ensure that if sdw_handle_slave_status() sees a peripheral
has dropped off the bus it reports it to the client driver.

If there are any devices reporting on address 0 it bails out
after programming the device IDs. So it never reaches the second
loop that calls sdw_update_slave_status().

If the missing device is one that is now showing as unenumerated
it has been given a device ID so will report as attached next
time sdw_handle_slave_status() runs.

With the previous code the client driver would only see another
ATTACHED notification because the UNATTACHED state was lost when
sdw_handle_slave_status() bailed out after programming the
device ID.

This shows up most when the peripheral has to be reset after
downloading updated firmware and there are multiple of these
peripherals on the bus. They will all return to unenumerated state
after the reset, and then there is a mix of unattached, attached
and unenumerated PING states from the peripherals, as each is reset
and they reboot.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20220914160248.1047627-3-rf@opensource.cirrus.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'Documentation/sphinx-static')
0 files changed, 0 insertions, 0 deletions