EFL: bump SRCREV even more for last few efreet fixes
[openembedded.git] / recipes / u-boot / u-boot-git / beagleboard / 0001-omap3-clock.c-don-t-reprogram-clocks-when-trying-to-.patch
1 From 0c597fe20bab64deca7d71e7da6c0a7e553a2a7b Mon Sep 17 00:00:00 2001
2 From: Koen Kooi <koen@dominion.thruhere.net>
3 Date: Thu, 18 Feb 2010 11:05:49 +0100
4 Subject: [PATCH 1/2] omap3 clock.c: don't reprogram clocks when trying to find out clock divider
5
6 ---
7  cpu/arm_cortexa8/omap3/clock.c |   14 +++++++++-----
8  1 files changed, 9 insertions(+), 5 deletions(-)
9
10 diff --git a/cpu/arm_cortexa8/omap3/clock.c b/cpu/arm_cortexa8/omap3/clock.c
11 index d67517a..40bd679 100644
12 --- a/cpu/arm_cortexa8/omap3/clock.c
13 +++ b/cpu/arm_cortexa8/omap3/clock.c
14 @@ -40,17 +40,19 @@
15   *****************************************************************************/
16  u32 get_osc_clk_speed(void)
17  {
18 -       u32 start, cstart, cend, cdiff, val;
19 +       u32 start, cstart, cend, cdiff, cdiv, val;
20         struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
21         struct prm *prm_base = (struct prm *)PRM_BASE;
22         struct gptimer *gpt1_base = (struct gptimer *)OMAP34XX_GPT1;
23         struct s32ktimer *s32k_base = (struct s32ktimer *)SYNC_32KTIMER_BASE;
24  
25         val = readl(&prm_base->clksrc_ctrl);
26 -
27 -       /* If SYS_CLK is being divided by 2, remove for now */
28 -       val = (val & (~SYSCLKDIV_2)) | SYSCLKDIV_1;
29 -       writel(val, &prm_base->clksrc_ctrl);
30 +       if (val & SYSCLKDIV_2)
31 +               cdiv = 2;
32 +       else if (val & SYSCLKDIV_1)
33 +               cdiv = 1;
34 +       else
35 +               cdiv = 1;
36  
37         /* enable timer2 */
38         val = readl(&prcm_base->clksel_wkup) | CLKSEL_GPT1;
39 @@ -83,6 +85,8 @@ u32 get_osc_clk_speed(void)
40         cend = readl(&gpt1_base->tcrr);         /* get end sys_clk count */
41         cdiff = cend - cstart;                  /* get elapsed ticks */
42  
43 +       cdiff *= cdiv;
44 +
45         /* based on number of ticks assign speed */
46         if (cdiff > 19000)
47                 return S38_4M;
48 -- 
49 1.6.6.1
50