1400558b5Swdenk/* Memory sub-system initialization code */ 2400558b5Swdenk 3400558b5Swdenk#include <config.h> 4*76ada5f8SDaniel Schwierzeck#include <mach/au1x00.h> 5400558b5Swdenk#include <asm/regdef.h> 6400558b5Swdenk#include <asm/mipsregs.h> 7400558b5Swdenk 8400558b5Swdenk#define AU1500_SYS_ADDR 0xB1900000 9400558b5Swdenk#define sys_endian 0x0038 10400558b5Swdenk#define CP0_Config0 $16 116d0f6bcfSJean-Christophe PLAGNIOL-VILLARD#define CPU_SCALE ((CONFIG_SYS_MHZ) / 12) /* CPU clock is a multiple of 12 MHz */ 126d0f6bcfSJean-Christophe PLAGNIOL-VILLARD#define MEM_1MS ((CONFIG_SYS_MHZ) * 1000) 13400558b5Swdenk 14400558b5Swdenk .text 15400558b5Swdenk .set noreorder 16400558b5Swdenk .set mips32 17400558b5Swdenk 18400558b5Swdenk .globl lowlevel_init 19400558b5Swdenklowlevel_init: 20400558b5Swdenk /* 21400558b5Swdenk * Step 1) Establish CPU endian mode. 22400558b5Swdenk * Db1500-specific: 23400558b5Swdenk * Switch S1.1 Off(bit7 reads 1) is Little Endian 24400558b5Swdenk * Switch S1.1 On (bit7 reads 0) is Big Endian 25400558b5Swdenk */ 26400558b5Swdenk#ifdef CONFIG_DBAU1550 27400558b5Swdenk li t0, MEM_STCFG2 28400558b5Swdenk li t1, 0x00000040 29400558b5Swdenk sw t1, 0(t0) 30400558b5Swdenk 31400558b5Swdenk li t0, MEM_STTIME2 32400558b5Swdenk li t1, 0x22080a20 33400558b5Swdenk sw t1, 0(t0) 34400558b5Swdenk 35400558b5Swdenk li t0, MEM_STADDR2 36400558b5Swdenk li t1, 0x10c03f00 37400558b5Swdenk sw t1, 0(t0) 38400558b5Swdenk#else 39400558b5Swdenk li t0, MEM_STCFG1 40400558b5Swdenk li t1, 0x00000080 41400558b5Swdenk sw t1, 0(t0) 42400558b5Swdenk 43400558b5Swdenk li t0, MEM_STTIME1 44400558b5Swdenk li t1, 0x22080a20 45400558b5Swdenk sw t1, 0(t0) 46400558b5Swdenk 47400558b5Swdenk li t0, MEM_STADDR1 48400558b5Swdenk li t1, 0x10c03f00 49400558b5Swdenk sw t1, 0(t0) 50400558b5Swdenk#endif 51400558b5Swdenk 52400558b5Swdenk li t0, DB1XX0_BCSR_ADDR 53400558b5Swdenk lw t1,8(t0) 54400558b5Swdenk andi t1,t1,0x80 55400558b5Swdenk beq zero,t1,big_endian 56400558b5Swdenk nop 57400558b5Swdenklittle_endian: 58400558b5Swdenk 59400558b5Swdenk /* Change Au1 core to little endian */ 60400558b5Swdenk li t0, AU1500_SYS_ADDR 61400558b5Swdenk li t1, 1 62400558b5Swdenk sw t1, sys_endian(t0) 63400558b5Swdenk mfc0 t2, CP0_CONFIG 64400558b5Swdenk mtc0 t2, CP0_CONFIG 65400558b5Swdenk nop 66400558b5Swdenk nop 67400558b5Swdenk 68400558b5Swdenk /* Big Endian is default so nothing to do but fall through */ 69400558b5Swdenk 70400558b5Swdenkbig_endian: 71400558b5Swdenk 72400558b5Swdenk /* 73400558b5Swdenk * Step 2) Establish Status Register 74400558b5Swdenk * (set BEV, clear ERL, clear EXL, clear IE) 75400558b5Swdenk */ 76400558b5Swdenk li t1, 0x00400000 77400558b5Swdenk mtc0 t1, CP0_STATUS 78400558b5Swdenk 79400558b5Swdenk /* 80400558b5Swdenk * Step 3) Establish CP0 Config0 81400558b5Swdenk * (set OD, set K0=3) 82400558b5Swdenk */ 83400558b5Swdenk li t1, 0x00080003 84400558b5Swdenk mtc0 t1, CP0_CONFIG 85400558b5Swdenk 86400558b5Swdenk /* 87400558b5Swdenk * Step 4) Disable Watchpoint facilities 88400558b5Swdenk */ 89400558b5Swdenk li t1, 0x00000000 90400558b5Swdenk mtc0 t1, CP0_WATCHLO 91400558b5Swdenk mtc0 t1, CP0_IWATCHLO 92400558b5Swdenk /* 93400558b5Swdenk * Step 5) Disable the performance counters 94400558b5Swdenk */ 95400558b5Swdenk mtc0 zero, CP0_PERFORMANCE 96400558b5Swdenk nop 97400558b5Swdenk 98400558b5Swdenk /* 99400558b5Swdenk * Step 6) Establish EJTAG Debug register 100400558b5Swdenk */ 101400558b5Swdenk mtc0 zero, CP0_DEBUG 102400558b5Swdenk nop 103400558b5Swdenk 104400558b5Swdenk /* 105400558b5Swdenk * Step 7) Establish Cause 106400558b5Swdenk * (set IV bit) 107400558b5Swdenk */ 108400558b5Swdenk li t1, 0x00800000 109400558b5Swdenk mtc0 t1, CP0_CAUSE 110400558b5Swdenk 111400558b5Swdenk /* Establish Wired (and Random) */ 112400558b5Swdenk mtc0 zero, CP0_WIRED 113400558b5Swdenk nop 114400558b5Swdenk 115400558b5Swdenk#ifdef CONFIG_DBAU1550 116400558b5Swdenk /* No workaround if running from ram */ 117400558b5Swdenk lui t0, 0xffc0 118400558b5Swdenk lui t3, 0xbfc0 119400558b5Swdenk and t1, ra, t0 120400558b5Swdenk bne t1, t3, noCacheJump 121400558b5Swdenk nop 122400558b5Swdenk 123400558b5Swdenk /*** From AMD YAMON ***/ 124400558b5Swdenk /* 125400558b5Swdenk * Step 8) Initialize the caches 126400558b5Swdenk */ 127400558b5Swdenk li t0, (16*1024) 128400558b5Swdenk li t1, 32 129400558b5Swdenk li t2, 0x80000000 130400558b5Swdenk addu t3, t0, t2 131400558b5Swdenkcacheloop: 132400558b5Swdenk cache 0, 0(t2) 133400558b5Swdenk cache 1, 0(t2) 134400558b5Swdenk addu t2, t1 135400558b5Swdenk bne t2, t3, cacheloop 136400558b5Swdenk nop 137400558b5Swdenk 138400558b5Swdenk /* Save return address */ 139400558b5Swdenk move t3, ra 140400558b5Swdenk 141400558b5Swdenk /* Run from cacheable space now */ 142400558b5Swdenk bal cachehere 143400558b5Swdenk nop 144400558b5Swdenkcachehere: 145400558b5Swdenk li t1, ~0x20000000 /* convert to KSEG0 */ 146400558b5Swdenk and t0, ra, t1 147400558b5Swdenk addi t0, 5*4 /* 5 insns beyond cachehere */ 148400558b5Swdenk jr t0 149400558b5Swdenk nop 150400558b5Swdenk 151400558b5Swdenk /* Restore return address */ 152400558b5Swdenk move ra, t3 153400558b5Swdenk 154400558b5Swdenk /* 155400558b5Swdenk * Step 9) Initialize the TLB 156400558b5Swdenk */ 157400558b5Swdenk li t0, 0 # index value 158400558b5Swdenk li t1, 0x00000000 # entryhi value 159400558b5Swdenk li t2, 32 # 32 entries 160400558b5Swdenk 161400558b5Swdenktlbloop: 162400558b5Swdenk /* Probe TLB for matching EntryHi */ 163400558b5Swdenk mtc0 t1, CP0_ENTRYHI 164400558b5Swdenk tlbp 165400558b5Swdenk nop 166400558b5Swdenk 167400558b5Swdenk /* Examine Index[P], 1=no matching entry */ 168400558b5Swdenk mfc0 t3, CP0_INDEX 169400558b5Swdenk li t4, 0x80000000 170400558b5Swdenk and t3, t4, t3 171400558b5Swdenk addiu t1, t1, 1 # increment t1 (asid) 172400558b5Swdenk beq zero, t3, tlbloop 173400558b5Swdenk nop 174400558b5Swdenk 175400558b5Swdenk /* Initialize the TLB entry */ 176400558b5Swdenk mtc0 t0, CP0_INDEX 177400558b5Swdenk mtc0 zero, CP0_ENTRYLO0 178400558b5Swdenk mtc0 zero, CP0_ENTRYLO1 179400558b5Swdenk mtc0 zero, CP0_PAGEMASK 180400558b5Swdenk tlbwi 181400558b5Swdenk 182400558b5Swdenk /* Do it again */ 183400558b5Swdenk addiu t0, t0, 1 184400558b5Swdenk bne t0, t2, tlbloop 185400558b5Swdenk nop 186400558b5Swdenk 187ad88297eSHeiko Schocher#endif /* CONFIG_DBAU1550 */ 188ad88297eSHeiko Schocher 189400558b5Swdenk /* First setup pll:s to make serial work ok */ 190400558b5Swdenk /* We have a 12 MHz crystal */ 191400558b5Swdenk li t0, SYS_CPUPLL 192400558b5Swdenk li t1, CPU_SCALE /* CPU clock */ 193400558b5Swdenk sw t1, 0(t0) 194400558b5Swdenk sync 195400558b5Swdenk nop 196400558b5Swdenk nop 197400558b5Swdenk 198400558b5Swdenk /* wait 1mS for clocks to settle */ 199400558b5Swdenk li t1, MEM_1MS 200400558b5Swdenk1: add t1, -1 201400558b5Swdenk bne t1, zero, 1b 202400558b5Swdenk nop 203400558b5Swdenk /* Setup AUX PLL */ 204400558b5Swdenk li t0, SYS_AUXPLL 205400558b5Swdenk li t1, 0x20 /* 96 MHz */ 206400558b5Swdenk sw t1, 0(t0) /* aux pll */ 207400558b5Swdenk sync 208400558b5Swdenk 209ad88297eSHeiko Schocher#ifdef CONFIG_DBAU1550 210400558b5Swdenk /* Static memory controller */ 211400558b5Swdenk /* RCE0 - can not change while fetching, do so from icache */ 212400558b5Swdenk move t2, ra /* Store return address */ 213400558b5Swdenk bal getAddr 214400558b5Swdenk nop 215400558b5Swdenk 216400558b5SwdenkgetAddr: 217400558b5Swdenk move t1, ra 218400558b5Swdenk move ra, t2 /* Move return addess back */ 219400558b5Swdenk 220400558b5Swdenk cache 0x14,0(t1) 221400558b5Swdenk cache 0x14,32(t1) 222400558b5Swdenk /*** /From YAMON ***/ 223400558b5Swdenk 224400558b5SwdenknoCacheJump: 225400558b5Swdenk#endif /* CONFIG_DBAU1550 */ 226400558b5Swdenk 227400558b5Swdenk#ifdef CONFIG_DBAU1550 228400558b5Swdenk li t0, MEM_STTIME0 229400558b5Swdenk li t1, 0x040181D7 230400558b5Swdenk sw t1, 0(t0) 231400558b5Swdenk 232400558b5Swdenk /* RCE0 AMD MirrorBit Flash (?) */ 233400558b5Swdenk li t0, MEM_STCFG0 234400558b5Swdenk li t1, 0x00000003 235400558b5Swdenk sw t1, 0(t0) 236400558b5Swdenk 237400558b5Swdenk li t0, MEM_STADDR0 238400558b5Swdenk li t1, 0x11803E00 239400558b5Swdenk sw t1, 0(t0) 240400558b5Swdenk#else /* CONFIG_DBAU1550 */ 241400558b5Swdenk li t0, MEM_STTIME0 242ad88297eSHeiko Schocher li t1, 0x040181D7 243400558b5Swdenk sw t1, 0(t0) 244400558b5Swdenk 245400558b5Swdenk /* RCE0 AMD 29LV640M MirrorBit Flash */ 246400558b5Swdenk li t0, MEM_STCFG0 247400558b5Swdenk li t1, 0x00000013 248400558b5Swdenk sw t1, 0(t0) 249400558b5Swdenk 250400558b5Swdenk li t0, MEM_STADDR0 251400558b5Swdenk li t1, 0x11E03F80 252400558b5Swdenk sw t1, 0(t0) 253400558b5Swdenk#endif /* CONFIG_DBAU1550 */ 254400558b5Swdenk 255400558b5Swdenk /* RCE1 CPLD Board Logic */ 256400558b5Swdenk li t0, MEM_STCFG1 257400558b5Swdenk li t1, 0x00000080 258400558b5Swdenk sw t1, 0(t0) 259400558b5Swdenk 260400558b5Swdenk li t0, MEM_STTIME1 261400558b5Swdenk li t1, 0x22080a20 262400558b5Swdenk sw t1, 0(t0) 263400558b5Swdenk 264400558b5Swdenk li t0, MEM_STADDR1 265400558b5Swdenk li t1, 0x10c03f00 266400558b5Swdenk sw t1, 0(t0) 267400558b5Swdenk 268400558b5Swdenk#ifdef CONFIG_DBAU1550 269400558b5Swdenk /* RCE2 CPLD Board Logic */ 270400558b5Swdenk li t0, MEM_STCFG2 271400558b5Swdenk li t1, 0x00000040 272400558b5Swdenk sw t1, 0(t0) 273400558b5Swdenk 274400558b5Swdenk li t0, MEM_STTIME2 275400558b5Swdenk li t1, 0x22080a20 276400558b5Swdenk sw t1, 0(t0) 277400558b5Swdenk 278400558b5Swdenk li t0, MEM_STADDR2 279400558b5Swdenk li t1, 0x10c03f00 280400558b5Swdenk sw t1, 0(t0) 281400558b5Swdenk#else 282400558b5Swdenk li t0, MEM_STCFG2 283400558b5Swdenk li t1, 0x00000000 284400558b5Swdenk sw t1, 0(t0) 285400558b5Swdenk 286400558b5Swdenk li t0, MEM_STTIME2 287400558b5Swdenk li t1, 0x00000000 288400558b5Swdenk sw t1, 0(t0) 289400558b5Swdenk 290400558b5Swdenk li t0, MEM_STADDR2 291400558b5Swdenk li t1, 0x00000000 292400558b5Swdenk sw t1, 0(t0) 293400558b5Swdenk#endif 294400558b5Swdenk 295400558b5Swdenk /* RCE3 PCMCIA 250ns */ 296400558b5Swdenk li t0, MEM_STCFG3 297400558b5Swdenk li t1, 0x00000002 298400558b5Swdenk sw t1, 0(t0) 299400558b5Swdenk 300400558b5Swdenk li t0, MEM_STTIME3 301400558b5Swdenk li t1, 0x280E3E07 302400558b5Swdenk sw t1, 0(t0) 303400558b5Swdenk 304400558b5Swdenk li t0, MEM_STADDR3 305400558b5Swdenk li t1, 0x10000000 306400558b5Swdenk sw t1, 0(t0) 307400558b5Swdenk 308400558b5Swdenk sync 309400558b5Swdenk 310400558b5Swdenk /* Set peripherals to a known state */ 311400558b5Swdenk li t0, IC0_CFG0CLR 312400558b5Swdenk li t1, 0xFFFFFFFF 313400558b5Swdenk sw t1, 0(t0) 314400558b5Swdenk 315400558b5Swdenk li t0, IC0_CFG0CLR 316400558b5Swdenk sw t1, 0(t0) 317400558b5Swdenk 318400558b5Swdenk li t0, IC0_CFG1CLR 319400558b5Swdenk sw t1, 0(t0) 320400558b5Swdenk 321400558b5Swdenk li t0, IC0_CFG2CLR 322400558b5Swdenk sw t1, 0(t0) 323400558b5Swdenk 324400558b5Swdenk li t0, IC0_SRCSET 325400558b5Swdenk sw t1, 0(t0) 326400558b5Swdenk 327400558b5Swdenk li t0, IC0_ASSIGNSET 328400558b5Swdenk sw t1, 0(t0) 329400558b5Swdenk 330400558b5Swdenk li t0, IC0_WAKECLR 331400558b5Swdenk sw t1, 0(t0) 332400558b5Swdenk 333400558b5Swdenk li t0, IC0_RISINGCLR 334400558b5Swdenk sw t1, 0(t0) 335400558b5Swdenk 336400558b5Swdenk li t0, IC0_FALLINGCLR 337400558b5Swdenk sw t1, 0(t0) 338400558b5Swdenk 339400558b5Swdenk li t0, IC0_TESTBIT 340400558b5Swdenk li t1, 0x00000000 341400558b5Swdenk sw t1, 0(t0) 342400558b5Swdenk sync 343400558b5Swdenk 344400558b5Swdenk li t0, IC1_CFG0CLR 345400558b5Swdenk li t1, 0xFFFFFFFF 346400558b5Swdenk sw t1, 0(t0) 347400558b5Swdenk 348400558b5Swdenk li t0, IC1_CFG0CLR 349400558b5Swdenk sw t1, 0(t0) 350400558b5Swdenk 351400558b5Swdenk li t0, IC1_CFG1CLR 352400558b5Swdenk sw t1, 0(t0) 353400558b5Swdenk 354400558b5Swdenk li t0, IC1_CFG2CLR 355400558b5Swdenk sw t1, 0(t0) 356400558b5Swdenk 357400558b5Swdenk li t0, IC1_SRCSET 358400558b5Swdenk sw t1, 0(t0) 359400558b5Swdenk 360400558b5Swdenk li t0, IC1_ASSIGNSET 361400558b5Swdenk sw t1, 0(t0) 362400558b5Swdenk 363400558b5Swdenk li t0, IC1_WAKECLR 364400558b5Swdenk sw t1, 0(t0) 365400558b5Swdenk 366400558b5Swdenk li t0, IC1_RISINGCLR 367400558b5Swdenk sw t1, 0(t0) 368400558b5Swdenk 369400558b5Swdenk li t0, IC1_FALLINGCLR 370400558b5Swdenk sw t1, 0(t0) 371400558b5Swdenk 372400558b5Swdenk li t0, IC1_TESTBIT 373400558b5Swdenk li t1, 0x00000000 374400558b5Swdenk sw t1, 0(t0) 375400558b5Swdenk sync 376400558b5Swdenk 377400558b5Swdenk li t0, SYS_FREQCTRL0 378400558b5Swdenk li t1, 0x00000000 379400558b5Swdenk sw t1, 0(t0) 380400558b5Swdenk 381400558b5Swdenk li t0, SYS_FREQCTRL1 382400558b5Swdenk li t1, 0x00000000 383400558b5Swdenk sw t1, 0(t0) 384400558b5Swdenk 385400558b5Swdenk li t0, SYS_CLKSRC 386400558b5Swdenk li t1, 0x00000000 387400558b5Swdenk sw t1, 0(t0) 388400558b5Swdenk 389400558b5Swdenk li t0, SYS_PININPUTEN 390400558b5Swdenk li t1, 0x00000000 391400558b5Swdenk sw t1, 0(t0) 392400558b5Swdenk sync 393400558b5Swdenk 394400558b5Swdenk li t0, 0xB1100100 395400558b5Swdenk li t1, 0x00000000 396400558b5Swdenk sw t1, 0(t0) 397400558b5Swdenk 398400558b5Swdenk li t0, 0xB1400100 399400558b5Swdenk li t1, 0x00000000 400400558b5Swdenk sw t1, 0(t0) 401400558b5Swdenk 402400558b5Swdenk 403400558b5Swdenk li t0, SYS_WAKEMSK 404400558b5Swdenk li t1, 0x00000000 405400558b5Swdenk sw t1, 0(t0) 406400558b5Swdenk 407400558b5Swdenk li t0, SYS_WAKESRC 408400558b5Swdenk li t1, 0x00000000 409400558b5Swdenk sw t1, 0(t0) 410400558b5Swdenk 411400558b5Swdenk /* wait 1mS before setup */ 412400558b5Swdenk li t1, MEM_1MS 413400558b5Swdenk1: add t1, -1 414400558b5Swdenk bne t1, zero, 1b 415400558b5Swdenk nop 416400558b5Swdenk 417400558b5Swdenk#ifdef CONFIG_DBAU1550 418400558b5Swdenk/* SDCS 0,1,2 DDR SDRAM */ 419400558b5Swdenk li t0, MEM_SDMODE0 420400558b5Swdenk li t1, 0x04276221 421400558b5Swdenk sw t1, 0(t0) 422400558b5Swdenk 423400558b5Swdenk li t0, MEM_SDMODE1 424400558b5Swdenk li t1, 0x04276221 425400558b5Swdenk sw t1, 0(t0) 426400558b5Swdenk 427400558b5Swdenk li t0, MEM_SDMODE2 428400558b5Swdenk li t1, 0x04276221 429400558b5Swdenk sw t1, 0(t0) 430400558b5Swdenk 431400558b5Swdenk li t0, MEM_SDADDR0 432400558b5Swdenk li t1, 0xe21003f0 433400558b5Swdenk sw t1, 0(t0) 434400558b5Swdenk 435400558b5Swdenk li t0, MEM_SDADDR1 436400558b5Swdenk li t1, 0xe21043f0 437400558b5Swdenk sw t1, 0(t0) 438400558b5Swdenk 439400558b5Swdenk li t0, MEM_SDADDR2 440400558b5Swdenk li t1, 0xe21083f0 441400558b5Swdenk sw t1, 0(t0) 442400558b5Swdenk 443400558b5Swdenk sync 444400558b5Swdenk 445400558b5Swdenk li t0, MEM_SDCONFIGA 446400558b5Swdenk li t1, 0x9030060a /* Program refresh - disabled */ 447400558b5Swdenk sw t1, 0(t0) 448400558b5Swdenk sync 449400558b5Swdenk 450400558b5Swdenk li t0, MEM_SDCONFIGB 451400558b5Swdenk li t1, 0x00028000 452400558b5Swdenk sw t1, 0(t0) 453400558b5Swdenk sync 454400558b5Swdenk 455400558b5Swdenk li t0, MEM_SDPRECMD /* Precharge all */ 456400558b5Swdenk li t1, 0 457400558b5Swdenk sw t1, 0(t0) 458400558b5Swdenk sync 459400558b5Swdenk 460400558b5Swdenk li t0, MEM_SDWRMD0 461400558b5Swdenk li t1, 0x40000000 462400558b5Swdenk sw t1, 0(t0) 463400558b5Swdenk sync 464400558b5Swdenk 465400558b5Swdenk li t0, MEM_SDWRMD1 466400558b5Swdenk li t1, 0x40000000 467400558b5Swdenk sw t1, 0(t0) 468400558b5Swdenk sync 469400558b5Swdenk 470400558b5Swdenk li t0, MEM_SDWRMD2 471400558b5Swdenk li t1, 0x40000000 472400558b5Swdenk sw t1, 0(t0) 473400558b5Swdenk sync 474400558b5Swdenk 475400558b5Swdenk li t0, MEM_SDWRMD0 476400558b5Swdenk li t1, 0x00000063 477400558b5Swdenk sw t1, 0(t0) 478400558b5Swdenk sync 479400558b5Swdenk 480400558b5Swdenk li t0, MEM_SDWRMD1 481400558b5Swdenk li t1, 0x00000063 482400558b5Swdenk sw t1, 0(t0) 483400558b5Swdenk sync 484400558b5Swdenk 485400558b5Swdenk li t0, MEM_SDWRMD2 486400558b5Swdenk li t1, 0x00000063 487400558b5Swdenk sw t1, 0(t0) 488400558b5Swdenk sync 489400558b5Swdenk 490400558b5Swdenk li t0, MEM_SDPRECMD /* Precharge all */ 491400558b5Swdenk sw zero, 0(t0) 492400558b5Swdenk sync 493400558b5Swdenk 494400558b5Swdenk /* Issue 2 autoref */ 495400558b5Swdenk li t0, MEM_SDAUTOREF 496400558b5Swdenk sw zero, 0(t0) 497400558b5Swdenk sync 498400558b5Swdenk 499400558b5Swdenk li t0, MEM_SDAUTOREF 500400558b5Swdenk sw zero, 0(t0) 501400558b5Swdenk sync 502400558b5Swdenk 503400558b5Swdenk /* Enable refresh */ 504400558b5Swdenk li t0, MEM_SDCONFIGA 505400558b5Swdenk li t1, 0x9830060a /* Program refresh - enabled */ 506400558b5Swdenk sw t1, 0(t0) 507400558b5Swdenk sync 508400558b5Swdenk 509400558b5Swdenk#else /* CONFIG_DBAU1550 */ 510400558b5Swdenk/* SDCS 0,1 SDRAM */ 511400558b5Swdenk li t0, MEM_SDMODE0 512400558b5Swdenk li t1, 0x005522AA 513400558b5Swdenk sw t1, 0(t0) 514400558b5Swdenk 515400558b5Swdenk li t0, MEM_SDMODE1 516400558b5Swdenk li t1, 0x005522AA 517400558b5Swdenk sw t1, 0(t0) 518400558b5Swdenk 519400558b5Swdenk li t0, MEM_SDMODE2 520400558b5Swdenk li t1, 0x00000000 521400558b5Swdenk sw t1, 0(t0) 522400558b5Swdenk 523400558b5Swdenk li t0, MEM_SDADDR0 524400558b5Swdenk li t1, 0x001003F8 525400558b5Swdenk sw t1, 0(t0) 526400558b5Swdenk 527400558b5Swdenk 528400558b5Swdenk li t0, MEM_SDADDR1 529400558b5Swdenk li t1, 0x001023F8 530400558b5Swdenk sw t1, 0(t0) 531400558b5Swdenk 532400558b5Swdenk li t0, MEM_SDADDR2 533400558b5Swdenk li t1, 0x00000000 534400558b5Swdenk sw t1, 0(t0) 535400558b5Swdenk 536400558b5Swdenk sync 537400558b5Swdenk 538400558b5Swdenk li t0, MEM_SDREFCFG 539400558b5Swdenk li t1, 0x64000C24 /* Disable */ 540400558b5Swdenk sw t1, 0(t0) 541400558b5Swdenk sync 542400558b5Swdenk 543400558b5Swdenk li t0, MEM_SDPRECMD 544400558b5Swdenk sw zero, 0(t0) 545400558b5Swdenk sync 546400558b5Swdenk 547400558b5Swdenk li t0, MEM_SDAUTOREF 548400558b5Swdenk sw zero, 0(t0) 549400558b5Swdenk sync 550400558b5Swdenk sw zero, 0(t0) 551400558b5Swdenk sync 552400558b5Swdenk 553400558b5Swdenk li t0, MEM_SDREFCFG 554400558b5Swdenk li t1, 0x66000C24 /* Enable */ 555400558b5Swdenk sw t1, 0(t0) 556400558b5Swdenk sync 557400558b5Swdenk 558400558b5Swdenk li t0, MEM_SDWRMD0 559400558b5Swdenk li t1, 0x00000033 560400558b5Swdenk sw t1, 0(t0) 561400558b5Swdenk sync 562400558b5Swdenk 563400558b5Swdenk li t0, MEM_SDWRMD1 564400558b5Swdenk li t1, 0x00000033 565400558b5Swdenk sw t1, 0(t0) 566400558b5Swdenk sync 567400558b5Swdenk 568400558b5Swdenk#endif /* CONFIG_DBAU1550 */ 569400558b5Swdenk /* wait 1mS after setup */ 570400558b5Swdenk li t1, MEM_1MS 571400558b5Swdenk1: add t1, -1 572400558b5Swdenk bne t1, zero, 1b 573400558b5Swdenk nop 574400558b5Swdenk 575400558b5Swdenk li t0, SYS_PINFUNC 576400558b5Swdenk li t1, 0x00008080 577400558b5Swdenk sw t1, 0(t0) 578400558b5Swdenk 579400558b5Swdenk li t0, SYS_TRIOUTCLR 580400558b5Swdenk li t1, 0x00001FFF 581400558b5Swdenk sw t1, 0(t0) 582400558b5Swdenk 583400558b5Swdenk li t0, SYS_OUTPUTCLR 584400558b5Swdenk li t1, 0x00008000 585400558b5Swdenk sw t1, 0(t0) 586400558b5Swdenk sync 587400558b5Swdenk 58843c50925SShinya Kuribayashi jr ra 589400558b5Swdenk nop 590