@ -107,18 +107,12 @@ u32 get_sdr_cs_offset(u32 cs)
/*
* do_sdrc_init -
* - Initialize the SDRAM for use .
* - Sets up SDRC timings for CS0
* - code called once in C - Stack only context for CS0 and a possible 2 nd
* time depending on memory configuration from stack + global context
*/
void do_sdrc_init ( u32 cs , u32 early )
{
struct sdrc_actim * sdrc_actim_base ;
if ( cs )
sdrc_actim_base = ( struct sdrc_actim * ) SDRC_ACTIM_CTRL1_BASE ;
else
sdrc_actim_base = ( struct sdrc_actim * ) SDRC_ACTIM_CTRL0_BASE ;
struct sdrc_actim * sdrc_actim_base0 , * sdrc_actim_base1 ;
if ( early ) {
/* reset sdrc controller */
@ -138,24 +132,29 @@ void do_sdrc_init(u32 cs, u32 early)
sdelay ( 0x20000 ) ;
}
writel ( RASWIDTH_13BITS | CASWIDTH_10BITS | ADDRMUXLEGACY |
RAMSIZE_128 | BANKALLOCATION | B32NOT16 | B32NOT16 |
DEEPPD | DDR_SDRAM , & sdrc_base - > cs [ cs ] . mcfg ) ;
writel ( ARCV | ARE_ARCV_1 , & sdrc_base - > cs [ cs ] . rfr_ctrl ) ;
writel ( V_ACTIMA_165 , & sdrc_actim_base - > ctrla ) ;
writel ( V_ACTIMB_165 , & sdrc_actim_base - > ctrlb ) ;
writel ( CMD_NOP , & sdrc_base - > cs [ cs ] . manual ) ;
writel ( CMD_PRECHARGE , & sdrc_base - > cs [ cs ] . manual ) ;
writel ( CMD_AUTOREFRESH , & sdrc_base - > cs [ cs ] . manual ) ;
writel ( CMD_AUTOREFRESH , & sdrc_base - > cs [ cs ] . manual ) ;
/*
* CAS latency 3 , Write Burst = Read Burst , Serial Mode ,
* Burst length = 4
* SDRC timings are set up by x - load or config header
* We don ' t need to redo them here .
* Older x - loads configure only CS0
* configure CS1 to handle this ommission
*/
writel ( CASL3 | BURSTLENGTH4 , & sdrc_base - > cs [ cs ] . mr ) ;
if ( cs ) {
sdrc_actim_base0 = ( struct sdrc_actim * ) SDRC_ACTIM_CTRL0_BASE ;
sdrc_actim_base1 = ( struct sdrc_actim * ) SDRC_ACTIM_CTRL1_BASE ;
writel ( readl ( & sdrc_base - > cs [ CS0 ] . mcfg ) ,
& sdrc_base - > cs [ CS1 ] . mcfg ) ;
writel ( readl ( & sdrc_base - > cs [ CS0 ] . rfr_ctrl ) ,
& sdrc_base - > cs [ CS1 ] . rfr_ctrl ) ;
writel ( readl ( & sdrc_actim_base0 - > ctrla ) ,
& sdrc_actim_base1 - > ctrla ) ;
writel ( readl ( & sdrc_actim_base0 - > ctrlb ) ,
& sdrc_actim_base1 - > ctrlb ) ;
}
/*
* Test ram in this bank
* Disable if bad or not present
*/
if ( ! mem_ok ( cs ) )
writel ( 0 , & sdrc_base - > cs [ cs ] . mcfg ) ;
}