On Thu, 19 Oct 2017 05:03:20 +0200, Vinod Koul wrote:
diff --git a/drivers/soundwire/bus_type.c b/drivers/soundwire/bus_type.c index a14d1de80afa..baad4ad3be44 100644 --- a/drivers/soundwire/bus_type.c +++ b/drivers/soundwire/bus_type.c @@ -139,12 +139,28 @@ static int sdw_drv_probe(struct device *dev) return ret; }
slave->ops = drv->ops;
ret = drv->probe(slave, id); if (ret) { dev_err(dev, "Probe of %s failed: %d\n", drv->name, ret); return ret; }
/* device is probed so let's read the properties now */
if (slave->ops && slave->ops->read_prop)
slave->ops->read_prop(slave);
/*
* Check for valid clk_stop_timeout, use DisCo worst case value of
* 300ms
*/
if (slave->prop.clk_stop_timeout == 0)
slave->prop.clk_stop_timeout = 300;
slave->bus->clk_stop_timeout = max_t(u32, slave->bus->clk_stop_timeout,
slave->prop.clk_stop_timeout);
Isn't it racy? Also what happens after removing a driver? The clk_stop_timeout is kept high?
+int sdw_slave_read_dpn(struct sdw_slave *slave,
struct sdw_dpn_prop *dpn, int count, int ports, char *type)
Missing comment for a public API function.
thanks,
Takashi