summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/clock.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/clock.c')
-rw-r--r--arch/arm/mach-tegra/clock.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c
index cbe34d7a5c3b..7ed1823fe089 100644
--- a/arch/arm/mach-tegra/clock.c
+++ b/arch/arm/mach-tegra/clock.c
@@ -236,9 +236,16 @@ void clk_init(struct clk *c)
static int clk_enable_locked(struct clk *c)
{
int ret = 0;
+ int rate = clk_get_rate_locked(c);
+ bool set_rate = false;
+
+ if (rate > c->max_rate) {
+ rate = c->max_rate;
+ set_rate = true;
+ }
if (clk_is_auto_dvfs(c)) {
- ret = tegra_dvfs_set_rate(c, clk_get_rate_locked(c));
+ ret = tegra_dvfs_set_rate(c, rate);
if (ret)
return ret;
}
@@ -250,6 +257,9 @@ static int clk_enable_locked(struct clk *c)
return ret;
}
+ if (set_rate)
+ clk_set_rate_locked(c, rate);
+
if (c->ops && c->ops->enable) {
ret = c->ops->enable(c);
trace_clock_enable(c->name, 1, 0);