diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2007-10-09 17:24:25 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2007-10-09 17:24:25 +0200 |
commit | b1613059460b93dbc55adcc9d52895eb3ce721eb (patch) | |
tree | e5db5b57c275f0592aea8ea6867428b8b7835070 /arch/arm/mach-imx | |
parent | 8f29f6481e9073b85361d8395c1e5ba531761e75 (diff) | |
download | barebox-b1613059460b93dbc55adcc9d52895eb3ce721eb.tar.gz barebox-b1613059460b93dbc55adcc9d52895eb3ce721eb.tar.xz |
change imx clock functions so that they have the same name for
i.MX1 and i.MX27
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/speed-imx1.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-imx/speed-imx27.c | 47 |
2 files changed, 47 insertions, 12 deletions
diff --git a/arch/arm/mach-imx/speed-imx1.c b/arch/arm/mach-imx/speed-imx1.c index b55ca3a80e..f801f8f093 100644 --- a/arch/arm/mach-imx/speed-imx1.c +++ b/arch/arm/mach-imx/speed-imx1.c @@ -37,12 +37,12 @@ */ /* ------------------------------------------------------------------------- */ -ulong imx_get_systemclk(void) +ulong imx_get_spllclk(void) { return imx_decode_pll(SPCTL0, CONFIG_SYSPLL_CLK_FREQ); } -ulong imx_get_mcuclk(void) +ulong imx_get_mpllclk(void) { return imx_decode_pll(MPCTL0, CONFIG_SYS_CLK_FREQ); } @@ -55,7 +55,7 @@ ulong imx_get_fclk(void) ulong imx_get_hclk(void) { u32 bclkdiv = (( CSCR >> 10 ) & 0xf) + 1; - return get_systemPLLCLK() / bclkdiv; + return imx_get_spllclk() / bclkdiv; } ulong imx_get_bclk(void) @@ -65,17 +65,17 @@ ulong imx_get_bclk(void) ulong imx_get_perclk1(void) { - return get_systemPLLCLK() / (((PCDR) & 0xf)+1); + return imx_get_spllclk() / (((PCDR) & 0xf)+1); } ulong imx_get_perclk2(void) { - return get_systemPLLCLK() / (((PCDR>>4) & 0xf)+1); + return imx_get_spllclk() / (((PCDR>>4) & 0xf)+1); } ulong imx_get_perclk3(void) { - return get_systemPLLCLK() / (((PCDR>>16) & 0x7f)+1); + return imx_get_spllclk() / (((PCDR>>16) & 0x7f)+1); } #if 0 diff --git a/arch/arm/mach-imx/speed-imx27.c b/arch/arm/mach-imx/speed-imx27.c index ca90bea73b..5533dda44a 100644 --- a/arch/arm/mach-imx/speed-imx27.c +++ b/arch/arm/mach-imx/speed-imx27.c @@ -1,6 +1,7 @@ #include <common.h> #include <asm/arch/imx-regs.h> #include <asm/arch/clock.h> +#include <init.h> #ifndef CLK32 #define CLK32 32000 @@ -22,7 +23,7 @@ static ulong clk_in_26m(void) } } -ulong imx_get_mcuclk(void) +ulong imx_get_mpllclk(void) { ulong cscr = CSCR; ulong fref; @@ -35,7 +36,21 @@ ulong imx_get_mcuclk(void) return imx_decode_pll(MPCTL0, fref); } -ulong imx_get_systemclk(void) +ulong imx_get_armclk(void) +{ + ulong cscr = CSCR; + ulong fref = imx_get_mpllclk(); + ulong div; + + if (!(cscr & CSCR_ARM_SRC_MPLL)) + fref = (fref * 2) / 3; + + div = ((cscr >> 12) & 0x3) + 1; + + return fref / div; +} + +ulong imx_get_spllclk(void) { ulong cscr = CSCR; ulong fref; @@ -48,23 +63,43 @@ ulong imx_get_systemclk(void) return imx_decode_pll(SPCTL0, fref); } +static ulong imx_decode_perclk(ulong div) +{ + return (imx_get_mpllclk() * 2) / (div * 3); +} + ulong imx_get_perclk1(void) { - return imx_get_mcuclk() / ((PCDR1 & 0x3f) + 1); + return imx_decode_perclk((PCDR1 & 0x3f) + 1); } ulong imx_get_perclk2(void) { - return imx_get_mcuclk() / (((PCDR1 >> 8) & 0x3f) + 1); + return imx_decode_perclk(((PCDR1 >> 8) & 0x3f) + 1); } ulong imx_get_perclk3(void) { - return imx_get_mcuclk() / (((PCDR1 >> 16) & 0x3f) + 1); + return imx_decode_perclk(((PCDR1 >> 16) & 0x3f) + 1); } ulong imx_get_perclk4(void) { - return imx_get_mcuclk() / (((PCDR1 >> 24) & 0x3f) + 1); + return imx_decode_perclk(((PCDR1 >> 24) & 0x3f) + 1); } +int imx_dump_clocks(void) +{ + printf("mpll: %10d\n", imx_get_mpllclk()); + printf("arm: %10d\n", imx_get_armclk()); + printf("system: %10d\n", imx_get_spllclk()); + printf("perclk1: %10d\n", imx_get_perclk1()); + printf("perclk2: %10d\n", imx_get_perclk2()); + printf("perclk3: %10d\n", imx_get_perclk3()); + printf("perclk4: %10d\n", imx_get_perclk4()); + printf("clkin26: %10d\n", clk_in_26m()); + return 0; +} + +late_initcall(imx_dump_clocks); + |