123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- /*
- * Copyright (C) 2009 Renesas Solutions Corp.
- * Copyright (C) 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
- *
- * board/espt/lowlevel_init.S
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
- #include <config.h>
- #include <asm/processor.h>
- #include <asm/macro.h>
- .global lowlevel_init
- .text
- .align 2
- lowlevel_init:
- write32 WDTCSR_A, WDTCSR_D
- write32 WDTST_A, WDTST_D
- write32 WDTBST_A, WDTBST_D
- write32 CCR_A, CCR_CACHE_ICI_D
- write32 MMUCR_A, MMU_CONTROL_TI_D
- write32 MSTPCR0_A, MSTPCR0_D
- write32 MSTPCR1_A, MSTPCR1_D
- write32 RAMCR_A, RAMCR_D
- /*
- * Setting infomation from
- * original ESPT-GIGA bootloader register
- */
- write32 MMSEL_A, MMSEL_D
- /* dummy */
- mov.l @r1, r2
- mov.l @r1, r2
- synco
- write32 BCR_A, BCR_D
- write32 CS0BCR_A, CS0BCR_D
- write32 CS0WCR_A, CS0WCR_D
- /*
- * DDR-SDRAM setting
- */
- /* set DDR-SDRAM dummy read */
- write32 MMSEL_A, MMSEL_D
- write32 MMSEL_A, CS0_A
- /* set DDR-SDRAM bus/endian etc */
- write32 MIM_U_A, MIM_U_D
- write32 MIM_L_A, MIM_L_D0
- write32 SDR_L_A, SDR_L_A_D0
- write32 STR_L_A, STR_L_A_D0
- /* DDR-SDRAM access control */
- write32 MIM_L_A, MIM_L_D1
- write32 SCR_L_A, SCR_L_A_D0
- write32 SCR_L_A, SCR_L_A_D1
- write32 EMRS_A, EMRS_D
- write32 MRS1_A, MRS1_D
- write32 MIM_U_A, MIM_U_D
- write32 MIM_L_A, MIM_L_A_D2
- write32 SCR_L_A, SCR_L_A_D2
- write32 SCR_L_A, SCR_L_A_D2
- write32 MRS2_A, MRS2_D
- /* wait 200us */
- wait_timer REPEAT_R3
- /* GPIO setting */
- write16 PSEL0_A, PSEL0_D
- write16 PSEL1_A, PSEL1_D
- write16 PSEL2_A, PSEL2_D
- write16 PSEL3_A, PSEL3_D
- write16 PSEL4_A, PSEL4_D
- write8 PADR_A, PADR_D
- write16 PACR_A, PACR_D
- write8 PBDR_A, PBDR_D
- write16 PBCR_A, PBCR_D
- write8 PCDR_A, PCDR_D
- write16 PCCR_A, PCCR_D
- write8 PDDR_A, PDDR_D
- write16 PDCR_A, PDCR_D
- write16 PECR_A, PECR_D
- write16 PFCR_A, PFCR_D
- write16 PGCR_A, PGCR_D
- write16 PHCR_A, PHCR_D
- write16 PICR_A, PICR_D
- write8 PJDR_A, PJDR_D
- write16 PJCR_A, PJCR_D
- /* wait 50us */
- wait_timer REPEAT_R3
- write8 PKDR_A, PKDR_D
- write16 PKCR_A, PKCR_D
- write16 PLCR_A, PLCR_D
- write16 PMCR_A, PMCR_D
- write16 PNCR_A, PNCR_D
- write16 POCR_A, POCR_D
- /* ICR0 ,ICR1 */
- write32 ICR0_A, ICR0_D
- write32 ICR1_A, ICR1_D
- /* USB Host */
- write32 USB_USBHSC_A, USB_USBHSC_D
- write32 CCR_A, CCR_CACHE_D_2
- rts
- nop
- .align 2
- /* GPIO Crontrol Register */
- PACR_A: .long 0xFFEF0000
- PBCR_A: .long 0xFFEF0002
- PCCR_A: .long 0xFFEF0004
- PDCR_A: .long 0xFFEF0006
- PECR_A: .long 0xFFEF0008
- PFCR_A: .long 0xFFEF000A
- PGCR_A: .long 0xFFEF000C
- PHCR_A: .long 0xFFEF000E
- PICR_A: .long 0xFFEF0010
- PJCR_A: .long 0xFFEF0012
- PKCR_A: .long 0xFFEF0014
- PLCR_A: .long 0xFFEF0016
- PMCR_A: .long 0xFFEF0018
- PNCR_A: .long 0xFFEF001A
- POCR_A: .long 0xFFEF001C
- /* GPIO Data Register */
- PADR_A: .long 0xFFEF0020
- PBDR_A: .long 0xFFEF0022
- PCDR_A: .long 0xFFEF0024
- PDDR_A: .long 0xFFEF0026
- PJDR_A: .long 0xFFEF0032
- PKDR_A: .long 0xFFEF0034
- /* GPIO Set data */
- PADR_D: .long 0x00000000
- PACR_D: .word 0x1400
- .align 2
- PBDR_D: .long 0x00000000
- PBCR_D: .word 0x555A
- .align 2
- PCDR_D: .long 0x00000000
- PCCR_D: .word 0x5555
- .align 2
- PDDR_D: .long 0x00000000
- PDCR_D: .word 0x0155
- PECR_D: .word 0x0000
- PFCR_D: .word 0x0000
- PGCR_D: .word 0x0000
- PHCR_D: .word 0x0000
- PICR_D: .word 0x0800
- PJDR_D: .long 0x00000006
- PJCR_D: .word 0x5A57
- .align 2
- PKDR_D: .long 0x00000000
- PKCR_D: .word 0xFFF9
- .align 2
- PLCR_D: .word 0xC330
- PMCR_D: .word 0xFFFF
- PNCR_D: .word 0x0242
- POCR_D: .word 0x0000
- /* Pin Select */
- PSEL0_A: .long 0xFFEF0070
- PSEL1_A: .long 0xFFEF0072
- PSEL2_A: .long 0xFFEF0074
- PSEL3_A: .long 0xFFEF0076
- PSEL4_A: .long 0xFFEF0078
- PSEL0_D: .word 0x0001
- PSEL1_D: .word 0x2400
- PSEL2_D: .word 0x0000
- PSEL3_D: .word 0x2421
- PSEL4_D: .word 0x0000
- .align 2
- MMSEL_A: .long 0xFE600020
- BCR_A: .long 0xFF801000
- CS0BCR_A: .long 0xFF802000
- CS0WCR_A: .long 0xFF802008
- ICR0_A: .long 0xFFD00000
- ICR1_A: .long 0xFFD0001C
- MMSEL_D: .long 0xA5A50000
- BCR_D: .long 0x05000000
- CS0BCR_D: .long 0x232306F0
- CS0WCR_D: .long 0x00011104
- ICR0_D: .long 0x80C00000
- ICR1_D: .long 0x00020000
- /* RWBT Address */
- WDTST_A: .long 0xFFCC0000
- WDTCSR_A: .long 0xFFCC0004
- WDTBST_A: .long 0xFFCC0008
- /* RWBT Data */
- WDTST_D: .long 0x5A000FFF
- WDTCSR_D: .long 0xA5000000
- WDTBST_D: .long 0x55000000
- /* Cache Address */
- CCR_A: .long 0xFF00001C
- MMUCR_A: .long 0xFF000010
- RAMCR_A: .long 0xFF000074
- /* Cache Data */
- CCR_CACHE_ICI_D:.long 0x00000800
- CCR_CACHE_D_2: .long 0x00000103
- MMU_CONTROL_TI_D:.long 0x00000004
- RAMCR_D: .long 0x00000200
- /* Low power mode control Address */
- MSTPCR0_A: .long 0xFFC80030
- MSTPCR1_A: .long 0xFFC80038
- /* Low power mode control Data */
- MSTPCR0_D: .long 0x00000000
- MSTPCR1_D: .long 0x00000000
- REPEAT0_R3: .long 0x00002000
- REPEAT_R3: .long 0x00000200
- CS0_A: .long 0xA8000000
- MIM_U_A: .long 0xFE800008
- MIM_L_A: .long 0xFE80000C
- SCR_U_A: .long 0xFE800010
- SCR_L_A: .long 0xFE800014
- STR_U_A: .long 0xFE800018
- STR_L_A: .long 0xFE80001C
- SDR_U_A: .long 0xFE800030
- SDR_L_A: .long 0xFE800034
- EMRS_A: .long 0xFE902000
- MRS1_A: .long 0xFE900B08
- MRS2_A: .long 0xFE900308
- MIM_U_D: .long 0x00000000
- MIM_L_D0: .long 0x04100008
- MIM_L_D1: .long 0x02EE0009
- MIM_L_D2: .long 0x02EE0209
- SDR_L_A_D0: .long 0x00000300
- STR_L_A_D0: .long 0x00010040
- MIM_L_A_D1: .long 0x04100009
- SCR_L_A_D0: .long 0x00000003
- SCR_L_A_D1: .long 0x00000002
- MIM_L_A_D2: .long 0x04100209
- SCR_L_A_D2: .long 0x00000004
- SCR_L_NORMAL: .long 0x00000000
- SCR_L_NOP: .long 0x00000001
- SCR_L_PALL: .long 0x00000002
- SCR_L_CKE_EN: .long 0x00000003
- SCR_L_CBR: .long 0x00000004
- STR_L_D: .long 0x000F3980
- SDR_L_D: .long 0x00000400
- EMRS_D: .long 0x00000000
- MRS1_D: .long 0x00000000
- MRS2_D: .long 0x00000000
- /* USB */
- USB_USBHSC_A: .long 0xFFEC80F0
- USB_USBHSC_D: .long 0x00000000
|