static void *read_mtd_barebox(const char *partition) { int ret; int size; void *to, *header; struct cdev *cdev; header = read_image_head(partition); if (header == NULL) return NULL; size = get_image_size(header); if (!size) { printf("failed to get image size\n"); return NULL; } to = xmalloc(size); cdev = cdev_open(partition, O_RDONLY); if (!cdev) { printf("failed to open partition\n"); return NULL; } ret = cdev_read(cdev, to, size, 0, 0); if (ret != size) { printf("failed to read from partition\n"); return NULL; } return to; }
static void *omap_xload_boot_nand(int offset, int part_size) { int ret; int size; void *to, *header; struct cdev *cdev; devfs_add_partition("nand0", offset, part_size, DEVFS_PARTITION_FIXED, "x"); dev_add_bb_dev("x", "bbx"); header = read_image_head("bbx"); if (header == NULL) return NULL; size = get_image_size(header); if (!size) { printf("failed to get image size\n"); return NULL; } to = xmalloc(size); cdev = cdev_open("bbx", O_RDONLY); if (!cdev) { printf("failed to open nand\n"); return NULL; } ret = cdev_read(cdev, to, size, 0, 0); if (ret != size) { printf("failed to read from nand\n"); return NULL; } return to; }