Ignore:
Timestamp:
2011-06-01T00:53:29+02:00 (5 years ago)
Author:
juhosg
Message:

ar71xx: add AR933x specific frequency initialization code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c

    r27054 r27056  
    284284} 
    285285 
     286static void __init ar933x_detect_sys_frequency(void) 
     287{ 
     288        u32 clock_ctrl; 
     289        u32 cpu_config; 
     290        u32 freq; 
     291        u32 t; 
     292 
     293        t = ar71xx_reset_rr(AR933X_RESET_REG_BOOTSTRAP); 
     294        if (t & AR933X_BOOTSTRAP_REF_CLK_40) 
     295                ar71xx_ref_freq = (40 * 1000 * 1000); 
     296        else 
     297                ar71xx_ref_freq = (25 * 1000 * 1000); 
     298 
     299        clock_ctrl = ar71xx_pll_rr(AR933X_PLL_CLOCK_CTRL_REG); 
     300        if (clock_ctrl & AR933X_PLL_CLOCK_CTRL_BYPASS) { 
     301                ar71xx_cpu_freq = ar71xx_ref_freq; 
     302                ar71xx_ahb_freq = ar71xx_ref_freq; 
     303                ar71xx_ddr_freq = ar71xx_ref_freq; 
     304        } else { 
     305                cpu_config = ar71xx_pll_rr(AR933X_PLL_CPU_CONFIG_REG); 
     306 
     307                t = (cpu_config >> AR933X_PLL_CPU_CONFIG_REFDIV_SHIFT) & 
     308                    AR933X_PLL_CPU_CONFIG_REFDIV_MASK; 
     309                freq = ar71xx_ref_freq / t; 
     310 
     311                t = (cpu_config >> AR933X_PLL_CPU_CONFIG_NINT_SHIFT) & 
     312                    AR933X_PLL_CPU_CONFIG_NINT_MASK; 
     313                freq *= t; 
     314 
     315                t = (cpu_config >> AR933X_PLL_CPU_CONFIG_OUTDIV_SHIFT) & 
     316                    AR933X_PLL_CPU_CONFIG_OUTDIV_MASK; 
     317                if (t == 0) 
     318                        t = 1; 
     319 
     320                freq >>= t; 
     321 
     322                t = ((clock_ctrl >> AR933X_PLL_CLOCK_CTRL_CPU_DIV_SHIFT) & 
     323                     AR933X_PLL_CLOCK_CTRL_CPU_DIV_MASK) + 1; 
     324                ar71xx_cpu_freq = freq / t; 
     325 
     326                t = ((clock_ctrl >> AR933X_PLL_CLOCK_CTRL_DDR_DIV_SHIFT) & 
     327                      AR933X_PLL_CLOCK_CTRL_DDR_DIV_MASK) + 1; 
     328                ar71xx_ddr_freq = freq / t; 
     329 
     330                t = ((clock_ctrl >> AR933X_PLL_CLOCK_CTRL_AHB_DIV_SHIFT) & 
     331                     AR933X_PLL_CLOCK_CTRL_AHB_DIV_MASK) + 1; 
     332                ar71xx_ahb_freq = freq / t; 
     333        } 
     334} 
     335 
    286336static void __init detect_sys_frequency(void) 
    287337{ 
     
    302352        case AR71XX_SOC_AR9132: 
    303353                ar91xx_detect_sys_frequency(); 
     354                break; 
     355 
     356        case AR71XX_SOC_AR9330: 
     357        case AR71XX_SOC_AR9331: 
     358                ar933x_detect_sys_frequency(); 
    304359                break; 
    305360 
Note: See TracChangeset for help on using the changeset viewer.