[alsa-devel] [PATCH v2 4/6] soundwire: Handle multiple master instances in a stream
Shreyas NC
shreyas.nc at intel.com
Wed Jun 13 12:45:34 CEST 2018
> > static int do_bank_switch(struct sdw_stream_runtime *stream)
> > {
> >- struct sdw_master_runtime *m_rt = stream->m_rt;
> >+ struct sdw_master_runtime *m_rt = NULL;
> > const struct sdw_master_ops *ops;
> >- struct sdw_bus *bus = m_rt->bus;
> >+ struct sdw_bus *bus = NULL;
> > int ret = 0;
> >- ops = bus->ops;
> >- /* Pre-bank switch */
> >- if (ops->pre_bank_switch) {
> >- ret = ops->pre_bank_switch(bus);
> >+ list_for_each_entry(m_rt, &stream->master_list, stream_node) {
> >+ bus = m_rt->bus;
> >+ ops = bus->ops;
> >+
> >+ /* Pre-bank switch */
> >+ if (ops->pre_bank_switch) {
> >+ ret = ops->pre_bank_switch(bus);
> >+ if (ret < 0) {
> >+ dev_err(bus->dev,
> >+ "Pre bank switch op failed: %d", ret);
> >+ return ret;
> >+ }
> >+ }
> >+
> >+ /* Bank switch */
> >+ ret = sdw_bank_switch(bus);
> > if (ret < 0) {
> >- dev_err(bus->dev, "Pre bank switch op failed: %d", ret);
> >+ dev_err(bus->dev, "Bank switch failed: %d", ret);
> > return ret;
> > }
> You probably want to add a comment that in multi-link operation the actual
> bank_switch happens later and is done in a synchronized manner. This is lost
> if you just move code around and move the bank_switch into a loop.
>
As mentioned in the commit log, this is just a boilerplate conversion to
loop over multiple m_rt and it is in the next patch that the
multilink_bank_switch() is added.
So, I can mention in the commit log of this patch that this is just a
preparatory patch for the next patch. And, also I will add the necessary
details in the next patch.
--Shreyas
--
More information about the Alsa-devel
mailing list