bootm/fdt: Only process the fdt if an fdt address was provided

Boards with CONFIG_OF_LIBFDT enabled are not able to boot old-style
kernels using the board info structure (instead of passing a device tree)
This change allows the old style booting to be used if the fdt argument
was not passed to 'bootm'.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Kim Phillips <kim.phillips@freescale.com>
This commit is contained in:
Grant Likely 2007-09-06 09:47:40 -06:00
parent cf2817a84c
commit e79021223b

View File

@ -962,29 +962,31 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
* Add the chosen node if it doesn't exist, add the env and bd_t * Add the chosen node if it doesn't exist, add the env and bd_t
* if the user wants it (the logic is in the subroutines). * if the user wants it (the logic is in the subroutines).
*/ */
if (fdt_chosen(of_flat_tree, initrd_start, initrd_end, 0) < 0) { if (of_flat_tree) {
puts ("ERROR: /chosen node create failed - " if (fdt_chosen(of_flat_tree, initrd_start, initrd_end, 0) < 0) {
"must RESET the board to recover.\n"); puts ("ERROR: /chosen node create failed - "
do_reset (cmdtp, flag, argc, argv); "must RESET the board to recover.\n");
} do_reset (cmdtp, flag, argc, argv);
}
#ifdef CONFIG_OF_HAS_UBOOT_ENV #ifdef CONFIG_OF_HAS_UBOOT_ENV
if (fdt_env(of_flat_tree) < 0) { if (fdt_env(of_flat_tree) < 0) {
puts ("ERROR: /u-boot-env node create failed - " puts ("ERROR: /u-boot-env node create failed - "
"must RESET the board to recover.\n"); "must RESET the board to recover.\n");
do_reset (cmdtp, flag, argc, argv); do_reset (cmdtp, flag, argc, argv);
} }
#endif #endif
#ifdef CONFIG_OF_HAS_BD_T #ifdef CONFIG_OF_HAS_BD_T
if (fdt_bd_t(of_flat_tree) < 0) { if (fdt_bd_t(of_flat_tree) < 0) {
puts ("ERROR: /bd_t node create failed - " puts ("ERROR: /bd_t node create failed - "
"must RESET the board to recover.\n"); "must RESET the board to recover.\n");
do_reset (cmdtp, flag, argc, argv); do_reset (cmdtp, flag, argc, argv);
} }
#endif #endif
#ifdef CONFIG_OF_BOARD_SETUP #ifdef CONFIG_OF_BOARD_SETUP
/* Call the board-specific fixup routine */ /* Call the board-specific fixup routine */
ft_board_setup(of_flat_tree, gd->bd); ft_board_setup(of_flat_tree, gd->bd);
#endif #endif
}
#endif /* CONFIG_OF_LIBFDT */ #endif /* CONFIG_OF_LIBFDT */
#if defined(CONFIG_OF_FLAT_TREE) #if defined(CONFIG_OF_FLAT_TREE)
#ifdef CFG_BOOTMAPSZ #ifdef CFG_BOOTMAPSZ