summaryrefslogtreecommitdiff
path: root/common/spl
diff options
context:
space:
mode:
authorVikas Manocha <vikas.manocha@st.com>2017-04-07 22:38:13 (GMT)
committerTom Rini <trini@konsulko.com>2017-05-08 15:38:40 (GMT)
commit5bf5250e9d1555aa388a810213fd85106a60388e (patch)
tree87360d32104ad5604bf1088629803cde53e93c24 /common/spl
parentdc07961f5eb505bbf1d2cdfccf337b9e757ec41e (diff)
downloadu-boot-5bf5250e9d1555aa388a810213fd85106a60388e.tar.xz
spl: make image arg or fdt blob address reconfigurable
At present fdt blob or argument address being passed to kernel is fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. FDT blob from different media like nand, nor flash are copied to the address pointed by the macro. The problem is, it makes args/fdt blob compulsory to copy which is not required in cases like for NOR Flash. This patch removes this limitation. Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
Diffstat (limited to 'common/spl')
-rw-r--r--common/spl/spl.c6
-rw-r--r--common/spl/spl_nor.c8
2 files changed, 5 insertions, 9 deletions
diff --git a/common/spl/spl.c b/common/spl/spl.c
index a3e73b8..50828e6 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -345,6 +345,9 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
#endif
memset(&spl_image, '\0', sizeof(spl_image));
+#ifdef CONFIG_SYS_SPL_ARGS_ADDR
+ spl_image.arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR;
+#endif
board_boot_order(spl_boot_list);
if (boot_from_devices(&spl_image, spl_boot_list,
@@ -361,8 +364,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
case IH_OS_LINUX:
debug("Jumping to Linux\n");
spl_board_prepare_for_linux();
- jump_to_image_linux(&spl_image,
- (void *)CONFIG_SYS_SPL_ARGS_ADDR);
+ jump_to_image_linux(&spl_image);
#endif
default:
debug("Unsupported OS image.. Jumping nevertheless..\n");
diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
index d07ca84..1ef8ac8 100644
--- a/common/spl/spl_nor.c
+++ b/common/spl/spl_nor.c
@@ -39,13 +39,7 @@ static int spl_nor_load_image(struct spl_image_info *spl_image,
sizeof(struct image_header)),
spl_image->size);
- /*
- * Copy DT blob (fdt) to SDRAM. Passing pointer to
- * flash doesn't work
- */
- memcpy((void *)CONFIG_SYS_SPL_ARGS_ADDR,
- (void *)(CONFIG_SYS_FDT_BASE),
- CONFIG_SYS_FDT_SIZE);
+ spl_image->arg = (void *)CONFIG_SYS_FDT_BASE;
return 0;
} else {