| /* |
| * Copyright (C) 2011 Renesas Electronics Europe Ltd. |
| * Copyright (C) 2008 Renesas Solutions Corp. |
| * Copyright (C) 2008 Nobuhiro Iwamatsu |
| * |
| * Based on board/renesas/rsk7203/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: |
| /* Cache setting */ |
| write32 CCR1_A ,CCR1_D |
| |
| /* io_set_cpg */ |
| write8 STBCR3_A, STBCR3_D |
| write8 STBCR4_A, STBCR4_D |
| write8 STBCR5_A, STBCR5_D |
| write8 STBCR6_A, STBCR6_D |
| write8 STBCR7_A, STBCR7_D |
| write8 STBCR8_A, STBCR8_D |
| |
| /* ConfigurePortPins */ |
| |
| /* Leaving LED1 ON for sanity test */ |
| write16 PJCR1_A, PJCR1_D1 |
| write16 PJCR2_A, PJCR2_D |
| write16 PJIOR0_A, PJIOR0_D1 |
| write16 PJDR0_A, PJDR0_D |
| write16 PJPR0_A, PJPR0_D |
| |
| /* Configure EN_PIN & RS_PIN */ |
| write16 PGCR2_A, PGCR2_D |
| write16 PGIOR0_A, PGIOR0_D |
| |
| /* Configure the port pins connected to UART */ |
| write16 PJCR1_A, PJCR1_D2 |
| write16 PJIOR0_A, PJIOR0_D2 |
| |
| /* Configure Operating Frequency */ |
| write16 WTCSR_A, WTCSR_D0 |
| write16 WTCSR_A, WTCSR_D1 |
| write16 WTCNT_A, WTCNT_D |
| |
| /* Control of RESBANK */ |
| write16 IBNR_A, IBNR_D |
| /* Enable SCIF3 module */ |
| write16 STBCR4_A, STBCR4_D |
| |
| /* Set clock mode*/ |
| write16 FRQCR_A, FRQCR_D |
| |
| /* Configure Bus And Memory */ |
| init_bsc_cs0: |
| |
| pfc_settings: |
| write16 PCCR2_A, PCCR2_D |
| write16 PCCR1_A, PCCR1_D |
| write16 PCCR0_A, PCCR0_D |
| |
| write16 PBCR0_A, PBCR0_D |
| write16 PBCR1_A, PBCR1_D |
| write16 PBCR2_A, PBCR2_D |
| write16 PBCR3_A, PBCR3_D |
| write16 PBCR4_A, PBCR4_D |
| write16 PBCR5_A, PBCR5_D |
| |
| write16 PDCR0_A, PDCR0_D |
| write16 PDCR1_A, PDCR1_D |
| write16 PDCR2_A, PDCR2_D |
| write16 PDCR3_A, PDCR3_D |
| |
| write32 CS0WCR_A, CS0WCR_D |
| write32 CS0BCR_A, CS0BCR_D |
| |
| init_bsc_cs2: |
| write16 PJCR0_A, PJCR0_D |
| write32 CS2WCR_A, CS2WCR_D |
| |
| init_sdram: |
| write32 CS3BCR_A, CS3BCR_D |
| write32 CS3WCR_A, CS3WCR_D |
| write32 SDCR_A, SDCR_D |
| write32 RTCOR_A, RTCOR_D |
| write32 RTCSR_A, RTCSR_D |
| |
| /* wait 200us */ |
| mov.l REPEAT_D, r3 |
| mov #0, r2 |
| repeat0: |
| add #1, r2 |
| cmp/hs r3, r2 |
| bf repeat0 |
| nop |
| |
| mov.l SDRAM_MODE, r1 |
| mov #0, r0 |
| mov.l r0, @r1 |
| |
| nop |
| rts |
| |
| .align 4 |
| |
| CCR1_A: .long CCR1 |
| CCR1_D: .long 0x0000090B |
| FRQCR_A: .long 0xFFFE0010 |
| FRQCR_D: .word 0x1003 |
| .align 2 |
| STBCR3_A: .long 0xFFFE0408 |
| STBCR3_D: .long 0x00000002 |
| STBCR4_A: .long 0xFFFE040C |
| STBCR4_D: .word 0x0000 |
| .align 2 |
| STBCR5_A: .long 0xFFFE0410 |
| STBCR5_D: .long 0x00000010 |
| STBCR6_A: .long 0xFFFE0414 |
| STBCR6_D: .long 0x00000002 |
| STBCR7_A: .long 0xFFFE0418 |
| STBCR7_D: .long 0x0000002A |
| STBCR8_A: .long 0xFFFE041C |
| STBCR8_D: .long 0x0000007E |
| PJCR1_A: .long 0xFFFE390C |
| PJCR1_D1: .word 0x0000 |
| PJCR1_D2: .word 0x0022 |
| PJCR2_A: .long 0xFFFE390A |
| PJCR2_D: .word 0x0000 |
| .align 2 |
| PJIOR0_A: .long 0xFFFE3912 |
| PJIOR0_D1: .word 0x0FC0 |
| PJIOR0_D2: .word 0x0FE0 |
| PJDR0_A: .long 0xFFFE3916 |
| PJDR0_D: .word 0x0FBF |
| .align 2 |
| PJPR0_A: .long 0xFFFE391A |
| PJPR0_D: .long 0x00000FBF |
| PGCR2_A: .long 0xFFFE38CA |
| PGCR2_D: .word 0x0000 |
| .align 2 |
| PGIOR0_A: .long 0xFFFE38D2 |
| PGIOR0_D: .word 0x03F0 |
| .align 2 |
| WTCSR_A: .long 0xFFFE0000 |
| WTCSR_D0: .word 0x0000 |
| WTCSR_D1: .word 0x0000 |
| WTCNT_A: .long 0xFFFE0002 |
| WTCNT_D: .word 0x0000 |
| .align 2 |
| PCCR0_A: .long 0xFFFE384E |
| PDCR0_A: .long 0xFFFE386E |
| PDCR1_A: .long 0xFFFE386C |
| PDCR2_A: .long 0xFFFE386A |
| PDCR3_A: .long 0xFFFE3868 |
| PBCR0_A: .long 0xFFFE382E |
| PBCR1_A: .long 0xFFFE382C |
| PBCR2_A: .long 0xFFFE382A |
| PBCR3_A: .long 0xFFFE3828 |
| PBCR4_A: .long 0xFFFE3826 |
| PBCR5_A: .long 0xFFFE3824 |
| PCCR0_D: .word 0x1111 |
| PDCR0_D: .word 0x1111 |
| PDCR1_D: .word 0x1111 |
| PDCR2_D: .word 0x1111 |
| PDCR3_D: .word 0x1111 |
| PBCR0_D: .word 0x1110 |
| PBCR1_D: .word 0x1111 |
| PBCR2_D: .word 0x1111 |
| PBCR3_D: .word 0x1111 |
| PBCR4_D: .word 0x1111 |
| PBCR5_D: .word 0x0111 |
| .align 2 |
| CS0WCR_A: .long 0xFFFC0028 |
| CS0WCR_D: .long 0x00000B41 |
| CS0BCR_A: .long 0xFFFC0004 |
| CS0BCR_D: .long 0x10000400 |
| PJCR0_A: .long 0xFFFE390E |
| PJCR0_D: .word 0x3300 |
| .align 2 |
| CS2WCR_A: .long 0xFFFC0030 |
| CS2WCR_D: .long 0x00000B01 |
| PCCR2_A: .long 0xFFFE384A |
| PCCR2_D: .word 0x0001 |
| .align 2 |
| PCCR1_A: .long 0xFFFE384C |
| PCCR1_D: .word 0x1111 |
| .align 2 |
| CS3BCR_A: .long 0xFFFC0010 |
| CS3BCR_D: .long 0x00004400 |
| CS3WCR_A: .long 0xFFFC0034 |
| CS3WCR_D: .long 0x0000288A |
| SDCR_A: .long 0xFFFC004C |
| SDCR_D: .long 0x00000812 |
| RTCOR_A: .long 0xFFFC0058 |
| RTCOR_D: .long 0xA55A0046 |
| RTCSR_A: .long 0xFFFC0050 |
| RTCSR_D: .long 0xA55A0010 |
| IBNR_A: .long 0xFFFE080E |
| IBNR_D: .word 0x0000 |
| .align 2 |
| SDRAM_MODE: .long 0xFFFC5040 |
| REPEAT_D: .long 0x00000085 |