summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/clock.c4
-rw-r--r--arch/arm/mach-tegra/tegra2_clocks.c12
2 files changed, 4 insertions, 12 deletions
diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c
index 155d22f1a637..4b14cbc765d3 100644
--- a/arch/arm/mach-tegra/clock.c
+++ b/arch/arm/mach-tegra/clock.c
@@ -648,10 +648,14 @@ EXPORT_SYMBOL(tegra_is_clk_enabled);
int tegra_clk_shared_bus_update(struct clk *c)
{
int ret = 0;
+ unsigned long flags;
+
+ clk_lock_save(c, &flags);
if (c->ops && c->ops->shared_bus_update)
ret = c->ops->shared_bus_update(c);
+ clk_unlock_restore(c, &flags);
return ret;
}
diff --git a/arch/arm/mach-tegra/tegra2_clocks.c b/arch/arm/mach-tegra/tegra2_clocks.c
index 918c4de6b46f..3ae10fcb7e5d 100644
--- a/arch/arm/mach-tegra/tegra2_clocks.c
+++ b/arch/arm/mach-tegra/tegra2_clocks.c
@@ -1511,13 +1511,9 @@ static int tegra_clk_shared_bus_set_rate(struct clk *c, unsigned long rate)
if (new_rate < 0)
return new_rate;
- clk_lock_save(c->parent, &flags);
-
c->u.shared_bus_user.rate = new_rate;
ret = tegra_clk_shared_bus_update(c->parent);
- clk_unlock_restore(c->parent, &flags);
-
return ret;
}
@@ -1531,15 +1527,11 @@ static int tegra_clk_shared_bus_enable(struct clk *c)
unsigned long flags;
int ret;
- clk_lock_save(c->parent, &flags);
-
c->u.shared_bus_user.enabled = true;
ret = tegra_clk_shared_bus_update(c->parent);
if (strcmp(c->name, "avp.sclk") == 0)
tegra2_statmon_start();
- clk_unlock_restore(c->parent, &flags);
-
return ret;
}
@@ -1548,15 +1540,11 @@ static void tegra_clk_shared_bus_disable(struct clk *c)
unsigned long flags;
int ret;
- clk_lock_save(c->parent, &flags);
-
if (strcmp(c->name, "avp.sclk") == 0)
tegra2_statmon_stop();
c->u.shared_bus_user.enabled = false;
ret = tegra_clk_shared_bus_update(c->parent);
WARN_ON_ONCE(ret);
-
- clk_unlock_restore(c->parent, &flags);
}
static struct clk_ops tegra_clk_shared_bus_ops = {