Merge branch 'stable-3.2' into pandora-3.2
[pandora-kernel.git] / arch / arm / mach-omap2 / clkt_clksel.c
index a781cd6..e378fe7 100644 (file)
@@ -97,7 +97,7 @@ static u8 _get_div_and_fieldval(struct clk *src_clk, struct clk *clk,
                                u32 *field_val)
 {
        const struct clksel *clks;
-       const struct clksel_rate *clkr, *max_clkr;
+       const struct clksel_rate *clkr, *max_clkr = NULL;
        u8 max_div = 0;
 
        clks = _get_clksel_by_parent(clk, src_clk);
@@ -460,6 +460,21 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
        return 0;
 }
 
+int omap2_clksel_force_divisor(struct clk *clk, int new_div)
+{
+       u32 field_val;
+
+       field_val = _divisor_to_clksel(clk, new_div);
+       if (field_val == ~0)
+               return -EINVAL;
+
+       _write_clksel_reg(clk, field_val);
+
+       clk->rate = clk->parent->rate / new_div;
+
+       return 0;
+}
+
 /*
  * Clksel parent setting function - not passed in struct clk function
  * pointer - instead, the OMAP clock code currently assumes that any