aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
diff options
context:
space:
mode:
authorMagnus Damm <damm@igel.co.jp>2009-06-10 11:31:16 +0000
committerPaul Mundt <lethal@linux-sh.org>2009-06-11 09:14:28 +0300
commitb621370a3505f8bd42acc41736cae47d5ce8bd06 (patch)
treecca005efbb85ba3f77bf5e34f828d22ae67a1439 /arch/sh/kernel/cpu/sh4a/clock-sh7722.c
parentsh: sh7723 clock framework rewrite V2 (diff)
downloadlinux-dev-b621370a3505f8bd42acc41736cae47d5ce8bd06.tar.xz
linux-dev-b621370a3505f8bd42acc41736cae47d5ce8bd06.zip
sh: sh7724 clock framework rewrite V3
This patch contains V3 of the sh7724 clock framework rewrite. The new code makes use of the recently merged div4, div6 and mstp32 helper code. Both extal and fll are supported as input clocks to the pll. The div6 clocks are fed through a divide-by-3 block. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/sh4a/clock-sh7722.c')
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-sh7722.c85
1 files changed, 5 insertions, 80 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
index ccefd7dde78c..5e08504da3a6 100644
--- a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
@@ -130,11 +130,7 @@ static void adjust_clocks(int originate, int *l, unsigned long v[],
* is quite simple..
*/
-#if defined(CONFIG_CPU_SUBTYPE_SH7724)
-#define STCPLL(frqcr) ((((frqcr >> 24) & 0x3f) + 1) * 2)
-#else
#define STCPLL(frqcr) (((frqcr >> 24) & 0x1f) + 1)
-#endif
/*
* Instead of having two separate multipliers/divisors set, like this:
@@ -145,11 +141,7 @@ static void adjust_clocks(int originate, int *l, unsigned long v[],
* I created the divisors2 array, which is used to calculate rate like
* rate = parent * 2 / divisors2[ divisor ];
*/
-#if defined(CONFIG_CPU_SUBTYPE_SH7724)
-static int divisors2[] = { 4, 1, 8, 12, 16, 24, 32, 1, 48, 64, 72, 96, 1, 144 };
-#else
static int divisors2[] = { 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 40 };
-#endif
static unsigned long master_clk_recalc(struct clk *clk)
{
@@ -171,17 +163,10 @@ static unsigned long module_clk_recalc(struct clk *clk)
return clk->parent->rate / STCPLL(frqcr);
}
-#if defined(CONFIG_CPU_SUBTYPE_SH7724)
-#define MASTERDIVS { 12, 16, 24, 30, 32, 36, 48 }
-#define STCMASK 0x3f
-#define DIVCALC(div) (div/2-1)
-#define FRQCRKICK 0x80000000
-#else
#define MASTERDIVS { 2, 3, 4, 6, 8, 16 }
#define STCMASK 0x1f
#define DIVCALC(div) (div-1)
#define FRQCRKICK 0x00000000
-#endif
static int master_clk_setrate(struct clk *clk, unsigned long rate, int id)
{
@@ -557,8 +542,7 @@ static struct clk sh7722_r_clock = {
.rate = 32768,
};
-#if !defined(CONFIG_CPU_SUBTYPE_SH7343) &&\
- !defined(CONFIG_CPU_SUBTYPE_SH7724)
+#if !defined(CONFIG_CPU_SUBTYPE_SH7343)
/*
* these three clocks - SIU A, SIU B, IrDA - share the same clk_ops
* methods of clk_ops determine which register they should access by
@@ -575,10 +559,9 @@ static struct clk sh7722_siu_b_clock = {
.arch_flags = SCLKBCR,
.ops = &sh7722_siu_clk_ops,
};
-#endif /* CONFIG_CPU_SUBTYPE_SH7343, SH7724 */
+#endif /* CONFIG_CPU_SUBTYPE_SH7343 */
-#if defined(CONFIG_CPU_SUBTYPE_SH7722) ||\
- defined(CONFIG_CPU_SUBTYPE_SH7724)
+#if defined(CONFIG_CPU_SUBTYPE_SH7722)
static struct clk sh7722_irda_clock = {
.name = "irda_clk",
.arch_flags = IrDACLKCR,
@@ -676,61 +659,6 @@ static struct clk sh7722_mstpcr_clocks[] = {
MSTPCR("vpu0", "bus_clk", 2, 1, CLK_ENABLE_ON_INIT),
MSTPCR("lcdc0", "bus_clk", 2, 0, 0),
#endif
-#if defined(CONFIG_CPU_SUBTYPE_SH7724)
- /* See Datasheet : Overview -> Block Diagram */
- MSTPCR("tlb0", "cpu_clk", 0, 31, 0),
- MSTPCR("ic0", "cpu_clk", 0, 30, 0),
- MSTPCR("oc0", "cpu_clk", 0, 29, 0),
- MSTPCR("rs0", "bus_clk", 0, 28, 0),
- MSTPCR("ilmem0", "cpu_clk", 0, 27, 0),
- MSTPCR("l2c0", "sh_clk", 0, 26, 0),
- MSTPCR("fpu0", "cpu_clk", 0, 24, 0),
- MSTPCR("intc0", "peripheral_clk", 0, 22, 0),
- MSTPCR("dmac0", "bus_clk", 0, 21, 0),
- MSTPCR("sh0", "sh_clk", 0, 20, 0),
- MSTPCR("hudi0", "peripheral_clk", 0, 19, 0),
- MSTPCR("ubc0", "cpu_clk", 0, 17, 0),
- MSTPCR("tmu0", "peripheral_clk", 0, 15, 0),
- MSTPCR("cmt0", "r_clk", 0, 14, 0),
- MSTPCR("rwdt0", "r_clk", 0, 13, 0),
- MSTPCR("dmac1", "bus_clk", 0, 12, 0),
- MSTPCR("tmu1", "peripheral_clk", 0, 10, 0),
- MSTPCR("scif0", "peripheral_clk", 0, 9, 0),
- MSTPCR("scif1", "peripheral_clk", 0, 8, 0),
- MSTPCR("scif2", "peripheral_clk", 0, 7, 0),
- MSTPCR("scif3", "bus_clk", 0, 6, 0),
- MSTPCR("scif4", "bus_clk", 0, 5, 0),
- MSTPCR("scif5", "bus_clk", 0, 4, 0),
- MSTPCR("msiof0", "bus_clk", 0, 2, 0),
- MSTPCR("msiof1", "bus_clk", 0, 1, 0),
- MSTPCR("keysc0", "r_clk", 1, 12, 0),
- MSTPCR("rtc0", "r_clk", 1, 11, 0),
- MSTPCR("i2c0", "peripheral_clk", 1, 9, 0),
- MSTPCR("i2c1", "peripheral_clk", 1, 8, 0),
- MSTPCR("mmc0", "bus_clk", 2, 29, 0),
- MSTPCR("eth0", "bus_clk", 2, 28, 0),
- MSTPCR("atapi0", "bus_clk", 2, 26, 0),
- MSTPCR("tpu0", "bus_clk", 2, 25, 0),
- MSTPCR("irda0", "peripheral_clk", 2, 24, 0),
- MSTPCR("tsif0", "bus_clk", 2, 22, 0),
- MSTPCR("usb1", "bus_clk", 2, 21, 0),
- MSTPCR("usb0", "bus_clk", 2, 20, 0),
- MSTPCR("2dg0", "bus_clk", 2, 19, 0),
- MSTPCR("sdhi0", "bus_clk", 2, 18, 0),
- MSTPCR("sdhi1", "bus_clk", 2, 17, 0),
- MSTPCR("veu1", "bus_clk", 2, 15, CLK_ENABLE_ON_INIT),
- MSTPCR("ceu1", "bus_clk", 2, 13, 0),
- MSTPCR("beu1", "bus_clk", 2, 12, 0),
- MSTPCR("2ddmac0", "sh_clk", 2, 10, 0),
- MSTPCR("spu0", "bus_clk", 2, 9, 0),
- MSTPCR("jpu0", "bus_clk", 2, 6, 0),
- MSTPCR("vou0", "bus_clk", 2, 5, 0),
- MSTPCR("beu0", "bus_clk", 2, 4, 0),
- MSTPCR("ceu0", "bus_clk", 2, 3, 0),
- MSTPCR("veu0", "bus_clk", 2, 2, CLK_ENABLE_ON_INIT),
- MSTPCR("vpu0", "bus_clk", 2, 1, CLK_ENABLE_ON_INIT),
- MSTPCR("lcdc0", "bus_clk", 2, 0, 0),
-#endif
#if defined(CONFIG_CPU_SUBTYPE_SH7343)
MSTPCR("uram0", "umem_clk", 0, 28, CLK_ENABLE_ON_INIT),
MSTPCR("xymem0", "bus_clk", 0, 26, CLK_ENABLE_ON_INIT),
@@ -802,14 +730,11 @@ static struct clk *sh7722_clocks[] = {
&sh7722_sh_clock,
&sh7722_peripheral_clock,
&sh7722_sdram_clock,
-#if !defined(CONFIG_CPU_SUBTYPE_SH7343) &&\
- !defined(CONFIG_CPU_SUBTYPE_SH7724)
+#if !defined(CONFIG_CPU_SUBTYPE_SH7343)
&sh7722_siu_a_clock,
&sh7722_siu_b_clock,
#endif
-/* 7724 should support FSI clock */
-#if defined(CONFIG_CPU_SUBTYPE_SH7722) || \
- defined(CONFIG_CPU_SUBTYPE_SH7724)
+#if defined(CONFIG_CPU_SUBTYPE_SH7722)
&sh7722_irda_clock,
#endif
&sh7722_video_clock,