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:
parent
cf2817a84c
commit
e79021223b
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user