1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Copyright (C) 2008 Nobuhiro Iwamatsu 3*4882a593Smuzhiyun * Copyright (C) 2008 Renesas Solutions Corp. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun#include <config.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun#include <asm/processor.h> 10*4882a593Smuzhiyun#include <asm/macro.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun .global lowlevel_init 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun .text 15*4882a593Smuzhiyun .align 2 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunlowlevel_init: 18*4882a593Smuzhiyun /* Cache setting */ 19*4882a593Smuzhiyun write32 CCR1_A ,CCR1_D 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* ConfigurePortPins */ 22*4882a593Smuzhiyun write16 PECRL3_A, PECRL3_D 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun write16 PCCRL4_A, PCCRL4_D0 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun write16 PECRL4_A, PECRL4_D0 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun write16 PEIORL_A, PEIORL_D0 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun write16 PCIORL_A, PCIORL_D 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun write16 PFCRH2_A, PFCRH2_D 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun write16 PFCRH3_A, PFCRH3_D 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun write16 PFCRH1_A, PFCRH1_D 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun write16 PFIORH_A, PFIORH_D 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun write16 PECRL1_A, PECRL1_D0 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun write16 PEIORL_A, PEIORL_D1 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* Configure Operating Frequency */ 45*4882a593Smuzhiyun write16 WTCSR_A, WTCSR_D0 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun write16 WTCSR_A, WTCSR_D1 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun write16 WTCNT_A, WTCNT_D 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* Set clock mode*/ 52*4882a593Smuzhiyun write16 FRQCR_A, FRQCR_D 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun /* Configure Bus And Memory */ 55*4882a593Smuzhiyuninit_bsc_cs0: 56*4882a593Smuzhiyun write16 PCCRL4_A, PCCRL4_D1 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun write16 PECRL1_A, PECRL1_D1 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun write32 CMNCR_A, CMNCR_D 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun write32 CS0BCR_A, CS0BCR_D 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun write32 CS0WCR_A, CS0WCR_D 65*4882a593Smuzhiyun 66*4882a593Smuzhiyuninit_bsc_cs1: 67*4882a593Smuzhiyun write16 PECRL4_A, PECRL4_D1 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun write32 CS1WCR_A, CS1WCR_D 70*4882a593Smuzhiyun 71*4882a593Smuzhiyuninit_sdram: 72*4882a593Smuzhiyun write16 PCCRL2_A, PCCRL2_D 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun write16 PCCRL4_A, PCCRL4_D2 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun write16 PCCRL1_A, PCCRL1_D 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun write16 PCCRL3_A, PCCRL3_D 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun write32 CS3BCR_A, CS3BCR_D 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun write32 CS3WCR_A, CS3WCR_D 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun write32 SDCR_A, SDCR_D 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun write32 RTCOR_A, RTCOR_D 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun write32 RTCSR_A, RTCSR_D 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun /* wait 200us */ 91*4882a593Smuzhiyun mov.l REPEAT_D, r3 92*4882a593Smuzhiyun mov #0, r2 93*4882a593Smuzhiyunrepeat0: 94*4882a593Smuzhiyun add #1, r2 95*4882a593Smuzhiyun cmp/hs r3, r2 96*4882a593Smuzhiyun bf repeat0 97*4882a593Smuzhiyun nop 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun mov.l SDRAM_MODE, r1 100*4882a593Smuzhiyun mov #0, r0 101*4882a593Smuzhiyun mov.l r0, @r1 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun nop 104*4882a593Smuzhiyun rts 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun .align 4 107*4882a593Smuzhiyun 108*4882a593SmuzhiyunCCR1_A: .long CCR1 109*4882a593SmuzhiyunCCR1_D: .long 0x0000090B 110*4882a593SmuzhiyunPCCRL4_A: .long 0xFFFE3910 111*4882a593SmuzhiyunPCCRL4_D0: .word 0x0000 112*4882a593Smuzhiyun.align 2 113*4882a593SmuzhiyunPECRL4_A: .long 0xFFFE3A10 114*4882a593SmuzhiyunPECRL4_D0: .word 0x0000 115*4882a593Smuzhiyun.align 2 116*4882a593SmuzhiyunPECRL3_A: .long 0xFFFE3A12 117*4882a593SmuzhiyunPECRL3_D: .word 0x0000 118*4882a593Smuzhiyun.align 2 119*4882a593SmuzhiyunPEIORL_A: .long 0xFFFE3A06 120*4882a593SmuzhiyunPEIORL_D0: .word 0x1C00 121*4882a593SmuzhiyunPEIORL_D1: .word 0x1C02 122*4882a593SmuzhiyunPCIORL_A: .long 0xFFFE3906 123*4882a593SmuzhiyunPCIORL_D: .word 0x4000 124*4882a593Smuzhiyun.align 2 125*4882a593SmuzhiyunPFCRH2_A: .long 0xFFFE3A8C 126*4882a593SmuzhiyunPFCRH2_D: .word 0x0000 127*4882a593Smuzhiyun.align 2 128*4882a593SmuzhiyunPFCRH3_A: .long 0xFFFE3A8A 129*4882a593SmuzhiyunPFCRH3_D: .word 0x0000 130*4882a593Smuzhiyun.align 2 131*4882a593SmuzhiyunPFCRH1_A: .long 0xFFFE3A8E 132*4882a593SmuzhiyunPFCRH1_D: .word 0x0000 133*4882a593Smuzhiyun.align 2 134*4882a593SmuzhiyunPFIORH_A: .long 0xFFFE3A84 135*4882a593SmuzhiyunPFIORH_D: .word 0x0729 136*4882a593Smuzhiyun.align 2 137*4882a593SmuzhiyunPECRL1_A: .long 0xFFFE3A16 138*4882a593SmuzhiyunPECRL1_D0: .word 0x0033 139*4882a593Smuzhiyun.align 2 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun 142*4882a593SmuzhiyunWTCSR_A: .long 0xFFFE0000 143*4882a593SmuzhiyunWTCSR_D0: .word 0xA518 144*4882a593SmuzhiyunWTCSR_D1: .word 0xA51D 145*4882a593SmuzhiyunWTCNT_A: .long 0xFFFE0002 146*4882a593SmuzhiyunWTCNT_D: .word 0x5A84 147*4882a593Smuzhiyun.align 2 148*4882a593SmuzhiyunFRQCR_A: .long 0xFFFE0010 149*4882a593SmuzhiyunFRQCR_D: .word 0x0104 150*4882a593Smuzhiyun.align 2 151*4882a593Smuzhiyun 152*4882a593SmuzhiyunPCCRL4_D1: .word 0x0010 153*4882a593SmuzhiyunPECRL1_D1: .word 0x0133 154*4882a593Smuzhiyun 155*4882a593SmuzhiyunCMNCR_A: .long 0xFFFC0000 156*4882a593SmuzhiyunCMNCR_D: .long 0x00001810 157*4882a593SmuzhiyunCS0BCR_A: .long 0xFFFC0004 158*4882a593SmuzhiyunCS0BCR_D: .long 0x10000400 159*4882a593SmuzhiyunCS0WCR_A: .long 0xFFFC0028 160*4882a593SmuzhiyunCS0WCR_D: .long 0x00000B41 161*4882a593SmuzhiyunPECRL4_D1: .word 0x0100 162*4882a593Smuzhiyun.align 2 163*4882a593SmuzhiyunCS1WCR_A: .long 0xFFFC002C 164*4882a593SmuzhiyunCS1WCR_D: .long 0x00000B01 165*4882a593SmuzhiyunPCCRL4_D2: .word 0x0011 166*4882a593Smuzhiyun.align 2 167*4882a593SmuzhiyunPCCRL3_A: .long 0xFFFE3912 168*4882a593SmuzhiyunPCCRL3_D: .word 0x0011 169*4882a593Smuzhiyun.align 2 170*4882a593SmuzhiyunPCCRL2_A: .long 0xFFFE3914 171*4882a593SmuzhiyunPCCRL2_D: .word 0x1111 172*4882a593Smuzhiyun.align 2 173*4882a593SmuzhiyunPCCRL1_A: .long 0xFFFE3916 174*4882a593SmuzhiyunPCCRL1_D: .word 0x1010 175*4882a593Smuzhiyun.align 2 176*4882a593SmuzhiyunPDCRL4_A: .long 0xFFFE3990 177*4882a593SmuzhiyunPDCRL4_D: .word 0x0011 178*4882a593Smuzhiyun.align 2 179*4882a593SmuzhiyunPDCRL3_A: .long 0xFFFE3992 180*4882a593SmuzhiyunPDCRL3_D: .word 0x00011 181*4882a593Smuzhiyun.align 2 182*4882a593SmuzhiyunPDCRL2_A: .long 0xFFFE3994 183*4882a593SmuzhiyunPDCRL2_D: .word 0x1111 184*4882a593Smuzhiyun.align 2 185*4882a593SmuzhiyunPDCRL1_A: .long 0xFFFE3996 186*4882a593SmuzhiyunPDCRL1_D: .word 0x1000 187*4882a593Smuzhiyun.align 2 188*4882a593SmuzhiyunCS3BCR_A: .long 0xFFFC0010 189*4882a593SmuzhiyunCS3BCR_D: .long 0x00004400 190*4882a593SmuzhiyunCS3WCR_A: .long 0xFFFC0034 191*4882a593SmuzhiyunCS3WCR_D: .long 0x00002892 192*4882a593SmuzhiyunSDCR_A: .long 0xFFFC004C 193*4882a593SmuzhiyunSDCR_D: .long 0x00000809 194*4882a593SmuzhiyunRTCOR_A: .long 0xFFFC0058 195*4882a593SmuzhiyunRTCOR_D: .long 0xA55A0041 196*4882a593SmuzhiyunRTCSR_A: .long 0xFFFC0050 197*4882a593SmuzhiyunRTCSR_D: .long 0xa55a0010 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunSDRAM_MODE: .long 0xFFFC5040 200*4882a593SmuzhiyunREPEAT_D: .long 0x00009C40 201