aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/clk.c
diff options
context:
space:
mode:
authorJames Hogan <james.hogan@imgtec.com>2013-07-29 07:24:58 -0400
committerMike Turquette <mturquette@linaro.org>2013-08-19 15:27:15 -0400
commit7ef3dcc8145263cb5a8c7059f82d44c948eb46a8 (patch)
treecccb8923cc346c372cb2e7f077b141c11f7e5cac /drivers/clk/clk.c
parent5cfe10bb00e1b8c0aaa3f0c796c643bb1af6db82 (diff)
clk: abstract parent cache
Abstract access to the clock parent cache by defining clk_get_parent_by_index(clk, index). This allows access to parent clocks from clock drivers. Signed-off-by: James Hogan <james.hogan@imgtec.com> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> Cc: Mike Turquette <mturquette@linaro.org> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'drivers/clk/clk.c')
-rw-r--r--drivers/clk/clk.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 56a00db61332..42c15a8ba34d 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -559,6 +559,19 @@ struct clk *__clk_get_parent(struct clk *clk)
559 return !clk ? NULL : clk->parent; 559 return !clk ? NULL : clk->parent;
560} 560}
561 561
562struct clk *clk_get_parent_by_index(struct clk *clk, u8 index)
563{
564 if (!clk || index >= clk->num_parents)
565 return NULL;
566 else if (!clk->parents)
567 return __clk_lookup(clk->parent_names[index]);
568 else if (!clk->parents[index])
569 return clk->parents[index] =
570 __clk_lookup(clk->parent_names[index]);
571 else
572 return clk->parents[index];
573}
574
562unsigned int __clk_get_enable_count(struct clk *clk) 575unsigned int __clk_get_enable_count(struct clk *clk)
563{ 576{
564 return !clk ? 0 : clk->enable_count; 577 return !clk ? 0 : clk->enable_count;
@@ -1316,13 +1329,7 @@ static struct clk *__clk_init_parent(struct clk *clk)
1316 kzalloc((sizeof(struct clk*) * clk->num_parents), 1329 kzalloc((sizeof(struct clk*) * clk->num_parents),
1317 GFP_KERNEL); 1330 GFP_KERNEL);
1318 1331
1319 if (!clk->parents) 1332 ret = clk_get_parent_by_index(clk, index);
1320 ret = __clk_lookup(clk->parent_names[index]);
1321 else if (!clk->parents[index])
1322 ret = clk->parents[index] =
1323 __clk_lookup(clk->parent_names[index]);
1324 else
1325 ret = clk->parents[index];
1326 1333
1327out: 1334out:
1328 return ret; 1335 return ret;