diff mbox

[v2] PowerPC/FSL/CPM: Configure clock correctly for SCC

Message ID 1270303903-12961-1-git-send-email-weo@reccoware.de (mailing list archive)
State Accepted, archived
Commit 1cca2d2b99f3d7eea6aa627b96bffc3b0999eca2
Delegated to: Kumar Gala
Headers show

Commit Message

Wolfgang Ocker April 3, 2010, 2:11 p.m. UTC
Some board setup functions call cpm1_clk_setup() or cmp2_clk_setup()
to configure the clock source.

If CPM_CLK_RTX has been used for the parameter mode,
the clock has been configured only for TX but not for RX.

With this patch CPM_CLK_RTX configures the clock for both directions
correctly.

Signed-off-by: Wolfgang Ocker <weo@reccoware.de>
---

v2: Scott Wood encouraged me to include a similar fix for CPM2.

 arch/powerpc/sysdev/cpm1.c |   14 +++++++++++---
 arch/powerpc/sysdev/cpm2.c |   11 ++++++++---
 2 files changed, 19 insertions(+), 6 deletions(-)

Comments

Scott Wood April 5, 2010, 6:05 p.m. UTC | #1
Wolfgang Ocker wrote:
> Some board setup functions call cpm1_clk_setup() or cmp2_clk_setup()
> to configure the clock source.
> 
> If CPM_CLK_RTX has been used for the parameter mode,
> the clock has been configured only for TX but not for RX.
> 
> With this patch CPM_CLK_RTX configures the clock for both directions
> correctly.
> 
> Signed-off-by: Wolfgang Ocker <weo@reccoware.de>
> ---
> 
> v2: Scott Wood encouraged me to include a similar fix for CPM2.
> 
>  arch/powerpc/sysdev/cpm1.c |   14 +++++++++++---
>  arch/powerpc/sysdev/cpm2.c |   11 ++++++++---
>  2 files changed, 19 insertions(+), 6 deletions(-)

Acked-by: Scott Wood <scottwood@freescale.com>

-Scott
Kumar Gala April 20, 2010, 4:13 a.m. UTC | #2
On Apr 3, 2010, at 9:11 AM, Wolfgang Ocker wrote:

> Some board setup functions call cpm1_clk_setup() or cmp2_clk_setup()
> to configure the clock source.
> 
> If CPM_CLK_RTX has been used for the parameter mode,
> the clock has been configured only for TX but not for RX.
> 
> With this patch CPM_CLK_RTX configures the clock for both directions
> correctly.
> 
> Signed-off-by: Wolfgang Ocker <weo@reccoware.de>
> ---
> 
> v2: Scott Wood encouraged me to include a similar fix for CPM2.
> 
> arch/powerpc/sysdev/cpm1.c |   14 +++++++++++---
> arch/powerpc/sysdev/cpm2.c |   11 ++++++++---
> 2 files changed, 19 insertions(+), 6 deletions(-)


applied to merge.

- k
diff mbox

Patch

diff --git a/arch/powerpc/sysdev/cpm1.c b/arch/powerpc/sysdev/cpm1.c
index a4b41db..786e178 100644
--- a/arch/powerpc/sysdev/cpm1.c
+++ b/arch/powerpc/sysdev/cpm1.c
@@ -485,9 +485,6 @@  int cpm1_clk_setup(enum cpm_clk_target target, int clock, int mode)
 		return -EINVAL;
 	}
 
-	if (reg == &mpc8xx_immr->im_cpm.cp_sicr && mode == CPM_CLK_RX)
-		shift += 3;
-
 	for (i = 0; i < ARRAY_SIZE(clk_map); i++) {
 		if (clk_map[i][0] == target && clk_map[i][1] == clock) {
 			bits = clk_map[i][2];
@@ -502,6 +499,17 @@  int cpm1_clk_setup(enum cpm_clk_target target, int clock, int mode)
 
 	bits <<= shift;
 	mask <<= shift;
+
+	if (reg == &mpc8xx_immr->im_cpm.cp_sicr) {
+		if (mode == CPM_CLK_RTX) {
+			bits |= bits << 3;
+			mask |= mask << 3;
+		} else if (mode == CPM_CLK_RX) {
+			bits <<= 3;
+			mask <<= 3;
+		}
+	}
+
 	out_be32(reg, (in_be32(reg) & ~mask) | bits);
 
 	return 0;
diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c
index eb59272..8dc1e24 100644
--- a/arch/powerpc/sysdev/cpm2.c
+++ b/arch/powerpc/sysdev/cpm2.c
@@ -244,9 +244,6 @@  int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode)
 		return -EINVAL;
 	}
 
-	if (mode == CPM_CLK_RX)
-		shift += 3;
-
 	for (i = 0; i < ARRAY_SIZE(clk_map); i++) {
 		if (clk_map[i][0] == target && clk_map[i][1] == clock) {
 			bits = clk_map[i][2];
@@ -259,6 +256,14 @@  int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode)
 	bits <<= shift;
 	mask <<= shift;
 
+	if (mode == CPM_CLK_RTX) {
+		bits |= bits << 3;
+		mask |= mask << 3;
+	} else if (mode == CPM_CLK_RX) {
+		bits <<= 3;
+		mask <<= 3;
+	}
+
 	out_be32(reg, (in_be32(reg) & ~mask) | bits);
 
 	cpm2_unmap(im_cpmux);