mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-27 23:20:26 +09:00
fdt: Tidy up error handling in image_setup_libfdt()
The message about needing to reset should be printed no matter what error is printed. Also, an error should always be printed. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Anatolij Gustschin <agust@denx.de> Reviewed-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
f3cc44f984
commit
6f4dbc21e4
@ -460,19 +460,25 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
|
|||||||
{
|
{
|
||||||
ulong *initrd_start = &images->initrd_start;
|
ulong *initrd_start = &images->initrd_start;
|
||||||
ulong *initrd_end = &images->initrd_end;
|
ulong *initrd_end = &images->initrd_end;
|
||||||
int ret;
|
int ret = -EPERM;
|
||||||
|
int fdt_ret;
|
||||||
|
|
||||||
if (fdt_chosen(blob) < 0) {
|
if (fdt_chosen(blob) < 0) {
|
||||||
puts("ERROR: /chosen node create failed");
|
printf("ERROR: /chosen node create failed\n");
|
||||||
puts(" - must RESET the board to recover.\n");
|
goto err;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
if (arch_fixup_fdt(blob) < 0) {
|
if (arch_fixup_fdt(blob) < 0) {
|
||||||
puts("ERROR: arch specific fdt fixup failed");
|
printf("ERROR: arch-specific fdt fixup failed\n");
|
||||||
return -1;
|
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_BOARD_SETUP)
|
|
||||||
ft_board_setup(blob, gd->bd);
|
|
||||||
fdt_fixup_ethernet(blob);
|
fdt_fixup_ethernet(blob);
|
||||||
|
|
||||||
/* Delete the old LMB reservation */
|
/* Delete the old LMB reservation */
|
||||||
@ -481,7 +487,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
|
|||||||
|
|
||||||
ret = fdt_shrink_to_minimum(blob);
|
ret = fdt_shrink_to_minimum(blob);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
goto err;
|
||||||
of_size = ret;
|
of_size = ret;
|
||||||
|
|
||||||
if (*initrd_start && *initrd_end) {
|
if (*initrd_start && *initrd_end) {
|
||||||
@ -493,7 +499,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
|
|||||||
|
|
||||||
fdt_initrd(blob, *initrd_start, *initrd_end);
|
fdt_initrd(blob, *initrd_start, *initrd_end);
|
||||||
if (!ft_verify_fdt(blob))
|
if (!ft_verify_fdt(blob))
|
||||||
return -1;
|
goto err;
|
||||||
|
|
||||||
#if defined(CONFIG_SOC_KEYSTONE)
|
#if defined(CONFIG_SOC_KEYSTONE)
|
||||||
if (IMAGE_OF_BOARD_SETUP)
|
if (IMAGE_OF_BOARD_SETUP)
|
||||||
@ -501,4 +507,8 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
err:
|
||||||
|
printf(" - must RESET the board to recover.\n\n");
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,7 @@ int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name);
|
|||||||
* Add board-specific data to the FDT before booting the OS.
|
* Add board-specific data to the FDT before booting the OS.
|
||||||
*
|
*
|
||||||
* Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space.
|
* Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space.
|
||||||
|
* This function is called if CONFIG_OF_BOARD_SETUP is defined
|
||||||
*
|
*
|
||||||
* @param blob FDT blob to update
|
* @param blob FDT blob to update
|
||||||
* @param bd_t Pointer to board data
|
* @param bd_t Pointer to board data
|
||||||
|
Loading…
Reference in New Issue
Block a user