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
next prev 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.