1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * (C) Copyright 2008 4 * Mark Jonas <mark.jonas@de.bosch.com> 5 * 6 * (C) Copyright 2007 7 * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> 8 * 9 * board/mpr2/lowlevel_init.S 10 */ 11#include <asm/macro.h> 12 13 .global lowlevel_init 14 15 .text 16 .align 2 17 18lowlevel_init: 19 20/* 21 * Set frequency multipliers and dividers in FRQCR. 22 */ 23 write16 WTCSR_A, WTCSR_D 24 25 write16 WTCNT_A, WTCNT_D 26 27 write16 FRQCR_A, FRQCR_D 28 29/* 30 * Setup CS0 (Flash). 31 */ 32 write32 CS0BCR_A, CS0BCR_D 33 34 write32 CS0WCR_A, CS0WCR_D 35 36/* 37 * Setup CS3 (SDRAM). 38 */ 39 write32 CS3BCR_A, CS3BCR_D 40 41 write32 CS3WCR_A, CS3WCR_D 42 43 write32 SDCR_A, SDCR_D1 44 45 write32 RTCSR_A, RTCSR_D 46 47 write32 RTCNT_A, RTCNT_D 48 49 write32 RTCOR_A, RTCOR_D 50 51 write32 SDCR_A, SDCR_D2 52 53 mov.l SDMR3_A, r1 54 mov.l SDMR3_D, r0 55 add r0, r1 56 mov #0, r0 57 mov.w r0, @r1 58 59 rts 60 nop 61 62 .align 4 63 64/* 65 * Configuration for MPR2 A.3 through A.7 66 */ 67 68/* 69 * PLL Settings 70 */ 71FRQCR_D: .word 0x1103 /* I:B:P=8:4:2 */ 72WTCNT_D: .word 0x5A00 /* start counting at zero */ 73WTCSR_D: .word 0xA507 /* divide by 4096 */ 74.align 2 75/* 76 * Spansion S29GL256N11 @ 48 MHz 77 */ 78/* 1 idle cycle inserted, normal space, 16 bit */ 79CS0BCR_D: .long 0x12490400 80/* tSW=0.5ck, 6 wait cycles, NO external wait, tHW=0.5ck */ 81CS0WCR_D: .long 0x00000340 82 83/* 84 * Samsung K4S511632B-UL75 @ 48 MHz 85 * Micron MT48LC32M16A2-75 @ 48 MHz 86 */ 87/* CS3BCR = 0x10004400, minimum idle cycles, SDRAM, 16 bit */ 88CS3BCR_D: .long 0x10004400 89/* tRP=1ck, tRCD=1ck, CL=2, tRWL=2ck, tRC=4ck */ 90CS3WCR_D: .long 0x00000091 91/* no refresh, 13 rows, 10 cols, NO bank active mode */ 92SDCR_D1: .long 0x00000012 93SDCR_D2: .long 0x00000812 /* refresh */ 94RTCSR_D: .long 0xA55A0008 /* 1/4, once */ 95RTCNT_D: .long 0xA55A005D /* count 93 */ 96RTCOR_D: .long 0xa55a005d /* count 93 */ 97/* mode register CL2, burst read and SINGLE WRITE */ 98SDMR3_D: .long 0x440 99 100/* 101 * Registers 102 */ 103 104FRQCR_A: .long 0xA415FF80 105WTCNT_A: .long 0xA415FF84 106WTCSR_A: .long 0xA415FF86 107 108#define BSC_BASE 0xA4FD0000 109CS0BCR_A: .long BSC_BASE + 0x04 110CS3BCR_A: .long BSC_BASE + 0x0C 111CS0WCR_A: .long BSC_BASE + 0x24 112CS3WCR_A: .long BSC_BASE + 0x2C 113SDCR_A: .long BSC_BASE + 0x44 114RTCSR_A: .long BSC_BASE + 0x48 115RTCNT_A: .long BSC_BASE + 0x4C 116RTCOR_A: .long BSC_BASE + 0x50 117SDMR3_A: .long BSC_BASE + 0x5000 118