S3C6410设置667主频率

来源:互联网 发布:算法导论 第二版 pdf 编辑:程序博客网 时间:2024/04/30 05:52

 6410提供有三个频率APLL,MPLL,EPLL,来分别来实现不同的频率要求。其中每种参数都有对应的MDIV,PDIV,SDIV(EPLL还需KDIV)等参数来改变输出频率。APLL/MPLL在输入频率为12M时复位分别有400M和133M的输出,输出配置公式是Fout=MDIV*Fin/(PDIV<<SDIV)。

1,打开Uboot中smdk6410.h,使能#define CONFIG_CLK_666_133_66

          通过不同的DIV参数,配置不同的Startup_HCLK,这个频率直接影响DDR的初始化时序。

2,打开Kernel中clock.c,补充667MHZ分频寄存器设置表

    static const u32 s3c_cpu_clk_tab_667MHz[][6] =

   {
          {667*MHZ, 266 *MHZ, 266, 3, 0, 1},
          {266*MHZ, 266 *MHZ, 266, 3, 1, 1},
          {133*MHZ, 266 *MHZ, 266, 3, 3, 1},
          #ifdef USE_DVFS_AL1_LEVEL
           {133*MHZ, 133 *MHZ, 266, 1, 3, 3},
          #endif
          { 66*MHZ, 133 *MHZ, 266, 1, 7, 3},
};

3,打开Kernel中s3c64xx-dvfs.c,改动三项

     3.1,补充提供667MHZ的ARM核电压VCC_ARM和INT电压VCC_INT设置
            /* frequency, Mathced VDD ARM voltage , Matched VDD INT*/
              {667000, 1200, 1200, 0},

     3.2,补充电源管理667MHZ频率变换设置:
           static unsigned char transition_state_667MHz[][2] =

            {
                 {1, 0},
                 {2, 0},
                 {3, 1},
                 #ifdef USE_DVFS_AL1_LEVEL
                 {4, 2},
                 {4, 3},
                 #else
                 {3, 2},
                 #endif
              };

       3.3,补充频率变换时667MHZ频率索引:
            static struct cpufreq_frequency_table freq_table_667MHz[] =

           {
                {0, 667*KHZ_T},
                {1, 266*KHZ_T},
                {2, 133*KHZ_T},
                #ifdef USE_DVFS_AL1_LEVEL
                {3, 133*KHZ_T},
                {4, 66*KHZ_T},
                {5, CPUFREQ_TABLE_END},
                #else
                {3, 66*KHZ_T},
                {4, CPUFREQ_TABLE_END}, 
                #endif
            };//跟寄存器设置有对应关系


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhandoushi1982/archive/2009/11/16/4813972.aspx

原创粉丝点击