summaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorAndrey Panov <rockford@yandex.ru>2015-03-04 23:11:36 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2015-03-05 09:11:34 +0100
commit3f1aee73194dbd52820ea45e63aa5a542f36f012 (patch)
tree8875e8e6f876dbce781ccbed7f6b6f41ec03d71f /drivers/clk
parente3459c10ab9dbb91b73448bbbe3f1ea83881ecae (diff)
downloadbarebox-3f1aee73194dbd52820ea45e63aa5a542f36f012.tar.gz
barebox-3f1aee73194dbd52820ea45e63aa5a542f36f012.tar.xz
CLK: Check and do not allow to register clock twice
Signed-off-by: Andrey Panov <rockford@yandex.ru> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/clk.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 584e2f3242..b77d0221c3 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -212,6 +212,16 @@ struct clk *clk_get_parent(struct clk *clk)
int clk_register(struct clk *clk)
{
+ struct clk *c;
+
+ list_for_each_entry(c, &clks, list) {
+ if (!strcmp(c->name, clk->name)) {
+ pr_err("%s clk %s is already registered, skipping!\n",
+ __func__, clk->name);
+ return -EBUSY;
+ }
+ }
+
clk->parents = xzalloc(sizeof(struct clk *) * clk->num_parents);
list_add_tail(&clk->list, &clks);