This define gives the possibility to copy entire image (including header - e.g. u-boot.img) from NOR parallel memory to e.g. SDRAM. The current code only supports loading the raw binary image (the u-boot.bin).
The legacy behavior is preserved, since other board don't enabled this option. Signed-off-by: Lukasz Majewski <l.majew...@majess.pl> --- Changes for v2: - Update to code to apply on v2016.11+ Changes for v3: - Write better commit mesage to explain the problem --- common/spl/Kconfig | 10 ++++++++++ common/spl/spl_nor.c | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/common/spl/Kconfig b/common/spl/Kconfig index df9e0ce..d31b26d 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -399,6 +399,16 @@ config SPL_NOR_SUPPORT a memory-mapped device makes it very easy to access. Loading from NOR is typically achieved with just a memcpy(). +config SPL_NOR_COPY_ENTIRE_IMAGE + bool + depends on SPL_NOR_SUPPORT + prompt "Copy entire image from NOR memory" + default n + help + By default the SPL NOR driver supports copying only payload to + destination address. Say Y if you want to copy entire image (including + its image header). + config SPL_ONENAND_SUPPORT bool "Support OneNAND flash" depends on SPL diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c index 6bfa399..44f3e99 100644 --- a/common/spl/spl_nor.c +++ b/common/spl/spl_nor.c @@ -10,13 +10,15 @@ static int spl_nor_load_image(struct spl_image_info *spl_image, struct spl_boot_device *bootdev) { + void *img_src; int ret; +#ifndef CONFIG_SPL_NOR_COPY_ENTIRE_IMAGE /* * Loading of the payload to SDRAM is done with skipping of * the mkimage header in this SPL NOR driver */ spl_image->flags |= SPL_COPY_PAYLOAD_ONLY; - +#endif #ifdef CONFIG_SPL_OS_BOOT if (!spl_start_uboot()) { const struct image_header *header; @@ -65,9 +67,13 @@ static int spl_nor_load_image(struct spl_image_info *spl_image, if (ret) return ret; + img_src = (void *)CONFIG_SYS_UBOOT_BASE; +#ifndef CONFIG_SPL_NOR_COPY_ENTIRE_IMAGE + img_src += sizeof(struct image_header)); +#endif + memcpy((void *)(unsigned long)spl_image->load_addr, - (void *)(CONFIG_SYS_UBOOT_BASE + sizeof(struct image_header)), - spl_image->size); + img_src, spl_image->size); return 0; } -- 2.1.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot