msm: clock: Support depends in toplevel
Two types of clocks support depends (branches and rcgs) and soon
we'll be adding a third (rpm). Support depends in the core so as
to avoid duplicating that logic all over.
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
diff --git a/arch/arm/mach-msm/clock-local.c b/arch/arm/mach-msm/clock-local.c
index 6f29803..b7542c8 100644
--- a/arch/arm/mach-msm/clock-local.c
+++ b/arch/arm/mach-msm/clock-local.c
@@ -514,17 +514,9 @@
rc = local_vote_sys_vdd(clk->current_freq->sys_vdd);
if (rc)
- goto err_vdd;
- rc = clk_enable(clk->depends);
- if (rc)
- goto err_dep;
+ return rc;
_rcg_clk_enable(clk);
return rc;
-
-err_dep:
- local_unvote_sys_vdd(clk->current_freq->sys_vdd);
-err_vdd:
- return rc;
}
/* Disable a clock and any related power rail. */
@@ -533,11 +525,10 @@
struct rcg_clk *clk = to_rcg_clk(c);
_rcg_clk_disable(clk);
- clk_disable(clk->depends);
local_unvote_sys_vdd(clk->current_freq->sys_vdd);
}
-/* Turn off a clock at boot, without checking refcounts or disabling depends. */
+/* Turn off a clock at boot, without checking refcounts. */
void rcg_clk_auto_off(struct clk *c)
{
_rcg_clk_disable(to_rcg_clk(c));
@@ -911,14 +902,9 @@
int branch_clk_enable(struct clk *clk)
{
- int rc;
unsigned long flags;
struct branch_clk *branch = to_branch_clk(clk);
- rc = clk_enable(branch->depends);
- if (rc)
- return rc;
-
spin_lock_irqsave(&local_clock_reg_lock, flags);
__branch_clk_enable_reg(&branch->b, branch->c.dbg_name);
branch->enabled = true;
@@ -936,8 +922,6 @@
__branch_clk_disable_reg(&branch->b, branch->c.dbg_name);
branch->enabled = false;
spin_unlock_irqrestore(&local_clock_reg_lock, flags);
-
- clk_disable(branch->depends);
}
struct clk *branch_clk_get_parent(struct clk *clk)