u-boot-brain/arch/arm/mach-mvebu
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
..
armada8k arm64: mvebu: extend the mmio region 2021-05-16 06:48:45 +02:00
armada3700 arm: a37xx: pci: Fix a3700_fdt_fix_pcie_regions() function 2021-06-04 11:32:41 +02:00
include/mach arm64: mvebu: extend the mmio region 2021-05-16 06:48:45 +02:00
serdes arm: mvebu: a38x: Remove dead code ARMADA_39X 2021-03-12 07:44:21 +01:00
.gitignore mvebu: select boot device at SoC level 2018-08-06 14:07:23 +02:00
Kconfig arm: octeontx2: Add Octeon TX2 CN9130 CRB support 2021-04-29 07:45:13 +02:00
Makefile rename symbol: CONFIG_KIRKWOOD -> CONFIG_ARCH_KIRKWOOD 2020-05-15 14:47:35 -04:00
arm64-common.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
cpu.c reset: Remove addr parameter from reset_cpu() 2021-03-02 14:03:02 -05:00
dram.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
efuse.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
gpio.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
kwbimage.cfg.in mvebu: select boot device at SoC level 2018-08-06 14:07:23 +02:00
lowlevel_spl.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mbus.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
spl.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
timer.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00