int
fis_remap(struct fis_part *old, int n_old, struct fis_part *new, int n_new)
{
- struct fis_image_desc *fisdir = NULL;
- struct fis_image_desc *redboot = NULL;
struct fis_image_desc *first = NULL;
struct fis_image_desc *last = NULL;
struct fis_image_desc *first_fb = NULL;
if (!desc->hdr.name[0] || (desc->hdr.name[0] == 0xff))
break;
- if (!strcmp((char *) desc->hdr.name, "FIS directory"))
- fisdir = desc;
-
- if (!strcmp((char *) desc->hdr.name, "RedBoot"))
- redboot = desc;
-
/* update max offset */
if (offset < desc->hdr.flash_base)
offset = desc->hdr.flash_base;
size = offset - first_fb->hdr.flash_base;
-#ifdef notyet
- desc = first - 1;
- if (redboot && (desc >= redboot)) {
- if (first->hdr.flash_base - desc->hdr.size > desc->hdr.flash_base) {
- int delta = first->hdr.flash_base - desc->hdr.size - desc->hdr.flash_base;
-
- offset -= delta;
- size += delta;
- }
- }
-#endif
-
last++;
desc = first + n_new;
offset = first_fb->hdr.flash_base;
memset(desc, 0, sizeof(struct fis_image_desc));
memcpy(desc->hdr.name, part->name, sizeof(desc->hdr.name));
desc->crc.desc = 0;
- desc->crc.file = 0;
+ desc->crc.file = part->crc;
desc->hdr.flash_base = offset;
desc->hdr.mem_base = part->loadaddr;
desc->hdr.entry_point = part->loadaddr;
desc->hdr.size = (part->size > 0) ? part->size : size;
- desc->hdr.data_length = desc->hdr.size;
-
+ desc->hdr.data_length = (part->length > 0) ? part->length :
+ desc->hdr.size;
offset += desc->hdr.size;
size -= desc->hdr.size;
}