static __sramdata uint32 clkf;
static __sramdata uint32 clkod;
uint32 DEFINE_PIE_DATA(ddr_select_gpll_div); // 0-Disable, 1-1:1, 2-2:1, 4-4:1
+#if defined(ENABLE_DDR_CLCOK_GPLL_PATH)
static uint32 *p_ddr_select_gpll_div;
+#endif
static void __sramfunc ddr_delayus(uint32 us);
uint32 cwl;
PCTL_TIMING_T *p_pctl_timing=&(p_ddr_reg->pctl.pctl_timing);
PHY_TIMING_T *p_publ_timing=&(p_ddr_reg->publ.phy_timing);
- NOC_TIMING_T *p_noc_timing=&(p_ddr_reg->noc[0].ddrtiming);
- NOC_ACTIVATE_T *p_noc_activate=&(p_ddr_reg->noc[0].activate);
+ volatile NOC_TIMING_T *p_noc_timing=&(p_ddr_reg->noc[0].ddrtiming);
+ volatile NOC_ACTIVATE_T *p_noc_activate=&(p_ddr_reg->noc[0].activate);
uint32 ch;
uint32 mem_type;
uint32 ddr_speed_bin=DDR3_DEFAULT;
uint32 i,bl_tmp=0;
PCTL_TIMING_T *p_pctl_timing=&(DATA(ddr_reg).pctl.pctl_timing);
PHY_TIMING_T *p_publ_timing=&(DATA(ddr_reg).publ.phy_timing);
- NOC_TIMING_T *p_noc_timing=&(DATA(ddr_reg).noc[0].ddrtiming);
- NOC_ACTIVATE_T *p_noc_activate=&(DATA(ddr_reg).noc[0].activate);
+ volatile NOC_TIMING_T *p_noc_timing=&(DATA(ddr_reg).noc[0].ddrtiming);
+ volatile NOC_ACTIVATE_T *p_noc_activate=&(DATA(ddr_reg).noc[0].activate);
pDDR_REG_T pDDR_Reg = DATA(ddr_ch[ch]).pDDR_Reg;
pDDRPHY_REG_T pPHY_Reg = DATA(ddr_ch[ch]).pPHY_Reg;
pMSCH_REG pMSCH_Reg= DATA(ddr_ch[ch]).pMSCH_Reg;
{
struct ddr_freq_t ddr_freq_t;
int test_count=0;
+ int ret;
ddr_freq_t.screen_ft_us = 0;
ddr_freq_t.t0 = 0;
flush_tlb_all();
}
- }while(__ddr_change_freq(nMHz, ddr_freq_t)==0);
+ ret = __ddr_change_freq(nMHz, ddr_freq_t);
+ } while (ret == 0);
#else
- return __ddr_change_freq(nMHz, ddr_freq_t);
+ ret = __ddr_change_freq(nMHz, ddr_freq_t);
#endif
+
+ return ret;
}
static long _ddr_round_rate(uint32 nMHz)
#define PERI_PCLK_DIV_MASK 0x3
#define PERI_PCLK_DIV_OFF 12
+#if 0
static __sramdata u32 cru_sel32_sram;
static void __sramfunc ddr_suspend(void)
{
-#if 0
u32 i;
volatile u32 n;
volatile unsigned int * temp=(volatile unsigned int *)SRAM_CODE_OFFSET;
|CRU_W_MSK_SETBITS(0, PERI_PCLK_DIV_OFF, PERI_PCLK_DIV_MASK);
}
pPHY_Reg->DSGCR = pPHY_Reg->DSGCR&(~((0x1<<28)|(0x1<<29))); //CKOE
-#endif
}
static void __sramfunc ddr_resume(void)
{
-#if 0
int delay=1000;
int pll_id;
dsb();
ddr_selfrefresh_exit();
-#endif
}
+#endif
//pArg:Ö¸ÕëÄÚÈݱíʾpll pd or not¡£
void ddr_reg_save(uint32 *pArg)