]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: S3C2443: Use common clock gate code
authorBen Dooks <ben-linux@fluff.org>
Sat, 30 Jan 2010 06:02:58 +0000 (15:02 +0900)
committerBen Dooks <ben-linux@fluff.org>
Sat, 30 Jan 2010 07:25:01 +0000 (09:25 +0200)
Add common clock gate code for each of the S3C2443 clock gate code. Whether
to move this elsewhere will be decided later.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
arch/arm/mach-s3c2443/clock.c

index 3eb8b935d64c22601c81ed9d89b04370eeecca78..5d061ea0c51378b3cb71e9a75bf808b322648c83 100644 (file)
  * set the correct muxing at initialisation
 */
 
-static int s3c2443_clkcon_enable_h(struct clk *clk, int enable)
+static int s3c2443_gate(void __iomem *reg, struct clk *clk, int enable)
 {
-       unsigned int clocks = clk->ctrlbit;
-       unsigned long clkcon;
-
-       clkcon = __raw_readl(S3C2443_HCLKCON);
+       u32 ctrlbit = clk->ctrlbit;
+       u32 con = __raw_readl(reg);
 
        if (enable)
-               clkcon |= clocks;
+               con |= ctrlbit;
        else
-               clkcon &= ~clocks;
-
-       __raw_writel(clkcon, S3C2443_HCLKCON);
+               con &= ~ctrlbit;
 
+       __raw_writel(con, reg);
        return 0;
 }
 
-static int s3c2443_clkcon_enable_p(struct clk *clk, int enable)
+static int s3c2443_clkcon_enable_h(struct clk *clk, int enable)
 {
-       unsigned int clocks = clk->ctrlbit;
-       unsigned long clkcon;
-
-       clkcon = __raw_readl(S3C2443_PCLKCON);
-
-       if (enable)
-               clkcon |= clocks;
-       else
-               clkcon &= ~clocks;
-
-       __raw_writel(clkcon, S3C2443_PCLKCON);
+       return s3c2443_gate(S3C2443_HCLKCON, clk, enable);
+}
 
-       return 0;
+static int s3c2443_clkcon_enable_p(struct clk *clk, int enable)
+{
+       return s3c2443_gate(S3C2443_PCLKCON, clk, enable);
 }
 
 static int s3c2443_clkcon_enable_s(struct clk *clk, int enable)
 {
-       unsigned int clocks = clk->ctrlbit;
-       unsigned long clkcon;
-
-       clkcon = __raw_readl(S3C2443_SCLKCON);
-
-       if (enable)
-               clkcon |= clocks;
-       else
-               clkcon &= ~clocks;
-
-       __raw_writel(clkcon, S3C2443_SCLKCON);
-
-       return 0;
+       return s3c2443_gate(S3C2443_SCLKCON, clk, enable);
 }
 
 static unsigned long s3c2443_roundrate_clksrc(struct clk *clk,