vserver 1.9.3
[linux-2.6.git] / arch / arm / mach-integrator / clock.c
index 6af3715..5620059 100644 (file)
@@ -76,7 +76,10 @@ EXPORT_SYMBOL(clk_get_rate);
 
 long clk_round_rate(struct clk *clk, unsigned long rate)
 {
-       return rate;
+       struct icst525_vco vco;
+
+       vco = icst525_khz_to_vco(clk->params, rate / 1000);
+       return icst525_khz(clk->params, vco) * 1000;
 }
 EXPORT_SYMBOL(clk_round_rate);
 
@@ -86,8 +89,8 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
        if (clk->setvco) {
                struct icst525_vco vco;
 
-               vco = icst525_khz_to_vco(clk->params, rate);
-               clk->rate = icst525_khz(clk->params, vco);
+               vco = icst525_khz_to_vco(clk->params, rate / 1000);
+               clk->rate = icst525_khz(clk->params, vco) * 1000;
 
                printk("Clock %s: setting VCO reg params: S=%d R=%d V=%d\n",
                        clk->name, vco.s, vco.r, vco.v);