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>
This commit is contained in:
committed by
Mike Turquette
parent
5cfe10bb00
commit
7ef3dcc814
@@ -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)
|
|||||||
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);
|
|||||||
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);
|
||||||
|
Reference in New Issue
Block a user