diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-02-20 18:14:52 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-02-20 18:28:38 +0100 |
commit | 309a75baafc307c77aab2ebe6055ee89a963c626 (patch) | |
tree | 8b8aad1f7534c0c72b1ade6c58584f2fd0cc4288 | |
parent | a77e2a830b4c70f23dcaa3da6e74b0b9b2d184bc (diff) | |
download | barebox-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.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/speed-imx1.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-imx/speed-imx27.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-imx/speed-imx31.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-imx/speed-imx35.c | 8 | ||||
-rw-r--r-- | drivers/net/fec_imx27.c | 2 | ||||
-rw-r--r-- | include/asm-arm/arch-imx/clock.h | 3 |
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 */ |