diff options
author | Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> | 2020-01-14 18:08:36 -0600 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-02-25 15:57:02 +0530 |
commit | fb9469e54fa7a7b6a8137c40ae66c41b8d0ab175 (patch) | |
tree | cad02606cea942f7755c18e20e5ac5e4a937c4ea /drivers/soundwire/slave.c | |
parent | 2140b66b5d3ecf6c7c0fa9dc5eebb41855765ace (diff) | |
download | linux-fb9469e54fa7a7b6a8137c40ae66c41b8d0ab175.tar.bz2 |
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.c | 1 |
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; |