Stop using clk->src_offset in omap2_clk_set_parent(); use what we get from the clksel code instead. Signed-off-by: Paul Walmsley --- arch/arm/mach-omap2/clock.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) Index: linux-omap/arch/arm/mach-omap2/clock.c Index: linux-omap/arch/arm/mach-omap2/clock.c =================================================================== --- linux-omap.orig/arch/arm/mach-omap2/clock.c +++ linux-omap/arch/arm/mach-omap2/clock.c @@ -884,7 +884,7 @@ static int omap2_clk_set_parent(struct c /* Set new source value (previous dividers if any in effect) */ reg_val = __raw_readl(src_addr) & ~field_mask; - reg_val |= (field_val << clk->src_offset); + reg_val |= (field_val << convert_mask_to_shift(field_mask)); __raw_writel(reg_val, src_addr); wmb(); @@ -905,6 +905,9 @@ static int omap2_clk_set_parent(struct c if (parent_div > 0) clk->rate /= parent_div; + pr_debug("clock: set parent of %s to %s (new rate %ld)\n", + clk->name, clk->parent->name, clk->rate); + if (unlikely(clk->flags & RATE_PROPAGATES)) propagate_rate(clk); --