spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
PATCH 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.
---
common/spl/spl_nor.c | 74 +++++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 33 deletions(-)
common/spl/spl_nor.c +41 -33
@@ -7,6 +7,45 @@#include <common.h> #include <spl.h> +#if defined(CONFIG_SPL_OS_BOOT ) +int load_linux (void ) +{ +if (spl_start_uboot ()) +return -1 ; + +spl_parse_image_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); + +/* +* 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 0 ; +} +#else +int load_linux (void ) +{ +return -1 ; +} +#endif + +void load_uboot (void ) +{ +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); +} +void spl_nor_load_image (void ) {/*
@@ -15,37 +54,6 @@ 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 ); - -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 ); - -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 )); - } +if (load_linux () <0 ) +load_uboot (); }
Signature · 1 line
1.9.1
PATCH 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
Quoted 6 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.Signed-off-by Masahiro Yamada <[email protected]>
Good idea, but the function to check on U-Boot or Linux should be called spl_start_uboot to match the other load methods :)
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/20141210/97915a86/attachment.pgp>
PATCH 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
Hi Tom,
Quoted 7 lines · On Wed, 10 Dec 2014 20:34:03 -0500 Tom Rini <[email protected]> wrote:
Quoted 5 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.
Quoted 5 lines
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>Good idea, but the function to check on U-Boot or Linux should be called
spl_start_ubootto match the other load methods :)
I think I am following this way.
common/spl/spl_nor.c line 14
Quoted 5 lines
common/spl/spl_nor.c +5
-0+#if defined(CONFIG_SPL_OS_BOOT ) +int load_linux (void ) +{ +if (spl_start_uboot ()) +return -1 ;
Here.
Any problem?
Best Regards
Masahiro Yamada
PATCH 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
ping?
2014-12-18 16:13 GMT+09:00 Masahiro Yamada <[email protected]>:
Quoted 42 lines
Hi Tom,
Quoted 7 lines · On Wed, 10 Dec 2014 20:34:03 -0500 Tom Rini <[email protected]> wrote:
Quoted 5 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.Quoted 5 lines
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>Good idea, but the function to check on U-Boot or Linux should be called
spl_start_ubootto match the other load methods :)I think I am following this way.
common/spl/spl_nor.c line 14
Quoted 5 lines
common/spl/spl_nor.c +5
-0+#if defined(CONFIG_SPL_OS_BOOT ) +int load_linux (void ) +{ +if (spl_start_uboot ()) +return -1 ;Here.
Any problem?Best Regards
Masahiro Yamada_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
Signature · 2 lines
Best Regards Masahiro Yamada
PATCH 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
In reply to Masahiro YamadaQuoted 22 lines · Masahiro Yamada
Hi Tom,
Quoted 7 lines · On Wed, 10 Dec 2014 20:34:03 -0500 Tom Rini <[email protected]> wrote:
Quoted 5 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.Quoted 5 lines
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>Good idea, but the function to check on U-Boot or Linux should be called
spl_start_ubootto match the other load methods :)I think I am following this way.
Quoted 9 lines
common/spl/spl_nor.c line 14
Quoted 5 lines
common/spl/spl_nor.c +5
-0+#if defined(CONFIG_SPL_OS_BOOT ) +int load_linux (void ) +{ +if (spl_start_uboot ()) +return -1 ;Here.
Any problem?
Yes, it should look like spl_nand_load_image().
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/20150107/01763d31/attachment.pgp>
PATCH 1/1 spl: spl_nor: surround Linux-load code with #ifdef CONFIG_SPL_OS_BOOT
Quoted 33 lines · On Wed, 7 Jan 2015 14:47:36 -0500 Tom Rini <[email protected]> wrote:
Quoted 22 lines · Masahiro Yamada
Hi Tom,
Quoted 7 lines · On Wed, 10 Dec 2014 20:34:03 -0500 Tom Rini <[email protected]> wrote:
Quoted 5 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.Quoted 5 lines
Quoted 1 line
Signed-off-by Masahiro Yamada <[email protected]>Good idea, but the function to check on U-Boot or Linux should be called
spl_start_ubootto match the other load methods :)I think I am following this way.
Quoted 9 lines
common/spl/spl_nor.c line 14
Quoted 5 lines
common/spl/spl_nor.c +5
-0+#if defined(CONFIG_SPL_OS_BOOT ) +int load_linux (void ) +{ +if (spl_start_uboot ()) +return -1 ;Here.
Any problem?
Quoted 2 lines
Yes, it should look like
spl_nand_load_image().
OK.
I generally prefer to dividing shorter helper functions and shaller nests, but common/spl/spl_nand.c is what you want, v2 is here: