Hi, On 23. 7. 20. 14:40, Manivannan Sadhasivam wrote: > Some devfreq consumers like UFS driver need to work with multiple clocks > through the OPP framework. For this reason, OPP framework exposes the > _indexed() APIs for finding the floor/ceil of the supplied frequency of > the indexed clock. So let's use them in the devfreq driver. > > Currently, the clock index of 0 is used which works fine for multiple as > well as single clock. > > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> > --- > drivers/devfreq/devfreq.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index e36cbb920ec8..7686993d639f 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -88,7 +88,7 @@ static unsigned long find_available_min_freq(struct devfreq *devfreq) > struct dev_pm_opp *opp; > unsigned long min_freq = 0; > > - opp = dev_pm_opp_find_freq_ceil(devfreq->dev.parent, &min_freq); > + opp = dev_pm_opp_find_freq_ceil_indexed(devfreq->dev.parent, &min_freq, 0); This patch changed the used function from dev_pm_opp_find_freq_ceil to dev_pm_opp_find_freq_ceil_indexed even if there are no supporting of the multiple clocks and then dev_pm_opp_find_freq_ceil is not removed from OPP. I think that it is better to use dev_pm_opp_find_freq_ceil_indexed when need to support multiple clocks with real case. > if (IS_ERR(opp)) > min_freq = 0; > else > @@ -102,7 +102,7 @@ static unsigned long find_available_max_freq(struct devfreq *devfreq) > struct dev_pm_opp *opp; > unsigned long max_freq = ULONG_MAX; > > - opp = dev_pm_opp_find_freq_floor(devfreq->dev.parent, &max_freq); > + opp = dev_pm_opp_find_freq_floor_indexed(devfreq->dev.parent, &max_freq, 0); > if (IS_ERR(opp)) > max_freq = 0; > else > @@ -196,7 +196,7 @@ static int set_freq_table(struct devfreq *devfreq) > return -ENOMEM; > > for (i = 0, freq = 0; i < devfreq->max_state; i++, freq++) { > - opp = dev_pm_opp_find_freq_ceil(devfreq->dev.parent, &freq); > + opp = dev_pm_opp_find_freq_ceil_indexed(devfreq->dev.parent, &freq, 0); > if (IS_ERR(opp)) { > devm_kfree(devfreq->dev.parent, devfreq->freq_table); > return PTR_ERR(opp); > @@ -2034,18 +2034,18 @@ struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, > > if (flags & DEVFREQ_FLAG_LEAST_UPPER_BOUND) { > /* The freq is an upper bound. opp should be lower */ > - opp = dev_pm_opp_find_freq_floor(dev, freq); > + opp = dev_pm_opp_find_freq_floor_indexed(dev, freq, 0); > > /* If not available, use the closest opp */ > if (opp == ERR_PTR(-ERANGE)) > - opp = dev_pm_opp_find_freq_ceil(dev, freq); > + opp = dev_pm_opp_find_freq_ceil_indexed(dev, freq, 0); > } else { > /* The freq is an lower bound. opp should be higher */ > - opp = dev_pm_opp_find_freq_ceil(dev, freq); > + opp = dev_pm_opp_find_freq_ceil_indexed(dev, freq, 0); > > /* If not available, use the closest opp */ > if (opp == ERR_PTR(-ERANGE)) > - opp = dev_pm_opp_find_freq_floor(dev, freq); > + opp = dev_pm_opp_find_freq_floor_indexed(dev, freq, 0); > } > > return opp; -- Best Regards, Samsung Electronics Chanwoo Choi