spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
PATCH v2 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
If CONFIG_SPL_NOR_SUPPORT is defined, spl_nor_load_image() requires spl_start_uboot(), CONFIG_SYS_OS_BASE, CONFIG_SYS_SPL_ARGS_ADDR, CONFIG_SYS_FDT_BASE to be defined even if users just want to run U-Boot, not Linux. This is inconvenient.
This patch is following the codying style of common/spl/spl_nand.c.
---
Changes in v2:
- follow the coding style of common/spl/spl_nand.c
common/spl/spl_nor.c | 64 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 25 deletions(-)
common/spl/spl_nor.c +39 -25
@@ -15,37 +15,51 @@ void spl_nor_load_image(void)*/ spl_image.flags |=SPL_COPY_PAYLOAD_ONLY ; -if (spl_start_uboot ()) { -/* -* Load real U-Boot from its location in NOR flash to its -* defined location in SDRAM -*/ -spl_parse_image_header ( - (const struct image_header *)CONFIG_SYS_UBOOT_BASE ); +#ifdef CONFIG_SPL_OS_BOOT +if (!spl_start_uboot ()) { +struct image_header *header; -memcpy ((void *)spl_image.load_addr, - (void *)(CONFIG_SYS_UBOOT_BASE + -sizeof (struct image_header )), - spl_image.size); - }else {/* * Load Linux from its location in NOR flash to its defined * location in SDRAM */ -spl_parse_image_header ( - (const struct image_header *)CONFIG_SYS_OS_BASE ); + header = (const struct image_header *)CONFIG_SYS_OS_BASE ; -memcpy ((void *)spl_image.load_addr, - (void *)(CONFIG_SYS_OS_BASE + -sizeof (struct image_header )), - spl_image.size); +if (image_get_os (header) ==IH_OS_LINUX ) { +/* happy - was a Linux */ -/* -* Copy DT blob (fdt) to SDRAM. Passing pointer to flash -* doesn't work (16 KiB should be enough for DT) -*/ -memcpy ((void *)CONFIG_SYS_SPL_ARGS_ADDR , - (void *)(CONFIG_SYS_FDT_BASE ), - (16 <<10 )); +spl_parse_image_header (header); + +memcpy ((void *)spl_image.load_addr, + (void *)(CONFIG_SYS_OS_BASE + +sizeof (struct image_header )), + spl_image.size); + +/* +* Copy DT blob (fdt) to SDRAM. Passing pointer to +* flash doesn't work (16 KiB should be enough for DT) +*/ +memcpy ((void *)CONFIG_SYS_SPL_ARGS_ADDR , + (void *)(CONFIG_SYS_FDT_BASE ), + (16 <<10 )); + +return ; + }else { +puts ("The Expected Linux image was not found.\n" +"Please check your NOR configuration.\n" +"Trying to start u-boot now...\n" ); + } } +#endif + +/* +* Load real U-Boot from its location in NOR flash to its +* defined location in SDRAM +*/ +spl_parse_image_header ( + (const struct image_header *)CONFIG_SYS_UBOOT_BASE ); + +memcpy ((void *)spl_image.load_addr, + (void *)(CONFIG_SYS_UBOOT_BASE +sizeof (struct image_header )), + spl_image.size); }
Signature · 1 line
1.9.1
PATCH v2 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
Quoted 8 lines · Masahiro Yamada
If
CONFIG_SPL_NOR_SUPPORTis defined,spl_nor_load_image()requiresspl_start_uboot(),CONFIG_SYS_OS_BASE,CONFIG_SYS_SPL_ARGS_ADDR,CONFIG_SYS_FDT_BASEto be defined even if users just want to run U-Boot, not Linux. This is inconvenient.This patch is following the codying style of
common/spl/spl_nand.c.Signed-off-by Masahiro Yamada <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150115/297cd1a9/attachment.pgp>