13 Jun
2018
13 Jun
'18
12:45 p.m.
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 */
if (ret < 0) {ret = sdw_bank_switch(bus);
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
--