u-boot/arch/arm
Pali Rohár 4a82fca8e3 arm: a37xx: pci: Fix a3700_fdt_fix_pcie_regions() function
Current version of this function uses a lot of incorrect assumptions about
the `ranges` DT property:

 * parent(#address-cells) == 2
 * #size-cells == 2
 * number of entries == 2
 * address size of first entry == 0x1000000
 * second child address entry == base + 0x1000000

Trying to increase PCIe MEM space to more than 16 MiB leads to an overlap
with PCIe IO space, and trying to define additional MEM space (as a third
entry in the `ranges` DT property) causes U-Boot to crash when booting the
kernel.

  ## Flattened Device Tree blob at 04f00000
     Booting using the fdt blob at 0x4f00000
     Loading Device Tree to 000000001fb01000, end 000000001fb08f12 ... OK
  ERROR: board-specific fdt fixup failed: <unknown error>
   - must RESET the board to recover.

Fix a3700_fdt_fix_pcie_regions() to properly parse and update all addresses
in the `ranges` property according to
https://elinux.org/Device_Tree_Usage#PCI_Address_Translation

Now it is possible to increase PCIe MEM space from 16 MiB to maximal value
of 127 MiB.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Fixes: cb2ddb291e ("arm64: mvebu: a37xx: add device-tree fixer for PCIe regions")
Reviewed-by: Stefan Roese <sr@denx.de>
2021-06-04 11:32:41 +02:00
..
cpu armv8: SPL: discard relocation information 2021-05-24 14:21:30 -04:00
dts arm: a37xx: pci: Fix DT compatible string to Linux' DT compatible 2021-06-04 11:32:41 +02:00
include ARM: make gd a function call for LTO and set via set_gd() 2021-05-24 14:21:30 -04:00
lib ARM: make LTO available 2021-05-24 14:21:30 -04:00
mach-aspeed common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
mach-at91 treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
mach-bcm283x reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-bcmstb
mach-cortina
mach-davinci reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-exynos ARM: make gd a function call for LTO and set via set_gd() 2021-05-24 14:21:30 -04:00
mach-highbank common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
mach-imx ARM: imx8m: fix imx_eqos_txclk_set_rate() type mismatch for LTO 2021-05-24 14:21:30 -04:00
mach-integrator
mach-ipq40xx dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
mach-k3 treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
mach-keystone ARM: fix LTO for keystone 2021-05-24 14:21:30 -04:00
mach-kirkwood drivers: ata: Remove mvsata_ide driver 2021-04-10 07:59:30 -04:00
mach-lpc32xx reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-mediatek board: mt7629: enable compression of u-boot to reduce the size of final image 2021-03-20 16:24:27 -04:00
mach-meson arm: meson: remove static ethernet link setup 2021-04-06 11:10:29 +02:00
mach-mvebu arm: a37xx: pci: Fix a3700_fdt_fix_pcie_regions() function 2021-06-04 11:32:41 +02:00
mach-nexell treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
mach-octeontx reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-octeontx2 reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-omap2 ARM: omap3: fix LTO for DM3730 (and possibly other omap3 boards) 2021-05-24 14:21:30 -04:00
mach-orion5x reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-owl reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-qemu qemu: arm: Initialise virtio devices in board_late_init 2020-12-31 14:41:31 +01:00
mach-rmobile ARM: renesas: Scrub duplicate memory nodes from DT on Gen3 2021-05-12 21:36:27 +02:00
mach-rockchip ARM: fix LTO for rockchip and samsung 2021-05-24 14:21:30 -04:00
mach-s5pc1xx common: Drop net.h from common header 2020-05-18 17:33:31 -04:00
mach-snapdragon common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
mach-socfpga treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
mach-sti
mach-stm32 board: Add rt-thread art-pi board support 2021-04-09 11:53:00 +02:00
mach-stm32mp Add rt-thread art-pi board support based on STM32H750 SoC 2021-04-09 13:10:59 -04:00
mach-sunxi treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
mach-tegra ARM: fix LTO for seaboard 2021-05-24 14:21:30 -04:00
mach-u8500 common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
mach-uniphier reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-versal arm64: versal: Remove gd reference 2021-04-23 08:49:19 +02:00
mach-versatile
mach-zynq reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
mach-zynqmp Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
mach-zynqmp-r5 reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
thumb1/include/asm/proc-armv
config.mk ARM: don't use --gc-sections with LTO when using private libgcc 2021-05-24 14:21:30 -04:00
Kconfig arm: highbank: Do DRAM init from DT 2021-04-20 07:31:12 -04:00
Kconfig.debug
Makefile arm: octeontx2: Add support for OcteonTX2 SoC platforms 2020-08-25 08:01:16 +02:00