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

Reply via email to