16c0bbdccSNobuhiro Iwamatsu/* 26c0bbdccSNobuhiro Iwamatsu * Copyright (C) 2007 36c0bbdccSNobuhiro Iwamatsu * Nobuhiro Iwamatsu <iwamatsu@nigauri.org> 46c0bbdccSNobuhiro Iwamatsu * 56c0bbdccSNobuhiro Iwamatsu * Copyright (C) 2007 66c0bbdccSNobuhiro Iwamatsu * Kenati Technologies, Inc. 76c0bbdccSNobuhiro Iwamatsu * 86c0bbdccSNobuhiro Iwamatsu * board/ms7722se/lowlevel_init.S 96c0bbdccSNobuhiro Iwamatsu * 10*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 116c0bbdccSNobuhiro Iwamatsu */ 126c0bbdccSNobuhiro Iwamatsu 136c0bbdccSNobuhiro Iwamatsu#include <config.h> 146c0bbdccSNobuhiro Iwamatsu 156c0bbdccSNobuhiro Iwamatsu#include <asm/processor.h> 16f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h> 176c0bbdccSNobuhiro Iwamatsu 186c0bbdccSNobuhiro Iwamatsu/* 196c0bbdccSNobuhiro Iwamatsu * Board specific low level init code, called _very_ early in the 206c0bbdccSNobuhiro Iwamatsu * startup sequence. Relocation to SDRAM has not happened yet, no 216c0bbdccSNobuhiro Iwamatsu * stack is available, bss section has not been initialised, etc. 226c0bbdccSNobuhiro Iwamatsu * 236c0bbdccSNobuhiro Iwamatsu * (Note: As no stack is available, no subroutines can be called...). 246c0bbdccSNobuhiro Iwamatsu */ 256c0bbdccSNobuhiro Iwamatsu 266c0bbdccSNobuhiro Iwamatsu .global lowlevel_init 276c0bbdccSNobuhiro Iwamatsu 286c0bbdccSNobuhiro Iwamatsu .text 296c0bbdccSNobuhiro Iwamatsu .align 2 306c0bbdccSNobuhiro Iwamatsu 316c0bbdccSNobuhiro Iwamatsulowlevel_init: 326c0bbdccSNobuhiro Iwamatsu 33f7e78f3bSJean-Christophe PLAGNIOL-VILLARD /* 34f7e78f3bSJean-Christophe PLAGNIOL-VILLARD * Cache Control Register 35f7e78f3bSJean-Christophe PLAGNIOL-VILLARD * Instruction Cache Invalidate 36f7e78f3bSJean-Christophe PLAGNIOL-VILLARD */ 37f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CCR_A, CCR_D 386c0bbdccSNobuhiro Iwamatsu 39f7e78f3bSJean-Christophe PLAGNIOL-VILLARD /* 40f7e78f3bSJean-Christophe PLAGNIOL-VILLARD * Address of MMU Control Register 41f7e78f3bSJean-Christophe PLAGNIOL-VILLARD * TI == TLB Invalidate bit 42f7e78f3bSJean-Christophe PLAGNIOL-VILLARD */ 43f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MMUCR_A, MMUCR_D 446c0bbdccSNobuhiro Iwamatsu 45b5d10a13SNobuhiro Iwamatsu /* Address of Power Control Register 0 */ 46f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MSTPCR0_A, MSTPCR0_D 476c0bbdccSNobuhiro Iwamatsu 48b5d10a13SNobuhiro Iwamatsu /* Address of Power Control Register 2 */ 49f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MSTPCR2_A, MSTPCR2_D 506c0bbdccSNobuhiro Iwamatsu 51f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 SBSCR_A, SBSCR_D 526c0bbdccSNobuhiro Iwamatsu 53f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PSCR_A, PSCR_D 546c0bbdccSNobuhiro Iwamatsu 55b5d10a13SNobuhiro Iwamatsu /* 0xA4520004 (Watchdog Control / Status Register) */ 56f7e78f3bSJean-Christophe PLAGNIOL-VILLARD! write16 RWTCSR_A, RWTCSR_D_1 /* 0xA507 -> timer_STOP/WDT_CLK=max */ 576c0bbdccSNobuhiro Iwamatsu 58b5d10a13SNobuhiro Iwamatsu /* 0xA4520000 (Watchdog Count Register) */ 59f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RWTCNT_A, RWTCNT_D /*0x5A00 -> Clear */ 606c0bbdccSNobuhiro Iwamatsu 61b5d10a13SNobuhiro Iwamatsu /* 0xA4520004 (Watchdog Control / Status Register) */ 62f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RWTCSR_A, RWTCSR_D_2 /* 0xA504 -> timer_STOP/CLK=500ms */ 636c0bbdccSNobuhiro Iwamatsu 64b5d10a13SNobuhiro Iwamatsu /* 0xA4150000 Frequency control register */ 65f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 FRQCR_A, FRQCR_D 666c0bbdccSNobuhiro Iwamatsu 67f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CCR_A, CCR_D_2 686c0bbdccSNobuhiro Iwamatsu 696c0bbdccSNobuhiro Iwamatsubsc_init: 706c0bbdccSNobuhiro Iwamatsu 71f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PSELA_A, PSELA_D 726c0bbdccSNobuhiro Iwamatsu 73f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 DRVCR_A, DRVCR_D 746c0bbdccSNobuhiro Iwamatsu 75f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PCCR_A, PCCR_D 766c0bbdccSNobuhiro Iwamatsu 77f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PECR_A, PECR_D 786c0bbdccSNobuhiro Iwamatsu 79f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PJCR_A, PJCR_D 806c0bbdccSNobuhiro Iwamatsu 81f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PXCR_A, PXCR_D 826c0bbdccSNobuhiro Iwamatsu 83f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CMNCR_A, CMNCR_D 846c0bbdccSNobuhiro Iwamatsu 85f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS0BCR_A, CS0BCR_D 866c0bbdccSNobuhiro Iwamatsu 87f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS2BCR_A, CS2BCR_D 886c0bbdccSNobuhiro Iwamatsu 89f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS4BCR_A, CS4BCR_D 906c0bbdccSNobuhiro Iwamatsu 91f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5ABCR_A, CS5ABCR_D 926c0bbdccSNobuhiro Iwamatsu 93f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5BBCR_A, CS5BBCR_D 946c0bbdccSNobuhiro Iwamatsu 95f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS6ABCR_A, CS6ABCR_D 966c0bbdccSNobuhiro Iwamatsu 97f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS0WCR_A, CS0WCR_D 986c0bbdccSNobuhiro Iwamatsu 99f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS2WCR_A, CS2WCR_D 1006c0bbdccSNobuhiro Iwamatsu 101f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS4WCR_A, CS4WCR_D 1026c0bbdccSNobuhiro Iwamatsu 103f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5AWCR_A, CS5AWCR_D 1046c0bbdccSNobuhiro Iwamatsu 105f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5BWCR_A, CS5BWCR_D 1066c0bbdccSNobuhiro Iwamatsu 107f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS6AWCR_A, CS6AWCR_D 1086c0bbdccSNobuhiro Iwamatsu 1096c0bbdccSNobuhiro Iwamatsu ! SDRAM initialization 110f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 SDCR_A, SDCR_D 1116c0bbdccSNobuhiro Iwamatsu 112f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 SDWCR_A, SDWCR_D 1136c0bbdccSNobuhiro Iwamatsu 114f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 SDPCR_A, SDPCR_D 1156c0bbdccSNobuhiro Iwamatsu 116f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 RTCOR_A, RTCOR_D 1176c0bbdccSNobuhiro Iwamatsu 118f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 RTCSR_A, RTCSR_D 1196c0bbdccSNobuhiro Iwamatsu 120c9935c99SNobuhiro Iwamatsu write8 SDMR3_A, SDMR3_D 1216c0bbdccSNobuhiro Iwamatsu 1226c0bbdccSNobuhiro Iwamatsu ! BL bit off (init = ON) (?!?) 1236c0bbdccSNobuhiro Iwamatsu 1246c0bbdccSNobuhiro Iwamatsu stc sr, r0 ! BL bit off(init=ON) 1256c0bbdccSNobuhiro Iwamatsu mov.l SR_MASK_D, r1 1266c0bbdccSNobuhiro Iwamatsu and r1, r0 1276c0bbdccSNobuhiro Iwamatsu ldc r0, sr 1286c0bbdccSNobuhiro Iwamatsu 1296c0bbdccSNobuhiro Iwamatsu rts 1306c0bbdccSNobuhiro Iwamatsu mov #0, r0 1316c0bbdccSNobuhiro Iwamatsu 1326c0bbdccSNobuhiro Iwamatsu .align 2 1336c0bbdccSNobuhiro Iwamatsu 1346c0bbdccSNobuhiro IwamatsuCCR_A: .long CCR 1356c0bbdccSNobuhiro IwamatsuMMUCR_A: .long MMUCR 1366c0bbdccSNobuhiro IwamatsuMSTPCR0_A: .long MSTPCR0 1376c0bbdccSNobuhiro IwamatsuMSTPCR2_A: .long MSTPCR2 1386c0bbdccSNobuhiro IwamatsuSBSCR_A: .long SBSCR 1396c0bbdccSNobuhiro IwamatsuPSCR_A: .long PSCR 1406c0bbdccSNobuhiro IwamatsuRWTCSR_A: .long RWTCSR 1416c0bbdccSNobuhiro IwamatsuRWTCNT_A: .long RWTCNT 1426c0bbdccSNobuhiro IwamatsuFRQCR_A: .long FRQCR 1436c0bbdccSNobuhiro Iwamatsu 1446c0bbdccSNobuhiro IwamatsuCCR_D: .long 0x00000800 1456c0bbdccSNobuhiro IwamatsuCCR_D_2: .long 0x00000103 1466c0bbdccSNobuhiro IwamatsuMMUCR_D: .long 0x00000004 1476c0bbdccSNobuhiro IwamatsuMSTPCR0_D: .long 0x00001001 1486c0bbdccSNobuhiro IwamatsuMSTPCR2_D: .long 0xffffffff 1496c0bbdccSNobuhiro IwamatsuFRQCR_D: .long 0x07022538 1506c0bbdccSNobuhiro Iwamatsu 1516c0bbdccSNobuhiro IwamatsuPSELA_A: .long 0xa405014E 1526c0bbdccSNobuhiro IwamatsuPSELA_D: .word 0x0A10 1536c0bbdccSNobuhiro Iwamatsu .align 2 1546c0bbdccSNobuhiro Iwamatsu 1556c0bbdccSNobuhiro IwamatsuDRVCR_A: .long 0xa405018A 1566c0bbdccSNobuhiro IwamatsuDRVCR_D: .word 0x0554 1576c0bbdccSNobuhiro Iwamatsu .align 2 1586c0bbdccSNobuhiro Iwamatsu 1596c0bbdccSNobuhiro IwamatsuPCCR_A: .long 0xa4050104 1606c0bbdccSNobuhiro IwamatsuPCCR_D: .word 0x8800 1616c0bbdccSNobuhiro Iwamatsu .align 2 1626c0bbdccSNobuhiro Iwamatsu 1636c0bbdccSNobuhiro IwamatsuPECR_A: .long 0xa4050108 1646c0bbdccSNobuhiro IwamatsuPECR_D: .word 0x0000 1656c0bbdccSNobuhiro Iwamatsu .align 2 1666c0bbdccSNobuhiro Iwamatsu 1676c0bbdccSNobuhiro IwamatsuPJCR_A: .long 0xa4050110 1686c0bbdccSNobuhiro IwamatsuPJCR_D: .word 0x1000 1696c0bbdccSNobuhiro Iwamatsu .align 2 1706c0bbdccSNobuhiro Iwamatsu 1716c0bbdccSNobuhiro IwamatsuPXCR_A: .long 0xa4050148 1726c0bbdccSNobuhiro IwamatsuPXCR_D: .word 0x0AAA 1736c0bbdccSNobuhiro Iwamatsu .align 2 1746c0bbdccSNobuhiro Iwamatsu 1756c0bbdccSNobuhiro IwamatsuCMNCR_A: .long CMNCR 1766c0bbdccSNobuhiro IwamatsuCMNCR_D: .long 0x00000013 1776c0bbdccSNobuhiro IwamatsuCS0BCR_A: .long CS0BCR ! Flash bank 1 1786c0bbdccSNobuhiro IwamatsuCS0BCR_D: .long 0x24920400 1796c0bbdccSNobuhiro IwamatsuCS2BCR_A: .long CS2BCR ! SRAM 1806c0bbdccSNobuhiro IwamatsuCS2BCR_D: .long 0x24920400 1816c0bbdccSNobuhiro IwamatsuCS4BCR_A: .long CS4BCR ! FPGA, PCMCIA, USB, ext slot 1826c0bbdccSNobuhiro IwamatsuCS4BCR_D: .long 0x24920400 1836c0bbdccSNobuhiro IwamatsuCS5ABCR_A: .long CS5ABCR ! Ext slot 1846c0bbdccSNobuhiro IwamatsuCS5ABCR_D: .long 0x24920400 1856c0bbdccSNobuhiro IwamatsuCS5BBCR_A: .long CS5BBCR ! USB controller 1866c0bbdccSNobuhiro IwamatsuCS5BBCR_D: .long 0x24920400 1876c0bbdccSNobuhiro IwamatsuCS6ABCR_A: .long CS6ABCR ! Ethernet 1886c0bbdccSNobuhiro IwamatsuCS6ABCR_D: .long 0x24920400 1896c0bbdccSNobuhiro Iwamatsu 1906c0bbdccSNobuhiro IwamatsuCS0WCR_A: .long CS0WCR 1916c0bbdccSNobuhiro IwamatsuCS0WCR_D: .long 0x00000300 1926c0bbdccSNobuhiro IwamatsuCS2WCR_A: .long CS2WCR 1936c0bbdccSNobuhiro IwamatsuCS2WCR_D: .long 0x00000300 1946c0bbdccSNobuhiro IwamatsuCS4WCR_A: .long CS4WCR 1956c0bbdccSNobuhiro IwamatsuCS4WCR_D: .long 0x00000300 1966c0bbdccSNobuhiro IwamatsuCS5AWCR_A: .long CS5AWCR 1976c0bbdccSNobuhiro IwamatsuCS5AWCR_D: .long 0x00000300 1986c0bbdccSNobuhiro IwamatsuCS5BWCR_A: .long CS5BWCR 1996c0bbdccSNobuhiro IwamatsuCS5BWCR_D: .long 0x00000300 2006c0bbdccSNobuhiro IwamatsuCS6AWCR_A: .long CS6AWCR 2016c0bbdccSNobuhiro IwamatsuCS6AWCR_D: .long 0x00000300 2026c0bbdccSNobuhiro Iwamatsu 2036c0bbdccSNobuhiro IwamatsuSDCR_A: .long SBSC_SDCR 2046c0bbdccSNobuhiro IwamatsuSDCR_D: .long 0x00020809 2056c0bbdccSNobuhiro IwamatsuSDWCR_A: .long SBSC_SDWCR 2066c0bbdccSNobuhiro IwamatsuSDWCR_D: .long 0x00164d0d 2076c0bbdccSNobuhiro IwamatsuSDPCR_A: .long SBSC_SDPCR 2086c0bbdccSNobuhiro IwamatsuSDPCR_D: .long 0x00000087 2096c0bbdccSNobuhiro IwamatsuRTCOR_A: .long SBSC_RTCOR 2106c0bbdccSNobuhiro IwamatsuRTCOR_D: .long 0xA55A0034 2116c0bbdccSNobuhiro IwamatsuRTCSR_A: .long SBSC_RTCSR 2126c0bbdccSNobuhiro IwamatsuRTCSR_D: .long 0xA55A0010 2136c0bbdccSNobuhiro IwamatsuSDMR3_A: .long 0xFE500180 214c9935c99SNobuhiro IwamatsuSDMR3_D: .long 0x0 2156c0bbdccSNobuhiro Iwamatsu 2166c0bbdccSNobuhiro Iwamatsu .align 1 2176c0bbdccSNobuhiro Iwamatsu 2186c0bbdccSNobuhiro IwamatsuSBSCR_D: .word 0x0040 2196c0bbdccSNobuhiro IwamatsuPSCR_D: .word 0x0000 2206c0bbdccSNobuhiro IwamatsuRWTCSR_D_1: .word 0xA507 2216c0bbdccSNobuhiro IwamatsuRWTCSR_D_2: .word 0xA507 2226c0bbdccSNobuhiro IwamatsuRWTCNT_D: .word 0x5A00 223b5d10a13SNobuhiro Iwamatsu .align 2 2246c0bbdccSNobuhiro Iwamatsu 2256c0bbdccSNobuhiro IwamatsuSR_MASK_D: .long 0xEFFFFF0F 226