summaryrefslogtreecommitdiff
path: root/drivers/clk/shmobile/clk-mstp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clk/shmobile/clk-mstp.c')
-rw-r--r--drivers/clk/shmobile/clk-mstp.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/clk/shmobile/clk-mstp.c b/drivers/clk/shmobile/clk-mstp.c
index e576b60de20e..42d5912b1d25 100644
--- a/drivers/clk/shmobile/clk-mstp.c
+++ b/drivers/clk/shmobile/clk-mstp.c
@@ -160,7 +160,7 @@ static void __init cpg_mstp_clocks_init(struct device_node *np)
unsigned int i;
group = kzalloc(sizeof(*group), GFP_KERNEL);
- clks = kzalloc(MSTP_MAX_CLOCKS * sizeof(*clks), GFP_KERNEL);
+ clks = kmalloc(MSTP_MAX_CLOCKS * sizeof(*clks), GFP_KERNEL);
if (group == NULL || clks == NULL) {
kfree(group);
kfree(clks);
@@ -181,6 +181,9 @@ static void __init cpg_mstp_clocks_init(struct device_node *np)
return;
}
+ for (i = 0; i < MSTP_MAX_CLOCKS; ++i)
+ clks[i] = ERR_PTR(-ENOENT);
+
for (i = 0; i < MSTP_MAX_CLOCKS; ++i) {
const char *parent_name;
const char *name;
@@ -205,10 +208,11 @@ static void __init cpg_mstp_clocks_init(struct device_node *np)
continue;
}
- clks[clkidx] = cpg_mstp_clock_register(name, parent_name, i,
- group);
+ clks[clkidx] = cpg_mstp_clock_register(name, parent_name,
+ clkidx, group);
if (!IS_ERR(clks[clkidx])) {
- group->data.clk_num = max(group->data.clk_num, clkidx);
+ group->data.clk_num = max(group->data.clk_num,
+ clkidx + 1);
/*
* Register a clkdev to let board code retrieve the
* clock by name and register aliases for non-DT