123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429 |
- /*
- * Copyright (C) 2007,2008 Nobuhiro Iwamatsu
- *
- * u-boot/board/r7780mp/lowlevel_init.S
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
- #include <config.h>
- #include <version.h>
- #include <asm/processor.h>
- /*
- * Board specific low level init code, called _very_ early in the
- * startup sequence. Relocation to SDRAM has not happened yet, no
- * stack is available, bss section has not been initialised, etc.
- *
- * (Note: As no stack is available, no subroutines can be called...).
- */
- .global lowlevel_init
- .text
- .align 2
- lowlevel_init:
- mov.l CCR_A, r1 /* Address of Cache Control Register */
- mov.l CCR_D, r0 /* Instruction Cache Invalidate */
- mov.l r0, @r1
- mov.l FRQCR_A, r1 /* Frequency control register */
- mov.l FRQCR_D, r0
- mov.l r0, @r1
- /* pin_multi_setting */
- mov.l BBG_PMMR_A,r1
- mov.l BBG_PMMR_D_PMSR1,r0
- mov.l r0,@r1
- mov.l BBG_PMSR1_A,r1
- mov.l BBG_PMSR1_D,r0
- mov.l r0,@r1
- mov.l BBG_PMMR_A,r1
- mov.l BBG_PMMR_D_PMSR2,r0
- mov.l r0,@r1
- mov.l BBG_PMSR2_A,r1
- mov.l BBG_PMSR2_D,r0
- mov.l r0,@r1
- mov.l BBG_PMMR_A,r1
- mov.l BBG_PMMR_D_PMSR3,r0
- mov.l r0,@r1
- mov.l BBG_PMSR3_A,r1
- mov.l BBG_PMSR3_D,r0
- mov.l r0,@r1
- mov.l BBG_PMMR_A,r1
- mov.l BBG_PMMR_D_PMSR4,r0
- mov.l r0,@r1
- mov.l BBG_PMSR4_A,r1
- mov.l BBG_PMSR4_D,r0
- mov.l r0,@r1
- mov.l BBG_PMMR_A,r1
- mov.l BBG_PMMR_D_PMSRG,r0
- mov.l r0,@r1
- mov.l BBG_PMSRG_A,r1
- mov.l BBG_PMSRG_D,r0
- mov.l r0,@r1
- /* cpg_setting */
- mov.l FRQCR_A,r1
- mov.l FRQCR_D,r0
- mov.l r0,@r1
- mov.l DLLCSR_A,r1
- mov.l DLLCSR_D,r0
- mov.l r0,@r1
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- /* wait 200us */
- mov.l REPEAT0_R3,r3
- mov #0,r2
- repeat0:
- add #1,r2
- cmp/hs r3,r2
- bf repeat0
- nop
- /* bsc_setting */
- mov.l MMSELR_A,r1
- mov.l MMSELR_D,r0
- mov.l r0,@r1
- mov.l BCR_A,r1
- mov.l BCR_D,r0
- mov.l r0,@r1
- mov.l CS0BCR_A,r1
- mov.l CS0BCR_D,r0
- mov.l r0,@r1
- mov.l CS1BCR_A,r1
- mov.l CS1BCR_D,r0
- mov.l r0,@r1
- mov.l CS2BCR_A,r1
- mov.l CS2BCR_D,r0
- mov.l r0,@r1
- mov.l CS4BCR_A,r1
- mov.l CS4BCR_D,r0
- mov.l r0,@r1
- mov.l CS5BCR_A,r1
- mov.l CS5BCR_D,r0
- mov.l r0,@r1
- mov.l CS6BCR_A,r1
- mov.l CS6BCR_D,r0
- mov.l r0,@r1
- mov.l CS0WCR_A,r1
- mov.l CS0WCR_D,r0
- mov.l r0,@r1
- mov.l CS1WCR_A,r1
- mov.l CS1WCR_D,r0
- mov.l r0,@r1
- mov.l CS2WCR_A,r1
- mov.l CS2WCR_D,r0
- mov.l r0,@r1
- mov.l CS4WCR_A,r1
- mov.l CS4WCR_D,r0
- mov.l r0,@r1
- mov.l CS5WCR_A,r1
- mov.l CS5WCR_D,r0
- mov.l r0,@r1
- mov.l CS6WCR_A,r1
- mov.l CS6WCR_D,r0
- mov.l r0,@r1
- mov.l CS5PCR_A,r1
- mov.l CS5PCR_D,r0
- mov.l r0,@r1
- mov.l CS6PCR_A,r1
- mov.l CS6PCR_D,r0
- mov.l r0,@r1
- /* ddr_setting */
- /* wait 200us */
- mov.l REPEAT0_R3,r3
- mov #0,r2
- repeat1:
- add #1,r2
- cmp/hs r3,r2
- bf repeat1
- nop
- mov.l MIM_U_A,r0
- mov.l MIM_U_D,r1
- synco
- mov.l r1,@r0
- synco
- mov.l MIM_L_A,r0
- mov.l MIM_L_D0,r1
- synco
- mov.l r1,@r0
- synco
- mov.l STR_L_A,r0
- mov.l STR_L_D,r1
- synco
- mov.l r1,@r0
- synco
- mov.l SDR_L_A,r0
- mov.l SDR_L_D,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- nop
- mov.l SCR_L_A,r0
- mov.l SCR_L_D0,r1
- synco
- mov.l r1,@r0
- synco
- mov.l SCR_L_A,r0
- mov.l SCR_L_D1,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l EMRS_A,r0
- mov.l EMRS_D,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l MRS1_A,r0
- mov.l MRS1_D,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l SCR_L_A,r0
- mov.l SCR_L_D2,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l SCR_L_A,r0
- mov.l SCR_L_D3,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l SCR_L_A,r0
- mov.l SCR_L_D4,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l MRS2_A,r0
- mov.l MRS2_D,r1
- synco
- mov.l r1,@r0
- synco
- nop
- nop
- nop
- mov.l SCR_L_A,r0
- mov.l SCR_L_D5,r1
- synco
- mov.l r1,@r0
- synco
- /* wait 200us */
- mov.l REPEAT0_R1,r3
- mov #0,r2
- repeat2:
- add #1,r2
- cmp/hs r3,r2
- bf repeat2
- synco
- mov.l MIM_L_A,r0
- mov.l MIM_L_D1,r1
- synco
- mov.l r1,@r0
- synco
- rts
- nop
- .align 4
- RWTCSR_D_1: .word 0xA507
- RWTCSR_D_2: .word 0xA507
- RWTCNT_D: .word 0x5A00
- .align 2
- BBG_PMMR_A: .long 0xFF800010
- BBG_PMSR1_A: .long 0xFF800014
- BBG_PMSR2_A: .long 0xFF800018
- BBG_PMSR3_A: .long 0xFF80001C
- BBG_PMSR4_A: .long 0xFF800020
- BBG_PMSRG_A: .long 0xFF800024
- BBG_PMMR_D_PMSR1: .long 0xffffbffd
- BBG_PMSR1_D: .long 0x00004002
- BBG_PMMR_D_PMSR2: .long 0xfc21a7ff
- BBG_PMSR2_D: .long 0x03de5800
- BBG_PMMR_D_PMSR3: .long 0xfffffff8
- BBG_PMSR3_D: .long 0x00000007
- BBG_PMMR_D_PMSR4: .long 0xdffdfff9
- BBG_PMSR4_D: .long 0x20020006
- BBG_PMMR_D_PMSRG: .long 0xffffffff
- BBG_PMSRG_D: .long 0x00000000
- FRQCR_A: .long FRQCR
- DLLCSR_A: .long 0xffc40010
- FRQCR_D: .long 0x40233035
- DLLCSR_D: .long 0x00000000
- /* for DDR-SDRAM */
- MIM_U_A: .long MIM_1
- MIM_L_A: .long MIM_2
- SCR_U_A: .long SCR_1
- SCR_L_A: .long SCR_2
- STR_U_A: .long STR_1
- STR_L_A: .long STR_2
- SDR_U_A: .long SDR_1
- SDR_L_A: .long SDR_2
- EMRS_A: .long 0xFEC02000
- MRS1_A: .long 0xFEC00B08
- MRS2_A: .long 0xFEC00308
- MIM_U_D: .long 0x00004000
- MIM_L_D0: .long 0x03e80009
- MIM_L_D1: .long 0x03e80209
- SCR_L_D0: .long 0x3
- SCR_L_D1: .long 0x2
- SCR_L_D2: .long 0x2
- SCR_L_D3: .long 0x4
- SCR_L_D4: .long 0x4
- SCR_L_D5: .long 0x0
- STR_L_D: .long 0x000f0000
- SDR_L_D: .long 0x00000400
- EMRS_D: .long 0x0
- MRS1_D: .long 0x0
- MRS2_D: .long 0x0
- /* Cache Controller */
- CCR_A: .long CCR
- MMUCR_A: .long MMUCR
- RWTCNT_A: .long WTCNT
- CCR_D: .long 0x0000090b
- CCR_D_2: .long 0x00000103
- MMUCR_D: .long 0x00000004
- MSTPCR0_D: .long 0x00001001
- MSTPCR2_D: .long 0xffffffff
- /* local Bus State Controller */
- MMSELR_A: .long MMSELR
- BCR_A: .long BCR
- CS0BCR_A: .long CS0BCR
- CS1BCR_A: .long CS1BCR
- CS2BCR_A: .long CS2BCR
- CS4BCR_A: .long CS4BCR
- CS5BCR_A: .long CS5BCR
- CS6BCR_A: .long CS6BCR
- CS0WCR_A: .long CS0WCR
- CS1WCR_A: .long CS1WCR
- CS2WCR_A: .long CS2WCR
- CS4WCR_A: .long CS4WCR
- CS5WCR_A: .long CS5WCR
- CS6WCR_A: .long CS6WCR
- CS5PCR_A: .long CS5PCR
- CS6PCR_A: .long CS6PCR
- MMSELR_D: .long 0xA5A50003
- BCR_D: .long 0x00000000
- CS0BCR_D: .long 0x77777770
- CS1BCR_D: .long 0x77777670
- CS2BCR_D: .long 0x77777770
- CS4BCR_D: .long 0x77777770
- CS5BCR_D: .long 0x77777670
- CS6BCR_D: .long 0x77777770
- CS0WCR_D: .long 0x00020006
- CS1WCR_D: .long 0x00232304
- CS2WCR_D: .long 0x7777770F
- CS4WCR_D: .long 0x7777770F
- CS5WCR_D: .long 0x00101006
- CS6WCR_D: .long 0x77777703
- CS5PCR_D: .long 0x77000000
- CS6PCR_D: .long 0x77000000
- REPEAT0_R3: .long 0x00002000
- REPEAT0_R1: .long 0x0000200
|