|
@@ -51,6 +51,7 @@ phys_size_t initdram (int board_type)
|
|
|
MCFSDRAMC_DCR = (0
|
|
|
| MCFSDRAMC_DCR_RTIM_6
|
|
|
| MCFSDRAMC_DCR_RC((15 * dramclk)>>4));
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Initialize DACR0 */
|
|
|
MCFSDRAMC_DACR0 = (0
|
|
@@ -58,14 +59,17 @@ phys_size_t initdram (int board_type)
|
|
|
| MCFSDRAMC_DACR_CASL(1)
|
|
|
| MCFSDRAMC_DACR_CBM(3)
|
|
|
| MCFSDRAMC_DACR_PS_32);
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Initialize DMR0 */
|
|
|
MCFSDRAMC_DMR0 = (0
|
|
|
| ((dramsize - 1) & 0xFFFC0000)
|
|
|
| MCFSDRAMC_DMR_V);
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Set IP (bit 3) in DACR */
|
|
|
MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_IP;
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Wait 30ns to allow banks to precharge */
|
|
|
for (i = 0; i < 5; i++) {
|
|
@@ -74,9 +78,11 @@ phys_size_t initdram (int board_type)
|
|
|
|
|
|
/* Write to this block to initiate precharge */
|
|
|
*(u32 *)(CFG_SDRAM_BASE) = 0xA5A59696;
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Set RE (bit 15) in DACR */
|
|
|
MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_RE;
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Wait for at least 8 auto refresh cycles to occur */
|
|
|
for (i = 0; i < 2000; i++) {
|
|
@@ -85,6 +91,7 @@ phys_size_t initdram (int board_type)
|
|
|
|
|
|
/* Finish the configuration by issuing the IMRS. */
|
|
|
MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_IMRS;
|
|
|
+ asm("nop");
|
|
|
|
|
|
/* Write to the SDRAM Mode Register */
|
|
|
*(u32 *)(CFG_SDRAM_BASE + 0x400) = 0xA5A59696;
|