diff options
author | Tom Rini <trini@ti.com> | 2014-11-25 11:08:52 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2014-11-26 11:21:14 -0500 |
commit | 1fc4e6f486cc1e9d2dcf0ba86e6021c3d83dce51 (patch) | |
tree | 9e96deb4b36a251fab92533bc6e8d7ffb58893eb /common/image-fdt.c | |
parent | 94092e361cfa9461d746e530ca97d8822f5d23f0 (diff) | |
parent | 933cdbb479aa87dcb6e3e333c3d1e04b0e7de1ec (diff) | |
download | u-boot-imx-1fc4e6f486cc1e9d2dcf0ba86e6021c3d83dce51.zip u-boot-imx-1fc4e6f486cc1e9d2dcf0ba86e6021c3d83dce51.tar.gz u-boot-imx-1fc4e6f486cc1e9d2dcf0ba86e6021c3d83dce51.tar.bz2 |
Merge git://git.denx.de/u-boot-fdt
Diffstat (limited to 'common/image-fdt.c')
-rw-r--r-- | common/image-fdt.c | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/common/image-fdt.c b/common/image-fdt.c index a39ae1b..1d76bd6 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -460,19 +460,32 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, { ulong *initrd_start = &images->initrd_start; ulong *initrd_end = &images->initrd_end; - int ret; + int ret = -EPERM; + int fdt_ret; if (fdt_chosen(blob) < 0) { - puts("ERROR: /chosen node create failed"); - puts(" - must RESET the board to recover.\n"); - return -1; + printf("ERROR: /chosen node create failed\n"); + goto err; } if (arch_fixup_fdt(blob) < 0) { - puts("ERROR: arch specific fdt fixup failed"); - return -1; + printf("ERROR: arch-specific fdt fixup failed\n"); + goto err; + } + if (IMAGE_OF_BOARD_SETUP) { + fdt_ret = ft_board_setup(blob, gd->bd); + if (fdt_ret) { + printf("ERROR: board-specific fdt fixup failed: %s\n", + fdt_strerror(fdt_ret)); + goto err; + } + } + if (IMAGE_OF_SYSTEM_SETUP) { + if (ft_system_setup(blob, gd->bd)) { + printf("ERROR: system-specific fdt fixup failed: %s\n", + fdt_strerror(fdt_ret)); + goto err; + } } - if (IMAGE_OF_BOARD_SETUP) - ft_board_setup(blob, gd->bd); fdt_fixup_ethernet(blob); /* Delete the old LMB reservation */ @@ -481,7 +494,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, ret = fdt_shrink_to_minimum(blob); if (ret < 0) - return ret; + goto err; of_size = ret; if (*initrd_start && *initrd_end) { @@ -493,7 +506,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, fdt_initrd(blob, *initrd_start, *initrd_end); if (!ft_verify_fdt(blob)) - return -1; + goto err; #if defined(CONFIG_SOC_KEYSTONE) if (IMAGE_OF_BOARD_SETUP) @@ -501,4 +514,8 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, #endif return 0; +err: + printf(" - must RESET the board to recover.\n\n"); + + return ret; } |