summaryrefslogtreecommitdiff
path: root/drivers/devfreq/devfreq_simple_dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/devfreq/devfreq_simple_dev.c')
-rw-r--r--drivers/devfreq/devfreq_simple_dev.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/devfreq/devfreq_simple_dev.c b/drivers/devfreq/devfreq_simple_dev.c
index b354bcb2aba2..ba562bdcd787 100644
--- a/drivers/devfreq/devfreq_simple_dev.c
+++ b/drivers/devfreq/devfreq_simple_dev.c
@@ -61,9 +61,18 @@ static void find_freq(struct devfreq_dev_profile *p, unsigned long *freq,
static int dev_target(struct device *dev, unsigned long *freq, u32 flags)
{
struct dev_data *d = dev_get_drvdata(dev);
+ unsigned long rfreq;
find_freq(&d->profile, freq, flags);
- return clk_set_rate(d->clk, *freq * 1000);
+
+ rfreq = clk_round_rate(d->clk, *freq * 1000);
+ if (IS_ERR_VALUE(rfreq)) {
+ dev_err(dev, "devfreq: Cannot find matching frequency for %lu\n",
+ *freq);
+ return rfreq;
+ }
+
+ return clk_set_rate(d->clk, rfreq);
}
static int dev_get_cur_freq(struct device *dev, unsigned long *freq)