aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/soundwire/slave.c
diff options
context:
space:
mode:
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>2020-01-14 18:08:36 -0600
committerVinod Koul <vkoul@kernel.org>2020-02-25 15:57:02 +0530
commitfb9469e54fa7a7b6a8137c40ae66c41b8d0ab175 (patch)
treecad02606cea942f7755c18e20e5ac5e4a937c4ea /drivers/soundwire/slave.c
parentsoundwire: bus: fix race condition with probe_complete signaling (diff)
downloadwireguard-linux-fb9469e54fa7a7b6a8137c40ae66c41b8d0ab175.tar.xz
wireguard-linux-fb9469e54fa7a7b6a8137c40ae66c41b8d0ab175.zip
soundwire: bus: fix race condition with enumeration_complete signaling
This patch adds the signaling needed for Slave drivers to wait until the enumeration completes so that race conditions when issuing read/write commands are avoided. The calls for wait_for_completion() will be added in codec drivers in follow-up patches. The order between init_completion() and complete() is deterministic, the Slave is marked as UNATTACHED either during a Master-initiated HardReset, or when the hardware detects the Slave no longer reports as ATTACHED. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200115000844.14695-3-pierre-louis.bossart@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire/slave.c')
-rw-r--r--drivers/soundwire/slave.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c
index 08db0488e02d..e767a78066ee 100644
--- a/drivers/soundwire/slave.c
+++ b/drivers/soundwire/slave.c
@@ -46,6 +46,7 @@ static int sdw_slave_add(struct sdw_bus *bus,
slave->dev.of_node = of_node_get(to_of_node(fwnode));
slave->bus = bus;
slave->status = SDW_SLAVE_UNATTACHED;
+ init_completion(&slave->enumeration_complete);
slave->dev_num = 0;
init_completion(&slave->probe_complete);
slave->probed = false;