169df3c4dSNobuhiro Iwamatsu/* 269df3c4dSNobuhiro Iwamatsu modified from SH-IPL+g 3047375bfSNobuhiro Iwamatsu Renesaso SuperH / Solution Enginge MS775xSE01 BSC setting. 4047375bfSNobuhiro Iwamatsu 5047375bfSNobuhiro Iwamatsu Support CPU : SH7750/SH7750S/SH7750R/SH7751/SH7751R 6047375bfSNobuhiro Iwamatsu 7047375bfSNobuhiro Iwamatsu Coyright (c) 2007 Nobuhiro Iwamatsu <iwmatsu@nigauri.org> 8047375bfSNobuhiro Iwamatsu 9*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 1069df3c4dSNobuhiro Iwamatsu*/ 1169df3c4dSNobuhiro Iwamatsu 1269df3c4dSNobuhiro Iwamatsu#include <config.h> 1369df3c4dSNobuhiro Iwamatsu 1469df3c4dSNobuhiro Iwamatsu#include <asm/processor.h> 15f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h> 1669df3c4dSNobuhiro Iwamatsu 17047375bfSNobuhiro Iwamatsu#ifdef CONFIG_CPU_SH7751 1869df3c4dSNobuhiro Iwamatsu#define BCR2_D_VALUE 0x2FFC /* Area 1-6 width: 32/32/32/32/32/16 */ 1969df3c4dSNobuhiro Iwamatsu#define WCR1_D_VALUE 0x02770771 /* DMA:0 A6:2 A3:0 A0:1 Others:15 */ 20047375bfSNobuhiro Iwamatsu#ifdef CONFIG_MARUBUN_PCCARD 2169df3c4dSNobuhiro Iwamatsu#define WCR2_D_VALUE 0xFFFE4FE7 /* A6:15 A6B:7 A5:15 A5B:7 A4:15 2269df3c4dSNobuhiro Iwamatsu A3:2 A2:15 A1:15 A0:6 A0B:7 */ 23047375bfSNobuhiro Iwamatsu#else /* CONFIG_MARUBUN_PCCARD */ 2469df3c4dSNobuhiro Iwamatsu#define WCR2_D_VALUE 0x7FFE4FE7 /* A6:3 A6B:7 A5:15 A5B:7 A4:15 2569df3c4dSNobuhiro Iwamatsu A3:2 A2:15 A1:15 A0:6 A0B:7 */ 26047375bfSNobuhiro Iwamatsu#endif /* CONFIG_MARUBUN_PCCARD */ 2769df3c4dSNobuhiro Iwamatsu#define WCR3_D_VALUE 0x01777771 /* A6: 0-1 A5: 1-3 A4: 1-3 A3: 1-3 2869df3c4dSNobuhiro Iwamatsu A2: 1-3 A1: 1-3 A0: 0-1 */ 2969df3c4dSNobuhiro Iwamatsu#define RTCOR_D_VALUE 0xA50D /* Write code A5, data 0D (~15us?) */ 3069df3c4dSNobuhiro Iwamatsu#define SDMR3_ADDRESS 0xFF940088 /* SDMR3 address on 32-bit bus */ 31e4430779SJean-Christophe PLAGNIOL-VILLARD#define MCR_D1_VALUE 0x100901B4 /* SDRAM 32-bit, CAS/RAS Refresh, .. */ 3269df3c4dSNobuhiro Iwamatsu#define MCR_D2_VALUE 0x500901B4 /* Same w/MRSET now 1 (mode reg cmd) */ 33047375bfSNobuhiro Iwamatsu#else /* CONFIG_CPU_SH7751 */ 3469df3c4dSNobuhiro Iwamatsu#define BCR2_D_VALUE 0x2E3C /* Area 1-6 width: 32/32/64/16/32/16 */ 3569df3c4dSNobuhiro Iwamatsu#define WCR1_D_VALUE 0x02720777 /* DMA:0 A6:2 A4:2 A3:0 Others:15 */ 3669df3c4dSNobuhiro Iwamatsu#define WCR2_D_VALUE 0xFFFE4FFF /* A6:15 A6B:7 A5:15 A5B:7 A4:15 3769df3c4dSNobuhiro Iwamatsu A3:2 A2:15 A1:15 A0:15 A0B:7 */ 3869df3c4dSNobuhiro Iwamatsu#define WCR3_D_VALUE 0x01717771 /* A6: 0-1 A5: 1-3 A4: 0-1 A3: 1-3 3969df3c4dSNobuhiro Iwamatsu A2: 1-3 A1: 1-3 A0: 0-1 */ 4069df3c4dSNobuhiro Iwamatsu#define RTCOR_D_VALUE 0xA510 /* Write code A5, data 10 (~15us?) */ 4169df3c4dSNobuhiro Iwamatsu#define SDMR3_ADDRESS 0xFF940110 /* SDMR3 address on 64-bit bus */ 42e4430779SJean-Christophe PLAGNIOL-VILLARD#define MCR_D1_VALUE 0x8801001C /* SDRAM 64-bit, CAS/RAS Refresh, .. */ 4369df3c4dSNobuhiro Iwamatsu#define MCR_D2_VALUE 0xC801001C /* Same w/MRSET now 1 (mode reg cmd) */ 44047375bfSNobuhiro Iwamatsu#endif /* CONFIG_CPU_SH7751 */ 4569df3c4dSNobuhiro Iwamatsu 4669df3c4dSNobuhiro Iwamatsu .global lowlevel_init 4769df3c4dSNobuhiro Iwamatsu .text 4869df3c4dSNobuhiro Iwamatsu .align 2 4969df3c4dSNobuhiro Iwamatsu 5069df3c4dSNobuhiro Iwamatsulowlevel_init: 5169df3c4dSNobuhiro Iwamatsu 52f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CCR_A, CCR_D_DISABLE 5369df3c4dSNobuhiro Iwamatsu 5469df3c4dSNobuhiro Iwamatsuinit_bsc: 55f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 FRQCR_A, FRQCR_D 5669df3c4dSNobuhiro Iwamatsu 57f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 BCR1_A, BCR1_D 5869df3c4dSNobuhiro Iwamatsu 59f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 BCR2_A, BCR2_D 6069df3c4dSNobuhiro Iwamatsu 61f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 WCR1_A, WCR1_D 6269df3c4dSNobuhiro Iwamatsu 63f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 WCR2_A, WCR2_D 6469df3c4dSNobuhiro Iwamatsu 65f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 WCR3_A, WCR3_D 6669df3c4dSNobuhiro Iwamatsu 67f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MCR_A, MCR_D1 6869df3c4dSNobuhiro Iwamatsu 69f7e78f3bSJean-Christophe PLAGNIOL-VILLARD /* Set SDRAM mode */ 70c9935c99SNobuhiro Iwamatsu write8 SDMR3_A, SDMR3_D 7169df3c4dSNobuhiro Iwamatsu 7269df3c4dSNobuhiro Iwamatsu ! Do you need PCMCIA setting? 7369df3c4dSNobuhiro Iwamatsu ! If so, please add the lines here... 7469df3c4dSNobuhiro Iwamatsu 75f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RTCNT_A, RTCNT_D 7669df3c4dSNobuhiro Iwamatsu 77f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RTCOR_A, RTCOR_D 7869df3c4dSNobuhiro Iwamatsu 79f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RTCSR_A, RTCSR_D 8069df3c4dSNobuhiro Iwamatsu 81f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RFCR_A, RFCR_D 82f7e78f3bSJean-Christophe PLAGNIOL-VILLARD 8369df3c4dSNobuhiro Iwamatsu /* Wait DRAM refresh 30 times */ 8469df3c4dSNobuhiro Iwamatsu mov #30, r3 8569df3c4dSNobuhiro Iwamatsu1: 8669df3c4dSNobuhiro Iwamatsu mov.w @r1, r0 8769df3c4dSNobuhiro Iwamatsu extu.w r0, r2 8869df3c4dSNobuhiro Iwamatsu cmp/hi r3, r2 8969df3c4dSNobuhiro Iwamatsu bf 1b 9069df3c4dSNobuhiro Iwamatsu 91f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MCR_A, MCR_D2 9269df3c4dSNobuhiro Iwamatsu 93f7e78f3bSJean-Christophe PLAGNIOL-VILLARD /* Set SDRAM mode */ 94c9935c99SNobuhiro Iwamatsu write8 SDMR3_A, SDMR3_D 9569df3c4dSNobuhiro Iwamatsu 9669df3c4dSNobuhiro Iwamatsu rts 9769df3c4dSNobuhiro Iwamatsu nop 9869df3c4dSNobuhiro Iwamatsu 9969df3c4dSNobuhiro Iwamatsu .align 2 10069df3c4dSNobuhiro Iwamatsu 101047375bfSNobuhiro IwamatsuCCR_A: .long CCR 102047375bfSNobuhiro IwamatsuCCR_D_DISABLE: .long 0x0808 10369df3c4dSNobuhiro IwamatsuFRQCR_A: .long FRQCR 10469df3c4dSNobuhiro IwamatsuFRQCR_D: 105047375bfSNobuhiro Iwamatsu#ifdef CONFIG_CPU_TYPE_R 10633971937SNobuhiro Iwamatsu .word 0x0e1a /* 12:3:3 */ 107047375bfSNobuhiro Iwamatsu#else /* CONFIG_CPU_TYPE_R */ 10869df3c4dSNobuhiro Iwamatsu#ifdef CONFIG_GOOD_SESH4 10933971937SNobuhiro Iwamatsu .word 0x00e13 /* 6:2:1 */ 11069df3c4dSNobuhiro Iwamatsu#else 11133971937SNobuhiro Iwamatsu .word 0x00e23 /* 6:1:1 */ 11269df3c4dSNobuhiro Iwamatsu#endif 11333971937SNobuhiro Iwamatsu.align 2 114047375bfSNobuhiro Iwamatsu#endif /* CONFIG_CPU_TYPE_R */ 11569df3c4dSNobuhiro Iwamatsu 11669df3c4dSNobuhiro IwamatsuBCR1_A: .long BCR1 11769df3c4dSNobuhiro IwamatsuBCR1_D: .long 0x00000008 /* Area 3 SDRAM */ 11869df3c4dSNobuhiro IwamatsuBCR2_A: .long BCR2 11969df3c4dSNobuhiro IwamatsuBCR2_D: .long BCR2_D_VALUE /* Bus width settings */ 12069df3c4dSNobuhiro IwamatsuWCR1_A: .long WCR1 12169df3c4dSNobuhiro IwamatsuWCR1_D: .long WCR1_D_VALUE /* Inter-area or turnaround wait states */ 12269df3c4dSNobuhiro IwamatsuWCR2_A: .long WCR2 12369df3c4dSNobuhiro IwamatsuWCR2_D: .long WCR2_D_VALUE /* Per-area access and burst wait states */ 12469df3c4dSNobuhiro IwamatsuWCR3_A: .long WCR3 12569df3c4dSNobuhiro IwamatsuWCR3_D: .long WCR3_D_VALUE /* Address setup and data hold cycles */ 12669df3c4dSNobuhiro IwamatsuRTCSR_A: .long RTCSR 12733971937SNobuhiro IwamatsuRTCSR_D: .word 0xA518 /* RTCSR Write Code A5h Data 18h */ 12833971937SNobuhiro Iwamatsu.align 2 12969df3c4dSNobuhiro IwamatsuRTCNT_A: .long RTCNT 13033971937SNobuhiro IwamatsuRTCNT_D: .word 0xA500 /* RTCNT Write Code A5h Data 00h */ 13133971937SNobuhiro Iwamatsu.align 2 13269df3c4dSNobuhiro IwamatsuRTCOR_A: .long RTCOR 13333971937SNobuhiro IwamatsuRTCOR_D: .word RTCOR_D_VALUE /* Set refresh time (about 15us) */ 13433971937SNobuhiro Iwamatsu.align 2 13569df3c4dSNobuhiro IwamatsuSDMR3_A: .long SDMR3_ADDRESS 136c9935c99SNobuhiro IwamatsuSDMR3_D: .long 0x00 13769df3c4dSNobuhiro IwamatsuMCR_A: .long MCR 13869df3c4dSNobuhiro IwamatsuMCR_D1: .long MCR_D1_VALUE 13969df3c4dSNobuhiro IwamatsuMCR_D2: .long MCR_D2_VALUE 14069df3c4dSNobuhiro IwamatsuRFCR_A: .long RFCR 14133971937SNobuhiro IwamatsuRFCR_D: .word 0xA400 /* RFCR Write Code A4h Data 00h */ 14233971937SNobuhiro Iwamatsu.align 2 143