Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e711ec6 authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Tony Lindgren
Browse files

ARM: OMAP: Correct two bugs in arch/arm/mach-omap2/clock.c



omap2_clk_set_rate: dif_off must use clk->rate_offset, not clk->src_off.
omap2_get_src_field: for the case CM_SYSCLKOUT_SEL1, val must be 2 for
96MHz and 3 for 54MHz.

Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: default avatarJuha Yrjola <juha.yrjola@solidboot.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent ed7eb9d9
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -660,7 +660,7 @@ static int omap2_clk_set_rate(struct clk *clk, unsigned long rate)

		/* Isolate control register */
		div_sel = (SRC_RATE_SEL_MASK & clk->flags);
		div_off = clk->src_offset;
		div_off = clk->rate_offset;

		validrate = omap2_clksel_round_rate(clk, rate, &new_div);
		if (validrate != rate)
@@ -672,14 +672,23 @@ static int omap2_clk_set_rate(struct clk *clk, unsigned long rate)

		if (clk->flags & CM_SYSCLKOUT_SEL1) {
			switch (new_div) {
			case 16: field_val = 4; break;
			case 8:  field_val = 3; break;
			case 4:  field_val = 2; break;
			case 2:  field_val = 1; break;
			case 1:  field_val = 0; break;
			}
			case 16:
				field_val = 4;
				break;
			case 8:
				field_val = 3;
				break;
			case 4:
				field_val = 2;
				break;
			case 2:
				field_val = 1;
				break;
			case 1:
				field_val = 0;
				break;
			}
		else
		} else
			field_val = new_div;

		reg = (void __iomem *)div_sel;
@@ -784,9 +793,9 @@ static u32 omap2_get_src_field(u32 *type_to_addr, u32 reg_offset,
			val = 0;
		if (src_clk == &sys_ck)
			val = 1;
		if (src_clk == &func_54m_ck)
			val = 2;
		if (src_clk == &func_96m_ck)
			val = 2;
		if (src_clk == &func_54m_ck)
			val = 3;
		break;
	}