lkml.org 
[lkml]   [2019]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 09/19] soundwire: bus: add helper to reset Slave status to UNATTACHED
    Date
    When resuming, we need to re-enumerate and restart from UNATTACHED.

    This will help implement a more robust state machine avoiding race
    conditions on resume.

    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    ---
    drivers/soundwire/bus.c | 24 ++++++++++++++++++++++++
    drivers/soundwire/bus.h | 2 ++
    2 files changed, 26 insertions(+)

    diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
    index 0e761efd32f9..17c744c0ff4c 100644
    --- a/drivers/soundwire/bus.c
    +++ b/drivers/soundwire/bus.c
    @@ -1107,3 +1107,27 @@ int sdw_handle_slave_status(struct sdw_bus *bus,
    return ret;
    }
    EXPORT_SYMBOL(sdw_handle_slave_status);
    +
    +void sdw_clear_slave_status(struct sdw_bus *bus)
    +{
    + struct sdw_slave *slave;
    + int i;
    +
    + /* Check all non-zero devices */
    + for (i = 1; i <= SDW_MAX_DEVICES; i++) {
    + mutex_lock(&bus->bus_lock);
    + if (test_bit(i, bus->assigned) == false) {
    + mutex_unlock(&bus->bus_lock);
    + continue;
    + }
    + mutex_unlock(&bus->bus_lock);
    +
    + slave = sdw_get_slave(bus, i);
    + if (!slave)
    + continue;
    +
    + if (slave->status != SDW_SLAVE_UNATTACHED)
    + sdw_modify_slave_status(slave, SDW_SLAVE_UNATTACHED);
    + }
    +}
    +EXPORT_SYMBOL(sdw_clear_slave_status);
    diff --git a/drivers/soundwire/bus.h b/drivers/soundwire/bus.h
    index acb8d11a4c84..cdbd11292cc3 100644
    --- a/drivers/soundwire/bus.h
    +++ b/drivers/soundwire/bus.h
    @@ -165,4 +165,6 @@ sdw_update(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
    return sdw_write(slave, addr, tmp);
    }

    +void sdw_clear_slave_status(struct sdw_bus *bus);
    +
    #endif /* __SDW_BUS_H */
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-06 20:23    [W:2.545 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site