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