diff options
author | Ivo Clarysse <ivo.clarysse@gmail.com> | 2009-04-07 11:01:15 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-04-07 11:01:15 +0200 |
commit | e404e46b326eb6a648377103c9d9b8b6c2d8c3b8 (patch) | |
tree | f0d5c1c5e367d9030eee91217de4a6ef207812dc /arch/arm/mach-imx | |
parent | 3ccfdfd9b97506638baf960f8c0bcdca740f7845 (diff) | |
download | barebox-e404e46b326eb6a648377103c9d9b8b6c2d8c3b8.tar.gz barebox-e404e46b326eb6a648377103c9d9b8b6c2d8c3b8.tar.xz |
i.MX21: Fixes HCLK decoding for i.MX21, reports NFC clock
Signed-off-by: Ivo Clarysse <ivo.clarysse@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/speed-imx21.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/speed-imx21.c b/arch/arm/mach-imx/speed-imx21.c index ff5278a3a1..536e9ce71f 100644 --- a/arch/arm/mach-imx/speed-imx21.c +++ b/arch/arm/mach-imx/speed-imx21.c @@ -54,13 +54,25 @@ ulong imx_get_mpllclk(void) return imx_decode_pll(MPCTL0, fref); } +ulong imx_get_fclk(void) +{ + ulong cscr = CSCR; + ulong fref = imx_get_mpllclk(); + ulong div; + + div = ((cscr >> 29) & 0x7) + 1; + + return fref / div; +} + +/* HCLK */ ulong imx_get_armclk(void) { ulong cscr = CSCR; ulong fref = imx_get_mpllclk(); ulong div; - div = ((cscr >> 10) & 0x7) + 1; + div = ((cscr >> 10) & 0xF) + 1; return fref / div; } @@ -86,6 +98,13 @@ static ulong imx_decode_perclk(ulong div) return imx_get_mpllclk() / div; } +static ulong imx_get_nfcclk(void) +{ + ulong fref = imx_get_fclk(); + ulong div = ((PCDR0 >> 12) & 0xF) + 1; + return fref / div; +} + ulong imx_get_perclk1(void) { return imx_decode_perclk((PCDR1 & 0x3f) + 1); @@ -124,6 +143,8 @@ int imx_dump_clocks(void) printf("mpll: %10d Hz\n", imx_get_mpllclk()); printf("spll: %10d Hz\n", imx_get_spllclk()); printf("arm: %10d Hz\n", imx_get_armclk()); + printf("fclk: %10d Hz\n", imx_get_fclk()); + printf("nfcclk: %10d Hz\n", imx_get_nfcclk()); printf("perclk1: %10d Hz\n", imx_get_perclk1()); printf("perclk2: %10d Hz\n", imx_get_perclk2()); printf("perclk3: %10d Hz\n", imx_get_perclk3()); |