Re: [alsa-devel] [PATCH 04/14] soundwire: Add MIPI DisCo property helpers
From: Vinod Koul
Date: Fri Oct 20 2017 - 01:21:07 EST
On Thu, Oct 19, 2017 at 11:02:02AM +0200, Takashi Iwai wrote:
> On Thu, 19 Oct 2017 05:03:20 +0200,
> Vinod Koul wrote:
> >
> > + 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?
Well the spec mandates 300 as worst case, in practice this _should_ be
lesser. I need to double check on behaviour of clock stop on driver removal.
We need to keep in mind that multiple Slaves can be on a bus and removal
maybe from one of them, so we may not do clock stop.
> > +
> > +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.
Ah missed this one. It was made public for debug, lets make it static now :)
--
~Vinod