commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=6f80a2c4d0feac0d349462d1789488c84c1939a7
branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk

Otherwise, the following up change to CGU_DIV doesn't take effect.

Signed-off-by: Sonic Zhang <[email protected]>
---
 arch/blackfin/include/asm/mem_init.h    |    3 +++
 arch/blackfin/mach-common/clocks-init.c |   17 ++++++++++-------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/arch/blackfin/include/asm/mem_init.h b/arch/blackfin/include/asm/mem_init.h
index 04ca9db..cbbbda4 100644
--- a/arch/blackfin/include/asm/mem_init.h
+++ b/arch/blackfin/include/asm/mem_init.h
@@ -325,6 +325,9 @@
 #define PLOCK			0x4
 #define CLKSALGN		0x8
 
+/* CGU Control bits */
+#define VCO_MULT_MASK		0x7F00
+
 #define CGU_CTL_VAL ((CONFIG_VCO_MULT << 8) | CLKIN_HALF)
 #define CGU_DIV_VAL \
 	((CONFIG_CCLK_DIV   << CSEL_OFFSET)   | \
diff --git a/arch/blackfin/mach-common/clocks-init.c b/arch/blackfin/mach-common/clocks-init.c
index e760782..18e2d15 100644
--- a/arch/blackfin/mach-common/clocks-init.c
+++ b/arch/blackfin/mach-common/clocks-init.c
@@ -39,17 +39,20 @@ void init_clocks(void)
 			continue;
 	}
 
-	bfin_write32(CGU0_DIV, CGU_DIV_VAL);
-	bfin_write32(CGU0_CTL, CGU_CTL_VAL);
-	while ((bfin_read32(CGU0_STAT) & (CLKSALGN | PLLBP)) ||
-		!(bfin_read32(CGU0_STAT) & PLOCK))
-		continue;
+	/* Don't set the same value of MSEL and DF to CGU_CTL */
+	if ((bfin_read32(CGU0_CTL) & (VCO_MULT_MASK | CLKIN_HALF))
+		!= CGU_CTL_VAL) {
+		bfin_write32(CGU0_DIV, CGU_DIV_VAL);
+		bfin_write32(CGU0_CTL, CGU_CTL_VAL);
+		while ((bfin_read32(CGU0_STAT) & (CLKSALGN | PLLBP)) ||
+			!(bfin_read32(CGU0_STAT) & PLOCK))
+			continue;
+	}
 
-	bfin_write32(CGU0_DIV, CGU_DIV_VAL | UPDT);
+	bfin_write32(CGU0_DIV, bfin_read32(CGU0_DIV) | UPDT);
 	while (bfin_read32(CGU0_STAT) & CLKSALGN)
 		continue;
 
-
 	if (bfin_read_DMC0_STAT() & MEMINITDONE) {
 		bfin_write_DMC0_CTL(bfin_read_DMC0_CTL() & ~SRREQ);
 		do_sync();
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to