i.MX25 GPT clock fix: ensure correct the clock source
authorMehnert, Torsten <T.Mehnert@eckelmann.de>
Mon, 1 Aug 2011 08:02:07 +0000 (08:02 +0000)
committerSascha Hauer <s.hauer@pengutronix.de>
Mon, 1 Aug 2011 10:17:49 +0000 (12:17 +0200)
Request for comment and commit.

From: T. Mehnert <t.mehnert@eckelmann.de>
Date: Mon, 4 Jul 2011 15:53:30 +0200
Subject: [PATCH] i.MX25 GPT clock fix: ensure correct the clock source

This patch ensures, that Linux will take the correct clock source (AHB_DIV)
for gpt in the ARM i.MX25 implementation. The currect code depends on the reset
defaults of the CCM_MCR register. So on some boards it could happen that the
UPLL is used for clock source, which results in faulty time behavior in Linux.
In this case all delays or sleeps will will be faktor 1.8 too long.

Signed-off-by: Torsten Mehnert <t.mehnert@eckelmann.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/mach-imx/clock-imx25.c

index a65838fc061c5cdf124dc84d9f4ed6301f2cbebf..e40c0b320d4a16a18448d79055a3400c4ebb5f3d 100644 (file)
@@ -328,6 +328,9 @@ int __init mx25_clocks_init(void)
        __raw_writel(__raw_readl(CRM_BASE+0x64) | (1 << 7) | (1 << 0),
                        CRM_BASE + 0x64);
 
+       /* Clock source for gpt is ahb_div */
+       __raw_writel(__raw_readl(CRM_BASE+0x64) & ~(1 << 5), CRM_BASE + 0x64);
+
        mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54);
 
        return 0;