Merge branch 'for_2.6.35' of git://git.pwsan.com/linux-2.6 into omap-for-linus
[pandora-kernel.git] / arch / arm / mach-realview / clock.c
index 3347c42..a704311 100644 (file)
  */
 #include <linux/module.h>
 #include <linux/kernel.h>
+#include <linux/device.h>
 #include <linux/list.h>
 #include <linux/errno.h>
 #include <linux/err.h>
+#include <linux/string.h>
 #include <linux/clk.h>
 #include <linux/mutex.h>
 
 
 #include "clock.h"
 
-static LIST_HEAD(clocks);
-static DEFINE_MUTEX(clocks_mutex);
-
-struct clk *clk_get(struct device *dev, const char *id)
-{
-       struct clk *p, *clk = ERR_PTR(-ENOENT);
-
-       mutex_lock(&clocks_mutex);
-       list_for_each_entry(p, &clocks, node) {
-               if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
-                       clk = p;
-                       break;
-               }
-       }
-       mutex_unlock(&clocks_mutex);
-
-       return clk;
-}
-EXPORT_SYMBOL(clk_get);
-
-void clk_put(struct clk *clk)
-{
-       module_put(clk->owner);
-}
-EXPORT_SYMBOL(clk_put);
-
 int clk_enable(struct clk *clk)
 {
        return 0;
@@ -65,7 +41,9 @@ EXPORT_SYMBOL(clk_get_rate);
 
 long clk_round_rate(struct clk *clk, unsigned long rate)
 {
-       return rate;
+       struct icst307_vco vco;
+       vco = icst307_khz_to_vco(clk->params, rate / 1000);
+       return icst307_khz(clk->params, vco) * 1000;
 }
 EXPORT_SYMBOL(clk_round_rate);
 
@@ -78,57 +56,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
 
                vco = icst307_khz_to_vco(clk->params, rate / 1000);
                clk->rate = icst307_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);
-
                clk->setvco(clk, vco);
                ret = 0;
        }
        return ret;
 }
 EXPORT_SYMBOL(clk_set_rate);
-
-/*
- * These are fixed clocks.
- */
-static struct clk kmi_clk = {
-       .name   = "KMIREFCLK",
-       .rate   = 24000000,
-};
-
-static struct clk uart_clk = {
-       .name   = "UARTCLK",
-       .rate   = 24000000,
-};
-
-static struct clk mmci_clk = {
-       .name   = "MCLK",
-       .rate   = 24000000,
-};
-
-int clk_register(struct clk *clk)
-{
-       mutex_lock(&clocks_mutex);
-       list_add(&clk->node, &clocks);
-       mutex_unlock(&clocks_mutex);
-       return 0;
-}
-EXPORT_SYMBOL(clk_register);
-
-void clk_unregister(struct clk *clk)
-{
-       mutex_lock(&clocks_mutex);
-       list_del(&clk->node);
-       mutex_unlock(&clocks_mutex);
-}
-EXPORT_SYMBOL(clk_unregister);
-
-static int __init clk_init(void)
-{
-       clk_register(&kmi_clk);
-       clk_register(&uart_clk);
-       clk_register(&mmci_clk);
-       return 0;
-}
-arch_initcall(clk_init);