xref: /rk3399_rockchip-uboot/board/renesas/sh7752evb/lowlevel_init.S (revision 7682a99826a624d3764656b5bb31f88e2f8b235b)
11a2621baSYoshihiro Shimoda/*
21a2621baSYoshihiro Shimoda * Copyright (C) 2012  Renesas Solutions Corp.
31a2621baSYoshihiro Shimoda *
4*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
51a2621baSYoshihiro Shimoda */
61a2621baSYoshihiro Shimoda
71a2621baSYoshihiro Shimoda#include <config.h>
81a2621baSYoshihiro Shimoda#include <asm/processor.h>
91a2621baSYoshihiro Shimoda#include <asm/macro.h>
101a2621baSYoshihiro Shimoda
111a2621baSYoshihiro Shimoda.macro	or32, addr, data
121a2621baSYoshihiro Shimoda	mov.l \addr, r1
131a2621baSYoshihiro Shimoda	mov.l \data, r0
141a2621baSYoshihiro Shimoda	mov.l @r1, r2
151a2621baSYoshihiro Shimoda	or    r2, r0
161a2621baSYoshihiro Shimoda	mov.l r0, @r1
171a2621baSYoshihiro Shimoda.endm
181a2621baSYoshihiro Shimoda
191a2621baSYoshihiro Shimoda.macro	wait_DBCMD
201a2621baSYoshihiro Shimoda	mov.l	DBWAIT_A, r0
211a2621baSYoshihiro Shimoda	mov.l	@r0, r1
221a2621baSYoshihiro Shimoda.endm
231a2621baSYoshihiro Shimoda
241a2621baSYoshihiro Shimoda	.global lowlevel_init
251a2621baSYoshihiro Shimoda	.section	.spiboot1.text
261a2621baSYoshihiro Shimoda	.align  2
271a2621baSYoshihiro Shimoda
281a2621baSYoshihiro Shimodalowlevel_init:
291a2621baSYoshihiro Shimoda	/*------- GPIO -------*/
301a2621baSYoshihiro Shimoda	write16 PDCR_A,	PDCR_D		! SPI0
311a2621baSYoshihiro Shimoda	write16 PGCR_A,	PGCR_D		! SPI0, GETHER MDIO gate(PTG1)
321a2621baSYoshihiro Shimoda	write16 PJCR_A,	PJCR_D		! SCIF4
331a2621baSYoshihiro Shimoda	write16 PTCR_A,	PTCR_D		! STATUS
341a2621baSYoshihiro Shimoda	write16 PSEL1_A, PSEL1_D	! SPI0
351a2621baSYoshihiro Shimoda	write16 PSEL2_A, PSEL2_D	! SPI0
361a2621baSYoshihiro Shimoda	write16 PSEL5_A, PSEL5_D	! STATUS
371a2621baSYoshihiro Shimoda
381a2621baSYoshihiro Shimoda	bra	exit_gpio
391a2621baSYoshihiro Shimoda	nop
401a2621baSYoshihiro Shimoda
411a2621baSYoshihiro Shimoda	.align	2
421a2621baSYoshihiro Shimoda
431a2621baSYoshihiro Shimoda/*------- GPIO -------*/
441a2621baSYoshihiro ShimodaPDCR_A:		.long	0xffec0006
451a2621baSYoshihiro ShimodaPGCR_A:		.long	0xffec000c
461a2621baSYoshihiro ShimodaPJCR_A:		.long	0xffec0012
471a2621baSYoshihiro ShimodaPTCR_A:		.long	0xffec0026
481a2621baSYoshihiro ShimodaPSEL1_A:	.long	0xffec0072
491a2621baSYoshihiro ShimodaPSEL2_A:	.long	0xffec0074
501a2621baSYoshihiro ShimodaPSEL5_A:	.long	0xffec007a
511a2621baSYoshihiro Shimoda
521a2621baSYoshihiro ShimodaPDCR_D:		.long	0x0000
531a2621baSYoshihiro ShimodaPGCR_D:		.long	0x0004
541a2621baSYoshihiro ShimodaPJCR_D:		.long	0x0000
551a2621baSYoshihiro ShimodaPTCR_D:		.long	0x0000
561a2621baSYoshihiro ShimodaPSEL1_D:	.long	0x0000
571a2621baSYoshihiro ShimodaPSEL2_D:	.long	0x3000
581a2621baSYoshihiro ShimodaPSEL5_D:	.long	0x0ffc
591a2621baSYoshihiro Shimoda
601a2621baSYoshihiro Shimoda	.align	2
611a2621baSYoshihiro Shimoda
621a2621baSYoshihiro Shimodaexit_gpio:
631a2621baSYoshihiro Shimoda	mov	#0, r14
641a2621baSYoshihiro Shimoda	mova	2f, r0
651a2621baSYoshihiro Shimoda	mov.l	PC_MASK, r1
661a2621baSYoshihiro Shimoda	tst	r0, r1
671a2621baSYoshihiro Shimoda	bf	2f
681a2621baSYoshihiro Shimoda
691a2621baSYoshihiro Shimoda	bra	exit_pmb
701a2621baSYoshihiro Shimoda	nop
711a2621baSYoshihiro Shimoda
721a2621baSYoshihiro Shimoda	.align	2
731a2621baSYoshihiro Shimoda
741a2621baSYoshihiro Shimoda/* If CPU runs on SDRAM (PC=0x5???????) or not. */
751a2621baSYoshihiro ShimodaPC_MASK:	.long	0x20000000
761a2621baSYoshihiro Shimoda
771a2621baSYoshihiro Shimoda2:
781a2621baSYoshihiro Shimoda	mov	#1, r14
791a2621baSYoshihiro Shimoda
801a2621baSYoshihiro Shimoda	mov.l	EXPEVT_A, r0
811a2621baSYoshihiro Shimoda	mov.l	@r0, r0
821a2621baSYoshihiro Shimoda	mov.l	EXPEVT_POWER_ON_RESET, r1
831a2621baSYoshihiro Shimoda	cmp/eq	r0, r1
841a2621baSYoshihiro Shimoda	bt	1f
851a2621baSYoshihiro Shimoda
861a2621baSYoshihiro Shimoda	/*
871a2621baSYoshihiro Shimoda	 * If EXPEVT value is manual reset or tlb multipul-hit,
881a2621baSYoshihiro Shimoda	 * initialization of DDR3IF is not necessary.
891a2621baSYoshihiro Shimoda	 */
901a2621baSYoshihiro Shimoda	bra	exit_ddr
911a2621baSYoshihiro Shimoda	nop
921a2621baSYoshihiro Shimoda
931a2621baSYoshihiro Shimoda1:
941a2621baSYoshihiro Shimoda	/*------- Reset -------*/
951a2621baSYoshihiro Shimoda	write32 MRSTCR0_A, MRSTCR0_D
961a2621baSYoshihiro Shimoda	write32 MRSTCR1_A, MRSTCR1_D
971a2621baSYoshihiro Shimoda
981a2621baSYoshihiro Shimoda	/* For Core Reset */
991a2621baSYoshihiro Shimoda	mov.l	DBACEN_A, r0
1001a2621baSYoshihiro Shimoda	mov.l	@r0, r0
1011a2621baSYoshihiro Shimoda	cmp/eq	#0, r0
1021a2621baSYoshihiro Shimoda	bt	3f
1031a2621baSYoshihiro Shimoda
1041a2621baSYoshihiro Shimoda	/*
1051a2621baSYoshihiro Shimoda	 * If DBACEN == 1(DBSC was already enabled), we have to avoid the
1061a2621baSYoshihiro Shimoda	 * initialization of DDR3-SDRAM.
1071a2621baSYoshihiro Shimoda	 */
1081a2621baSYoshihiro Shimoda	bra	exit_ddr
1091a2621baSYoshihiro Shimoda	nop
1101a2621baSYoshihiro Shimoda
1111a2621baSYoshihiro Shimoda3:
1121a2621baSYoshihiro Shimoda	/*------- DDR3IF -------*/
1131a2621baSYoshihiro Shimoda	/* oscillation stabilization time */
1141a2621baSYoshihiro Shimoda	wait_timer	WAIT_OSC_TIME
1151a2621baSYoshihiro Shimoda
1161a2621baSYoshihiro Shimoda	/* step 3 */
1171a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_RSTL_VAL
1181a2621baSYoshihiro Shimoda	wait_timer	WAIT_30US
1191a2621baSYoshihiro Shimoda
1201a2621baSYoshihiro Shimoda	/* step 4 */
1211a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_PDEN_VAL
1221a2621baSYoshihiro Shimoda
1231a2621baSYoshihiro Shimoda	/* step 5 */
1241a2621baSYoshihiro Shimoda	write32 DBKIND_A, DBKIND_D
1251a2621baSYoshihiro Shimoda
1261a2621baSYoshihiro Shimoda	/* step 6 */
1271a2621baSYoshihiro Shimoda	write32 DBCONF_A, DBCONF_D
1281a2621baSYoshihiro Shimoda	write32 DBTR0_A, DBTR0_D
1291a2621baSYoshihiro Shimoda	write32 DBTR1_A, DBTR1_D
1301a2621baSYoshihiro Shimoda	write32 DBTR2_A, DBTR2_D
1311a2621baSYoshihiro Shimoda	write32 DBTR3_A, DBTR3_D
1321a2621baSYoshihiro Shimoda	write32 DBTR4_A, DBTR4_D
1331a2621baSYoshihiro Shimoda	write32 DBTR5_A, DBTR5_D
1341a2621baSYoshihiro Shimoda	write32 DBTR6_A, DBTR6_D
1351a2621baSYoshihiro Shimoda	write32 DBTR7_A, DBTR7_D
1361a2621baSYoshihiro Shimoda	write32 DBTR8_A, DBTR8_D
1371a2621baSYoshihiro Shimoda	write32 DBTR9_A, DBTR9_D
1381a2621baSYoshihiro Shimoda	write32 DBTR10_A, DBTR10_D
1391a2621baSYoshihiro Shimoda	write32 DBTR11_A, DBTR11_D
1401a2621baSYoshihiro Shimoda	write32 DBTR12_A, DBTR12_D
1411a2621baSYoshihiro Shimoda	write32 DBTR13_A, DBTR13_D
1421a2621baSYoshihiro Shimoda	write32 DBTR14_A, DBTR14_D
1431a2621baSYoshihiro Shimoda	write32 DBTR15_A, DBTR15_D
1441a2621baSYoshihiro Shimoda	write32 DBTR16_A, DBTR16_D
1451a2621baSYoshihiro Shimoda	write32 DBTR17_A, DBTR17_D
1461a2621baSYoshihiro Shimoda	write32 DBTR18_A, DBTR18_D
1471a2621baSYoshihiro Shimoda	write32 DBTR19_A, DBTR19_D
1481a2621baSYoshihiro Shimoda	write32 DBRNK0_A, DBRNK0_D
1491a2621baSYoshihiro Shimoda
1501a2621baSYoshihiro Shimoda	/* step 7 */
1511a2621baSYoshihiro Shimoda	write32 DBPDCNT3_A, DBPDCNT3_D
1521a2621baSYoshihiro Shimoda
1531a2621baSYoshihiro Shimoda	/* step 8 */
1541a2621baSYoshihiro Shimoda	write32 DBPDCNT1_A, DBPDCNT1_D
1551a2621baSYoshihiro Shimoda	write32 DBPDCNT2_A, DBPDCNT2_D
1561a2621baSYoshihiro Shimoda	write32 DBPDLCK_A, DBPDLCK_D
1571a2621baSYoshihiro Shimoda	write32 DBPDRGA_A, DBPDRGA_D
1581a2621baSYoshihiro Shimoda	write32 DBPDRGD_A, DBPDRGD_D
1591a2621baSYoshihiro Shimoda
1601a2621baSYoshihiro Shimoda	/* step 9 */
1611a2621baSYoshihiro Shimoda	wait_timer	WAIT_30US
1621a2621baSYoshihiro Shimoda
1631a2621baSYoshihiro Shimoda	/* step 10 */
1641a2621baSYoshihiro Shimoda	write32 DBPDCNT0_A, DBPDCNT0_D
1651a2621baSYoshihiro Shimoda
1661a2621baSYoshihiro Shimoda	/* step 11 */
1671a2621baSYoshihiro Shimoda	wait_timer	WAIT_30US
1681a2621baSYoshihiro Shimoda	wait_timer	WAIT_30US
1691a2621baSYoshihiro Shimoda
1701a2621baSYoshihiro Shimoda	/* step 12 */
1711a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_WAIT_VAL
1721a2621baSYoshihiro Shimoda	wait_DBCMD
1731a2621baSYoshihiro Shimoda
1741a2621baSYoshihiro Shimoda	/* step 13 */
1751a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_RSTH_VAL
1761a2621baSYoshihiro Shimoda	wait_DBCMD
1771a2621baSYoshihiro Shimoda
1781a2621baSYoshihiro Shimoda	/* step 14 */
1791a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_WAIT_VAL
1801a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_WAIT_VAL
1811a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_WAIT_VAL
1821a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_WAIT_VAL
1831a2621baSYoshihiro Shimoda
1841a2621baSYoshihiro Shimoda	/* step 15 */
1851a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_PDXT_VAL
1861a2621baSYoshihiro Shimoda
1871a2621baSYoshihiro Shimoda	/* step 16 */
1881a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_MRS2_VAL
1891a2621baSYoshihiro Shimoda
1901a2621baSYoshihiro Shimoda	/* step 17 */
1911a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_MRS3_VAL
1921a2621baSYoshihiro Shimoda
1931a2621baSYoshihiro Shimoda	/* step 18 */
1941a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_MRS1_VAL
1951a2621baSYoshihiro Shimoda
1961a2621baSYoshihiro Shimoda	/* step 19 */
1971a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_MRS0_VAL
1981a2621baSYoshihiro Shimoda
1991a2621baSYoshihiro Shimoda	/* step 20 */
2001a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_ZQCL_VAL
2011a2621baSYoshihiro Shimoda
2021a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_REF_VAL
2031a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_REF_VAL
2041a2621baSYoshihiro Shimoda	wait_DBCMD
2051a2621baSYoshihiro Shimoda
2061a2621baSYoshihiro Shimoda	/* step 21 */
2071a2621baSYoshihiro Shimoda	write32 DBADJ0_A, DBADJ0_D
2081a2621baSYoshihiro Shimoda	write32 DBADJ1_A, DBADJ1_D
2091a2621baSYoshihiro Shimoda	write32 DBADJ2_A, DBADJ2_D
2101a2621baSYoshihiro Shimoda
2111a2621baSYoshihiro Shimoda	/* step 22 */
2121a2621baSYoshihiro Shimoda	write32 DBRFCNF0_A, DBRFCNF0_D
2131a2621baSYoshihiro Shimoda	write32 DBRFCNF1_A, DBRFCNF1_D
2141a2621baSYoshihiro Shimoda	write32 DBRFCNF2_A, DBRFCNF2_D
2151a2621baSYoshihiro Shimoda
2161a2621baSYoshihiro Shimoda	/* step 23 */
2171a2621baSYoshihiro Shimoda	write32 DBCALCNF_A, DBCALCNF_D
2181a2621baSYoshihiro Shimoda
2191a2621baSYoshihiro Shimoda	/* step 24 */
2201a2621baSYoshihiro Shimoda	write32 DBRFEN_A, DBRFEN_D
2211a2621baSYoshihiro Shimoda	write32 DBCMD_A, DBCMD_SRXT_VAL
2221a2621baSYoshihiro Shimoda
2231a2621baSYoshihiro Shimoda	/* step 25 */
2241a2621baSYoshihiro Shimoda	write32 DBACEN_A, DBACEN_D
2251a2621baSYoshihiro Shimoda
2261a2621baSYoshihiro Shimoda	/* step 26 */
2271a2621baSYoshihiro Shimoda	wait_DBCMD
2281a2621baSYoshihiro Shimoda
2291a2621baSYoshihiro Shimoda	bra	exit_ddr
2301a2621baSYoshihiro Shimoda	nop
2311a2621baSYoshihiro Shimoda
2321a2621baSYoshihiro Shimoda	.align 2
2331a2621baSYoshihiro Shimoda
2341a2621baSYoshihiro ShimodaEXPEVT_A:		.long	0xff000024
2351a2621baSYoshihiro ShimodaEXPEVT_POWER_ON_RESET:	.long	0x00000000
2361a2621baSYoshihiro Shimoda
2371a2621baSYoshihiro Shimoda/*------- Reset -------*/
2381a2621baSYoshihiro ShimodaMRSTCR0_A:	.long	0xffd50030
2391a2621baSYoshihiro ShimodaMRSTCR0_D:	.long	0xfe1ffe7f
2401a2621baSYoshihiro ShimodaMRSTCR1_A:	.long	0xffd50034
2411a2621baSYoshihiro ShimodaMRSTCR1_D:	.long	0xfff3ffff
2421a2621baSYoshihiro Shimoda
2431a2621baSYoshihiro Shimoda/*------- DDR3IF -------*/
2441a2621baSYoshihiro ShimodaDBCMD_A:	.long	0xfe800018
2451a2621baSYoshihiro ShimodaDBKIND_A:	.long	0xfe800020
2461a2621baSYoshihiro ShimodaDBCONF_A:	.long	0xfe800024
2471a2621baSYoshihiro ShimodaDBTR0_A:	.long	0xfe800040
2481a2621baSYoshihiro ShimodaDBTR1_A:	.long	0xfe800044
2491a2621baSYoshihiro ShimodaDBTR2_A:	.long	0xfe800048
2501a2621baSYoshihiro ShimodaDBTR3_A:	.long	0xfe800050
2511a2621baSYoshihiro ShimodaDBTR4_A:	.long	0xfe800054
2521a2621baSYoshihiro ShimodaDBTR5_A:	.long	0xfe800058
2531a2621baSYoshihiro ShimodaDBTR6_A:	.long	0xfe80005c
2541a2621baSYoshihiro ShimodaDBTR7_A:	.long	0xfe800060
2551a2621baSYoshihiro ShimodaDBTR8_A:	.long	0xfe800064
2561a2621baSYoshihiro ShimodaDBTR9_A:	.long	0xfe800068
2571a2621baSYoshihiro ShimodaDBTR10_A:	.long	0xfe80006c
2581a2621baSYoshihiro ShimodaDBTR11_A:	.long	0xfe800070
2591a2621baSYoshihiro ShimodaDBTR12_A:	.long	0xfe800074
2601a2621baSYoshihiro ShimodaDBTR13_A:	.long	0xfe800078
2611a2621baSYoshihiro ShimodaDBTR14_A:	.long	0xfe80007c
2621a2621baSYoshihiro ShimodaDBTR15_A:	.long	0xfe800080
2631a2621baSYoshihiro ShimodaDBTR16_A:	.long	0xfe800084
2641a2621baSYoshihiro ShimodaDBTR17_A:	.long	0xfe800088
2651a2621baSYoshihiro ShimodaDBTR18_A:	.long	0xfe80008c
2661a2621baSYoshihiro ShimodaDBTR19_A:	.long	0xfe800090
2671a2621baSYoshihiro ShimodaDBRNK0_A:	.long	0xfe800100
2681a2621baSYoshihiro ShimodaDBPDCNT0_A:	.long	0xfe800200
2691a2621baSYoshihiro ShimodaDBPDCNT1_A:	.long	0xfe800204
2701a2621baSYoshihiro ShimodaDBPDCNT2_A:	.long	0xfe800208
2711a2621baSYoshihiro ShimodaDBPDCNT3_A:	.long	0xfe80020c
2721a2621baSYoshihiro ShimodaDBPDLCK_A:	.long	0xfe800280
2731a2621baSYoshihiro ShimodaDBPDRGA_A:	.long	0xfe800290
2741a2621baSYoshihiro ShimodaDBPDRGD_A:	.long	0xfe8002a0
2751a2621baSYoshihiro ShimodaDBADJ0_A:	.long	0xfe8000c0
2761a2621baSYoshihiro ShimodaDBADJ1_A:	.long	0xfe8000c4
2771a2621baSYoshihiro ShimodaDBADJ2_A:	.long	0xfe8000c8
2781a2621baSYoshihiro ShimodaDBRFCNF0_A:	.long	0xfe8000e0
2791a2621baSYoshihiro ShimodaDBRFCNF1_A:	.long	0xfe8000e4
2801a2621baSYoshihiro ShimodaDBRFCNF2_A:	.long	0xfe8000e8
2811a2621baSYoshihiro ShimodaDBCALCNF_A:	.long	0xfe8000f4
2821a2621baSYoshihiro ShimodaDBRFEN_A:	.long	0xfe800014
2831a2621baSYoshihiro ShimodaDBACEN_A:	.long	0xfe800010
2841a2621baSYoshihiro ShimodaDBWAIT_A:	.long	0xfe80001c
2851a2621baSYoshihiro Shimoda
2861a2621baSYoshihiro ShimodaWAIT_OSC_TIME:	.long	6000
2871a2621baSYoshihiro ShimodaWAIT_30US:	.long	13333
2881a2621baSYoshihiro Shimoda
2891a2621baSYoshihiro ShimodaDBCMD_RSTL_VAL:	.long	0x20000000
2901a2621baSYoshihiro ShimodaDBCMD_PDEN_VAL:	.long	0x1000d73c
2911a2621baSYoshihiro ShimodaDBCMD_WAIT_VAL:	.long	0x0000d73c
2921a2621baSYoshihiro ShimodaDBCMD_RSTH_VAL:	.long	0x2100d73c
2931a2621baSYoshihiro ShimodaDBCMD_PDXT_VAL:	.long	0x110000c8
2941a2621baSYoshihiro ShimodaDBCMD_MRS0_VAL:	.long	0x28000930
2951a2621baSYoshihiro ShimodaDBCMD_MRS1_VAL:	.long	0x29000004
2961a2621baSYoshihiro ShimodaDBCMD_MRS2_VAL:	.long	0x2a000008
2971a2621baSYoshihiro ShimodaDBCMD_MRS3_VAL:	.long	0x2b000000
2981a2621baSYoshihiro ShimodaDBCMD_ZQCL_VAL:	.long	0x03000200
2991a2621baSYoshihiro ShimodaDBCMD_REF_VAL:	.long	0x0c000000
3001a2621baSYoshihiro ShimodaDBCMD_SRXT_VAL:	.long	0x19000000
3011a2621baSYoshihiro ShimodaDBKIND_D:	.long	0x00000007
3021a2621baSYoshihiro ShimodaDBCONF_D:	.long	0x0f030a01
3031a2621baSYoshihiro ShimodaDBTR0_D:	.long	0x00000007
3041a2621baSYoshihiro ShimodaDBTR1_D:	.long	0x00000006
3051a2621baSYoshihiro ShimodaDBTR2_D:	.long	0x00000000
3061a2621baSYoshihiro ShimodaDBTR3_D:	.long	0x00000007
3071a2621baSYoshihiro ShimodaDBTR4_D:	.long	0x00070007
3081a2621baSYoshihiro ShimodaDBTR5_D:	.long	0x0000001b
3091a2621baSYoshihiro ShimodaDBTR6_D:	.long	0x00000014
3101a2621baSYoshihiro ShimodaDBTR7_D:	.long	0x00000005
3111a2621baSYoshihiro ShimodaDBTR8_D:	.long	0x00000015
3121a2621baSYoshihiro ShimodaDBTR9_D:	.long	0x00000006
3131a2621baSYoshihiro ShimodaDBTR10_D:	.long	0x00000008
3141a2621baSYoshihiro ShimodaDBTR11_D:	.long	0x00000007
3151a2621baSYoshihiro ShimodaDBTR12_D:	.long	0x0000000e
3161a2621baSYoshihiro ShimodaDBTR13_D:	.long	0x00000056
3171a2621baSYoshihiro ShimodaDBTR14_D:	.long	0x00000006
3181a2621baSYoshihiro ShimodaDBTR15_D:	.long	0x00000004
3191a2621baSYoshihiro ShimodaDBTR16_D:	.long	0x00150002
3201a2621baSYoshihiro ShimodaDBTR17_D:	.long	0x000c0017
3211a2621baSYoshihiro ShimodaDBTR18_D:	.long	0x00000200
3221a2621baSYoshihiro ShimodaDBTR19_D:	.long	0x00000040
3231a2621baSYoshihiro ShimodaDBRNK0_D:	.long	0x00000001
3241a2621baSYoshihiro ShimodaDBPDCNT0_D:	.long	0x00000001
3251a2621baSYoshihiro ShimodaDBPDCNT1_D:	.long	0x00000001
3261a2621baSYoshihiro ShimodaDBPDCNT2_D:	.long	0x00000000
3271a2621baSYoshihiro ShimodaDBPDCNT3_D:	.long	0x00004010
3281a2621baSYoshihiro ShimodaDBPDLCK_D:	.long	0x0000a55a
3291a2621baSYoshihiro ShimodaDBPDRGA_D:	.long	0x00000028
3301a2621baSYoshihiro ShimodaDBPDRGD_D:	.long	0x00017100
3311a2621baSYoshihiro Shimoda
3321a2621baSYoshihiro ShimodaDBADJ0_D:	.long	0x00000000
3331a2621baSYoshihiro ShimodaDBADJ1_D:	.long	0x00000000
3341a2621baSYoshihiro ShimodaDBADJ2_D:	.long	0x18061806
3351a2621baSYoshihiro ShimodaDBRFCNF0_D:	.long	0x000001ff
3361a2621baSYoshihiro ShimodaDBRFCNF1_D:	.long	0x08001000
3371a2621baSYoshihiro ShimodaDBRFCNF2_D:	.long	0x00000000
3381a2621baSYoshihiro ShimodaDBCALCNF_D:	.long	0x0000ffff
3391a2621baSYoshihiro ShimodaDBRFEN_D:	.long	0x00000001
3401a2621baSYoshihiro ShimodaDBACEN_D:	.long	0x00000001
3411a2621baSYoshihiro Shimoda
3421a2621baSYoshihiro Shimoda	.align 2
3431a2621baSYoshihiro Shimodaexit_ddr:
3441a2621baSYoshihiro Shimoda#if defined(CONFIG_SH_32BIT)
3451a2621baSYoshihiro Shimoda	/*------- set PMB -------*/
3461a2621baSYoshihiro Shimoda	write32	PASCR_A,	PASCR_29BIT_D
3471a2621baSYoshihiro Shimoda	write32	MMUCR_A,	MMUCR_D
3481a2621baSYoshihiro Shimoda
3491a2621baSYoshihiro Shimoda	/*****************************************************************
3501a2621baSYoshihiro Shimoda	 * ent	virt		phys		v	sz	c	wt
3511a2621baSYoshihiro Shimoda	 * 0	0xa0000000	0x00000000	1	128M	0	1
3521a2621baSYoshihiro Shimoda	 * 1	0xa8000000	0x48000000	1	128M	0	1
3531a2621baSYoshihiro Shimoda	 * 5	0x88000000	0x48000000	1	128M	1	1
3541a2621baSYoshihiro Shimoda	 */
3551a2621baSYoshihiro Shimoda	write32	PMB_ADDR_SPIBOOT_A,	PMB_ADDR_SPIBOOT_D
3561a2621baSYoshihiro Shimoda	write32	PMB_DATA_SPIBOOT_A,	PMB_DATA_SPIBOOT_D
3571a2621baSYoshihiro Shimoda	write32	PMB_ADDR_DDR_C1_A,	PMB_ADDR_DDR_C1_D
3581a2621baSYoshihiro Shimoda	write32	PMB_DATA_DDR_C1_A,	PMB_DATA_DDR_C1_D
3591a2621baSYoshihiro Shimoda	write32	PMB_ADDR_DDR_N1_A,	PMB_ADDR_DDR_N1_D
3601a2621baSYoshihiro Shimoda	write32	PMB_DATA_DDR_N1_A,	PMB_DATA_DDR_N1_D
3611a2621baSYoshihiro Shimoda
3621a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY2,	PMB_ADDR_NOT_USE_D
3631a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY3,	PMB_ADDR_NOT_USE_D
3641a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY4,	PMB_ADDR_NOT_USE_D
3651a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY6,	PMB_ADDR_NOT_USE_D
3661a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY7,	PMB_ADDR_NOT_USE_D
3671a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY8,	PMB_ADDR_NOT_USE_D
3681a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY9,	PMB_ADDR_NOT_USE_D
3691a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY10,	PMB_ADDR_NOT_USE_D
3701a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY11,	PMB_ADDR_NOT_USE_D
3711a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY12,	PMB_ADDR_NOT_USE_D
3721a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY13,	PMB_ADDR_NOT_USE_D
3731a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY14,	PMB_ADDR_NOT_USE_D
3741a2621baSYoshihiro Shimoda	write32	PMB_ADDR_ENTRY15,	PMB_ADDR_NOT_USE_D
3751a2621baSYoshihiro Shimoda
3761a2621baSYoshihiro Shimoda	write32	PASCR_A,	PASCR_INIT
3771a2621baSYoshihiro Shimoda	mov.l	DUMMY_ADDR, r0
3781a2621baSYoshihiro Shimoda	icbi	@r0
3791a2621baSYoshihiro Shimoda#endif	/* if defined(CONFIG_SH_32BIT) */
3801a2621baSYoshihiro Shimoda
3811a2621baSYoshihiro Shimodaexit_pmb:
3821a2621baSYoshihiro Shimoda	/* CPU is running on ILRAM? */
3831a2621baSYoshihiro Shimoda	mov	r14, r0
3841a2621baSYoshihiro Shimoda	tst	#1, r0
3851a2621baSYoshihiro Shimoda	bt	1f
3861a2621baSYoshihiro Shimoda
3871a2621baSYoshihiro Shimoda	mov.l	_stack_ilram, r15
3881a2621baSYoshihiro Shimoda	mov.l	_spiboot_main, r0
3891a2621baSYoshihiro Shimoda100:	bsrf	r0
3901a2621baSYoshihiro Shimoda	nop
3911a2621baSYoshihiro Shimoda
3921a2621baSYoshihiro Shimoda	.align	2
3931a2621baSYoshihiro Shimoda_spiboot_main:	.long	(spiboot_main - (100b + 4))
3941a2621baSYoshihiro Shimoda_stack_ilram:	.long	0xe5204000
3951a2621baSYoshihiro Shimoda
3961a2621baSYoshihiro Shimoda1:
3971a2621baSYoshihiro Shimoda	write32	CCR_A,	CCR_D
3981a2621baSYoshihiro Shimoda
3991a2621baSYoshihiro Shimoda	rts
4001a2621baSYoshihiro Shimoda	 nop
4011a2621baSYoshihiro Shimoda
4021a2621baSYoshihiro Shimoda	.align 2
4031a2621baSYoshihiro Shimoda
4041a2621baSYoshihiro Shimoda#if defined(CONFIG_SH_32BIT)
4051a2621baSYoshihiro Shimoda/*------- set PMB -------*/
4061a2621baSYoshihiro ShimodaPMB_ADDR_SPIBOOT_A:	.long	PMB_ADDR_BASE(0)
4071a2621baSYoshihiro ShimodaPMB_ADDR_DDR_N1_A:	.long	PMB_ADDR_BASE(1)
4081a2621baSYoshihiro ShimodaPMB_ADDR_DDR_C1_A:	.long	PMB_ADDR_BASE(5)
4091a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY2:	.long	PMB_ADDR_BASE(2)
4101a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY3:	.long	PMB_ADDR_BASE(3)
4111a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY4:	.long	PMB_ADDR_BASE(4)
4121a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY6:	.long	PMB_ADDR_BASE(6)
4131a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY7:	.long	PMB_ADDR_BASE(7)
4141a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY8:	.long	PMB_ADDR_BASE(8)
4151a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY9:	.long	PMB_ADDR_BASE(9)
4161a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY10:	.long	PMB_ADDR_BASE(10)
4171a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY11:	.long	PMB_ADDR_BASE(11)
4181a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY12:	.long	PMB_ADDR_BASE(12)
4191a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY13:	.long	PMB_ADDR_BASE(13)
4201a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY14:	.long	PMB_ADDR_BASE(14)
4211a2621baSYoshihiro ShimodaPMB_ADDR_ENTRY15:	.long	PMB_ADDR_BASE(15)
4221a2621baSYoshihiro Shimoda
4231a2621baSYoshihiro ShimodaPMB_ADDR_SPIBOOT_D:	.long	mk_pmb_addr_val(0xa0)
4241a2621baSYoshihiro ShimodaPMB_ADDR_DDR_C1_D:	.long	mk_pmb_addr_val(0x88)
4251a2621baSYoshihiro ShimodaPMB_ADDR_DDR_N1_D:	.long	mk_pmb_addr_val(0xa8)
4261a2621baSYoshihiro ShimodaPMB_ADDR_NOT_USE_D:	.long	0x00000000
4271a2621baSYoshihiro Shimoda
4281a2621baSYoshihiro ShimodaPMB_DATA_SPIBOOT_A:	.long	PMB_DATA_BASE(0)
4291a2621baSYoshihiro ShimodaPMB_DATA_DDR_N1_A:	.long	PMB_DATA_BASE(1)
4301a2621baSYoshihiro ShimodaPMB_DATA_DDR_C1_A:	.long	PMB_DATA_BASE(5)
4311a2621baSYoshihiro Shimoda
4321a2621baSYoshihiro Shimoda/*						ppn   ub v s1 s0  c  wt */
4331a2621baSYoshihiro ShimodaPMB_DATA_SPIBOOT_D:	.long	mk_pmb_data_val(0x00, 0, 1, 1, 0, 0, 1)
4341a2621baSYoshihiro ShimodaPMB_DATA_DDR_C1_D:	.long	mk_pmb_data_val(0x48, 0, 1, 1, 0, 1, 1)
4351a2621baSYoshihiro ShimodaPMB_DATA_DDR_N1_D:	.long	mk_pmb_data_val(0x48, 1, 1, 1, 0, 0, 1)
4361a2621baSYoshihiro Shimoda
4371a2621baSYoshihiro ShimodaPASCR_A:		.long	0xff000070
4381a2621baSYoshihiro ShimodaDUMMY_ADDR:		.long	0xa0000000
4391a2621baSYoshihiro ShimodaPASCR_29BIT_D:		.long	0x00000000
4401a2621baSYoshihiro ShimodaPASCR_INIT:		.long	0x80000080
4411a2621baSYoshihiro ShimodaMMUCR_A:		.long	0xff000010
4421a2621baSYoshihiro ShimodaMMUCR_D:		.long	0x00000004	/* clear ITLB */
4431a2621baSYoshihiro Shimoda#endif	/* CONFIG_SH_32BIT */
4441a2621baSYoshihiro Shimoda
4451a2621baSYoshihiro ShimodaCCR_A:		.long	CCR
4461a2621baSYoshihiro ShimodaCCR_D:		.long	CCR_CACHE_INIT
447