From e404e46b326eb6a648377103c9d9b8b6c2d8c3b8 Mon Sep 17 00:00:00 2001 From: Ivo Clarysse Date: Tue, 7 Apr 2009 11:01:15 +0200 Subject: i.MX21: Fixes HCLK decoding for i.MX21, reports NFC clock Signed-off-by: Ivo Clarysse Signed-off-by: Sascha Hauer --- arch/arm/mach-imx/speed-imx21.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'arch') 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()); -- cgit v1.2.3