nios2: add fdt support
PATCH 1/1 nios2: add fdt support
This patch adds fdt support to boot linux, followed Michal's work on microblaze.
Signed-off-by Thomas Chou <[email protected]>
--- arch/nios2/lib/bootm.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)
arch/nios2/lib/bootm.c +21 -0
@@ -34,6 +34,18 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)char *commandline =getenv ("bootargs" );ulong initrd_start = images->rd_start;ulong initrd_end = images->rd_end; +char *of_flat_tree =NULL ; +#if defined(CONFIG_OF_LIBFDT ) +ulong of_size =0 ; + +/* find flattened device tree */ +if (boot_get_fdt (flag, argc, argv, images, &of_flat_tree, &of_size)) +return 1 ; +#endif +if (!of_flat_tree) + of_flat_tree = (char *)simple_strtoul (argv[3 ],NULL ,16 ); +if (of_flat_tree) + initrd_end = (ulong )of_flat_tree;if ((flag !=0 ) && (flag !=BOOTM_STATE_OS_GO ))return 1 ;
@@ -45,6 +57,15 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)debug ("bootargs=%s @ 0x%lx\n" , commandline, (ulong)&commandline);debug ("initrd=0x%lx-0x%lx\n" , (ulong )initrd_start, (ulong )initrd_end); +/* kernel parameters passing +* r4 : NIOS magic +* r5 : initrd start +* r6 : initrd end or fdt +* r7 : kernel command line +* fdt is passed to kernel via r6, the same as initrd_end. fdt will be +* verified with fdt magic. when both initrd and fdt are used at the +* same time, fdt must follow immediately after initrd. +*/ kernel (NIOS_MAGIC , initrd_start, initrd_end, commandline);/* does not return */
Signature · 1 line
1.7.1.86.g0e460
PATCH 1/1 nios2: add fdt support
Applied to: git://git.denx.de/u-boot-nios.git next Thanks,
--Scott
Quoted 47 lines · Thomas Chou
This patch adds fdt support to boot linux, followed Michal's work on microblaze.
Signed-off-by Thomas Chou <[email protected]>--- arch/nios2/lib/bootm.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)arch/nios2/lib/bootm.c +21
-0@@ -34,6 +34,18 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)char *commandline =getenv ("bootargs" );ulong initrd_start = images->rd_start;ulong initrd_end = images->rd_end; +char *of_flat_tree =NULL ; +#if defined(CONFIG_OF_LIBFDT ) +ulong of_size =0 ; + +/* find flattened device tree */ +if (boot_get_fdt (flag, argc, argv, images, &of_flat_tree, &of_size)) +return 1 ; +#endif +if (!of_flat_tree) + of_flat_tree = (char *)simple_strtoul (argv[3 ],NULL ,16 ); +if (of_flat_tree) + initrd_end = (ulong )of_flat_tree;if ((flag !=0 ) && (flag !=BOOTM_STATE_OS_GO ))return 1 ;@@ -45,6 +57,15 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)debug ("bootargs=%s @ 0x%lx\n" , commandline, (ulong)&commandline);debug ("initrd=0x%lx-0x%lx\n" , (ulong )initrd_start, (ulong )initrd_end); +/* kernel parameters passing +* r4 : NIOS magic +* r5 : initrd start +* r6 : initrd end or fdt +* r7 : kernel command line +* fdt is passed to kernel via r6, the same as initrd_end. fdt will be +* verified with fdt magic. when both initrd and fdt are used at the +* same time, fdt must follow immediately after initrd. +*/ kernel (NIOS_MAGIC , initrd_start, initrd_end, commandline);/* does not return */