Changeset 27056


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

ar71xx: add AR933x specific frequency initialization code

Location:
trunk/target/linux/ar71xx/files/arch/mips
Files:
2 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 
  • trunk/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h

    r27055 r27056  
    189189#define AR91XX_ETH1_PLL_SHIFT           22 
    190190 
     191#define AR933X_PLL_CPU_CONFIG_REG       0x00 
     192#define AR933X_PLL_CLOCK_CTRL_REG       0x08 
     193 
     194#define AR933X_PLL_CPU_CONFIG_NINT_SHIFT        10 
     195#define AR933X_PLL_CPU_CONFIG_NINT_MASK         0x3f 
     196#define AR933X_PLL_CPU_CONFIG_REFDIV_SHIFT      16 
     197#define AR933X_PLL_CPU_CONFIG_REFDIV_MASK       0x1f 
     198#define AR933X_PLL_CPU_CONFIG_OUTDIV_SHIFT      23 
     199#define AR933X_PLL_CPU_CONFIG_OUTDIV_MASK       0x7 
     200 
     201#define AR933X_PLL_CLOCK_CTRL_BYPASS            BIT(2) 
     202#define AR933X_PLL_CLOCK_CTRL_CPU_DIV_SHIFT     5 
     203#define AR933X_PLL_CLOCK_CTRL_CPU_DIV_MASK      0x3 
     204#define AR933X_PLL_CLOCK_CTRL_DDR_DIV_SHIFT     10 
     205#define AR933X_PLL_CLOCK_CTRL_DDR_DIV_MASK      0x3 
     206#define AR933X_PLL_CLOCK_CTRL_AHB_DIV_SHIFT     15 
     207#define AR933X_PLL_CLOCK_CTRL_AHB_DIV_MASK      0x7 
     208 
    191209#define AR934X_PLL_REG_CPU_CONFIG       0x00 
    192210#define AR934X_PLL_REG_DDR_CTRL_CLOCK   0x8 
     
    579597 
    580598#define AR724X_RESET_REG_RESET_MODULE           0x1c 
     599 
     600#define AR933X_RESET_REG_BOOTSTRAP              0xac 
     601#define AR933X_BOOTSTRAP_REF_CLK_40             BIT(0) 
    581602 
    582603#define AR934X_RESET_REG_RESET_MODULE           0x1c 
Note: See TracChangeset for help on using the changeset viewer.