A27R版本修改
This commit is contained in:
124
A58-AMTLDR/Src/clockcfg.c
Normal file
124
A58-AMTLDR/Src/clockcfg.c
Normal file
@ -0,0 +1,124 @@
|
||||
#include "amt630h.h"
|
||||
|
||||
static void delay(volatile int count )
|
||||
{
|
||||
while(count--);
|
||||
}
|
||||
|
||||
void SetCpuPLL(unsigned int freq_mhz)
|
||||
{
|
||||
rSYS_CPUPLL_CFG &= ~(1<<14);
|
||||
delay(10);
|
||||
|
||||
rSYS_BUS_CLK1_SEL |= (1<< 0);
|
||||
rSYS_CPUPLL_CFG = (freq_mhz/6)|(0x1C<<8)|(1<<14)|(1<<15);
|
||||
}
|
||||
|
||||
void SetSysPLL(unsigned int freq_mhz)
|
||||
{
|
||||
rSYS_SYSPLL_CFG &= ~(1<<14);
|
||||
delay(10);
|
||||
|
||||
rSYS_BUS_CLK1_SEL |= (1<< 1);
|
||||
rSYS_SYSPLL_CFG = (freq_mhz/6)|(0x1C<<8)|(1<<14)|(1<<15);
|
||||
}
|
||||
|
||||
void SetDDRPLL(unsigned int freq_mhz)
|
||||
{
|
||||
rSYS_DDRPLL_CFG &= ~(1<<14);
|
||||
delay(10);
|
||||
|
||||
rSYS_BUS_CLK1_SEL |= (1<< 2);
|
||||
// rSYS_DDRPLL_CFG = (freq_mhz/6)|(0x1C<<8)|(1<<14)|(1<<15);
|
||||
rSYS_DDRPLL_CFG = (freq_mhz/6)|(0x1C<<8)|(1<<15);
|
||||
|
||||
// rSYS_DDRPLL_CFG = (freq_mhz/12)|(0x0C<<8)|(1<<14)|(1<<15);
|
||||
|
||||
delay(100);
|
||||
rSYS_DDRPLL_CFG |= (1<< 14);
|
||||
}
|
||||
|
||||
void SetVPUPLL(unsigned int freq_mhz)
|
||||
{
|
||||
rSYS_VPUPLL_CFG &= ~(1<<14);
|
||||
delay(10);
|
||||
|
||||
rSYS_BUS_CLK1_SEL |= (1<< 3);
|
||||
rSYS_VPUPLL_CFG = (freq_mhz/6)|(0x1C<<8)|(1<<14)|(1<<15);
|
||||
}
|
||||
|
||||
void SetXclkAHBclkAPBclk(void)
|
||||
{
|
||||
unsigned int val;
|
||||
unsigned int hclk2x_div;
|
||||
unsigned int apbclk_div;
|
||||
unsigned int main_hclk_sel;
|
||||
unsigned int main_hclk2x_sel;
|
||||
unsigned int cpuclk_div;
|
||||
unsigned int main_cpuclk_sel;
|
||||
unsigned int ddrclk2x_div;
|
||||
unsigned int main_ddrclk2x_sel;
|
||||
|
||||
main_cpuclk_sel = 1;
|
||||
cpuclk_div = 0;
|
||||
main_hclk2x_sel = 1;
|
||||
hclk2x_div = 0;
|
||||
main_hclk_sel = 1;
|
||||
apbclk_div = 1;
|
||||
ddrclk2x_div = 0;
|
||||
main_ddrclk2x_sel = 1;
|
||||
#if 0
|
||||
val = rSYS_BUS_CLK_SEL;
|
||||
val &=~(0xFFFFFFFF);
|
||||
val |= (main_cpuclk_sel<< 0) |(cpuclk_div << 2) | (main_hclk2x_sel << 8) | (hclk2x_div << 7) | (main_hclk_sel << 11) | (apbclk_div << 16);
|
||||
|
||||
rSYS_BUS_CLK_SEL = val;
|
||||
#endif
|
||||
|
||||
val = rSYS_BUS_CLK_SEL;
|
||||
val &=~(0xFFFFFFFF);
|
||||
val |= (main_cpuclk_sel<< 0) |(cpuclk_div << 2);
|
||||
rSYS_BUS_CLK_SEL = val;
|
||||
delay(2000);
|
||||
|
||||
val = rSYS_BUS_CLK_SEL;
|
||||
val |= (main_hclk2x_sel << 8) | (hclk2x_div << 10) | (main_hclk_sel << 15) | (apbclk_div << 16) | (main_ddrclk2x_sel << 24) | (ddrclk2x_div << 26);
|
||||
rSYS_BUS_CLK_SEL = val;
|
||||
delay(2000);
|
||||
|
||||
}
|
||||
void SetSpiclk(void)
|
||||
{
|
||||
unsigned int val;
|
||||
val = rSYS_SSP_CLK_CFG;
|
||||
val &=~(0x1F);
|
||||
val |= (1<< 4) |(4 << 0);
|
||||
rSYS_SSP_CLK_CFG = val;
|
||||
}
|
||||
|
||||
void SetGpuclk(void)
|
||||
{
|
||||
unsigned int val;
|
||||
val = rSYS_TIMER1_CLK_CFG;
|
||||
val &=~(0xfF);
|
||||
val |= (0<< 3) |(1<< 0); //00:syspll_clk, 01:cpupll_clk
|
||||
rSYS_TIMER1_CLK_CFG = val;
|
||||
}
|
||||
|
||||
void SetMfcclk(void)
|
||||
{
|
||||
unsigned int val;
|
||||
val = rSYS_TIMER_CLK_CFG;
|
||||
val &=~(0xfF<<8);
|
||||
val |= (0x00<< 11) |(0x1<< 8);
|
||||
rSYS_TIMER_CLK_CFG = val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SwitchTo24MHz(void)
|
||||
{
|
||||
rSYS_BUS_CLK_SEL = 0;
|
||||
|
||||
delay(10);
|
||||
}
|
Reference in New Issue
Block a user