aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ep93xx/clock.c
diff options
context:
space:
mode:
authorHartley Sweeten <hartleys@visionengravers.com>2010-01-11 15:41:29 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-01-12 07:39:47 -0500
commit346e34abb2c56695ee4bd6af924141c97a0babfb (patch)
treee8abac19d024499688b3c182a889a6d5d19e4edd /arch/arm/mach-ep93xx/clock.c
parent1fbd972ad0f97253ebfbb04881dc4ad95541153c (diff)
ARM: 5879/1: ep93xx: define magic numbers for pll1 and pll2
Add defines for the pll register magic numbers that determine if the pll's are bypassed and if pll2 is enabled. Rename the clock set registers to more closely match the datasheet. Also, remove the unnecessary braces since each conditional statement is a single statement. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Ryan Mallon <ryan@bluewatersys.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ep93xx/clock.c')
-rw-r--r--arch/arm/mach-ep93xx/clock.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
index 07a58d03ae8c..27e335131799 100644
--- a/arch/arm/mach-ep93xx/clock.c
+++ b/arch/arm/mach-ep93xx/clock.c
@@ -449,25 +449,29 @@ static int __init ep93xx_clock_init(void)
449 u32 value; 449 u32 value;
450 int i; 450 int i;
451 451
452 value = __raw_readl(EP93XX_SYSCON_CLOCK_SET1); 452 /* Determine the bootloader configured pll1 rate */
453 if (!(value & 0x00800000)) { /* PLL1 bypassed? */ 453 value = __raw_readl(EP93XX_SYSCON_CLKSET1);
454 if (!(value & EP93XX_SYSCON_CLKSET1_NBYP1))
454 clk_pll1.rate = clk_xtali.rate; 455 clk_pll1.rate = clk_xtali.rate;
455 } else { 456 else
456 clk_pll1.rate = calc_pll_rate(value); 457 clk_pll1.rate = calc_pll_rate(value);
457 } 458
459 /* Initialize the pll1 derived clocks */
458 clk_f.rate = clk_pll1.rate / fclk_divisors[(value >> 25) & 0x7]; 460 clk_f.rate = clk_pll1.rate / fclk_divisors[(value >> 25) & 0x7];
459 clk_h.rate = clk_pll1.rate / hclk_divisors[(value >> 20) & 0x7]; 461 clk_h.rate = clk_pll1.rate / hclk_divisors[(value >> 20) & 0x7];
460 clk_p.rate = clk_h.rate / pclk_divisors[(value >> 18) & 0x3]; 462 clk_p.rate = clk_h.rate / pclk_divisors[(value >> 18) & 0x3];
461 ep93xx_dma_clock_init(); 463 ep93xx_dma_clock_init();
462 464
465 /* Determine the bootloader configured pll2 rate */
463 value = __raw_readl(EP93XX_SYSCON_CLOCK_SET2); 466 value = __raw_readl(EP93XX_SYSCON_CLOCK_SET2);
464 if (!(value & 0x00080000)) { /* PLL2 bypassed? */ 467 if (!(value & EP93XX_SYSCON_CLKSET2_NBYP2))
465 clk_pll2.rate = clk_xtali.rate; 468 clk_pll2.rate = clk_xtali.rate;
466 } else if (value & 0x00040000) { /* PLL2 enabled? */ 469 else if (value & EP93XX_SYSCON_CLKSET2_PLL2_EN)
467 clk_pll2.rate = calc_pll_rate(value); 470 clk_pll2.rate = calc_pll_rate(value);
468 } else { 471 else
469 clk_pll2.rate = 0; 472 clk_pll2.rate = 0;
470 } 473
474 /* Initialize the pll2 derived clocks */
471 clk_usb_host.rate = clk_pll2.rate / (((value >> 28) & 0xf) + 1); 475 clk_usb_host.rate = clk_pll2.rate / (((value >> 28) & 0xf) + 1);
472 476
473 pr_info("PLL1 running at %ld MHz, PLL2 at %ld MHz\n", 477 pr_info("PLL1 running at %ld MHz, PLL2 at %ld MHz\n",