Sfoglia il codice sorgente

ARM: S3C2443: Use common clock gate code

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>
Ben Dooks 15 anni fa
parent
commit
4ec07bba69
1 ha cambiato i file con 13 aggiunte e 35 eliminazioni
  1. 13 35
      arch/arm/mach-s3c2443/clock.c

+ 13 - 35
arch/arm/mach-s3c2443/clock.c

@@ -53,55 +53,33 @@
  * 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,