|
@@ -449,25 +449,29 @@ static int __init ep93xx_clock_init(void)
|
|
|
u32 value;
|
|
|
int i;
|
|
|
|
|
|
- value = __raw_readl(EP93XX_SYSCON_CLOCK_SET1);
|
|
|
- if (!(value & 0x00800000)) { /* PLL1 bypassed? */
|
|
|
+ /* Determine the bootloader configured pll1 rate */
|
|
|
+ value = __raw_readl(EP93XX_SYSCON_CLKSET1);
|
|
|
+ if (!(value & EP93XX_SYSCON_CLKSET1_NBYP1))
|
|
|
clk_pll1.rate = clk_xtali.rate;
|
|
|
- } else {
|
|
|
+ else
|
|
|
clk_pll1.rate = calc_pll_rate(value);
|
|
|
- }
|
|
|
+
|
|
|
+ /* Initialize the pll1 derived clocks */
|
|
|
clk_f.rate = clk_pll1.rate / fclk_divisors[(value >> 25) & 0x7];
|
|
|
clk_h.rate = clk_pll1.rate / hclk_divisors[(value >> 20) & 0x7];
|
|
|
clk_p.rate = clk_h.rate / pclk_divisors[(value >> 18) & 0x3];
|
|
|
ep93xx_dma_clock_init();
|
|
|
|
|
|
+ /* Determine the bootloader configured pll2 rate */
|
|
|
value = __raw_readl(EP93XX_SYSCON_CLOCK_SET2);
|
|
|
- if (!(value & 0x00080000)) { /* PLL2 bypassed? */
|
|
|
+ if (!(value & EP93XX_SYSCON_CLKSET2_NBYP2))
|
|
|
clk_pll2.rate = clk_xtali.rate;
|
|
|
- } else if (value & 0x00040000) { /* PLL2 enabled? */
|
|
|
+ else if (value & EP93XX_SYSCON_CLKSET2_PLL2_EN)
|
|
|
clk_pll2.rate = calc_pll_rate(value);
|
|
|
- } else {
|
|
|
+ else
|
|
|
clk_pll2.rate = 0;
|
|
|
- }
|
|
|
+
|
|
|
+ /* Initialize the pll2 derived clocks */
|
|
|
clk_usb_host.rate = clk_pll2.rate / (((value >> 28) & 0xf) + 1);
|
|
|
|
|
|
pr_info("PLL1 running at %ld MHz, PLL2 at %ld MHz\n",
|