123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- /*
- * Copyright (C) 2011 Renesas Solutions Corp.
- * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.Iwamatsu.yj@renesas.com>
- *
- * board/renesas/ecovec/lowlevel_init.S
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
- #include <config.h>
- #include <asm/processor.h>
- #include <asm/macro.h>
- #include <configs/ecovec.h>
- .global lowlevel_init
- .text
- .align 2
- lowlevel_init:
- /* jump to CONFIG_ECOVEC_ROMIMAGE_ADDR if bit 1 of PVDR_A */
- mov.l PVDR_A, r1
- mov.l PVDR_D, r2
- mov.b @r1, r0
- tst r0, r2
- bt 1f
- mov.l JUMP_A, r1
- jmp @r1
- nop
- 1:
- /* Disable watchdog */
- write16 RWTCSR_A, RWTCSR_D
- /* MMU Disable */
- write32 MMUCR_A, MMUCR_D
- /* Setup clocks */
- write32 PLLCR_A, PLLCR_D
- write32 FRQCRA_A, FRQCRA_D
- write32 FRQCRB_A, FRQCRB_D
- wait_timer TIMER_D
- write32 MMSELR_A, MMSELR_D
- /* Srtup BSC */
- write32 CMNCR_A, CMNCR_D
- write32 CS0BCR_A, CS0BCR_D
- write32 CS0WCR_A, CS0WCR_D
- wait_timer TIMER_D
- /* Setup SDRAM */
- write32 DBPDCNT0_A, DBPDCNT0_D0
- write32 DBCONF_A, DBCONF_D
- write32 DBTR0_A, DBTR0_D
- write32 DBTR1_A, DBTR1_D
- write32 DBTR2_A, DBTR2_D
- write32 DBTR3_A, DBTR3_D
- write32 DBKIND_A, DBKIND_D
- write32 DBCKECNT_A, DBCKECNT_D
- wait_timer TIMER_D
- write32 DBCMDCNT_A, DBCMDCNT_D0
- write32 DBMRCNT_A, DBMRCNT_D0
- write32 DBMRCNT_A, DBMRCNT_D1
- write32 DBMRCNT_A, DBMRCNT_D2
- write32 DBMRCNT_A, DBMRCNT_D3
- write32 DBCMDCNT_A, DBCMDCNT_D0
- write32 DBCMDCNT_A, DBCMDCNT_D1
- write32 DBCMDCNT_A, DBCMDCNT_D1
- write32 DBMRCNT_A, DBMRCNT_D4
- write32 DBMRCNT_A, DBMRCNT_D5
- write32 DBMRCNT_A, DBMRCNT_D6
- wait_timer TIMER_D
- write32 DBEN_A, DBEN_D
- write32 DBRFPDN1_A, DBRFPDN1_D
- write32 DBRFPDN2_A, DBRFPDN2_D
- write32 DBCMDCNT_A, DBCMDCNT_D0
- /* Dummy read */
- mov.l DUMMY_A ,r1
- synco
- mov.l @r1, r0
- synco
- mov.l SDRAM_A ,r1
- synco
- mov.l @r1, r0
- synco
- wait_timer TIMER_D
- add #4, r1
- synco
- mov.l @r1, r0
- synco
- wait_timer TIMER_D
- add #4, r1
- synco
- mov.l @r1, r0
- synco
- wait_timer TIMER_D
- add #4, r1
- synco
- mov.l @r1, r0
- synco
- wait_timer TIMER_D
- write32 DBCMDCNT_A, DBCMDCNT_D0
- write32 DBCMDCNT_A, DBCMDCNT_D1
- write32 DBPDCNT0_A, DBPDCNT0_D1
- write32 DBRFPDN0_A, DBRFPDN0_D
- wait_timer TIMER_D
- write32 CCR_A, CCR_D
- stc sr, r0
- mov.l SR_MASK_D, r1
- and r1, r0
- ldc r0, sr
- rts
- .align 2
- PVDR_A: .long PVDR
- PVDR_D: .long 0x00000001
- JUMP_A: .long CONFIG_ECOVEC_ROMIMAGE_ADDR
- TIMER_D: .long 64
- RWTCSR_A: .long RWTCSR
- RWTCSR_D: .long 0x0000A507
- MMUCR_A: .long MMUCR
- MMUCR_D: .long 0x00000004
- PLLCR_A: .long PLLCR
- PLLCR_D: .long 0x00004000
- FRQCRA_A: .long FRQCRA
- FRQCRA_D: .long 0x8E003508
- FRQCRB_A: .long FRQCRB
- FRQCRB_D: .long 0x0
- MMSELR_A: .long MMSELR
- MMSELR_D: .long 0xA5A50000
- CMNCR_A: .long CMNCR
- CMNCR_D: .long 0x00000013
- CS0BCR_A: .long CS0BCR
- CS0BCR_D: .long 0x11110400
- CS0WCR_A: .long CS0WCR
- CS0WCR_D: .long 0x00000440
- DBPDCNT0_A: .long DBPDCNT0
- DBPDCNT0_D0: .long 0x00000181
- DBPDCNT0_D1: .long 0x00000080
- DBCONF_A: .long DBCONF
- DBCONF_D: .long 0x015B0002
- DBTR0_A: .long DBTR0
- DBTR0_D: .long 0x03061502
- DBTR1_A: .long DBTR1
- DBTR1_D: .long 0x02020102
- DBTR2_A: .long DBTR2
- DBTR2_D: .long 0x01090305
- DBTR3_A: .long DBTR3
- DBTR3_D: .long 0x00000002
- DBKIND_A: .long DBKIND
- DBKIND_D: .long 0x00000005
- DBCKECNT_A: .long DBCKECNT
- DBCKECNT_D: .long 0x00000001
- DBCMDCNT_A: .long DBCMDCNT
- DBCMDCNT_D0:.long 0x2
- DBCMDCNT_D1:.long 0x4
- DBMRCNT_A: .long DBMRCNT
- DBMRCNT_D0: .long 0x00020000
- DBMRCNT_D1: .long 0x00030000
- DBMRCNT_D2: .long 0x00010040
- DBMRCNT_D3: .long 0x00000532
- DBMRCNT_D4: .long 0x00000432
- DBMRCNT_D5: .long 0x000103C0
- DBMRCNT_D6: .long 0x00010040
- DBEN_A: .long DBEN
- DBEN_D: .long 0x01
- DBRFPDN0_A: .long DBRFPDN0
- DBRFPDN1_A: .long DBRFPDN1
- DBRFPDN2_A: .long DBRFPDN2
- DBRFPDN0_D: .long 0x00010000
- DBRFPDN1_D: .long 0x00000613
- DBRFPDN2_D: .long 0x238C003A
- SDRAM_A: .long 0xa8000000
- DUMMY_A: .long 0x0c400000
- CCR_A: .long CCR
- CCR_D: .long 0x0000090B
- SR_MASK_D: .long 0xEFFFFF0F
|