aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabio Baltieri <fabio.baltieri@linaro.org>2013-04-30 08:45:06 -0400
committerMike Turquette <mturquette@linaro.org>2013-05-29 14:52:18 -0400
commitf586938ba2cf83ed4cbebe96436220d182a7808e (patch)
tree1ad0d4f8f49a2e522b67368715bdf05386197c7a
parentdd4704480372fdbf3e8f7826274a883c4c7c335a (diff)
clk: ux500: clk-sysctrl: handle clocks with no parents
Fix clk_reg_sysctrl() to set main clock registers of new struct clk_sysctrl even if the registered clock has no parents. This fixes an issue where "ulpclk" was registered with all clk->reg_* fields uninitialized, causing a -EINVAL error from clk_prepare(). Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Mike Turquette <mturquette@linaro.org>
-rw-r--r--drivers/clk/ux500/clk-sysctrl.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/clk/ux500/clk-sysctrl.c b/drivers/clk/ux500/clk-sysctrl.c
index bc7e9bde792b..e364c9d4aa60 100644
--- a/drivers/clk/ux500/clk-sysctrl.c
+++ b/drivers/clk/ux500/clk-sysctrl.c
@@ -145,7 +145,13 @@ static struct clk *clk_reg_sysctrl(struct device *dev,
145 return ERR_PTR(-ENOMEM); 145 return ERR_PTR(-ENOMEM);
146 } 146 }
147 147
148 for (i = 0; i < num_parents; i++) { 148 /* set main clock registers */
149 clk->reg_sel[0] = reg_sel[0];
150 clk->reg_bits[0] = reg_bits[0];
151 clk->reg_mask[0] = reg_mask[0];
152
153 /* handle clocks with more than one parent */
154 for (i = 1; i < num_parents; i++) {
149 clk->reg_sel[i] = reg_sel[i]; 155 clk->reg_sel[i] = reg_sel[i];
150 clk->reg_bits[i] = reg_bits[i]; 156 clk->reg_bits[i] = reg_bits[i];
151 clk->reg_mask[i] = reg_mask[i]; 157 clk->reg_mask[i] = reg_mask[i];