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