arm-linux-ld: arch/arm/mach-omap/xload.o: in function read_mtd_barebox': /home/ARM/barebox/arch/arm/mach-omap/xload.c:75: undefined reference to mtd_peb_read_file' Signed-off-by: Alexander Shiyan <eagle.alexander923@xxxxxxxxx> --- arch/arm/mach-omap/xload.c | 72 ++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c index 6d3704b8cf..78b2221304 100644 --- a/arch/arm/mach-omap/xload.c +++ b/arch/arm/mach-omap/xload.c @@ -53,46 +53,44 @@ static void *read_mtd_barebox(const char *part, unsigned int start, unsigned int struct mtd_info *mtd; unsigned int ps, pe; - if (!IS_ENABLED(CONFIG_MTD)) { - printf("Cannot load from nand/nor: MTD support is disabled\n"); - return NULL; - } + if (IS_ENABLED(CONFIG_MTD)) { + cdev = cdev_open_by_name(part, O_RDONLY); + if (!cdev) { + printf("failed to open partition\n"); + return NULL; + } - cdev = cdev_open_by_name(part, O_RDONLY); - if (!cdev) { - printf("failed to open partition\n"); - return NULL; - } + mtd = cdev->mtd; + if (!mtd) + return NULL; - mtd = cdev->mtd; - if (!mtd) - return NULL; + if (mtd_mod_by_eb(start, mtd) != 0) { + printf("Start must be eraseblock aligned\n"); + return NULL; + } - if (mtd_mod_by_eb(start, mtd) != 0) { - printf("Start must be eraseblock aligned\n"); - return NULL; - } + to = xmalloc(size); - to = xmalloc(size); + ps = mtd_div_by_eb(start, mtd); + pe = mtd_div_by_eb(start + size, mtd); + ret = mtd_peb_read_file(mtd, ps, pe, to, size); + if (ret) { + printf("Can't read image from %s: %d\n", part, ret); + goto err; + } - ps = mtd_div_by_eb(start, mtd); - pe = mtd_div_by_eb(start + size, mtd); - ret = mtd_peb_read_file(mtd, ps, pe, to, size); - if (ret) { - printf("Can't read image from %s: %d\n", part, ret); - goto err; - } + size = get_image_size(to); + if (!size) { + printf("failed to get image size\n"); + goto err; + } - size = get_image_size(to); - if (!size) { - printf("failed to get image size\n"); - goto err; - } + return to; - return to; + err: + free(to); + } -err: - free(to); return NULL; } @@ -292,7 +290,7 @@ static void *am33xx_net_boot(void) */ static __noreturn int omap_xload(void) { - void *func; + void *func = NULL; if (!barebox_part) barebox_part = &default_part; @@ -310,10 +308,8 @@ static __noreturn int omap_xload(void) } else if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) { printf("booting from USB\n"); func = omap4_xload_boot_usb(); - } else { + } else printf("booting from USB not enabled\n"); - func = NULL; - } break; case BOOTSOURCE_NAND: printf("booting from NAND\n"); @@ -327,16 +323,16 @@ static __noreturn int omap_xload(void) if (IS_ENABLED(CONFIG_OMAP_SERIALBOOT)) { printf("booting from serial\n"); func = omap_serial_boot(); - break; } + break; case BOOTSOURCE_NET: if (IS_ENABLED(CONFIG_AM33XX_NET_BOOT)) { printf("booting from NET\n"); func = am33xx_net_boot(); - break; } else { printf("booting from network not enabled\n"); } + break; default: printf("unknown boot source. Fall back to nand\n"); func = omap_xload_boot_nand(barebox_part); -- 2.32.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox