mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00
PM / devfreq: Switch to dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs
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. Link: https://lore.kernel.org/all/20231003111232.42663-3-manivannan.sadhasivam@linaro.org/ Acked-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
parent
d280560198
commit
8b3bd6ffbc
|
@ -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);
|
||||
|
@ -2036,18 +2036,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;
|
||||
|
|
Loading…
Reference in New Issue
Block a user