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