158453b00SNobuhiro Iwamatsu/* 2b81786cfSNobuhiro Iwamatsu * Copyright (C) 2007-2008 358453b00SNobuhiro Iwamatsu * Nobuhiro Iwamatsu <iwamatsu@nigauri.org> 458453b00SNobuhiro Iwamatsu * 558453b00SNobuhiro Iwamatsu * Copyright (C) 2007 658453b00SNobuhiro Iwamatsu * Kenati Technologies, Inc. 758453b00SNobuhiro Iwamatsu * 858453b00SNobuhiro Iwamatsu * board/MigoR/lowlevel_init.S 958453b00SNobuhiro Iwamatsu * 10*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 1158453b00SNobuhiro Iwamatsu */ 1258453b00SNobuhiro Iwamatsu 1358453b00SNobuhiro Iwamatsu#include <config.h> 1458453b00SNobuhiro Iwamatsu 1558453b00SNobuhiro Iwamatsu#include <asm/processor.h> 16f7e78f3bSJean-Christophe PLAGNIOL-VILLARD#include <asm/macro.h> 1758453b00SNobuhiro Iwamatsu 1858453b00SNobuhiro Iwamatsu/* 1958453b00SNobuhiro Iwamatsu * Board specific low level init code, called _very_ early in the 2058453b00SNobuhiro Iwamatsu * startup sequence. Relocation to SDRAM has not happened yet, no 2158453b00SNobuhiro Iwamatsu * stack is available, bss section has not been initialised, etc. 2258453b00SNobuhiro Iwamatsu * 2358453b00SNobuhiro Iwamatsu * (Note: As no stack is available, no subroutines can be called...). 2458453b00SNobuhiro Iwamatsu */ 2558453b00SNobuhiro Iwamatsu 2658453b00SNobuhiro Iwamatsu .global lowlevel_init 2758453b00SNobuhiro Iwamatsu 2858453b00SNobuhiro Iwamatsu .text 2958453b00SNobuhiro Iwamatsu .align 2 3058453b00SNobuhiro Iwamatsu 3158453b00SNobuhiro Iwamatsulowlevel_init: 32f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CCR_A, CCR_D ! Address of Cache Control Register 33f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! Instruction Cache Invalidate 3458453b00SNobuhiro Iwamatsu 35f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MMUCR_A, MMUCR_D ! Address of MMU Control Register 36f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! TI == TLB Invalidate bit 3758453b00SNobuhiro Iwamatsu 38f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MSTPCR0_A, MSTPCR0_D ! Address of Power Control Register 0 3958453b00SNobuhiro Iwamatsu 40f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 MSTPCR2_A, MSTPCR2_D ! Address of Power Control Register 2 4158453b00SNobuhiro Iwamatsu 42f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PFC_PULCR_A, PFC_PULCR_D 4358453b00SNobuhiro Iwamatsu 44f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PFC_DRVCR_A, PFC_DRVCR_D 4558453b00SNobuhiro Iwamatsu 46f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 SBSCR_A, SBSCR_D 4758453b00SNobuhiro Iwamatsu 48f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 PSCR_A, PSCR_D 4958453b00SNobuhiro Iwamatsu 50f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RWTCSR_A, RWTCSR_D_1 ! 0xA4520004 (Watchdog Control / Status Register) 51f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! 0xA507 -> timer_STOP / WDT_CLK = max 5258453b00SNobuhiro Iwamatsu 53f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RWTCNT_A, RWTCNT_D ! 0xA4520000 (Watchdog Count Register) 54f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! 0x5A00 -> Clear 5558453b00SNobuhiro Iwamatsu 56f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write16 RWTCSR_A, RWTCSR_D_2 ! 0xA4520004 (Watchdog Control / Status Register) 57f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! 0xA504 -> timer_STOP / CLK = 500ms 5858453b00SNobuhiro Iwamatsu 59f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 DLLFRQ_A, DLLFRQ_D ! 20080115 60f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! 20080115 6158453b00SNobuhiro Iwamatsu 62f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 FRQCR_A, FRQCR_D ! 0xA4150000 Frequency control register 63f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! 20080115 6458453b00SNobuhiro Iwamatsu 65f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CCR_A, CCR_D_2 ! Address of Cache Control Register 66f7e78f3bSJean-Christophe PLAGNIOL-VILLARD ! ?? 6758453b00SNobuhiro Iwamatsu 6858453b00SNobuhiro Iwamatsubsc_init: 69f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CMNCR_A, CMNCR_D 7058453b00SNobuhiro Iwamatsu 71f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS0BCR_A, CS0BCR_D 7258453b00SNobuhiro Iwamatsu 73f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS4BCR_A, CS4BCR_D 7458453b00SNobuhiro Iwamatsu 75f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5ABCR_A, CS5ABCR_D 7658453b00SNobuhiro Iwamatsu 77f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5BBCR_A, CS5BBCR_D 7858453b00SNobuhiro Iwamatsu 79f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS6ABCR_A, CS6ABCR_D 8058453b00SNobuhiro Iwamatsu 81f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS0WCR_A, CS0WCR_D 8258453b00SNobuhiro Iwamatsu 83f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS4WCR_A, CS4WCR_D 8458453b00SNobuhiro Iwamatsu 85f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5AWCR_A, CS5AWCR_D 8658453b00SNobuhiro Iwamatsu 87f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS5BWCR_A, CS5BWCR_D 8858453b00SNobuhiro Iwamatsu 89f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 CS6AWCR_A, CS6AWCR_D 9058453b00SNobuhiro Iwamatsu 9158453b00SNobuhiro Iwamatsu ! SDRAM initialization 92f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 SDCR_A, SDCR_D 9358453b00SNobuhiro Iwamatsu 94f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 SDWCR_A, SDWCR_D 9558453b00SNobuhiro Iwamatsu 96f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 SDPCR_A, SDPCR_D 9758453b00SNobuhiro Iwamatsu 98f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 RTCOR_A, RTCOR_D 9958453b00SNobuhiro Iwamatsu 100f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 RTCNT_A, RTCNT_D 10158453b00SNobuhiro Iwamatsu 102f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 RTCSR_A, RTCSR_D 10358453b00SNobuhiro Iwamatsu 104f7e78f3bSJean-Christophe PLAGNIOL-VILLARD write32 RFCR_A, RFCR_D 10558453b00SNobuhiro Iwamatsu 106c9935c99SNobuhiro Iwamatsu write8 SDMR3_A, SDMR3_D 10758453b00SNobuhiro Iwamatsu 10858453b00SNobuhiro Iwamatsu ! BL bit off (init = ON) (?!?) 10958453b00SNobuhiro Iwamatsu 11058453b00SNobuhiro Iwamatsu stc sr, r0 ! BL bit off(init=ON) 11158453b00SNobuhiro Iwamatsu mov.l SR_MASK_D, r1 11258453b00SNobuhiro Iwamatsu and r1, r0 11358453b00SNobuhiro Iwamatsu ldc r0, sr 11458453b00SNobuhiro Iwamatsu 11558453b00SNobuhiro Iwamatsu rts 11658453b00SNobuhiro Iwamatsu mov #0, r0 11758453b00SNobuhiro Iwamatsu 11858453b00SNobuhiro Iwamatsu .align 4 11958453b00SNobuhiro Iwamatsu 12058453b00SNobuhiro IwamatsuCCR_A: .long CCR 12158453b00SNobuhiro IwamatsuMMUCR_A: .long MMUCR 12258453b00SNobuhiro IwamatsuMSTPCR0_A: .long MSTPCR0 12358453b00SNobuhiro IwamatsuMSTPCR2_A: .long MSTPCR2 12458453b00SNobuhiro IwamatsuPFC_PULCR_A: .long PULCR 12558453b00SNobuhiro IwamatsuPFC_DRVCR_A: .long DRVCR 12658453b00SNobuhiro IwamatsuSBSCR_A: .long SBSCR 12758453b00SNobuhiro IwamatsuPSCR_A: .long PSCR 12858453b00SNobuhiro IwamatsuRWTCSR_A: .long RWTCSR 12958453b00SNobuhiro IwamatsuRWTCNT_A: .long RWTCNT 13058453b00SNobuhiro IwamatsuFRQCR_A: .long FRQCR 13158453b00SNobuhiro IwamatsuPLLCR_A: .long PLLCR 13258453b00SNobuhiro IwamatsuDLLFRQ_A: .long DLLFRQ 13358453b00SNobuhiro Iwamatsu 13458453b00SNobuhiro IwamatsuCCR_D: .long 0x00000800 13558453b00SNobuhiro IwamatsuCCR_D_2: .long 0x00000103 13658453b00SNobuhiro IwamatsuMMUCR_D: .long 0x00000004 13758453b00SNobuhiro IwamatsuMSTPCR0_D: .long 0x00001001 13858453b00SNobuhiro IwamatsuMSTPCR2_D: .long 0xffffffff 13958453b00SNobuhiro IwamatsuPFC_PULCR_D: .long 0x6000 14058453b00SNobuhiro IwamatsuPFC_DRVCR_D: .long 0x0464 14158453b00SNobuhiro IwamatsuFRQCR_D: .long 0x07033639 14258453b00SNobuhiro IwamatsuPLLCR_D: .long 0x00005000 143b81786cfSNobuhiro IwamatsuDLLFRQ_D: .long 0x000004F6 14458453b00SNobuhiro Iwamatsu 14558453b00SNobuhiro IwamatsuCMNCR_A: .long CMNCR 146b81786cfSNobuhiro IwamatsuCMNCR_D: .long 0x0000001B 147b81786cfSNobuhiro IwamatsuCS0BCR_A: .long CS0BCR 14858453b00SNobuhiro IwamatsuCS0BCR_D: .long 0x24920400 149b81786cfSNobuhiro IwamatsuCS4BCR_A: .long CS4BCR 150b81786cfSNobuhiro IwamatsuCS4BCR_D: .long 0x00003400 151b81786cfSNobuhiro IwamatsuCS5ABCR_A: .long CS5ABCR 15258453b00SNobuhiro IwamatsuCS5ABCR_D: .long 0x24920400 153b81786cfSNobuhiro IwamatsuCS5BBCR_A: .long CS5BBCR 15458453b00SNobuhiro IwamatsuCS5BBCR_D: .long 0x24920400 155b81786cfSNobuhiro IwamatsuCS6ABCR_A: .long CS6ABCR 15658453b00SNobuhiro IwamatsuCS6ABCR_D: .long 0x24920400 15758453b00SNobuhiro Iwamatsu 15858453b00SNobuhiro IwamatsuCS0WCR_A: .long CS0WCR 15958453b00SNobuhiro IwamatsuCS0WCR_D: .long 0x00000380 16058453b00SNobuhiro IwamatsuCS4WCR_A: .long CS4WCR 161b81786cfSNobuhiro IwamatsuCS4WCR_D: .long 0x00110080 16258453b00SNobuhiro IwamatsuCS5AWCR_A: .long CS5AWCR 16358453b00SNobuhiro IwamatsuCS5AWCR_D: .long 0x00000300 16458453b00SNobuhiro IwamatsuCS5BWCR_A: .long CS5BWCR 16558453b00SNobuhiro IwamatsuCS5BWCR_D: .long 0x00000300 16658453b00SNobuhiro IwamatsuCS6AWCR_A: .long CS6AWCR 16758453b00SNobuhiro IwamatsuCS6AWCR_D: .long 0x00000300 16858453b00SNobuhiro Iwamatsu 16958453b00SNobuhiro IwamatsuSDCR_A: .long SBSC_SDCR 170b81786cfSNobuhiro IwamatsuSDCR_D: .long 0x80160809 17158453b00SNobuhiro IwamatsuSDWCR_A: .long SBSC_SDWCR 172b81786cfSNobuhiro IwamatsuSDWCR_D: .long 0x0014450C 17358453b00SNobuhiro IwamatsuSDPCR_A: .long SBSC_SDPCR 17458453b00SNobuhiro IwamatsuSDPCR_D: .long 0x00000087 17558453b00SNobuhiro IwamatsuRTCOR_A: .long SBSC_RTCOR 17658453b00SNobuhiro IwamatsuRTCNT_A: .long SBSC_RTCNT 17758453b00SNobuhiro IwamatsuRTCNT_D: .long 0xA55A0012 178b81786cfSNobuhiro IwamatsuRTCOR_D: .long 0xA55A001C 17958453b00SNobuhiro IwamatsuRTCSR_A: .long SBSC_RTCSR 18058453b00SNobuhiro IwamatsuRFCR_A: .long SBSC_RFCR 18158453b00SNobuhiro IwamatsuRFCR_D: .long 0xA55A0221 182b81786cfSNobuhiro IwamatsuRTCSR_D: .long 0xA55A009a 183b81786cfSNobuhiro IwamatsuSDMR3_A: .long 0xFE581180 184c9935c99SNobuhiro IwamatsuSDMR3_D: .long 0x0 18558453b00SNobuhiro Iwamatsu 18658453b00SNobuhiro IwamatsuSR_MASK_D: .long 0xEFFFFF0F 18758453b00SNobuhiro Iwamatsu 18858453b00SNobuhiro Iwamatsu .align 2 18958453b00SNobuhiro Iwamatsu 19058453b00SNobuhiro IwamatsuSBSCR_D: .word 0x0044 19158453b00SNobuhiro IwamatsuPSCR_D: .word 0x0000 19258453b00SNobuhiro IwamatsuRWTCSR_D_1: .word 0xA507 193b81786cfSNobuhiro IwamatsuRWTCSR_D_2: .word 0xA504 19458453b00SNobuhiro IwamatsuRWTCNT_D: .word 0x5A00 195