u-boot/arch/arm/mach-mvebu
Pali Rohár 5692e5b244 arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation
mbus driver is initialized from arch_cpu_init() callback which is called
before relocation. This driver stores lot of functions and structure
pointers into global variables, so it is data position dependent.

Therefore after relocations all pointers are invalid and driver does not
work anymore as all pointers referes to the old memory, which overlaps with
CONFIG_SYS_LOAD_ADDR and ${loadaddr}.

For example U-Boot fuse command crashes if loadaddr memory is cleared or
rewritten by some image loaded by U-Boot load command.

  mw.w ${loadaddr} 0x0 10000
  fuse read 0 1 2

Fix this issue by removing of all mbus global variables in which are stored
pointers to structures or functions which changes during relocation. And
replace it by direct function calls (not via pointers). With this change
fuse command finally works.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Stefan Roese <sr@denx.de>
2022-08-23 12:35:37 +02:00
..
armada8k arm64: mvebu: extend the mmio region 2021-05-16 06:48:45 +02:00
armada3700 treewide: Fix Marek's name and change my e-mail address 2022-07-21 10:14:04 +02:00
include/mach arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation 2022-08-23 12:35:37 +02:00
serdes db-mv784mp-gp: Rename CONFIG_DB_784MP_GP to CONFIG_TARGET_DB_MV784MP_GP 2022-04-01 10:28:47 -04:00
.gitignore mvebu: select boot device at SoC level 2018-08-06 14:07:23 +02:00
arm64-common.c arm64: mvebu: handle non-zero base address for RAM 2022-07-21 07:46:10 +02:00
cpu.c arm: mvebu: Avoid reading MVEBU_REG_PCIE_DEVID register too many times 2022-07-21 10:14:04 +02:00
dram.c arm: mvebu: Avoid reading MVEBU_REG_PCIE_DEVID register too many times 2022-07-21 10:14:04 +02:00
efuse.c arm: mvebu: Add support for reading LD0 and LD1 eFuse 2022-04-21 12:31:36 +02:00
gpio.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Kconfig arm: mvebu: Move internal registers in arch_very_early_init() function 2022-05-16 11:31:34 +02:00
kwbimage.cfg.in arm: mvebu: Enable BootROM output on A38x 2022-01-14 11:39:16 +01:00
lowlevel.S arm: mvebu: Move internal registers in arch_very_early_init() function 2022-05-16 11:31:34 +02:00
lowlevel_spl.S mvebu: Use CONFIG_SPL_STACK + 4 directly for bootparam location 2022-06-06 12:09:12 -04:00
Makefile arm: mvebu: Use MVEBU_SPL_BOOT_DEVICE instead of SPL_BOOT_DEVICE 2022-06-06 12:09:29 -04:00
mbus.c arm: mvebu: mbus: Fix mbus driver to work also after U-Boot relocation 2022-08-23 12:35:37 +02:00
spl.c arm: mvebu: Define env_sf_get_env_addr() for all Armada boards in SPL 2022-08-23 10:48:59 +02:00
system-controller.c arm: mvebu: Implement simple mvebu-reset driver for enabling/disabling PCIe ports 2022-01-14 07:47:57 +01:00
timer.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00