mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-14 23:33:00 +00:00
65cc0e2a65
The rest of the unmigrated CONFIG symbols in the CONFIG_SYS namespace do not easily transition to Kconfig. In many cases they likely should come from the device tree instead. Move these out of CONFIG namespace and in to CFG namespace. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
151 lines
3.5 KiB
ArmAsm
151 lines
3.5 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
|
|
* Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
|
|
*
|
|
* Modified for the at91rm9200dk board by
|
|
* (C) Copyright 2004
|
|
* Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT)
|
|
|
|
#include <asm/arch/hardware.h>
|
|
#include <asm/arch/at91_mc.h>
|
|
#include <asm/arch/at91_pmc.h>
|
|
#include <asm/arch/at91_pio.h>
|
|
|
|
#define ARM920T_CONTROL 0xC0000000 /* @ set bit 31 (iA) and 30 (nF) */
|
|
|
|
_MTEXT_BASE:
|
|
#undef START_FROM_MEM
|
|
#ifdef START_FROM_MEM
|
|
.word CONFIG_TEXT_BASE-PHYS_FLASH_1
|
|
#else
|
|
.word CONFIG_TEXT_BASE
|
|
#endif
|
|
|
|
.globl lowlevel_init
|
|
lowlevel_init:
|
|
ldr r1, =AT91_ASM_PMC_MOR
|
|
/* Main oscillator Enable register */
|
|
#ifdef CONFIG_SYS_USE_MAIN_OSCILLATOR
|
|
ldr r0, =0x0000FF01 /* Enable main oscillator */
|
|
#else
|
|
ldr r0, =0x0000FF00 /* Disable main oscillator */
|
|
#endif
|
|
str r0, [r1] /*AT91C_CKGR_MOR] */
|
|
/* Add loop to compensate Main Oscillator startup time */
|
|
ldr r0, =0x00000010
|
|
LoopOsc:
|
|
subs r0, r0, #1
|
|
bhi LoopOsc
|
|
|
|
/* memory control configuration */
|
|
/* this isn't very elegant, but what the heck */
|
|
ldr r0, =SMRDATA
|
|
ldr r1, _MTEXT_BASE
|
|
sub r0, r0, r1
|
|
ldr r2, =SMRDATAE
|
|
sub r2, r2, r1
|
|
pllloop:
|
|
/* the address */
|
|
ldr r1, [r0], #4
|
|
/* the value */
|
|
ldr r3, [r0], #4
|
|
str r3, [r1]
|
|
cmp r2, r0
|
|
bne pllloop
|
|
/* delay - this is all done by guess */
|
|
ldr r0, =0x00010000
|
|
/* (vs reading PMC_SR for LOCKA, LOCKB ... or MOSCS earlier) */
|
|
lock:
|
|
subs r0, r0, #1
|
|
bhi lock
|
|
ldr r0, =SMRDATA1
|
|
ldr r1, _MTEXT_BASE
|
|
sub r0, r0, r1
|
|
ldr r2, =SMRDATA1E
|
|
sub r2, r2, r1
|
|
sdinit:
|
|
/* the address */
|
|
ldr r1, [r0], #4
|
|
/* the value */
|
|
ldr r3, [r0], #4
|
|
str r3, [r1]
|
|
cmp r2, r0
|
|
bne sdinit
|
|
|
|
/* switch from FastBus to Asynchronous clock mode */
|
|
mrc p15, 0, r0, c1, c0, 0
|
|
orr r0, r0, #ARM920T_CONTROL
|
|
mcr p15, 0, r0, c1, c0, 0
|
|
|
|
/* everything is fine now */
|
|
mov pc, lr
|
|
|
|
.ltorg
|
|
|
|
SMRDATA:
|
|
.word AT91_ASM_MC_EBI_CFG
|
|
.word CONFIG_SYS_EBI_CFGR_VAL
|
|
.word AT91_ASM_MC_SMC_CSR0
|
|
.word CONFIG_SYS_SMC_CSR0_VAL
|
|
.word AT91_ASM_PMC_PLLAR
|
|
.word CFG_SYS_PLLAR_VAL
|
|
.word AT91_ASM_PMC_PLLBR
|
|
.word CONFIG_SYS_PLLBR_VAL
|
|
.word AT91_ASM_PMC_MCKR
|
|
.word CFG_SYS_MCKR_VAL
|
|
SMRDATAE:
|
|
/* here there's a delay */
|
|
SMRDATA1:
|
|
.word AT91_ASM_PIOC_ASR
|
|
.word CONFIG_SYS_PIOC_ASR_VAL
|
|
.word AT91_ASM_PIOC_BSR
|
|
.word CONFIG_SYS_PIOC_BSR_VAL
|
|
.word AT91_ASM_PIOC_PDR
|
|
.word CFG_SYS_PIOC_PDR_VAL
|
|
.word AT91_ASM_MC_EBI_CSA
|
|
.word CONFIG_SYS_EBI_CSA_VAL
|
|
.word AT91_ASM_MC_SDRAMC_CR
|
|
.word CFG_SYS_SDRC_CR_VAL
|
|
.word AT91_ASM_MC_SDRAMC_MR
|
|
.word CFG_SYS_SDRC_MR_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word AT91_ASM_MC_SDRAMC_MR
|
|
.word CFG_SYS_SDRC_MR_VAL1
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word AT91_ASM_MC_SDRAMC_MR
|
|
.word CFG_SYS_SDRC_MR_VAL2
|
|
.word CFG_SYS_SDRAM1
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word AT91_ASM_MC_SDRAMC_TR
|
|
.word CFG_SYS_SDRC_TR_VAL
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
.word AT91_ASM_MC_SDRAMC_MR
|
|
.word CFG_SYS_SDRC_MR_VAL3
|
|
.word CFG_SYS_SDRAM
|
|
.word CFG_SYS_SDRAM_VAL
|
|
SMRDATA1E:
|
|
/* SMRDATA1 is 176 bytes long */
|
|
#endif /* CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT) */
|