Commit 7ef3dcc8 authored by James Hogan's avatar James Hogan Committed by Mike Turquette

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: default avatarJames Hogan <james.hogan@imgtec.com>
Reviewed-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Cc: Mike Turquette <mturquette@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
parent 5cfe10bb
...@@ -559,6 +559,19 @@ struct clk *__clk_get_parent(struct clk *clk) ...@@ -559,6 +559,19 @@ struct clk *__clk_get_parent(struct clk *clk)
return !clk ? NULL : clk->parent; return !clk ? NULL : clk->parent;
} }
struct clk *clk_get_parent_by_index(struct clk *clk, u8 index)
{
if (!clk || index >= clk->num_parents)
return NULL;
else if (!clk->parents)
return __clk_lookup(clk->parent_names[index]);
else if (!clk->parents[index])
return clk->parents[index] =
__clk_lookup(clk->parent_names[index]);
else
return clk->parents[index];
}
unsigned int __clk_get_enable_count(struct clk *clk) unsigned int __clk_get_enable_count(struct clk *clk)
{ {
return !clk ? 0 : clk->enable_count; return !clk ? 0 : clk->enable_count;
...@@ -1316,13 +1329,7 @@ static struct clk *__clk_init_parent(struct clk *clk) ...@@ -1316,13 +1329,7 @@ static struct clk *__clk_init_parent(struct clk *clk)
kzalloc((sizeof(struct clk*) * clk->num_parents), kzalloc((sizeof(struct clk*) * clk->num_parents),
GFP_KERNEL); GFP_KERNEL);
if (!clk->parents) ret = clk_get_parent_by_index(clk, index);
ret = __clk_lookup(clk->parent_names[index]);
else if (!clk->parents[index])
ret = clk->parents[index] =
__clk_lookup(clk->parent_names[index]);
else
ret = clk->parents[index];
out: out:
return ret; return ret;
......
...@@ -420,6 +420,7 @@ const char *__clk_get_name(struct clk *clk); ...@@ -420,6 +420,7 @@ const char *__clk_get_name(struct clk *clk);
struct clk_hw *__clk_get_hw(struct clk *clk); struct clk_hw *__clk_get_hw(struct clk *clk);
u8 __clk_get_num_parents(struct clk *clk); u8 __clk_get_num_parents(struct clk *clk);
struct clk *__clk_get_parent(struct clk *clk); struct clk *__clk_get_parent(struct clk *clk);
struct clk *clk_get_parent_by_index(struct clk *clk, u8 index);
unsigned int __clk_get_enable_count(struct clk *clk); unsigned int __clk_get_enable_count(struct clk *clk);
unsigned int __clk_get_prepare_count(struct clk *clk); unsigned int __clk_get_prepare_count(struct clk *clk);
unsigned long __clk_get_rate(struct clk *clk); unsigned long __clk_get_rate(struct clk *clk);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment