u-boot/arch/arm
Pali Rohár 5818198e6a arm: mvebu: Fix moving internal registers
Commit 5bb2c550b1 ("arm: mvebu: Move internal registers in
arch_very_early_init() function") moved code from file cpu.c to lowlevel.c,
which moves Marvell internal registers from address INTREG_BASE_ADDR_REG to
SOC_REGS_PHY_BASE.

But the steps describing how to do it correctly were documented only in
older U-Boot versions and commit cefd764222 ("arm: mvebu: Fix internal
register config on A38x") probably unintentionally removed important
details about MMU from code comments around.

Commit 5bb2c550b1 ("arm: mvebu: Move internal registers in
arch_very_early_init() function") implemented code movement according to
(now incomplete) comments which resulted in semi-broken code.

The result is that I-cache is currently disabled for all Armada 38x boards
and maybe there are some other (unreported / undetected) issues.

Reimplement it correctly. First flush all caches, then disable MMU and L2
cache and then move Marvell internal registers. There is no need to
explicitly disable I-cache.

After this change lzmadec command with lzma image of 0x7000000 bytes is
doing decompression just 5 seconds. Before this change it was 30 seconds.

To make lowlevel.S code more readable, extend asm/pl310.h header file to be
compatible with assembler and use macros from this file.

Fixes: 5bb2c550b1 ("arm: mvebu: Move internal registers in arch_very_early_init() function")
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <kabel@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2022-09-13 09:04:22 +02:00
..
cpu ARMv8/sec_firmware: Convert to use fit_get_data_conf_prop 2022-09-07 13:40:45 +08:00
dts ARM: dts: stm32mp15: remove hwlocks from pinctrl 2022-09-06 15:40:14 +02:00
include arm: mvebu: Fix moving internal registers 2022-09-13 09:04:22 +02:00
lib arm: smh: Fix uninitialized parameters with newer GCCs 2022-08-31 12:21:47 -04:00
mach-apple
mach-aspeed
mach-at91 arm: Remove snapper9260 board 2022-08-12 16:10:50 -04:00
mach-bcm283x
mach-bcmbca
mach-bcmstb
mach-cortina
mach-davinci arm: Remove unused references to CONFIG_SOC_DM* 2022-07-25 14:57:27 -04:00
mach-exynos
mach-highbank
mach-hpe
mach-imx arm: Remove warp board 2022-08-20 22:45:00 -04:00
mach-integrator
mach-ipq40xx
mach-k3 arm: mach-k3: security: Remove certificate if detected on GP device 2022-08-04 15:32:20 -04:00
mach-keystone
mach-kirkwood arm: mvebu: Mark constant data with const keyword 2022-09-13 06:38:08 +02:00
mach-lpc32xx net: lpc32xx_eth.c ethernet driver 2022-08-20 21:18:15 -04:00
mach-mediatek
mach-meson ARM: meson: fixup error on efuse commands return 2022-08-08 09:56:38 +02:00
mach-mvebu arm: mvebu: Fix moving internal registers 2022-09-13 09:04:22 +02:00
mach-nexell
mach-npcm
mach-octeontx
mach-octeontx2
mach-omap2 arm: Remove cm_t335 board 2022-08-20 21:18:15 -04:00
mach-orion5x arm: Remove edminiv2 board 2022-08-20 21:18:15 -04:00
mach-owl
mach-qemu
mach-rmobile arm: Remove kzm9g board 2022-08-20 21:18:15 -04:00
mach-rockchip rockchip: allow to build SPI images even without HAS_ROM option 2022-09-04 20:00:39 +08:00
mach-s5pc1xx
mach-snapdragon
mach-socfpga
mach-sti
mach-stm32
mach-stm32mp stm32mp: simplify the STM32MP15x package parsing code 2022-09-06 13:54:50 +02:00
mach-sunxi
mach-tegra
mach-u8500
mach-uniphier
mach-versal
mach-versatile
mach-zynq fpga: xilinx: add bitstream flags to driver desc 2022-07-26 09:34:21 +02:00
mach-zynqmp mailbox: zynqmp: Move struct zynqmp_ipi_msg from sys_proto.h 2022-07-26 08:36:20 +02:00
mach-zynqmp-r5
thumb1/include/asm/proc-armv
Kconfig rockchip: generate u-boot-rockchip.bin with binman for ARM64 boards 2022-09-04 20:00:39 +08:00
Kconfig.debug
Makefile arm: makefile: cleanup mach-imx usage 2022-07-26 11:29:00 +02:00
config.mk