microblaze: Add FDT support
PATCH 1/1 microblaze: Add FDT support
This patch adds FDT (flattened device tree) support to microblaze arch.
Tested with Linux arch/microblaze kernels with and without compiled in FDT on Xilinx ML506 board.
Signed-off-by Arun Bhanu <[email protected]>
--- arch/microblaze/lib/bootm.c | 39 ++++++++++++++++++++++++++++++++++----- 1 files changed, 34 insertions(+), 5 deletions(-)
arch/microblaze/lib/bootm.c +34 -5
@@ -35,22 +35,51 @@ DECLARE_GLOBAL_DATA_PTR;int do_bootm_linux (int flag,int argc,char *argv[],bootm_headers_t *images) {/* First parameter is mapped to $r5 for kernel boot args */ -void (*theKernel) (char *); +void (*theKernel) (char *,ulong ,ulong );char *commandline =getenv ("bootargs" ); +ulong rd_data_start, rd_data_end;if ((flag !=0 ) && (flag !=BOOTM_STATE_OS_GO ))return 1 ; - theKernel = (void (*)(char *))images->ep; +int ret; + +char *of_flat_tree =NULL ; +#if defined(CONFIG_OF_LIBFDT ) +ulong of_size =0 ; + +/* find flattened device tree */ + ret =boot_get_fdt (flag, argc, argv, images, &of_flat_tree, &of_size); +if (ret) +return 1 ; +#endif + + theKernel = (void (*)(char *,ulong ,ulong ))images->ep; + +/* find ramdisk */ + ret =boot_get_ramdisk (argc, argv, images,IH_ARCH_MICROBLAZE , + &rd_data_start, &rd_data_end); +if (ret) +return 1 ;show_boot_progress (15 ); +if (!(ulong ) of_flat_tree) + of_flat_tree =simple_strtoul (argv[3 ],NULL ,16 ); +#ifdef DEBUG -printf ("## Transferring control to Linux (at address %08lx) ...\n" , - (ulong ) theKernel); +printf ("## Transferring control to Linux (at address 0x%08lx) " \ +"ramdisk 0x%08lx, FDT 0x%08lx...\n" , + (ulong ) theKernel, rd_data_start, (ulong ) of_flat_tree);#endif -theKernel (commandline); +/* +* Linux Kernel Parameters (passing device tree): +* r5: pointer to command line +* r6: pointer to ramdisk +* r7: pointer to the fdt, followed by the board info data +*/ +theKernel (commandline, rd_data_start, (ulong ) of_flat_tree);/* does not return */ return 1 ;
Signature · 1 line
1.6.2.5
PATCH 1/1 microblaze: Add FDT support
Quoted 6 lines · Arun Bhanu
This patch adds FDT (flattened device tree) support to microblaze arch.
Tested with Linux
arch/microblazekernels with and without compiled in FDT on Xilinx ML506 board.Signed-off-by Arun Bhanu <[email protected]>
Applied.
Thanks,
Michal
Quoted 65 lines
--- arch/microblaze/lib/bootm.c | 39 ++++++++++++++++++++++++++++++++++----- 1 files changed, 34 insertions(+), 5 deletions(-)arch/microblaze/lib/bootm.c +34
-5@@ -35,22 +35,51 @@ DECLARE_GLOBAL_DATA_PTR;int do_bootm_linux (int flag,int argc,char *argv[],bootm_headers_t *images) {/* First parameter is mapped to $r5 for kernel boot args */ -void (*theKernel) (char *); +void (*theKernel) (char *,ulong ,ulong );char *commandline =getenv ("bootargs" ); +ulong rd_data_start, rd_data_end;if ((flag !=0 ) && (flag !=BOOTM_STATE_OS_GO ))return 1 ; - theKernel = (void (*)(char *))images->ep; +int ret; + +char *of_flat_tree =NULL ; +#if defined(CONFIG_OF_LIBFDT ) +ulong of_size =0 ; + +/* find flattened device tree */ + ret =boot_get_fdt (flag, argc, argv, images, &of_flat_tree, &of_size); +if (ret) +return 1 ; +#endif + + theKernel = (void (*)(char *,ulong ,ulong ))images->ep; + +/* find ramdisk */ + ret =boot_get_ramdisk (argc, argv, images,IH_ARCH_MICROBLAZE , + &rd_data_start, &rd_data_end); +if (ret) +return 1 ;show_boot_progress (15 ); +if (!(ulong ) of_flat_tree) + of_flat_tree =simple_strtoul (argv[3 ],NULL ,16 ); +#ifdef DEBUG -printf ("## Transferring control to Linux (at address %08lx) ...\n" , - (ulong ) theKernel); +printf ("## Transferring control to Linux (at address 0x%08lx) " \ +"ramdisk 0x%08lx, FDT 0x%08lx...\n" , + (ulong ) theKernel, rd_data_start, (ulong ) of_flat_tree);#endif -theKernel (commandline); +/* +* Linux Kernel Parameters (passing device tree): +* r5: pointer to command line +* r6: pointer to ramdisk +* r7: pointer to the fdt, followed by the board info data +*/ +theKernel (commandline, rd_data_start, (ulong ) of_flat_tree);/* does not return */ return 1 ;
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian