Message ID | 20230720054100.9940-10-manivannan.sadhasivam@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | [v2,01/15] dt-bindings: ufs: common: add OPP table | expand |
On 23. 7. 24. 14:46, Manivannan Sadhasivam wrote: > On Mon, Jul 24, 2023 at 05:06:04AM +0900, Chanwoo Choi wrote: >> 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@linaro.org> >>> --- >>> 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. >> > > There is the user for dev_pm_opp_find_freq_ceil_indexed() which is the UFS > driver and since UFS is using devfreq, we need this change. I've added this info > in the commit message as well. What am I missing? I found out the difference of them. - dev_pm_opp_find_freq_ceil() used the 'assert_single_clk' which check the count of clock. (snip) Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
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); 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;
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@linaro.org> --- drivers/devfreq/devfreq.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)