summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-02-20 18:14:52 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2009-02-20 18:28:38 +0100
commit309a75baafc307c77aab2ebe6055ee89a963c626 (patch)
tree8b8aad1f7534c0c72b1ade6c58584f2fd0cc4288
parenta77e2a830b4c70f23dcaa3da6e74b0b9b2d184bc (diff)
downloadbarebox-309a75baafc307c77aab2ebe6055ee89a963c626.tar.gz
barebox-309a75baafc307c77aab2ebe6055ee89a963c626.tar.xz
i.MX use fecclk for fec and gtpclk for gpt
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-imx/clocksource.c2
-rw-r--r--arch/arm/mach-imx/speed-imx1.c7
-rw-r--r--arch/arm/mach-imx/speed-imx27.c10
-rw-r--r--arch/arm/mach-imx/speed-imx31.c5
-rw-r--r--arch/arm/mach-imx/speed-imx35.c8
-rw-r--r--drivers/net/fec_imx27.c2
-rw-r--r--include/asm-arm/arch-imx/clock.h3
7 files changed, 31 insertions, 6 deletions
diff --git a/arch/arm/mach-imx/clocksource.c b/arch/arm/mach-imx/clocksource.c
index 7678185356..a0fd61e39e 100644
--- a/arch/arm/mach-imx/clocksource.c
+++ b/arch/arm/mach-imx/clocksource.c
@@ -67,7 +67,7 @@ static int clocksource_init (void)
GPT(GPT_TCTL) &= ~TCTL_TEN;
GPT(GPT_TCTL) |= TCTL_TEN; /* Enable timer */
- cs.mult = clocksource_hz2mult(imx_get_perclk1(), cs.shift);
+ cs.mult = clocksource_hz2mult(imx_get_gptclk(), cs.shift);
init_clock(&cs);
diff --git a/arch/arm/mach-imx/speed-imx1.c b/arch/arm/mach-imx/speed-imx1.c
index 22f953b8a9..5d3352a8a7 100644
--- a/arch/arm/mach-imx/speed-imx1.c
+++ b/arch/arm/mach-imx/speed-imx1.c
@@ -71,7 +71,12 @@ ulong imx_get_perclk3(void)
ulong imx_get_uartclk(void)
{
- return imx_get_perclk1(void);
+ return imx_get_perclk1();
+}
+
+ulong imx_get_gptclk(void)
+{
+ return imx_get_perclk1() / (((PCDR) & 0xf)+1);
}
#if 0
diff --git a/arch/arm/mach-imx/speed-imx27.c b/arch/arm/mach-imx/speed-imx27.c
index 94d00e5ceb..5a2cdf1707 100644
--- a/arch/arm/mach-imx/speed-imx27.c
+++ b/arch/arm/mach-imx/speed-imx27.c
@@ -90,6 +90,11 @@ ulong imx_get_ipgclk(void)
return clk >> 1;
}
+ulong imx_get_fecclk(void)
+{
+ return imx_get_ipgclk();
+}
+
ulong imx_get_spllclk(void)
{
ulong cscr = CSCR;
@@ -139,6 +144,11 @@ ulong imx_get_uartclk(void)
return imx_get_perclk1();
}
+ulong imx_get_gptclk(void)
+{
+ return imx_decode_perclk((PCDR1 & 0x3f) + 1);
+}
+
int imx_dump_clocks(void)
{
uint32_t cid = CID;
diff --git a/arch/arm/mach-imx/speed-imx31.c b/arch/arm/mach-imx/speed-imx31.c
index c3fef00cbc..bde88f2f5c 100644
--- a/arch/arm/mach-imx/speed-imx31.c
+++ b/arch/arm/mach-imx/speed-imx31.c
@@ -66,4 +66,9 @@ ulong imx_get_uartclk(void)
return imx_get_perclk1();
}
+ulong imx_get_gptclk(void)
+{
+ return imx_get_perclk1();
+}
+
late_initcall(imx_dump_clocks);
diff --git a/arch/arm/mach-imx/speed-imx35.c b/arch/arm/mach-imx/speed-imx35.c
index f11c6cfcfd..f9a28e698c 100644
--- a/arch/arm/mach-imx/speed-imx35.c
+++ b/arch/arm/mach-imx/speed-imx35.c
@@ -115,7 +115,7 @@ static unsigned long get_3_3_div(unsigned long in)
return (((in >> 3) & 0x7) + 1) * ((in & 0x7) + 1);
}
-unsigned long imx_get_perclk1(void)
+unsigned long imx_get_gptclk(void)
{
ulong pdr0 = readl(IMX_CCM_BASE + CCM_PDR0);
ulong pdr4 = readl(IMX_CCM_BASE + CCM_PDR4);
@@ -146,13 +146,17 @@ unsigned long imx_get_uartclk(void)
else
return imx_get_ppllclk() / div;
}
+ulong imx_get_fecclk(void)
+{
+ return imx_get_ipgclk();
+}
static int imx_dump_clocks(void)
{
printf("mpll: %10d Hz\n", imx_get_mpllclk());
printf("ppll: %10d Hz\n", imx_get_ppllclk());
printf("arm: %10d Hz\n", imx_get_armclk());
- printf("perclk1: %10d Hz\n", imx_get_perclk1());
+ printf("gpt: %10d Hz\n", imx_get_gptclk());
printf("ahb: %10d Hz\n", imx_get_ahbclk());
printf("ipg: %10d Hz\n", imx_get_ipgclk());
printf("uart: %10d Hz\n", imx_get_uartclk());
diff --git a/drivers/net/fec_imx27.c b/drivers/net/fec_imx27.c
index aa01855d06..b845bfdd41 100644
--- a/drivers/net/fec_imx27.c
+++ b/drivers/net/fec_imx27.c
@@ -282,7 +282,7 @@ static int fec_init(struct eth_device *dev)
* Set MII_SPEED = (1/(mii_speed * 2)) * System Clock
* and do not drop the Preamble.
*/
- writel(((imx_get_ipgclk() >> 20) / 5) << 1, &fec->eth->mii_speed); /* No MII for 7-wire mode */
+ writel(((imx_get_fecclk() >> 20) / 5) << 1, &fec->eth->mii_speed); /* No MII for 7-wire mode */
}
/*
* Set Opcode/Pause Duration Register
diff --git a/include/asm-arm/arch-imx/clock.h b/include/asm-arm/arch-imx/clock.h
index 4a565d7c6f..71085201e7 100644
--- a/include/asm-arm/arch-imx/clock.h
+++ b/include/asm-arm/arch-imx/clock.h
@@ -23,7 +23,8 @@ ulong imx_get_perclk1(void);
ulong imx_get_perclk2(void);
ulong imx_get_perclk3(void);
ulong imx_get_ahbclk(void);
-ulong imx_get_ipgclk(void);
+ulong imx_get_fecclk(void);
+ulong imx_get_gptclk(void);
ulong imx_get_uartclk(void);
#endif /* __ASM_ARCH_CLOCK_H */