1*6d1d5cf9SNobuhiro Iwamatsu/* 2*6d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Renesas Solutions Corp. 3*6d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.Iwamatsu.yj@renesas.com> 4*6d1d5cf9SNobuhiro Iwamatsu * 5*6d1d5cf9SNobuhiro Iwamatsu * board/renesas/ecovec/lowlevel_init.S 6*6d1d5cf9SNobuhiro Iwamatsu * 7*6d1d5cf9SNobuhiro Iwamatsu * This program is free software; you can redistribute it and/or 8*6d1d5cf9SNobuhiro Iwamatsu * modify it under the terms of the GNU General Public License as 9*6d1d5cf9SNobuhiro Iwamatsu * published by the Free Software Foundation; either version 2 of 10*6d1d5cf9SNobuhiro Iwamatsu * the License, or (at your option) any later version. 11*6d1d5cf9SNobuhiro Iwamatsu * 12*6d1d5cf9SNobuhiro Iwamatsu * This program is distributed in the hope that it will be useful, 13*6d1d5cf9SNobuhiro Iwamatsu * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*6d1d5cf9SNobuhiro Iwamatsu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*6d1d5cf9SNobuhiro Iwamatsu * GNU General Public License for more details. 16*6d1d5cf9SNobuhiro Iwamatsu * 17*6d1d5cf9SNobuhiro Iwamatsu * You should have received a copy of the GNU General Public License 18*6d1d5cf9SNobuhiro Iwamatsu * along with this program; if not, write to the Free Software 19*6d1d5cf9SNobuhiro Iwamatsu * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20*6d1d5cf9SNobuhiro Iwamatsu * MA 02111-1307 USA 21*6d1d5cf9SNobuhiro Iwamatsu */ 22*6d1d5cf9SNobuhiro Iwamatsu 23*6d1d5cf9SNobuhiro Iwamatsu#include <config.h> 24*6d1d5cf9SNobuhiro Iwamatsu#include <version.h> 25*6d1d5cf9SNobuhiro Iwamatsu#include <asm/processor.h> 26*6d1d5cf9SNobuhiro Iwamatsu#include <asm/macro.h> 27*6d1d5cf9SNobuhiro Iwamatsu#include <configs/ecovec.h> 28*6d1d5cf9SNobuhiro Iwamatsu 29*6d1d5cf9SNobuhiro Iwamatsu .global lowlevel_init 30*6d1d5cf9SNobuhiro Iwamatsu 31*6d1d5cf9SNobuhiro Iwamatsu .text 32*6d1d5cf9SNobuhiro Iwamatsu .align 2 33*6d1d5cf9SNobuhiro Iwamatsu 34*6d1d5cf9SNobuhiro Iwamatsulowlevel_init: 35*6d1d5cf9SNobuhiro Iwamatsu 36*6d1d5cf9SNobuhiro Iwamatsu /* jump to 0xA0020000 if bit 1 of PVDR_A */ 37*6d1d5cf9SNobuhiro Iwamatsu mov.l PVDR_A, r1 38*6d1d5cf9SNobuhiro Iwamatsu mov.l PVDR_D, r2 39*6d1d5cf9SNobuhiro Iwamatsu mov.b @r1, r0 40*6d1d5cf9SNobuhiro Iwamatsu tst r0, r2 41*6d1d5cf9SNobuhiro Iwamatsu bt 1f 42*6d1d5cf9SNobuhiro Iwamatsu mov.l JUMP_A, r1 43*6d1d5cf9SNobuhiro Iwamatsu jmp @r1 44*6d1d5cf9SNobuhiro Iwamatsu nop 45*6d1d5cf9SNobuhiro Iwamatsu 46*6d1d5cf9SNobuhiro Iwamatsu1: 47*6d1d5cf9SNobuhiro Iwamatsu /* Disable watchdog */ 48*6d1d5cf9SNobuhiro Iwamatsu write16 RWTCSR_A, RWTCSR_D 49*6d1d5cf9SNobuhiro Iwamatsu 50*6d1d5cf9SNobuhiro Iwamatsu /* MMU Disable */ 51*6d1d5cf9SNobuhiro Iwamatsu write32 MMUCR_A, MMUCR_D 52*6d1d5cf9SNobuhiro Iwamatsu 53*6d1d5cf9SNobuhiro Iwamatsu /* Setup clocks */ 54*6d1d5cf9SNobuhiro Iwamatsu write32 PLLCR_A, PLLCR_D 55*6d1d5cf9SNobuhiro Iwamatsu write32 FRQCRA_A, FRQCRA_D 56*6d1d5cf9SNobuhiro Iwamatsu write32 FRQCRB_A, FRQCRB_D 57*6d1d5cf9SNobuhiro Iwamatsu 58*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 59*6d1d5cf9SNobuhiro Iwamatsu 60*6d1d5cf9SNobuhiro Iwamatsu write32 MMSELR_A, MMSELR_D 61*6d1d5cf9SNobuhiro Iwamatsu 62*6d1d5cf9SNobuhiro Iwamatsu /* Srtup BSC */ 63*6d1d5cf9SNobuhiro Iwamatsu write32 CMNCR_A, CMNCR_D 64*6d1d5cf9SNobuhiro Iwamatsu write32 CS0BCR_A, CS0BCR_D 65*6d1d5cf9SNobuhiro Iwamatsu write32 CS0WCR_A, CS0WCR_D 66*6d1d5cf9SNobuhiro Iwamatsu 67*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 68*6d1d5cf9SNobuhiro Iwamatsu 69*6d1d5cf9SNobuhiro Iwamatsu /* Setup SDRAM */ 70*6d1d5cf9SNobuhiro Iwamatsu write32 DBPDCNT0_A, DBPDCNT0_D0 71*6d1d5cf9SNobuhiro Iwamatsu write32 DBCONF_A, DBCONF_D 72*6d1d5cf9SNobuhiro Iwamatsu write32 DBTR0_A, DBTR0_D 73*6d1d5cf9SNobuhiro Iwamatsu write32 DBTR1_A, DBTR1_D 74*6d1d5cf9SNobuhiro Iwamatsu write32 DBTR2_A, DBTR2_D 75*6d1d5cf9SNobuhiro Iwamatsu write32 DBTR3_A, DBTR3_D 76*6d1d5cf9SNobuhiro Iwamatsu write32 DBKIND_A, DBKIND_D 77*6d1d5cf9SNobuhiro Iwamatsu write32 DBCKECNT_A, DBCKECNT_D 78*6d1d5cf9SNobuhiro Iwamatsu 79*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 80*6d1d5cf9SNobuhiro Iwamatsu 81*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 82*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D0 83*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D1 84*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D2 85*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D3 86*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 87*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D1 88*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D1 89*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D4 90*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D5 91*6d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D6 92*6d1d5cf9SNobuhiro Iwamatsu 93*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 94*6d1d5cf9SNobuhiro Iwamatsu 95*6d1d5cf9SNobuhiro Iwamatsu write32 DBEN_A, DBEN_D 96*6d1d5cf9SNobuhiro Iwamatsu write32 DBRFPDN1_A, DBRFPDN1_D 97*6d1d5cf9SNobuhiro Iwamatsu write32 DBRFPDN2_A, DBRFPDN2_D 98*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 99*6d1d5cf9SNobuhiro Iwamatsu 100*6d1d5cf9SNobuhiro Iwamatsu 101*6d1d5cf9SNobuhiro Iwamatsu /* Dummy read */ 102*6d1d5cf9SNobuhiro Iwamatsu mov.l DUMMY_A ,r1 103*6d1d5cf9SNobuhiro Iwamatsu synco 104*6d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 105*6d1d5cf9SNobuhiro Iwamatsu synco 106*6d1d5cf9SNobuhiro Iwamatsu 107*6d1d5cf9SNobuhiro Iwamatsu mov.l SDRAM_A ,r1 108*6d1d5cf9SNobuhiro Iwamatsu synco 109*6d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 110*6d1d5cf9SNobuhiro Iwamatsu synco 111*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 112*6d1d5cf9SNobuhiro Iwamatsu 113*6d1d5cf9SNobuhiro Iwamatsu add #4, r1 114*6d1d5cf9SNobuhiro Iwamatsu synco 115*6d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 116*6d1d5cf9SNobuhiro Iwamatsu synco 117*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 118*6d1d5cf9SNobuhiro Iwamatsu 119*6d1d5cf9SNobuhiro Iwamatsu add #4, r1 120*6d1d5cf9SNobuhiro Iwamatsu synco 121*6d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 122*6d1d5cf9SNobuhiro Iwamatsu synco 123*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 124*6d1d5cf9SNobuhiro Iwamatsu 125*6d1d5cf9SNobuhiro Iwamatsu add #4, r1 126*6d1d5cf9SNobuhiro Iwamatsu synco 127*6d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 128*6d1d5cf9SNobuhiro Iwamatsu synco 129*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 130*6d1d5cf9SNobuhiro Iwamatsu 131*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 132*6d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D1 133*6d1d5cf9SNobuhiro Iwamatsu write32 DBPDCNT0_A, DBPDCNT0_D1 134*6d1d5cf9SNobuhiro Iwamatsu write32 DBRFPDN0_A, DBRFPDN0_D 135*6d1d5cf9SNobuhiro Iwamatsu 136*6d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 137*6d1d5cf9SNobuhiro Iwamatsu 138*6d1d5cf9SNobuhiro Iwamatsu write32 CCR_A, CCR_D 139*6d1d5cf9SNobuhiro Iwamatsu 140*6d1d5cf9SNobuhiro Iwamatsu stc sr, r0 141*6d1d5cf9SNobuhiro Iwamatsu mov.l SR_MASK_D, r1 142*6d1d5cf9SNobuhiro Iwamatsu and r1, r0 143*6d1d5cf9SNobuhiro Iwamatsu ldc r0, sr 144*6d1d5cf9SNobuhiro Iwamatsu 145*6d1d5cf9SNobuhiro Iwamatsu rts 146*6d1d5cf9SNobuhiro Iwamatsu 147*6d1d5cf9SNobuhiro Iwamatsu .align 2 148*6d1d5cf9SNobuhiro Iwamatsu 149*6d1d5cf9SNobuhiro IwamatsuPVDR_A: .long PVDR 150*6d1d5cf9SNobuhiro IwamatsuPVDR_D: .long 0x00000001 151*6d1d5cf9SNobuhiro IwamatsuJUMP_A: .long CONFIG_ECOVEC_ROMIMAGE_ADDR 152*6d1d5cf9SNobuhiro IwamatsuTIMER_D: .long 64 153*6d1d5cf9SNobuhiro IwamatsuRWTCSR_A: .long RWTCSR 154*6d1d5cf9SNobuhiro IwamatsuRWTCSR_D: .long 0x0000A507 155*6d1d5cf9SNobuhiro IwamatsuMMUCR_A: .long MMUCR 156*6d1d5cf9SNobuhiro IwamatsuMMUCR_D: .long 0x00000004 157*6d1d5cf9SNobuhiro IwamatsuPLLCR_A: .long PLLCR 158*6d1d5cf9SNobuhiro IwamatsuPLLCR_D: .long 0x00004000 159*6d1d5cf9SNobuhiro IwamatsuFRQCRA_A: .long FRQCRA 160*6d1d5cf9SNobuhiro IwamatsuFRQCRA_D: .long 0x8E003508 161*6d1d5cf9SNobuhiro IwamatsuFRQCRB_A: .long FRQCRB 162*6d1d5cf9SNobuhiro IwamatsuFRQCRB_D: .long 0x0 163*6d1d5cf9SNobuhiro IwamatsuMMSELR_A: .long MMSELR 164*6d1d5cf9SNobuhiro IwamatsuMMSELR_D: .long 0xA5A50000 165*6d1d5cf9SNobuhiro IwamatsuCMNCR_A: .long CMNCR 166*6d1d5cf9SNobuhiro IwamatsuCMNCR_D: .long 0x00000013 167*6d1d5cf9SNobuhiro IwamatsuCS0BCR_A: .long CS0BCR 168*6d1d5cf9SNobuhiro IwamatsuCS0BCR_D: .long 0x11110400 169*6d1d5cf9SNobuhiro IwamatsuCS0WCR_A: .long CS0WCR 170*6d1d5cf9SNobuhiro IwamatsuCS0WCR_D: .long 0x00000440 171*6d1d5cf9SNobuhiro IwamatsuDBPDCNT0_A: .long DBPDCNT0 172*6d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D0: .long 0x00000181 173*6d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D1: .long 0x00000080 174*6d1d5cf9SNobuhiro IwamatsuDBCONF_A: .long DBCONF 175*6d1d5cf9SNobuhiro IwamatsuDBCONF_D: .long 0x015B0002 176*6d1d5cf9SNobuhiro IwamatsuDBTR0_A: .long DBTR0 177*6d1d5cf9SNobuhiro IwamatsuDBTR0_D: .long 0x03061502 178*6d1d5cf9SNobuhiro IwamatsuDBTR1_A: .long DBTR1 179*6d1d5cf9SNobuhiro IwamatsuDBTR1_D: .long 0x02020102 180*6d1d5cf9SNobuhiro IwamatsuDBTR2_A: .long DBTR2 181*6d1d5cf9SNobuhiro IwamatsuDBTR2_D: .long 0x01090305 182*6d1d5cf9SNobuhiro IwamatsuDBTR3_A: .long DBTR3 183*6d1d5cf9SNobuhiro IwamatsuDBTR3_D: .long 0x00000002 184*6d1d5cf9SNobuhiro IwamatsuDBKIND_A: .long DBKIND 185*6d1d5cf9SNobuhiro IwamatsuDBKIND_D: .long 0x00000005 186*6d1d5cf9SNobuhiro IwamatsuDBCKECNT_A: .long DBCKECNT 187*6d1d5cf9SNobuhiro IwamatsuDBCKECNT_D: .long 0x00000001 188*6d1d5cf9SNobuhiro IwamatsuDBCMDCNT_A: .long DBCMDCNT 189*6d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D0:.long 0x2 190*6d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D1:.long 0x4 191*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_A: .long DBMRCNT 192*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D0: .long 0x00020000 193*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D1: .long 0x00030000 194*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D2: .long 0x00010040 195*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D3: .long 0x00000532 196*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D4: .long 0x00000432 197*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D5: .long 0x000103C0 198*6d1d5cf9SNobuhiro IwamatsuDBMRCNT_D6: .long 0x00010040 199*6d1d5cf9SNobuhiro IwamatsuDBEN_A: .long DBEN 200*6d1d5cf9SNobuhiro IwamatsuDBEN_D: .long 0x01 201*6d1d5cf9SNobuhiro IwamatsuDBRFPDN0_A: .long DBRFPDN0 202*6d1d5cf9SNobuhiro IwamatsuDBRFPDN1_A: .long DBRFPDN1 203*6d1d5cf9SNobuhiro IwamatsuDBRFPDN2_A: .long DBRFPDN2 204*6d1d5cf9SNobuhiro IwamatsuDBRFPDN0_D: .long 0x00010000 205*6d1d5cf9SNobuhiro IwamatsuDBRFPDN1_D: .long 0x00000613 206*6d1d5cf9SNobuhiro IwamatsuDBRFPDN2_D: .long 0x238C003A 207*6d1d5cf9SNobuhiro IwamatsuSDRAM_A: .long 0xa8000000 208*6d1d5cf9SNobuhiro IwamatsuDUMMY_A: .long 0x0c400000 209*6d1d5cf9SNobuhiro IwamatsuCCR_A: .long CCR 210*6d1d5cf9SNobuhiro IwamatsuCCR_D: .long 0x0000090B 211*6d1d5cf9SNobuhiro IwamatsuSR_MASK_D: .long 0xEFFFFF0F 212