]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/mach-w90x900/clock.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[mv-sheeva.git] / arch / arm / mach-w90x900 / clock.c
index f420613cd395ddd6553f4ae4ab006e4570943aa5..2c371ff22e517ad17776902f5af31e8e198d1a66 100644 (file)
@@ -25,6 +25,8 @@
 
 #include "clock.h"
 
+#define SUBCLK 0x24
+
 static DEFINE_SPINLOCK(clocks_lock);
 
 int clk_enable(struct clk *clk)
@@ -53,7 +55,13 @@ void clk_disable(struct clk *clk)
 }
 EXPORT_SYMBOL(clk_disable);
 
-void w90x900_clk_enable(struct clk *clk, int enable)
+unsigned long clk_get_rate(struct clk *clk)
+{
+       return 15000000;
+}
+EXPORT_SYMBOL(clk_get_rate);
+
+void nuc900_clk_enable(struct clk *clk, int enable)
 {
        unsigned int clocks = clk->cken;
        unsigned long clken;
@@ -68,10 +76,17 @@ void w90x900_clk_enable(struct clk *clk, int enable)
        __raw_writel(clken, W90X900_VA_CLKPWR);
 }
 
-void clks_register(struct clk_lookup *clks, size_t num)
+void nuc900_subclk_enable(struct clk *clk, int enable)
 {
-       int i;
+       unsigned int clocks = clk->cken;
+       unsigned long clken;
+
+       clken = __raw_readl(W90X900_VA_CLKPWR + SUBCLK);
+
+       if (enable)
+               clken |= clocks;
+       else
+               clken &= ~clocks;
 
-       for (i = 0; i < num; i++)
-               clkdev_add(&clks[i]);
+       __raw_writel(clken, W90X900_VA_CLKPWR + SUBCLK);
 }