xref: /rk3399_rockchip-uboot/board/pb1x00/lowlevel_init.S (revision b57843e68804c2d53d2cff2b8b2238e37b388faa)
12e4a6e36SShinya Kuribayashi/* Memory sub-system initialization code */
22e4a6e36SShinya Kuribayashi
32e4a6e36SShinya Kuribayashi#include <config.h>
4*76ada5f8SDaniel Schwierzeck#include <mach/au1x00.h>
52e4a6e36SShinya Kuribayashi#include <asm/regdef.h>
62e4a6e36SShinya Kuribayashi#include <asm/mipsregs.h>
72e4a6e36SShinya Kuribayashi
82e4a6e36SShinya Kuribayashi#define AU1500_SYS_ADDR		0xB1900000
92e4a6e36SShinya Kuribayashi#define sys_endian		0x0038
102e4a6e36SShinya Kuribayashi#define CP0_Config0		$16
112e4a6e36SShinya Kuribayashi#define MEM_1MS			((396000000/1000000) * 1000)
122e4a6e36SShinya Kuribayashi
132e4a6e36SShinya Kuribayashi	.text
142e4a6e36SShinya Kuribayashi	.set noreorder
152e4a6e36SShinya Kuribayashi	.set mips32
162e4a6e36SShinya Kuribayashi
172e4a6e36SShinya Kuribayashi	.globl	lowlevel_init
182e4a6e36SShinya Kuribayashilowlevel_init:
192e4a6e36SShinya Kuribayashi	/*
202e4a6e36SShinya Kuribayashi	 * Step 1) Establish CPU endian mode.
212e4a6e36SShinya Kuribayashi	 * NOTE: A fair amount of code is necessary on the Pb1000 to
222e4a6e36SShinya Kuribayashi	 * obtain the value of Switch S8.1 which is used to determine
232e4a6e36SShinya Kuribayashi	 * endian at run-time.
242e4a6e36SShinya Kuribayashi	 */
252e4a6e36SShinya Kuribayashi
262e4a6e36SShinya Kuribayashi	/* RCE1 */
272e4a6e36SShinya Kuribayashi	li		t0, MEM_STCFG1
282e4a6e36SShinya Kuribayashi	li		t1, 0x00000083
292e4a6e36SShinya Kuribayashi	sw		t1, 0(t0)
302e4a6e36SShinya Kuribayashi
312e4a6e36SShinya Kuribayashi	li		t0, MEM_STTIME1
322e4a6e36SShinya Kuribayashi	li		t1, 0x33030A10
332e4a6e36SShinya Kuribayashi	sw		t1, 0(t0)
342e4a6e36SShinya Kuribayashi
352e4a6e36SShinya Kuribayashi	li		t0, MEM_STADDR1
362e4a6e36SShinya Kuribayashi	li		t1, 0x11803E40
372e4a6e36SShinya Kuribayashi	sw		t1, 0(t0)
382e4a6e36SShinya Kuribayashi
392e4a6e36SShinya Kuribayashi	/* Set DSTRB bits so switch will read correctly */
402e4a6e36SShinya Kuribayashi	li		t1, 0xBE00000C
412e4a6e36SShinya Kuribayashi	lw		t2, 0(t1)
422e4a6e36SShinya Kuribayashi	or		t2, t2, 0x00000300
432e4a6e36SShinya Kuribayashi	sw		t2, 0(t1)
442e4a6e36SShinya Kuribayashi
452e4a6e36SShinya Kuribayashi	/* Check switch setting */
462e4a6e36SShinya Kuribayashi	li		t1, 0xBE000014
472e4a6e36SShinya Kuribayashi	lw		t2, 0(t1)
482e4a6e36SShinya Kuribayashi	and		t2, t2, 0x00000100
492e4a6e36SShinya Kuribayashi	bne		t2, zero, big_endian
502e4a6e36SShinya Kuribayashi	nop
512e4a6e36SShinya Kuribayashi
522e4a6e36SShinya Kuribayashilittle_endian:
532e4a6e36SShinya Kuribayashi
542e4a6e36SShinya Kuribayashi	/* Change Au1 core to little endian */
552e4a6e36SShinya Kuribayashi	li	t0, AU1500_SYS_ADDR
562e4a6e36SShinya Kuribayashi	li	t1, 1
572e4a6e36SShinya Kuribayashi	sw	t1, sys_endian(t0)
582e4a6e36SShinya Kuribayashi	mfc0	t2, CP0_CONFIG
592e4a6e36SShinya Kuribayashi	mtc0	t2, CP0_CONFIG
602e4a6e36SShinya Kuribayashi	nop
612e4a6e36SShinya Kuribayashi	nop
622e4a6e36SShinya Kuribayashi
632e4a6e36SShinya Kuribayashi	/* Big Endian is default so nothing to do but fall through */
642e4a6e36SShinya Kuribayashi
652e4a6e36SShinya Kuribayashibig_endian:
662e4a6e36SShinya Kuribayashi
672e4a6e36SShinya Kuribayashi	/*
682e4a6e36SShinya Kuribayashi	 * Step 2) Establish Status Register
692e4a6e36SShinya Kuribayashi	 * (set BEV, clear ERL, clear EXL, clear IE)
702e4a6e36SShinya Kuribayashi	 */
712e4a6e36SShinya Kuribayashi	li	t1, 0x00400000
722e4a6e36SShinya Kuribayashi	mtc0	t1, CP0_STATUS
732e4a6e36SShinya Kuribayashi
742e4a6e36SShinya Kuribayashi	/*
752e4a6e36SShinya Kuribayashi	 * Step 3) Establish CP0 Config0
762e4a6e36SShinya Kuribayashi	 * (set OD, set K0=3)
772e4a6e36SShinya Kuribayashi	 */
782e4a6e36SShinya Kuribayashi	li	t1, 0x00080003
792e4a6e36SShinya Kuribayashi	mtc0	t1, CP0_CONFIG
802e4a6e36SShinya Kuribayashi
812e4a6e36SShinya Kuribayashi	/*
822e4a6e36SShinya Kuribayashi	 * Step 4) Disable Watchpoint facilities
832e4a6e36SShinya Kuribayashi	 */
842e4a6e36SShinya Kuribayashi	li t1, 0x00000000
852e4a6e36SShinya Kuribayashi	mtc0	t1, CP0_WATCHLO
862e4a6e36SShinya Kuribayashi	mtc0	t1, CP0_IWATCHLO
872e4a6e36SShinya Kuribayashi	/*
882e4a6e36SShinya Kuribayashi	 * Step 5) Disable the performance counters
892e4a6e36SShinya Kuribayashi	 */
902e4a6e36SShinya Kuribayashi	mtc0	zero, CP0_PERFORMANCE
912e4a6e36SShinya Kuribayashi	nop
922e4a6e36SShinya Kuribayashi
932e4a6e36SShinya Kuribayashi	/*
942e4a6e36SShinya Kuribayashi	 * Step 6) Establish EJTAG Debug register
952e4a6e36SShinya Kuribayashi	 */
962e4a6e36SShinya Kuribayashi	mtc0	zero, CP0_DEBUG
972e4a6e36SShinya Kuribayashi	nop
982e4a6e36SShinya Kuribayashi
992e4a6e36SShinya Kuribayashi	/*
1002e4a6e36SShinya Kuribayashi	 * Step 7) Establish Cause
1012e4a6e36SShinya Kuribayashi	 * (set IV bit)
1022e4a6e36SShinya Kuribayashi	 */
1032e4a6e36SShinya Kuribayashi	li	t1, 0x00800000
1042e4a6e36SShinya Kuribayashi	mtc0	t1, CP0_CAUSE
1052e4a6e36SShinya Kuribayashi
1062e4a6e36SShinya Kuribayashi	/* Establish Wired (and Random) */
1072e4a6e36SShinya Kuribayashi	mtc0	zero, CP0_WIRED
1082e4a6e36SShinya Kuribayashi	nop
1092e4a6e36SShinya Kuribayashi
1102e4a6e36SShinya Kuribayashi	/* First setup pll:s to make serial work ok */
1112e4a6e36SShinya Kuribayashi	/* We have a 12 MHz crystal */
1122e4a6e36SShinya Kuribayashi	li	t0, SYS_CPUPLL
1132e4a6e36SShinya Kuribayashi	li	t1, 0x21  /* 396 MHz */
1142e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1152e4a6e36SShinya Kuribayashi	sync
1162e4a6e36SShinya Kuribayashi	nop
1172e4a6e36SShinya Kuribayashi	nop
1182e4a6e36SShinya Kuribayashi
1192e4a6e36SShinya Kuribayashi	/* wait 1mS for clocks to settle */
1202e4a6e36SShinya Kuribayashi	li	t1, MEM_1MS
1212e4a6e36SShinya Kuribayashi1:	add	t1, -1
1222e4a6e36SShinya Kuribayashi	bne	t1, zero, 1b
1232e4a6e36SShinya Kuribayashi	nop
1242e4a6e36SShinya Kuribayashi	/* Setup AUX PLL */
1252e4a6e36SShinya Kuribayashi	li	t0, SYS_AUXPLL
1262e4a6e36SShinya Kuribayashi	li	t1, 8 /* 96 MHz */
1272e4a6e36SShinya Kuribayashi	sw	t1, 0(t0) /* aux pll */
1282e4a6e36SShinya Kuribayashi	sync
1292e4a6e36SShinya Kuribayashi
1302e4a6e36SShinya Kuribayashi	/*  Static memory controller */
1312e4a6e36SShinya Kuribayashi
1322e4a6e36SShinya Kuribayashi	/* RCE0 8MB AMD29D323 Flash */
1332e4a6e36SShinya Kuribayashi	li	t0, MEM_STCFG0
1342e4a6e36SShinya Kuribayashi	li	t1, 0x00001403
1352e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1362e4a6e36SShinya Kuribayashi
1372e4a6e36SShinya Kuribayashi	li	t0, MEM_STTIME0
1382e4a6e36SShinya Kuribayashi	li	t1, 0xFFFFFFDD
1392e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1402e4a6e36SShinya Kuribayashi
1412e4a6e36SShinya Kuribayashi	li	t0, MEM_STADDR0
1422e4a6e36SShinya Kuribayashi	li	t1, 0x11F83FE0
1432e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1442e4a6e36SShinya Kuribayashi
1452e4a6e36SShinya Kuribayashi	/* RCE1 CPLD Board Logic */
1462e4a6e36SShinya Kuribayashi	li	t0, MEM_STCFG1
1472e4a6e36SShinya Kuribayashi	li	t1, 0x00000083
1482e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1492e4a6e36SShinya Kuribayashi
1502e4a6e36SShinya Kuribayashi	li	t0, MEM_STTIME1
1512e4a6e36SShinya Kuribayashi	li	t1, 0x33030A10
1522e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1532e4a6e36SShinya Kuribayashi
1542e4a6e36SShinya Kuribayashi	li	t0, MEM_STADDR1
1552e4a6e36SShinya Kuribayashi	li	t1, 0x11803E40
1562e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1572e4a6e36SShinya Kuribayashi
1582e4a6e36SShinya Kuribayashi	/* RCE2 CPLD Board Logic */
1592e4a6e36SShinya Kuribayashi	li	t0, MEM_STCFG2
1602e4a6e36SShinya Kuribayashi	li	t1, 0x00000004
1612e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1622e4a6e36SShinya Kuribayashi
1632e4a6e36SShinya Kuribayashi	li	t0, MEM_STTIME2
1642e4a6e36SShinya Kuribayashi	li	t1, 0x08061908
1652e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1662e4a6e36SShinya Kuribayashi
1672e4a6e36SShinya Kuribayashi	li	t0, MEM_STADDR2
1682e4a6e36SShinya Kuribayashi	li	t1, 0x12A03FC0
1692e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1702e4a6e36SShinya Kuribayashi
1712e4a6e36SShinya Kuribayashi	/* RCE3 PCMCIA 250ns */
1722e4a6e36SShinya Kuribayashi	li	t0, MEM_STCFG3
1732e4a6e36SShinya Kuribayashi	li	t1, 0x00000002
1742e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1752e4a6e36SShinya Kuribayashi
1762e4a6e36SShinya Kuribayashi	li	t0, MEM_STTIME3
1772e4a6e36SShinya Kuribayashi	li	t1, 0x280E3E07
1782e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1792e4a6e36SShinya Kuribayashi
1802e4a6e36SShinya Kuribayashi	li	t0, MEM_STADDR3
1812e4a6e36SShinya Kuribayashi	li	t1, 0x10000000
1822e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1832e4a6e36SShinya Kuribayashi
1842e4a6e36SShinya Kuribayashi	sync
1852e4a6e36SShinya Kuribayashi
1862e4a6e36SShinya Kuribayashi	/* Set peripherals to a known state */
1872e4a6e36SShinya Kuribayashi	li	t0, IC0_CFG0CLR
1882e4a6e36SShinya Kuribayashi	li	t1, 0xFFFFFFFF
1892e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1902e4a6e36SShinya Kuribayashi
1912e4a6e36SShinya Kuribayashi	li	t0, IC0_CFG0CLR
1922e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1932e4a6e36SShinya Kuribayashi
1942e4a6e36SShinya Kuribayashi	li	t0, IC0_CFG1CLR
1952e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1962e4a6e36SShinya Kuribayashi
1972e4a6e36SShinya Kuribayashi	li	t0, IC0_CFG2CLR
1982e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
1992e4a6e36SShinya Kuribayashi
2002e4a6e36SShinya Kuribayashi	li	t0, IC0_SRCSET
2012e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2022e4a6e36SShinya Kuribayashi
2032e4a6e36SShinya Kuribayashi	li	t0, IC0_ASSIGNSET
2042e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2052e4a6e36SShinya Kuribayashi
2062e4a6e36SShinya Kuribayashi	li	t0, IC0_WAKECLR
2072e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2082e4a6e36SShinya Kuribayashi
2092e4a6e36SShinya Kuribayashi	li	t0, IC0_RISINGCLR
2102e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2112e4a6e36SShinya Kuribayashi
2122e4a6e36SShinya Kuribayashi	li	t0, IC0_FALLINGCLR
2132e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2142e4a6e36SShinya Kuribayashi
2152e4a6e36SShinya Kuribayashi	li	t0, IC0_TESTBIT
2162e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2172e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2182e4a6e36SShinya Kuribayashi	sync
2192e4a6e36SShinya Kuribayashi
2202e4a6e36SShinya Kuribayashi	li	t0, IC1_CFG0CLR
2212e4a6e36SShinya Kuribayashi	li	t1, 0xFFFFFFFF
2222e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2232e4a6e36SShinya Kuribayashi
2242e4a6e36SShinya Kuribayashi	li	t0, IC1_CFG0CLR
2252e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2262e4a6e36SShinya Kuribayashi
2272e4a6e36SShinya Kuribayashi	li	t0, IC1_CFG1CLR
2282e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2292e4a6e36SShinya Kuribayashi
2302e4a6e36SShinya Kuribayashi	li	t0, IC1_CFG2CLR
2312e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2322e4a6e36SShinya Kuribayashi
2332e4a6e36SShinya Kuribayashi	li	t0, IC1_SRCSET
2342e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2352e4a6e36SShinya Kuribayashi
2362e4a6e36SShinya Kuribayashi	li	t0, IC1_ASSIGNSET
2372e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2382e4a6e36SShinya Kuribayashi
2392e4a6e36SShinya Kuribayashi	li	t0, IC1_WAKECLR
2402e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2412e4a6e36SShinya Kuribayashi
2422e4a6e36SShinya Kuribayashi	li	t0, IC1_RISINGCLR
2432e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2442e4a6e36SShinya Kuribayashi
2452e4a6e36SShinya Kuribayashi	li	t0, IC1_FALLINGCLR
2462e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2472e4a6e36SShinya Kuribayashi
2482e4a6e36SShinya Kuribayashi	li	t0, IC1_TESTBIT
2492e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2502e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2512e4a6e36SShinya Kuribayashi	sync
2522e4a6e36SShinya Kuribayashi
2532e4a6e36SShinya Kuribayashi	li	t0, SYS_FREQCTRL0
2542e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2552e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2562e4a6e36SShinya Kuribayashi
2572e4a6e36SShinya Kuribayashi	li	t0, SYS_FREQCTRL1
2582e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2592e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2602e4a6e36SShinya Kuribayashi
2612e4a6e36SShinya Kuribayashi	li	t0, SYS_CLKSRC
2622e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2632e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2642e4a6e36SShinya Kuribayashi
2652e4a6e36SShinya Kuribayashi	li	t0, SYS_PININPUTEN
2662e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2672e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2682e4a6e36SShinya Kuribayashi	sync
2692e4a6e36SShinya Kuribayashi
2702e4a6e36SShinya Kuribayashi	li	t0, 0xB1100100
2712e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2722e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2732e4a6e36SShinya Kuribayashi
2742e4a6e36SShinya Kuribayashi	li	t0, 0xB1400100
2752e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2762e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2772e4a6e36SShinya Kuribayashi
2782e4a6e36SShinya Kuribayashi
2792e4a6e36SShinya Kuribayashi	li	t0, SYS_WAKEMSK
2802e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2812e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2822e4a6e36SShinya Kuribayashi
2832e4a6e36SShinya Kuribayashi	li	t0, SYS_WAKESRC
2842e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
2852e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
2862e4a6e36SShinya Kuribayashi
2872e4a6e36SShinya Kuribayashi	/* wait 1mS before setup */
2882e4a6e36SShinya Kuribayashi	li	t1, MEM_1MS
2892e4a6e36SShinya Kuribayashi1:	add	t1, -1
2902e4a6e36SShinya Kuribayashi	bne	t1, zero, 1b
2912e4a6e36SShinya Kuribayashi	nop
2922e4a6e36SShinya Kuribayashi
2932e4a6e36SShinya Kuribayashi	/*
2942e4a6e36SShinya Kuribayashi	 * Skip memory setup if we are running from memory
2952e4a6e36SShinya Kuribayashi	 */
2962e4a6e36SShinya Kuribayashi	li		t0, 0x90000000
2972e4a6e36SShinya Kuribayashi	sub		t0, ra, t0
2982e4a6e36SShinya Kuribayashi	bltz		t0, skip_memsetup
2992e4a6e36SShinya Kuribayashi	nop
3002e4a6e36SShinya Kuribayashi
3012e4a6e36SShinya Kuribayashi	/*
3022e4a6e36SShinya Kuribayashi	 * SDCS0 - Not used, for SMROM
3032e4a6e36SShinya Kuribayashi	 * SDCS1 - 32MB Micron 48LCBM16A2
3042e4a6e36SShinya Kuribayashi	 * SDCS2 - 32MB Micron 48LCBM16A2
3052e4a6e36SShinya Kuribayashi	 */
3062e4a6e36SShinya Kuribayashi	li	t0, MEM_SDMODE0
3072e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
3082e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3092e4a6e36SShinya Kuribayashi
3102e4a6e36SShinya Kuribayashi	li	t0, MEM_SDMODE1
3112e4a6e36SShinya Kuribayashi	li	t1, 0x00552229
3122e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3132e4a6e36SShinya Kuribayashi
3142e4a6e36SShinya Kuribayashi	li	t0, MEM_SDMODE2
3152e4a6e36SShinya Kuribayashi	li	t1, 0x00552229
3162e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3172e4a6e36SShinya Kuribayashi
3182e4a6e36SShinya Kuribayashi	li	t0, MEM_SDADDR0
3192e4a6e36SShinya Kuribayashi	li	t1, 0x00000000
3202e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3212e4a6e36SShinya Kuribayashi
3222e4a6e36SShinya Kuribayashi	li	t0, MEM_SDADDR1
3232e4a6e36SShinya Kuribayashi	li	t1, 0x001003F8
3242e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3252e4a6e36SShinya Kuribayashi
3262e4a6e36SShinya Kuribayashi	li	t0, MEM_SDADDR2
3272e4a6e36SShinya Kuribayashi	li	t1, 0x001023F8
3282e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3292e4a6e36SShinya Kuribayashi
3302e4a6e36SShinya Kuribayashi	sync
3312e4a6e36SShinya Kuribayashi
3322e4a6e36SShinya Kuribayashi	li	t0, MEM_SDREFCFG
3332e4a6e36SShinya Kuribayashi	li	t1, 0x74000c30 /* Disable */
3342e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3352e4a6e36SShinya Kuribayashi	sync
3362e4a6e36SShinya Kuribayashi
3372e4a6e36SShinya Kuribayashi	li	t0, MEM_SDPRECMD
3382e4a6e36SShinya Kuribayashi	sw	zero, 0(t0)
3392e4a6e36SShinya Kuribayashi	sync
3402e4a6e36SShinya Kuribayashi
3412e4a6e36SShinya Kuribayashi	li	t0, MEM_SDAUTOREF
3422e4a6e36SShinya Kuribayashi	sw	zero, 0(t0)
3432e4a6e36SShinya Kuribayashi	sync
3442e4a6e36SShinya Kuribayashi	sw	zero, 0(t0)
3452e4a6e36SShinya Kuribayashi	sync
3462e4a6e36SShinya Kuribayashi
3472e4a6e36SShinya Kuribayashi	li	t0, MEM_SDREFCFG
3482e4a6e36SShinya Kuribayashi	li	t1, 0x76000c30 /* Enable */
3492e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3502e4a6e36SShinya Kuribayashi	sync
3512e4a6e36SShinya Kuribayashi
3522e4a6e36SShinya Kuribayashi	li	t0, MEM_SDWRMD0
3532e4a6e36SShinya Kuribayashi	li	t1, 0x00000023
3542e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3552e4a6e36SShinya Kuribayashi	sync
3562e4a6e36SShinya Kuribayashi
3572e4a6e36SShinya Kuribayashi	li	t0, MEM_SDWRMD1
3582e4a6e36SShinya Kuribayashi	li	t1, 0x00000023
3592e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3602e4a6e36SShinya Kuribayashi	sync
3612e4a6e36SShinya Kuribayashi
3622e4a6e36SShinya Kuribayashi	li	t0, MEM_SDWRMD2
3632e4a6e36SShinya Kuribayashi	li	t1, 0x00000023
3642e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3652e4a6e36SShinya Kuribayashi	sync
3662e4a6e36SShinya Kuribayashi
3672e4a6e36SShinya Kuribayashi	/* wait 1mS after setup */
3682e4a6e36SShinya Kuribayashi	li	t1, MEM_1MS
3692e4a6e36SShinya Kuribayashi1:	add	t1, -1
3702e4a6e36SShinya Kuribayashi	bne	t1, zero, 1b
3712e4a6e36SShinya Kuribayashi	nop
3722e4a6e36SShinya Kuribayashi
3732e4a6e36SShinya Kuribayashiskip_memsetup:
3742e4a6e36SShinya Kuribayashi
3752e4a6e36SShinya Kuribayashi	li	t0, SYS_PINFUNC
3762e4a6e36SShinya Kuribayashi	li	t1, 0/*0x00008080*/
3772e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3782e4a6e36SShinya Kuribayashi
3792e4a6e36SShinya Kuribayashi	/*
3802e4a6e36SShinya Kuribayashi	li	t0, SYS_TRIOUTCLR
3812e4a6e36SShinya Kuribayashi	li	t1, 0x00001FFF
3822e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3832e4a6e36SShinya Kuribayashi
3842e4a6e36SShinya Kuribayashi	li	t0, SYS_OUTPUTCLR
3852e4a6e36SShinya Kuribayashi	li	t1, 0x00008000
3862e4a6e36SShinya Kuribayashi	sw	t1, 0(t0)
3872e4a6e36SShinya Kuribayashi	*/
3882e4a6e36SShinya Kuribayashi	sync
3892e4a6e36SShinya Kuribayashi
39043c50925SShinya Kuribayashi	jr	ra
3912e4a6e36SShinya Kuribayashi	nop
392