sscanf(buf->bccfe.kernelAddress, "%u", &kerneladdr);
sscanf(buf->bccfe.kernelLength, "%u", &kernellen);
sscanf(buf->bccfe.totalLength, "%u", &totallen);
- tagidcrc = buf->bccfe.tagIdCRC;
+ tagidcrc = *(uint32_t *)&(buf->bccfe.tagIdCRC[0]);
tagversion = &(buf->bccfe.tagVersion[0]);
boardid = &(buf->bccfe.boardid[0]);
break;
sscanf(buf->bc300.kernelAddress, "%u", &kerneladdr);
sscanf(buf->bc300.kernelLength, "%u", &kernellen);
sscanf(buf->bc300.totalLength, "%u", &totallen);
- tagidcrc = buf->bc300.tagIdCRC;
+ tagidcrc = *(uint32_t *)&(buf->bc300.tagIdCRC[0]);
tagversion = &(buf->bc300.tagVersion[0]);
boardid = &(buf->bc300.boardid[0]);
break;
sscanf(buf->ag306.kernelAddress, "%u", &kerneladdr);
sscanf(buf->ag306.kernelLength, "%u", &kernellen);
sscanf(buf->ag306.totalLength, "%u", &totallen);
- tagidcrc = buf->ag306.tagIdCRC;
+ tagidcrc = *(uint32_t *)&(buf->ag306.tagIdCRC[0]);
tagversion = &(buf->ag306.tagVersion[0]);
boardid = &(buf->ag306.boardid[0]);
break;
case 3:
- matchtagid = "bc308";
- tagid = &(buf->bc308.tagId[0]);
- sscanf(buf->bc308.rootAddress,"%u", &rootfsaddr);
- sscanf(buf->bc308.rootLength, "%u", &rootfslen);
- sscanf(buf->bc308.kernelAddress, "%u", &kerneladdr);
- sscanf(buf->bc308.kernelLength, "%u", &kernellen);
- sscanf(buf->bc308.totalLength, "%u", &totallen);
- tagidcrc = buf->bc308.tagIdCRC;
- tagversion = &(buf->bc308.tagVersion[0]);
- boardid = &(buf->bc308.boardid[0]);
+ matchtagid = "bc221";
+ tagid = &(buf->bc221.tagId[0]);
+ sscanf(buf->bc221.rootAddress,"%u", &rootfsaddr);
+ sscanf(buf->bc221.rootLength, "%u", &rootfslen);
+ sscanf(buf->bc221.kernelAddress, "%u", &kerneladdr);
+ sscanf(buf->bc221.kernelLength, "%u", &kernellen);
+ sscanf(buf->bc221.totalLength, "%u", &totallen);
+ tagidcrc = *(uint32_t *)&(buf->bc221.tagIdCRC[0]);
+ tagversion = &(buf->bc221.tagVersion[0]);
+ boardid = &(buf->bc221.boardid[0]);
break;
case 4:
matchtagid = "bc310";
sscanf(buf->bc310.kernelAddress, "%u", &kerneladdr);
sscanf(buf->bc310.kernelLength, "%u", &kernellen);
sscanf(buf->bc310.totalLength, "%u", &totallen);
- tagidcrc = buf->bc310.tagIdCRC;
+ tagidcrc = *(uint32_t *)&(buf->bc310.tagIdCRC[0]);
tagversion = &(buf->bc310.tagVersion[0]);
boardid = &(buf->bc310.boardid[0]);
break;
continue;
}
- calctagidcrc = tagcrc32(IMAGETAG_CRC_START, tagid, TAGID_LEN);
- if (tagidcrc = calctagidcrc) {
+ calctagidcrc = htonl(tagcrc32(IMAGETAG_CRC_START, tagid, TAGID_LEN));
+ if (tagidcrc == calctagidcrc) {
tagid_match = true;
break;
}
}
if (!tagid_match) {
- printk(KERN_ERR PFX "Failed to find a valid tag id\n");
- return -EIO;
+ tagid = "bcram";
+ sscanf(buf->bccfe.rootAddress,"%u", &rootfsaddr);
+ sscanf(buf->bccfe.rootLength, "%u", &rootfslen);
+ sscanf(buf->bccfe.kernelAddress, "%u", &kerneladdr);
+ sscanf(buf->bccfe.kernelLength, "%u", &kernellen);
+ sscanf(buf->bccfe.totalLength, "%u", &totallen);
+ tagidcrc = *(uint32_t *)&(buf->bccfe.tagIdCRC[0]);
+ tagversion = &(buf->bccfe.tagVersion[0]);
+ boardid = &(buf->bccfe.boardid[0]);
}
printk(KERN_INFO PFX "CFE boot tag found with version %s, board type %s, and tagid %s.\n",tagversion,boardid,tagid);
parts[curpart].size = master->size - parts[0].size - parts[3].size;
for (i = 0; i < nrparts; i++)
- printk(KERN_INFO PFX "Partition %d is %s offset %x and length %x\n", i, parts[i].name, parts[i].offset, parts[i].size);
+ printk(KERN_INFO PFX "Partition %d is %s offset %llx and length %llx\n", i, parts[i].name, parts[i].offset, parts[i].size);
+ printk(KERN_INFO PFX "Spare partition is %x offset and length %x\n", spareaddr, sparelen);
*pparts = parts;
vfree(buf);
} else {
printk(KERN_INFO PFX "assuming RedBoot bootloader\n");
if (bcm963xx_mtd_info->size > 0x00400000) {
- printk(KERN_INFO PFX "Support for extended flash memory size : 0x%08X ; ONLY 64MBIT SUPPORT\n", bcm963xx_mtd_info->size);
+ printk(KERN_INFO PFX "Support for extended flash memory size : 0x%llx ; ONLY 64MBIT SUPPORT\n", bcm963xx_mtd_info->size);
bcm963xx_map.virt = (u32)(EXTENDED_SIZE);
}