aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-samsung
diff options
context:
space:
mode:
authorThomas Abraham <thomas.ab@samsung.com>2010-01-18 00:30:16 -0500
committerBen Dooks <ben-linux@fluff.org>2010-01-18 01:28:37 -0500
commitb8792dbff6ed93c5a77f71917d4a0c5efa12eee1 (patch)
tree4c72869f4868043b559d2f8dc38151faf3adc9f0 /arch/arm/plat-samsung
parenta0de298a0eee7f9004a8e512c12c7b40d66c9934 (diff)
ARM: SAMSUNG: Add check to ensure that clksrc_clk does have multiple clock sources
Adds a additional check in s3c_set_clksrc function to ensure that the clksrc_clk does have a choice of multiple clock sources. In addition to this, a check is added to ensure that a parent is assigned to the clksrc_clk in case it does not have a choice of parent clocks. Signed-off-by: Thomas Abraham <thomas.ab@samsung.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm/plat-samsung')
-rw-r--r--arch/arm/plat-samsung/clock-clksrc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm/plat-samsung/clock-clksrc.c b/arch/arm/plat-samsung/clock-clksrc.c
index 33c633a8be8d..98c6b8859f49 100644
--- a/arch/arm/plat-samsung/clock-clksrc.c
+++ b/arch/arm/plat-samsung/clock-clksrc.c
@@ -129,11 +129,16 @@ void __init_or_cpufreq s3c_set_clksrc(struct clksrc_clk *clk, bool announce)
129{ 129{
130 struct clksrc_sources *srcs = clk->sources; 130 struct clksrc_sources *srcs = clk->sources;
131 u32 mask = bit_mask(clk->reg_src.shift, clk->reg_src.size); 131 u32 mask = bit_mask(clk->reg_src.shift, clk->reg_src.size);
132 u32 clksrc = 0; 132 u32 clksrc;
133 133
134 if (clk->reg_src.reg) 134 if (!clk->reg_src.reg) {
135 clksrc = __raw_readl(clk->reg_src.reg); 135 if (!clk->clk.parent)
136 printk(KERN_ERR "%s: no parent clock specified\n",
137 clk->clk.name);
138 return;
139 }
136 140
141 clksrc = __raw_readl(clk->reg_src.reg);
137 clksrc &= mask; 142 clksrc &= mask;
138 clksrc >>= clk->reg_src.shift; 143 clksrc >>= clk->reg_src.shift;
139 144