On Fri, Apr 24, 2020 at 8:54 AM Georgi Djakov <georgi.djakov@xxxxxxxxxx> wrote: > > If the OPP bandwidth values are populated, we want to switch also the > interconnect bandwidth in addition to frequency and voltage. > > Signed-off-by: Georgi Djakov <georgi.djakov@xxxxxxxxxx> > --- > v7: > * Addressed review comments from Viresh. > > v2: https://lore.kernel.org/r/20190423132823.7915-5-georgi.djakov@xxxxxxxxxx > > drivers/opp/core.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/opp/core.c b/drivers/opp/core.c > index 8e86811eb7b2..66a8ea10f3de 100644 > --- a/drivers/opp/core.c > +++ b/drivers/opp/core.c > @@ -808,7 +808,7 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) > unsigned long freq, old_freq, temp_freq; > struct dev_pm_opp *old_opp, *opp; > struct clk *clk; > - int ret; > + int ret, i; > > opp_table = _find_opp_table(dev); > if (IS_ERR(opp_table)) { > @@ -895,6 +895,17 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) > dev_err(dev, "Failed to set required opps: %d\n", ret); > } > > + if (!ret && opp_table->paths) { > + for (i = 0; i < opp_table->path_count; i++) { > + ret = icc_set_bw(opp_table->paths[i], > + opp->bandwidth[i].avg, > + opp->bandwidth[i].peak); > + if (ret) > + dev_err(dev, "Failed to set bandwidth[%d]: %d\n", > + i, ret); > + } > + } > + Hey Georgi, Thanks for getting this series going again and converging on the DT bindings! Will be nice to see this land finally. I skimmed through all the patches in the series and they mostly look good (if you address some of Matthias's comments). My only comment is -- can we drop this patch please? I'd like to use devfreq governors for voting on bandwidth and this will effectively override whatever bandwidth decisions are made by the devfreq governor. If you really want to keep this, then maybe don't "get" the icc path by default in patch 4/7 and then let the device driver set the icc path if it wants the opp framework to manage the bandwidth too? -Saravana