
Hi Michal,
On 9 June 2016 at 08:23, Michal Simek michal.simek@xilinx.com wrote:
Disable arch_fixup_fdt() calls for cases where U-Boot shouldn't update memory setup in DTB file. One example of usage of this option is to boot OS with different memory setup than U-Boot use.
Signed-off-by: Michal Simek michal.simek@xilinx.com
Kconfig | 8 ++++++++ arch/arm/lib/bootm-fdt.c | 2 ++ common/image-fdt.c | 3 +++ 3 files changed, 13 insertions(+)
diff --git a/Kconfig b/Kconfig index 4b4621666560..3efba624ecff 100644 --- a/Kconfig +++ b/Kconfig @@ -291,6 +291,14 @@ config SYS_CLK_FREQ help TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
+config DISABLE_ARCH_FIXUP_FDT
bool "Disable arch_fixup_fdt() call"
depends on ARM
help
Disable FDT memory map syncup before OS boot. This feature can be
used for booting OS with different memory setup where the part of
the memory location should be used for different purpose.
endmenu # Boot images
I think this would be better as a positive Kconfig - ARCH_FIXUP_FDT.
Also this is pretty ugly - with a weak function that gets #ifdefed out. How about changing it so that the function is only called if the Kconfig is set, and then it does not have to be weak?
source "common/Kconfig" diff --git a/arch/arm/lib/bootm-fdt.c b/arch/arm/lib/bootm-fdt.c index 7677358742e1..a873b778ade9 100644 --- a/arch/arm/lib/bootm-fdt.c +++ b/arch/arm/lib/bootm-fdt.c @@ -24,6 +24,7 @@
DECLARE_GLOBAL_DATA_PTR;
+#ifndef CONFIG_DISABLE_ARCH_FIXUP_FDT int arch_fixup_fdt(void *blob) { bd_t *bd = gd->bd; @@ -50,3 +51,4 @@ int arch_fixup_fdt(void *blob) #endif return ret; } +#endif diff --git a/common/image-fdt.c b/common/image-fdt.c index 6cac7dbb7f8b..9e05becd464a 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -460,6 +460,9 @@ __weak int ft_verify_fdt(void *fdt)
__weak int arch_fixup_fdt(void *blob) { +#ifdef CONFIG_DISABLE_ARCH_FIXUP_FDT
printf("## Disable arch_fixup_fdt()\n");
+#endif return 0; }
-- 1.9.1
Regards, Simon