linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: galak@kernel.crashing.org
Cc: linuxppc-dev@ozlabs.org
Subject: [PATCH 21/28] cpm2: Add SCCs to cpm2_clk_setup(), and cpm2_smc_clk_setup().
Date: Mon, 17 Sep 2007 11:58:08 -0500	[thread overview]
Message-ID: <20070917165808.GU6563@loki.buserror.net> (raw)
In-Reply-To: <20070917165643.GA6545@loki.buserror.net>

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/sysdev/cpm2_common.c |  100 +++++++++++++++++++++++++++++++++++--
 include/asm-powerpc/cpm2.h        |    5 ++-
 2 files changed, 99 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/sysdev/cpm2_common.c b/arch/powerpc/sysdev/cpm2_common.c
index b4d8bd2..9f6ef65 100644
--- a/arch/powerpc/sysdev/cpm2_common.c
+++ b/arch/powerpc/sysdev/cpm2_common.c
@@ -140,7 +140,8 @@ int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode)
 	cpmux_t __iomem *im_cpmux;
 	u32 __iomem *reg;
 	u32 mask = 7;
-	u8 clk_map [24][3] = {
+
+	u8 clk_map[][3] = {
 		{CPM_CLK_FCC1, CPM_BRG5, 0},
 		{CPM_CLK_FCC1, CPM_BRG6, 1},
 		{CPM_CLK_FCC1, CPM_BRG7, 2},
@@ -164,8 +165,40 @@ int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode)
 		{CPM_CLK_FCC3, CPM_CLK13, 4},
 		{CPM_CLK_FCC3, CPM_CLK14, 5},
 		{CPM_CLK_FCC3, CPM_CLK15, 6},
-		{CPM_CLK_FCC3, CPM_CLK16, 7}
-		};
+		{CPM_CLK_FCC3, CPM_CLK16, 7},
+		{CPM_CLK_SCC1, CPM_BRG1, 0},
+		{CPM_CLK_SCC1, CPM_BRG2, 1},
+		{CPM_CLK_SCC1, CPM_BRG3, 2},
+		{CPM_CLK_SCC1, CPM_BRG4, 3},
+		{CPM_CLK_SCC1, CPM_CLK11, 4},
+		{CPM_CLK_SCC1, CPM_CLK12, 5},
+		{CPM_CLK_SCC1, CPM_CLK3, 6},
+		{CPM_CLK_SCC1, CPM_CLK4, 7},
+		{CPM_CLK_SCC2, CPM_BRG1, 0},
+		{CPM_CLK_SCC2, CPM_BRG2, 1},
+		{CPM_CLK_SCC2, CPM_BRG3, 2},
+		{CPM_CLK_SCC2, CPM_BRG4, 3},
+		{CPM_CLK_SCC2, CPM_CLK11, 4},
+		{CPM_CLK_SCC2, CPM_CLK12, 5},
+		{CPM_CLK_SCC2, CPM_CLK3, 6},
+		{CPM_CLK_SCC2, CPM_CLK4, 7},
+		{CPM_CLK_SCC3, CPM_BRG1, 0},
+		{CPM_CLK_SCC3, CPM_BRG2, 1},
+		{CPM_CLK_SCC3, CPM_BRG3, 2},
+		{CPM_CLK_SCC3, CPM_BRG4, 3},
+		{CPM_CLK_SCC3, CPM_CLK5, 4},
+		{CPM_CLK_SCC3, CPM_CLK6, 5},
+		{CPM_CLK_SCC3, CPM_CLK7, 6},
+		{CPM_CLK_SCC3, CPM_CLK8, 7},
+		{CPM_CLK_SCC4, CPM_BRG1, 0},
+		{CPM_CLK_SCC4, CPM_BRG2, 1},
+		{CPM_CLK_SCC4, CPM_BRG3, 2},
+		{CPM_CLK_SCC4, CPM_BRG4, 3},
+		{CPM_CLK_SCC4, CPM_CLK5, 4},
+		{CPM_CLK_SCC4, CPM_CLK6, 5},
+		{CPM_CLK_SCC4, CPM_CLK7, 6},
+		{CPM_CLK_SCC4, CPM_CLK8, 7},
+	};
 
 	im_cpmux = cpm2_map(im_cpmux);
 
@@ -205,23 +238,80 @@ int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode)
 	if (mode == CPM_CLK_RX)
 		shift += 3;
 
-	for (i=0; i<24; i++) {
+	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];
 			break;
 		}
 	}
-	if (i == sizeof(clk_map)/3)
+	if (i == ARRAY_SIZE(clk_map))
 	    ret = -EINVAL;
 
 	bits <<= shift;
 	mask <<= shift;
+
 	out_be32(reg, (in_be32(reg) & ~mask) | bits);
 
 	cpm2_unmap(im_cpmux);
 	return ret;
 }
 
+int cpm2_smc_clk_setup(enum cpm_clk_target target, int clock)
+{
+	int ret = 0;
+	int shift;
+	int i, bits = 0;
+	cpmux_t __iomem *im_cpmux;
+	u8 __iomem *reg;
+	u8 mask = 3;
+
+	u8 clk_map[][3] = {
+		{CPM_CLK_SMC1, CPM_BRG1, 0},
+		{CPM_CLK_SMC1, CPM_BRG7, 1},
+		{CPM_CLK_SMC1, CPM_CLK7, 2},
+		{CPM_CLK_SMC1, CPM_CLK9, 3},
+		{CPM_CLK_SMC2, CPM_BRG2, 0},
+		{CPM_CLK_SMC2, CPM_BRG8, 1},
+		{CPM_CLK_SMC2, CPM_CLK4, 2},
+		{CPM_CLK_SMC2, CPM_CLK15, 3},
+	};
+
+	im_cpmux = cpm2_map(im_cpmux);
+
+	switch (target) {
+	case CPM_CLK_SMC1:
+		reg = &im_cpmux->cmx_smr;
+		mask = 3;
+		shift = 4;
+		break;
+	case CPM_CLK_SMC2:
+		reg = &im_cpmux->cmx_smr;
+		mask = 3;
+		shift = 0;
+		break;
+	default:
+		printk(KERN_ERR "cpm2_smc_clock_setup: invalid clock target\n");
+		return -EINVAL;
+	}
+
+	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];
+			break;
+		}
+	}
+	if (i == ARRAY_SIZE(clk_map))
+	    ret = -EINVAL;
+
+	bits <<= shift;
+	mask <<= shift;
+
+	out_8(reg, (in_8(reg) & ~mask) | bits);
+
+	cpm2_unmap(im_cpmux);
+	return ret;
+}
+
 /*
  * dpalloc / dpfree bits.
  */
diff --git a/include/asm-powerpc/cpm2.h b/include/asm-powerpc/cpm2.h
index c036506..41a45db 100644
--- a/include/asm-powerpc/cpm2.h
+++ b/include/asm-powerpc/cpm2.h
@@ -1206,7 +1206,9 @@ enum cpm_clk_target {
 	CPM_CLK_SCC4,
 	CPM_CLK_FCC1,
 	CPM_CLK_FCC2,
-	CPM_CLK_FCC3
+	CPM_CLK_FCC3,
+	CPM_CLK_SMC1,
+	CPM_CLK_SMC2,
 };
 
 enum cpm_clk {
@@ -1243,6 +1245,7 @@ enum cpm_clk {
 };
 
 extern int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode);
+extern int cpm2_smc_clk_setup(enum cpm_clk_target target, int clock);
 
 #endif /* __CPM2__ */
 #endif /* __KERNEL__ */
-- 
1.5.3.1

  parent reply	other threads:[~2007-09-17 16:58 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-17 16:56 [PATCH 00/28] 8xx/82xx patches Scott Wood
2007-09-17 16:57 ` [PATCH 01/28] CPM: Change from fsl,brg-frequency to brg/clock-frequency Scott Wood
2007-09-18  6:11   ` [PATCH 01/28] CPM: Change from fsl, brg-frequency " David Gibson
2007-09-18 14:21     ` Scott Wood
2007-09-18 23:48       ` David Gibson
2007-09-17 16:57 ` [PATCH 02/28] Introduce new CPM device bindings Scott Wood
2007-09-18  6:13   ` David Gibson
2007-09-17 16:57 ` [PATCH 03/28] Document local bus nodes in the device tree Scott Wood
2007-09-18 15:03   ` Kumar Gala
2007-09-17 16:57 ` [PATCH 04/28] Add early debug console for CPM serial ports Scott Wood
2007-09-19  3:10   ` David Gibson
2007-09-17 16:57 ` [PATCH 05/28] bootwrapper: Support all-in-one PCI nodes in cuboot-pq2 Scott Wood
2007-09-19  3:11   ` David Gibson
2007-09-17 16:57 ` [PATCH 06/28] bootwrapper: Add PlanetCore firmware support Scott Wood
2007-09-19  3:15   ` David Gibson
2007-09-17 16:57 ` [PATCH 07/28] bootwrapper: Add fsl_get_immr() and 8xx/pq2 clock functions Scott Wood
2007-09-19  3:16   ` David Gibson
2007-09-17 16:57 ` [PATCH 08/28] bootwrapper: Use fsl_get_immr() in cuboot-pq2.c Scott Wood
2007-09-19  3:16   ` David Gibson
2007-09-17 16:57 ` [PATCH 09/28] cpm_uart: Be an of_platform device when CONFIG_PPC_CPM_NEW_BINDING is set Scott Wood
2007-09-18  4:19   ` Stephen Rothwell
2007-09-17 16:57 ` [PATCH 10/28] cpm_uart: sparse fixes Scott Wood
2007-09-17 16:57 ` [PATCH 11/28] cpm_uart: Issue STOP_TX command before initializing console Scott Wood
2007-09-17 16:57 ` [PATCH 12/28] 8xx: Fix CONFIG_PIN_TLB Scott Wood
2007-09-17 16:57 ` [PATCH 13/28] 8xx: Infrastructure code cleanup Scott Wood
2007-09-19  4:25   ` David Gibson
2007-09-19  5:28     ` Scott Wood
2007-09-17 16:57 ` [PATCH 14/28] 8xx: Add pin and clock setting functions Scott Wood
2007-09-17 16:57 ` [PATCH 15/28] 8xx: Work around CPU15 erratum Scott Wood
2007-09-17 16:57 ` [PATCH 16/28] 8xx: Don't call non-existent Soft_emulate_8xx from SoftwareEmulation Scott Wood
2007-09-18 15:08   ` Kumar Gala
2007-09-18 15:11     ` Scott Wood
2007-09-18 15:19       ` Kumar Gala
2007-09-18 15:23         ` Scott Wood
2007-09-18 16:21           ` Kumar Gala
2007-09-17 16:58 ` [PATCH 17/28] 8xx: Set initial memory limit Scott Wood
2007-09-17 16:58 ` [PATCH 18/28] 8xx: mpc885ads cleanup Scott Wood
2007-09-18 13:21   ` Stephen Rothwell
2007-09-17 16:58 ` [PATCH 19/28] 8xx: Embedded Planet EP88xC support Scott Wood
2007-09-17 16:58 ` [PATCH 20/28] cpm2: Infrastructure code cleanup Scott Wood
2007-09-17 16:58 ` Scott Wood [this message]
2007-09-17 16:58 ` [PATCH 22/28] cpm2: Add cpm2_set_pin() Scott Wood
2007-09-17 16:58 ` [PATCH 23/28] mpc82xx: Define CPU_FTR_NEED_COHERENT Scott Wood
2007-09-18 14:34   ` Rune Torgersen
2007-09-18 14:55     ` Scott Wood
2007-09-17 16:58 ` [PATCH 24/28] mpc82xx: Remove a bunch of cruft that duplicates generic functionality Scott Wood
2007-09-18  6:48   ` David Gibson
2007-09-17 16:58 ` [PATCH 25/28] mpc82xx: Rename mpc82xx_ads to mpc8272_ads Scott Wood
2007-09-17 16:58 ` [PATCH 26/28] mpc8272ads: Change references from 82xx_ADS to 8272_ADS Scott Wood
2007-09-17 16:58 ` [PATCH 27/28] mpc82xx: Update mpc8272ads, and factor out PCI and reset Scott Wood
2007-09-17 16:58 ` [PATCH 28/28] mpc82xx: Add pq2fads board support Scott Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070917165808.GU6563@loki.buserror.net \
    --to=scottwood@freescale.com \
    --cc=galak@kernel.crashing.org \
    --cc=linuxppc-dev@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).