This patch adds fdt fixups to the kernel device-tree in R5 falcon mode, these fixups include fixing up the core-count, reserved-memory etc.
The users can opt out by disabling the respective CONFIG_OF_*_SETUP config options. Signed-off-by: Anshul Dalal <[email protected]> --- arch/arm/mach-k3/r5/common.c | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/arch/arm/mach-k3/r5/common.c b/arch/arm/mach-k3/r5/common.c index aa94c0c1956..4788aaff3ea 100644 --- a/arch/arm/mach-k3/r5/common.c +++ b/arch/arm/mach-k3/r5/common.c @@ -406,12 +406,43 @@ int k3_r5_falcon_bootmode(void) return BOOT_DEVICE_NOBOOT; } +static int k3_falcon_fdt_fixup(void *fdt) +{ + int ret; + + if (!fdt) + return -EINVAL; + + fdt_set_totalsize(fdt, fdt_totalsize(fdt) + CONFIG_SYS_FDT_PAD); + + if (IS_ENABLED(CONFIG_OF_BOARD_SETUP)) { + ret = ft_board_setup(fdt, gd->bd); + if (ret) { + printf("%s: Failed in board fdt fixups: %s\n", __func__, + fdt_strerror(ret)); + return ret; + } + } + + if (IS_ENABLED(CONFIG_OF_SYSTEM_SETUP)) { + ret = ft_system_setup(fdt, gd->bd); + if (ret) { + printf("%s: Failed in system fdt fixups: %s\n", + __func__, fdt_strerror(ret)); + return ret; + } + } + + return 0; +} + int k3_r5_falcon_prep(void) { struct spl_image_loader *loader, *drv; struct spl_image_info kernel_image; struct spl_boot_device bootdev; int ret = -ENXIO, n_ents; + void *fdt; tifalcon_loaded = true; memset(&kernel_image, '\0', sizeof(kernel_image)); @@ -429,6 +460,13 @@ int k3_r5_falcon_prep(void) if (ret) continue; + fdt = spl_image_fdt_addr(&kernel_image); + ret = k3_falcon_fdt_fixup(fdt); + if (ret) { + printf("%s: Failed performing fdt fixups in falcon flow: [%d]\n", + __func__, ret); + return ret; + } return 0; } } -- 2.51.0

