1*83d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */ 26d1d5cf9SNobuhiro Iwamatsu/* 36d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Renesas Solutions Corp. 46d1d5cf9SNobuhiro Iwamatsu * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.Iwamatsu.yj@renesas.com> 56d1d5cf9SNobuhiro Iwamatsu * 66d1d5cf9SNobuhiro Iwamatsu * board/renesas/ecovec/lowlevel_init.S 76d1d5cf9SNobuhiro Iwamatsu */ 86d1d5cf9SNobuhiro Iwamatsu 96d1d5cf9SNobuhiro Iwamatsu#include <config.h> 106d1d5cf9SNobuhiro Iwamatsu#include <asm/processor.h> 116d1d5cf9SNobuhiro Iwamatsu#include <asm/macro.h> 126d1d5cf9SNobuhiro Iwamatsu#include <configs/ecovec.h> 136d1d5cf9SNobuhiro Iwamatsu 146d1d5cf9SNobuhiro Iwamatsu .global lowlevel_init 156d1d5cf9SNobuhiro Iwamatsu 166d1d5cf9SNobuhiro Iwamatsu .text 176d1d5cf9SNobuhiro Iwamatsu .align 2 186d1d5cf9SNobuhiro Iwamatsu 196d1d5cf9SNobuhiro Iwamatsulowlevel_init: 206d1d5cf9SNobuhiro Iwamatsu 21194ba5d4SBaruch Siach /* jump to CONFIG_ECOVEC_ROMIMAGE_ADDR if bit 1 of PVDR_A */ 226d1d5cf9SNobuhiro Iwamatsu mov.l PVDR_A, r1 236d1d5cf9SNobuhiro Iwamatsu mov.l PVDR_D, r2 246d1d5cf9SNobuhiro Iwamatsu mov.b @r1, r0 256d1d5cf9SNobuhiro Iwamatsu tst r0, r2 266d1d5cf9SNobuhiro Iwamatsu bt 1f 276d1d5cf9SNobuhiro Iwamatsu mov.l JUMP_A, r1 286d1d5cf9SNobuhiro Iwamatsu jmp @r1 296d1d5cf9SNobuhiro Iwamatsu nop 306d1d5cf9SNobuhiro Iwamatsu 316d1d5cf9SNobuhiro Iwamatsu1: 326d1d5cf9SNobuhiro Iwamatsu /* Disable watchdog */ 336d1d5cf9SNobuhiro Iwamatsu write16 RWTCSR_A, RWTCSR_D 346d1d5cf9SNobuhiro Iwamatsu 356d1d5cf9SNobuhiro Iwamatsu /* MMU Disable */ 366d1d5cf9SNobuhiro Iwamatsu write32 MMUCR_A, MMUCR_D 376d1d5cf9SNobuhiro Iwamatsu 386d1d5cf9SNobuhiro Iwamatsu /* Setup clocks */ 396d1d5cf9SNobuhiro Iwamatsu write32 PLLCR_A, PLLCR_D 406d1d5cf9SNobuhiro Iwamatsu write32 FRQCRA_A, FRQCRA_D 416d1d5cf9SNobuhiro Iwamatsu write32 FRQCRB_A, FRQCRB_D 426d1d5cf9SNobuhiro Iwamatsu 436d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 446d1d5cf9SNobuhiro Iwamatsu 456d1d5cf9SNobuhiro Iwamatsu write32 MMSELR_A, MMSELR_D 466d1d5cf9SNobuhiro Iwamatsu 476d1d5cf9SNobuhiro Iwamatsu /* Srtup BSC */ 486d1d5cf9SNobuhiro Iwamatsu write32 CMNCR_A, CMNCR_D 496d1d5cf9SNobuhiro Iwamatsu write32 CS0BCR_A, CS0BCR_D 506d1d5cf9SNobuhiro Iwamatsu write32 CS0WCR_A, CS0WCR_D 516d1d5cf9SNobuhiro Iwamatsu 526d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 536d1d5cf9SNobuhiro Iwamatsu 546d1d5cf9SNobuhiro Iwamatsu /* Setup SDRAM */ 556d1d5cf9SNobuhiro Iwamatsu write32 DBPDCNT0_A, DBPDCNT0_D0 566d1d5cf9SNobuhiro Iwamatsu write32 DBCONF_A, DBCONF_D 576d1d5cf9SNobuhiro Iwamatsu write32 DBTR0_A, DBTR0_D 586d1d5cf9SNobuhiro Iwamatsu write32 DBTR1_A, DBTR1_D 596d1d5cf9SNobuhiro Iwamatsu write32 DBTR2_A, DBTR2_D 606d1d5cf9SNobuhiro Iwamatsu write32 DBTR3_A, DBTR3_D 616d1d5cf9SNobuhiro Iwamatsu write32 DBKIND_A, DBKIND_D 626d1d5cf9SNobuhiro Iwamatsu write32 DBCKECNT_A, DBCKECNT_D 636d1d5cf9SNobuhiro Iwamatsu 646d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 656d1d5cf9SNobuhiro Iwamatsu 666d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 676d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D0 686d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D1 696d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D2 706d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D3 716d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 726d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D1 736d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D1 746d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D4 756d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D5 766d1d5cf9SNobuhiro Iwamatsu write32 DBMRCNT_A, DBMRCNT_D6 776d1d5cf9SNobuhiro Iwamatsu 786d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 796d1d5cf9SNobuhiro Iwamatsu 806d1d5cf9SNobuhiro Iwamatsu write32 DBEN_A, DBEN_D 816d1d5cf9SNobuhiro Iwamatsu write32 DBRFPDN1_A, DBRFPDN1_D 826d1d5cf9SNobuhiro Iwamatsu write32 DBRFPDN2_A, DBRFPDN2_D 836d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 846d1d5cf9SNobuhiro Iwamatsu 856d1d5cf9SNobuhiro Iwamatsu 866d1d5cf9SNobuhiro Iwamatsu /* Dummy read */ 876d1d5cf9SNobuhiro Iwamatsu mov.l DUMMY_A ,r1 886d1d5cf9SNobuhiro Iwamatsu synco 896d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 906d1d5cf9SNobuhiro Iwamatsu synco 916d1d5cf9SNobuhiro Iwamatsu 926d1d5cf9SNobuhiro Iwamatsu mov.l SDRAM_A ,r1 936d1d5cf9SNobuhiro Iwamatsu synco 946d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 956d1d5cf9SNobuhiro Iwamatsu synco 966d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 976d1d5cf9SNobuhiro Iwamatsu 986d1d5cf9SNobuhiro Iwamatsu add #4, r1 996d1d5cf9SNobuhiro Iwamatsu synco 1006d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 1016d1d5cf9SNobuhiro Iwamatsu synco 1026d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 1036d1d5cf9SNobuhiro Iwamatsu 1046d1d5cf9SNobuhiro Iwamatsu add #4, r1 1056d1d5cf9SNobuhiro Iwamatsu synco 1066d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 1076d1d5cf9SNobuhiro Iwamatsu synco 1086d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 1096d1d5cf9SNobuhiro Iwamatsu 1106d1d5cf9SNobuhiro Iwamatsu add #4, r1 1116d1d5cf9SNobuhiro Iwamatsu synco 1126d1d5cf9SNobuhiro Iwamatsu mov.l @r1, r0 1136d1d5cf9SNobuhiro Iwamatsu synco 1146d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 1156d1d5cf9SNobuhiro Iwamatsu 1166d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D0 1176d1d5cf9SNobuhiro Iwamatsu write32 DBCMDCNT_A, DBCMDCNT_D1 1186d1d5cf9SNobuhiro Iwamatsu write32 DBPDCNT0_A, DBPDCNT0_D1 1196d1d5cf9SNobuhiro Iwamatsu write32 DBRFPDN0_A, DBRFPDN0_D 1206d1d5cf9SNobuhiro Iwamatsu 1216d1d5cf9SNobuhiro Iwamatsu wait_timer TIMER_D 1226d1d5cf9SNobuhiro Iwamatsu 1236d1d5cf9SNobuhiro Iwamatsu write32 CCR_A, CCR_D 1246d1d5cf9SNobuhiro Iwamatsu 1256d1d5cf9SNobuhiro Iwamatsu stc sr, r0 1266d1d5cf9SNobuhiro Iwamatsu mov.l SR_MASK_D, r1 1276d1d5cf9SNobuhiro Iwamatsu and r1, r0 1286d1d5cf9SNobuhiro Iwamatsu ldc r0, sr 1296d1d5cf9SNobuhiro Iwamatsu 1306d1d5cf9SNobuhiro Iwamatsu rts 1316d1d5cf9SNobuhiro Iwamatsu 1326d1d5cf9SNobuhiro Iwamatsu .align 2 1336d1d5cf9SNobuhiro Iwamatsu 1346d1d5cf9SNobuhiro IwamatsuPVDR_A: .long PVDR 1356d1d5cf9SNobuhiro IwamatsuPVDR_D: .long 0x00000001 1366d1d5cf9SNobuhiro IwamatsuJUMP_A: .long CONFIG_ECOVEC_ROMIMAGE_ADDR 1376d1d5cf9SNobuhiro IwamatsuTIMER_D: .long 64 1386d1d5cf9SNobuhiro IwamatsuRWTCSR_A: .long RWTCSR 1396d1d5cf9SNobuhiro IwamatsuRWTCSR_D: .long 0x0000A507 1406d1d5cf9SNobuhiro IwamatsuMMUCR_A: .long MMUCR 1416d1d5cf9SNobuhiro IwamatsuMMUCR_D: .long 0x00000004 1426d1d5cf9SNobuhiro IwamatsuPLLCR_A: .long PLLCR 1436d1d5cf9SNobuhiro IwamatsuPLLCR_D: .long 0x00004000 1446d1d5cf9SNobuhiro IwamatsuFRQCRA_A: .long FRQCRA 1456d1d5cf9SNobuhiro IwamatsuFRQCRA_D: .long 0x8E003508 1466d1d5cf9SNobuhiro IwamatsuFRQCRB_A: .long FRQCRB 1476d1d5cf9SNobuhiro IwamatsuFRQCRB_D: .long 0x0 1486d1d5cf9SNobuhiro IwamatsuMMSELR_A: .long MMSELR 1496d1d5cf9SNobuhiro IwamatsuMMSELR_D: .long 0xA5A50000 1506d1d5cf9SNobuhiro IwamatsuCMNCR_A: .long CMNCR 1516d1d5cf9SNobuhiro IwamatsuCMNCR_D: .long 0x00000013 1526d1d5cf9SNobuhiro IwamatsuCS0BCR_A: .long CS0BCR 1536d1d5cf9SNobuhiro IwamatsuCS0BCR_D: .long 0x11110400 1546d1d5cf9SNobuhiro IwamatsuCS0WCR_A: .long CS0WCR 1556d1d5cf9SNobuhiro IwamatsuCS0WCR_D: .long 0x00000440 1566d1d5cf9SNobuhiro IwamatsuDBPDCNT0_A: .long DBPDCNT0 1576d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D0: .long 0x00000181 1586d1d5cf9SNobuhiro IwamatsuDBPDCNT0_D1: .long 0x00000080 1596d1d5cf9SNobuhiro IwamatsuDBCONF_A: .long DBCONF 1606d1d5cf9SNobuhiro IwamatsuDBCONF_D: .long 0x015B0002 1616d1d5cf9SNobuhiro IwamatsuDBTR0_A: .long DBTR0 1626d1d5cf9SNobuhiro IwamatsuDBTR0_D: .long 0x03061502 1636d1d5cf9SNobuhiro IwamatsuDBTR1_A: .long DBTR1 1646d1d5cf9SNobuhiro IwamatsuDBTR1_D: .long 0x02020102 1656d1d5cf9SNobuhiro IwamatsuDBTR2_A: .long DBTR2 1666d1d5cf9SNobuhiro IwamatsuDBTR2_D: .long 0x01090305 1676d1d5cf9SNobuhiro IwamatsuDBTR3_A: .long DBTR3 1686d1d5cf9SNobuhiro IwamatsuDBTR3_D: .long 0x00000002 1696d1d5cf9SNobuhiro IwamatsuDBKIND_A: .long DBKIND 1706d1d5cf9SNobuhiro IwamatsuDBKIND_D: .long 0x00000005 1716d1d5cf9SNobuhiro IwamatsuDBCKECNT_A: .long DBCKECNT 1726d1d5cf9SNobuhiro IwamatsuDBCKECNT_D: .long 0x00000001 1736d1d5cf9SNobuhiro IwamatsuDBCMDCNT_A: .long DBCMDCNT 1746d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D0:.long 0x2 1756d1d5cf9SNobuhiro IwamatsuDBCMDCNT_D1:.long 0x4 1766d1d5cf9SNobuhiro IwamatsuDBMRCNT_A: .long DBMRCNT 1776d1d5cf9SNobuhiro IwamatsuDBMRCNT_D0: .long 0x00020000 1786d1d5cf9SNobuhiro IwamatsuDBMRCNT_D1: .long 0x00030000 1796d1d5cf9SNobuhiro IwamatsuDBMRCNT_D2: .long 0x00010040 1806d1d5cf9SNobuhiro IwamatsuDBMRCNT_D3: .long 0x00000532 1816d1d5cf9SNobuhiro IwamatsuDBMRCNT_D4: .long 0x00000432 1826d1d5cf9SNobuhiro IwamatsuDBMRCNT_D5: .long 0x000103C0 1836d1d5cf9SNobuhiro IwamatsuDBMRCNT_D6: .long 0x00010040 1846d1d5cf9SNobuhiro IwamatsuDBEN_A: .long DBEN 1856d1d5cf9SNobuhiro IwamatsuDBEN_D: .long 0x01 1866d1d5cf9SNobuhiro IwamatsuDBRFPDN0_A: .long DBRFPDN0 1876d1d5cf9SNobuhiro IwamatsuDBRFPDN1_A: .long DBRFPDN1 1886d1d5cf9SNobuhiro IwamatsuDBRFPDN2_A: .long DBRFPDN2 1896d1d5cf9SNobuhiro IwamatsuDBRFPDN0_D: .long 0x00010000 1906d1d5cf9SNobuhiro IwamatsuDBRFPDN1_D: .long 0x00000613 1916d1d5cf9SNobuhiro IwamatsuDBRFPDN2_D: .long 0x238C003A 1926d1d5cf9SNobuhiro IwamatsuSDRAM_A: .long 0xa8000000 1936d1d5cf9SNobuhiro IwamatsuDUMMY_A: .long 0x0c400000 1946d1d5cf9SNobuhiro IwamatsuCCR_A: .long CCR 1956d1d5cf9SNobuhiro IwamatsuCCR_D: .long 0x0000090B 1966d1d5cf9SNobuhiro IwamatsuSR_MASK_D: .long 0xEFFFFF0F 197