mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +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>
55 lines
1.5 KiB
ArmAsm
55 lines
1.5 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
|
|
#include <config.h>
|
|
#include <linux/linkage.h>
|
|
#include <asm/system.h>
|
|
#include <asm/pl310.h>
|
|
|
|
ENTRY(arch_very_early_init)
|
|
#ifdef CONFIG_ARMADA_38X
|
|
/*
|
|
* Only with disabled MMU its possible to switch the base
|
|
* register address on Armada 38x. Without this the SDRAM
|
|
* located at >= 0x4000.0000 is also not accessible, as its
|
|
* still locked to cache.
|
|
*
|
|
* So to fully release / unlock this area from cache, we need
|
|
* to first flush all caches, then disable the MMU and
|
|
* disable the L2 cache.
|
|
*/
|
|
|
|
/* Invalidate L1 I/D */
|
|
mov r0, #0 @ set up for MCR
|
|
mcr p15, 0, r0, c8, c7, 0 @ invalidate TLBs
|
|
mcr p15, 0, r0, c7, c5, 0 @ invalidate icache
|
|
mcr p15, 0, r0, c7, c5, 6 @ invalidate BP array
|
|
mcr p15, 0, r0, c7, c10, 4 @ DSB
|
|
mcr p15, 0, r0, c7, c5, 4 @ ISB
|
|
|
|
/* Disable MMU */
|
|
mrc p15, 0, r0, c1, c0, 0
|
|
bic r0, #CR_M
|
|
mcr p15, 0, r0, c1, c0, 0
|
|
|
|
/*
|
|
* Disable L2 cache
|
|
*
|
|
* NOTE: Internal registers are still at address INTREG_BASE_ADDR_REG
|
|
* but CFG_SYS_PL310_BASE is already calculated from base
|
|
* address SOC_REGS_PHY_BASE.
|
|
*/
|
|
ldr r1, =(CFG_SYS_PL310_BASE - SOC_REGS_PHY_BASE + INTREG_BASE_ADDR_REG)
|
|
ldr r0, [r1, #L2X0_CTRL_OFF]
|
|
bic r0, #L2X0_CTRL_EN
|
|
str r0, [r1, #L2X0_CTRL_OFF]
|
|
#endif
|
|
|
|
/* Move internal registers from INTREG_BASE_ADDR_REG to SOC_REGS_PHY_BASE */
|
|
ldr r0, =SOC_REGS_PHY_BASE
|
|
ldr r1, =INTREG_BASE_ADDR_REG
|
|
str r0, [r1]
|
|
add r0, r0, #0xC000
|
|
mcr p15, 4, r0, c15, c0
|
|
|
|
bx lr
|
|
ENDPROC(arch_very_early_init)
|