Lines Matching refs:hdr
44 struct andr_img_hdr *hdr = NULL; in android_version_init() local
62 hdr = populate_andr_img_hdr(desc, &part); in android_version_init()
63 if (!hdr) in android_version_init()
66 os_version = hdr->os_version; in android_version_init()
71 hdr->header_version); in android_version_init()
72 free(hdr); in android_version_init()
109 struct andr_img_hdr *hdr = NULL; in android_image_init_resource() local
125 hdr = populate_andr_img_hdr(desc, &part); in android_image_init_resource()
126 if (!hdr) in android_image_init_resource()
129 if (hdr->header_version >= 2 && hdr->dtb_size) in android_image_init_resource()
132 if (hdr->header_version <= 2) { in android_image_init_resource()
133 offset = hdr->page_size + in android_image_init_resource()
134 ALIGN(hdr->kernel_size, hdr->page_size) + in android_image_init_resource()
135 ALIGN(hdr->ramdisk_size, hdr->page_size); in android_image_init_resource()
141 free(hdr); in android_image_init_resource()
147 static ulong android_image_get_kernel_addr(const struct andr_img_hdr *hdr) in android_image_get_kernel_addr() argument
160 if (hdr->kernel_addr == ANDROID_IMAGE_DEFAULT_KERNEL_ADDR) in android_image_get_kernel_addr()
161 return (ulong)hdr + hdr->page_size; in android_image_get_kernel_addr()
170 return hdr->kernel_addr; in android_image_get_kernel_addr()
177 return (ulong)hdr + hdr->page_size; in android_image_get_kernel_addr()
179 return hdr->kernel_addr; in android_image_get_kernel_addr()
184 void android_image_set_comp(struct andr_img_hdr *hdr, u32 comp) in android_image_set_comp() argument
189 u32 android_image_get_comp(const struct andr_img_hdr *hdr) in android_image_get_comp() argument
194 int android_image_parse_kernel_comp(const struct andr_img_hdr *hdr) in android_image_parse_kernel_comp() argument
196 ulong kaddr = android_image_get_kernel_addr(hdr); in android_image_parse_kernel_comp()
215 int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify, in android_image_get_kernel() argument
218 u32 kernel_addr = android_image_get_kernel_addr(hdr); in android_image_get_kernel()
219 const char *cmdline = hdr->header_version < 3 ? in android_image_get_kernel()
220 hdr->cmdline : hdr->total_cmdline; in android_image_get_kernel()
226 strncpy(andr_tmp_str, hdr->name, ANDR_BOOT_NAME_SIZE); in android_image_get_kernel()
232 kernel_addr, kernel_addr + hdr->kernel_size, in android_image_get_kernel()
233 DIV_ROUND_UP(hdr->kernel_size, 1024)); in android_image_get_kernel()
262 *os_data = (ulong)hdr; in android_image_get_kernel()
263 *os_data += hdr->page_size; in android_image_get_kernel()
266 *os_len = hdr->kernel_size; in android_image_get_kernel()
270 int android_image_check_header(const struct andr_img_hdr *hdr) in android_image_check_header() argument
272 return memcmp(ANDR_BOOT_MAGIC, hdr->magic, ANDR_BOOT_MAGIC_SIZE); in android_image_check_header()
275 ulong android_image_get_end(const struct andr_img_hdr *hdr) in android_image_get_end() argument
282 end = (ulong)hdr; in android_image_get_end()
283 if (hdr->header_version < 3) { in android_image_get_end()
284 end += hdr->page_size; in android_image_get_end()
285 end += ALIGN(hdr->kernel_size, hdr->page_size); in android_image_get_end()
286 end += ALIGN(hdr->ramdisk_size, hdr->page_size); in android_image_get_end()
287 end += ALIGN(hdr->second_size, hdr->page_size); in android_image_get_end()
288 if (hdr->header_version == 1) { in android_image_get_end()
289 end += ALIGN(hdr->recovery_dtbo_size, hdr->page_size); in android_image_get_end()
290 } else if (hdr->header_version == 2) { in android_image_get_end()
291 end += ALIGN(hdr->recovery_dtbo_size, hdr->page_size); in android_image_get_end()
292 end += ALIGN(hdr->dtb_size, hdr->page_size); in android_image_get_end()
296 end += hdr->page_size; in android_image_get_end()
297 end += ALIGN(hdr->kernel_size, hdr->page_size); in android_image_get_end()
298 end += ALIGN(hdr->ramdisk_size, hdr->page_size); in android_image_get_end()
304 u32 android_image_get_ksize(const struct andr_img_hdr *hdr) in android_image_get_ksize() argument
306 return hdr->kernel_size; in android_image_get_ksize()
309 void android_image_set_kload(struct andr_img_hdr *hdr, u32 load_address) in android_image_set_kload() argument
311 hdr->kernel_addr = load_address; in android_image_set_kload()
314 ulong android_image_get_kload(const struct andr_img_hdr *hdr) in android_image_get_kload() argument
316 return android_image_get_kernel_addr(hdr); in android_image_get_kload()
319 int android_image_get_ramdisk(const struct andr_img_hdr *hdr, in android_image_get_ramdisk() argument
325 if (!hdr->ramdisk_size) { in android_image_get_ramdisk()
338 *rd_len = hdr->ramdisk_size; in android_image_get_ramdisk()
339 if (hdr->header_version >= 3) in android_image_get_ramdisk()
340 *rd_len += hdr->vendor_ramdisk_size; in android_image_get_ramdisk()
341 if (hdr->header_version >= 4) { in android_image_get_ramdisk()
342 *rd_len += hdr->vendor_bootconfig_size + in android_image_get_ramdisk()
348 if (hdr->header_version >= 3) { in android_image_get_ramdisk()
349 end = start + (ulong)hdr->vendor_ramdisk_size; in android_image_get_ramdisk()
351 start, end, DIV_ROUND_UP(hdr->vendor_ramdisk_size, 1024)); in android_image_get_ramdisk()
355 end = start + (ulong)hdr->ramdisk_size; in android_image_get_ramdisk()
357 start, end, DIV_ROUND_UP(hdr->ramdisk_size, 1024)); in android_image_get_ramdisk()
360 if (hdr->header_version >= 4) { in android_image_get_ramdisk()
361 end = start + (ulong)hdr->vendor_bootconfig_size; in android_image_get_ramdisk()
363 start, end, DIV_ROUND_UP(hdr->vendor_bootconfig_size, 1024)); in android_image_get_ramdisk()
372 int android_image_get_fdt(const struct andr_img_hdr *hdr, in android_image_get_fdt() argument
377 if (!hdr->second_size) { in android_image_get_fdt()
392 hdr->second_addr, DIV_ROUND_UP(hdr->second_size, 1024)); in android_image_get_fdt()
425 static int image_load(img_t img, struct andr_img_hdr *hdr, in image_load() argument
433 u32 andr_version = (hdr->os_version >> 25) & 0x7f; in image_load()
434 ulong pgsz = hdr->page_size; in image_load()
448 length = hdr->kernel_size + pgsz; in image_load()
450 blkcnt = DIV_ROUND_UP(hdr->kernel_size + pgsz, blksz); in image_load()
451 typesz = sizeof(hdr->kernel_size); in image_load()
457 if (hdr->vendor_boot_buf) { in image_load()
458 ram_base = hdr->vendor_boot_buf; in image_load()
470 pgsz = hdr->vendor_page_size; in image_load()
472 length = hdr->vendor_ramdisk_size; in image_load()
474 blkcnt = DIV_ROUND_UP(hdr->vendor_ramdisk_size, blksz); in image_load()
475 typesz = sizeof(hdr->vendor_ramdisk_size); in image_load()
484 if (hdr->header_version >= 3) in image_load()
485 extra += ALIGN(hdr->ramdisk_size, blksz) + blksz; in image_load()
486 if (hdr->header_version >= 4) in image_load()
487 extra += ALIGN(hdr->vendor_bootconfig_size, blksz) + in image_load()
495 if (hdr->header_version >= 4 && andr_version >= 13) { in image_load()
496 if (hdr->init_boot_buf) { in image_load()
497 ram_base = hdr->init_boot_buf; in image_load()
510 bsoffs = pgsz + ALIGN(hdr->kernel_size, pgsz); in image_load()
513 length = hdr->ramdisk_size; in image_load()
515 blkcnt = DIV_ROUND_UP(hdr->ramdisk_size, blksz); in image_load()
516 typesz = sizeof(hdr->ramdisk_size); in image_load()
539 if (hdr->header_version >= 3) { in image_load()
540 buffer += hdr->vendor_ramdisk_size; in image_load()
547 if (hdr->header_version < 3) { in image_load()
554 if (hdr->header_version < 4) in image_load()
557 if (hdr->vendor_boot_buf) { in image_load()
558 ram_base = hdr->vendor_boot_buf; in image_load()
569 pgsz = hdr->vendor_page_size; in image_load()
571 ALIGN(hdr->vendor_ramdisk_size, pgsz) + in image_load()
572 ALIGN(hdr->dtb_size, pgsz) + in image_load()
573 ALIGN(hdr->vendor_ramdisk_table_size, pgsz); in image_load()
574 length = hdr->vendor_bootconfig_size; in image_load()
576 blkcnt = DIV_ROUND_UP(hdr->vendor_bootconfig_size, blksz); in image_load()
577 typesz = sizeof(hdr->vendor_bootconfig_size); in image_load()
579 buffer += hdr->vendor_ramdisk_size + hdr->ramdisk_size; in image_load()
587 ALIGN(hdr->kernel_size, pgsz) + in image_load()
588 ALIGN(hdr->ramdisk_size, pgsz); in image_load()
589 length = hdr->second_size; in image_load()
590 blkcnt = DIV_ROUND_UP(hdr->second_size, blksz); in image_load()
592 typesz = sizeof(hdr->second_size); in image_load()
596 ALIGN(hdr->kernel_size, pgsz) + in image_load()
597 ALIGN(hdr->ramdisk_size, pgsz) + in image_load()
598 ALIGN(hdr->second_size, pgsz); in image_load()
599 length = hdr->recovery_dtbo_size; in image_load()
600 blkcnt = DIV_ROUND_UP(hdr->recovery_dtbo_size, blksz); in image_load()
602 typesz = sizeof(hdr->recovery_dtbo_size); in image_load()
606 ALIGN(hdr->kernel_size, pgsz) + in image_load()
607 ALIGN(hdr->ramdisk_size, pgsz) + in image_load()
608 ALIGN(hdr->second_size, pgsz) + in image_load()
609 ALIGN(hdr->recovery_dtbo_size, pgsz); in image_load()
610 length = hdr->dtb_size; in image_load()
611 blkcnt = DIV_ROUND_UP(hdr->dtb_size, blksz); in image_load()
613 typesz = sizeof(hdr->dtb_size); in image_load()
657 if (hdr->header_version < 3) { in image_load()
677 static int images_load_verify(struct andr_img_hdr *hdr, ulong part_start, in images_load_verify() argument
681 if (image_load(IMG_KERNEL, hdr, part_start, ram_base, crypto)) in images_load_verify()
683 if (image_load(IMG_RAMDISK, hdr, part_start, ram_base, crypto)) in images_load_verify()
685 if (image_load(IMG_SECOND, hdr, part_start, ram_base, crypto)) in images_load_verify()
687 if (hdr->header_version > 0) { in images_load_verify()
688 if (image_load(IMG_RECOVERY_DTBO, hdr, part_start, in images_load_verify()
692 if (hdr->header_version > 1) { in images_load_verify()
693 if (image_load(IMG_DTB, hdr, part_start, ram_base, crypto)) in images_load_verify()
703 static int android_image_separate(struct andr_img_hdr *hdr, in android_image_separate() argument
711 if (android_image_check_header(hdr)) { in android_image_separate()
726 if (image_load(IMG_RK_DTB, hdr, bstart, ram_base, NULL)) in android_image_separate()
735 if (hdr->header_version < 3 && verify) { in android_image_separate()
750 ctx.length += hdr->kernel_size + sizeof(hdr->kernel_size) + in android_image_separate()
751 hdr->ramdisk_size + sizeof(hdr->ramdisk_size) + in android_image_separate()
752 hdr->second_size + sizeof(hdr->second_size); in android_image_separate()
753 if (hdr->header_version > 0) in android_image_separate()
754 ctx.length += hdr->recovery_dtbo_size + in android_image_separate()
755 sizeof(hdr->recovery_dtbo_size); in android_image_separate()
756 if (hdr->header_version > 1) in android_image_separate()
757 ctx.length += hdr->dtb_size + sizeof(hdr->dtb_size); in android_image_separate()
762 ret = images_load_verify(hdr, bstart, ram_base, dev); in android_image_separate()
771 if (memcmp(hash, hdr->id, 20)) { in android_image_separate()
772 print_hash("Hash from header", (u8 *)hdr->id, 20); in android_image_separate()
781 ret = images_load_verify(hdr, bstart, ram_base, NULL); in android_image_separate()
792 static int android_image_separate_v34(struct andr_img_hdr *hdr, in android_image_separate_v34() argument
798 if (android_image_check_header(hdr)) { in android_image_separate_v34()
811 if (image_load(IMG_RK_DTB, hdr, bstart, ram_base, NULL)) in android_image_separate_v34()
813 if (image_load(IMG_KERNEL, hdr, bstart, ram_base, NULL)) in android_image_separate_v34()
815 if (image_load(IMG_VENDOR_RAMDISK, hdr, bstart, ram_base, NULL)) in android_image_separate_v34()
817 if (image_load(IMG_RAMDISK, hdr, bstart, ram_base, NULL)) in android_image_separate_v34()
819 if (image_load(IMG_BOOTCONFIG, hdr, bstart, ram_base, NULL)) in android_image_separate_v34()
827 memcpy((char *)load_address, hdr, hdr->page_size); in android_image_separate_v34()
835 static ulong android_image_get_comp_addr(struct andr_img_hdr *hdr, int comp) in android_image_get_comp_addr() argument
860 load_addr = comp_addr - hdr->page_size; in android_image_get_comp_addr()
880 load_addr -= hdr->page_size; in android_image_get_comp_addr()
885 load_addr = kernel_addr_c - hdr->page_size; in android_image_get_comp_addr()
895 void android_image_set_decomp(struct andr_img_hdr *hdr, int comp) in android_image_set_decomp() argument
904 android_image_set_kload(hdr, kernel_addr_r); in android_image_set_decomp()
905 android_image_set_comp(hdr, comp); in android_image_set_decomp()
907 android_image_set_comp(hdr, IH_COMP_NONE); in android_image_set_decomp()
911 static int android_image_load_separate(struct andr_img_hdr *hdr, in android_image_load_separate() argument
915 if (hdr->header_version < 3) in android_image_load_separate()
916 return android_image_separate(hdr, part, load_addr, NULL); in android_image_load_separate()
918 return android_image_separate_v34(hdr, part, load_addr, NULL); in android_image_load_separate()
921 int android_image_memcpy_separate(struct andr_img_hdr *hdr, ulong *load_addr) in android_image_memcpy_separate() argument
926 comp = bootm_parse_comp((void *)(ulong)hdr + hdr->page_size); in android_image_memcpy_separate()
927 comp_addr = android_image_get_comp_addr(hdr, comp); in android_image_memcpy_separate()
930 if ((ulong)hdr == *load_addr) in android_image_memcpy_separate()
936 if ((ulong)hdr == comp_addr) /* already in-place */ in android_image_memcpy_separate()
946 if (hdr->header_version < 3) { in android_image_memcpy_separate()
947 if (android_image_separate(hdr, NULL, (void *)(*load_addr), hdr)) in android_image_memcpy_separate()
950 if (android_image_separate_v34(hdr, NULL, (void *)(*load_addr), hdr)) in android_image_memcpy_separate()
963 struct andr_img_hdr *hdr; in android_image_load() local
971 hdr = populate_andr_img_hdr(dev_desc, (disk_partition_t *)part_info); in android_image_load()
972 if (!hdr) { in android_image_load()
991 blk_off = BLK_CNT(hdr->page_size, dev_desc->blksz); in android_image_load()
992 hdr = (struct andr_img_hdr *) in android_image_load()
993 realloc(hdr, (blk_off + 1) * dev_desc->blksz); in android_image_load()
994 if (!hdr) in android_image_load()
998 (char *)hdr + hdr->page_size) != 1) { in android_image_load()
999 free(hdr); in android_image_load()
1004 comp = bootm_parse_comp((void *)(ulong)hdr + hdr->page_size); in android_image_load()
1005 comp_addr = android_image_get_comp_addr(hdr, comp); in android_image_load()
1009 load_address -= hdr->page_size; in android_image_load()
1011 ret = android_image_load_separate(hdr, part_info, (void *)load_address); in android_image_load()
1020 free(hdr); in android_image_load()
1024 free(hdr); in android_image_load()
1032 struct andr_img_hdr *hdr; in extract_boot_image_v012_header() local
1036 hdr = (struct andr_img_hdr *)malloc(blk_cnt * dev_desc->blksz); in extract_boot_image_v012_header()
1038 if (!blk_cnt || !hdr) in extract_boot_image_v012_header()
1041 blks_read = blk_dread(dev_desc, boot_img->start, blk_cnt, hdr); in extract_boot_image_v012_header()
1048 if (android_image_check_header((void *)hdr)) { in extract_boot_image_v012_header()
1053 if (hdr->page_size < sizeof(*hdr)) { in extract_boot_image_v012_header()
1058 return hdr; in extract_boot_image_v012_header()
1144 struct andr_img_hdr *hdr, bool save_hdr) in populate_boot_info() argument
1146 memset(hdr->magic, 0, ANDR_BOOT_MAGIC_SIZE); in populate_boot_info()
1147 memcpy(hdr->magic, boot_hdr->magic, ANDR_BOOT_MAGIC_SIZE); in populate_boot_info()
1149 hdr->kernel_size = boot_hdr->kernel_size; in populate_boot_info()
1151 hdr->kernel_addr = ANDROID_IMAGE_DEFAULT_KERNEL_ADDR; in populate_boot_info()
1158 hdr->ramdisk_size = init_boot_hdr->ramdisk_size; in populate_boot_info()
1160 hdr->ramdisk_size = boot_hdr->ramdisk_size; in populate_boot_info()
1163 hdr->ramdisk_addr = env_get_ulong("ramdisk_addr_r", 16, 0); in populate_boot_info()
1166 hdr->second_size = 0; in populate_boot_info()
1167 hdr->second_addr = 0; in populate_boot_info()
1169 hdr->tags_addr = vendor_boot_hdr->tags_addr; in populate_boot_info()
1172 hdr->page_size = 4096; in populate_boot_info()
1173 hdr->header_version = boot_hdr->header_version; in populate_boot_info()
1174 hdr->os_version = boot_hdr->os_version; in populate_boot_info()
1176 memset(hdr->name, 0, ANDR_BOOT_NAME_SIZE); in populate_boot_info()
1177 strncpy(hdr->name, (const char *)vendor_boot_hdr->name, ANDR_BOOT_NAME_SIZE); in populate_boot_info()
1180 memset(hdr->cmdline, 0, ANDR_BOOT_ARGS_SIZE); in populate_boot_info()
1181 memset(hdr->id, 0, 32); in populate_boot_info()
1182 memset(hdr->extra_cmdline, 0, ANDR_BOOT_EXTRA_ARGS_SIZE); in populate_boot_info()
1183 hdr->recovery_dtbo_size = 0; in populate_boot_info()
1184 hdr->recovery_dtbo_offset = 0; in populate_boot_info()
1186 hdr->header_size = boot_hdr->header_size; in populate_boot_info()
1187 hdr->dtb_size = vendor_boot_hdr->dtb_size; in populate_boot_info()
1188 hdr->dtb_addr = vendor_boot_hdr->dtb_addr; in populate_boot_info()
1191 hdr->vendor_ramdisk_size = vendor_boot_hdr->vendor_ramdisk_size; in populate_boot_info()
1192 hdr->vendor_page_size = vendor_boot_hdr->page_size; in populate_boot_info()
1193 hdr->vendor_header_version = vendor_boot_hdr->header_version; in populate_boot_info()
1194 hdr->vendor_header_size = vendor_boot_hdr->header_size; in populate_boot_info()
1196 hdr->total_cmdline = calloc(1, TOTAL_BOOT_ARGS_SIZE); in populate_boot_info()
1197 if (!hdr->total_cmdline) in populate_boot_info()
1199 strncpy(hdr->total_cmdline, (const char *)boot_hdr->cmdline, in populate_boot_info()
1201 strncat(hdr->total_cmdline, " ", 1); in populate_boot_info()
1202 strncat(hdr->total_cmdline, (const char *)vendor_boot_hdr->cmdline, in populate_boot_info()
1207 hdr->vendor_ramdisk_table_size = in populate_boot_info()
1209 hdr->vendor_ramdisk_table_entry_num = in populate_boot_info()
1211 hdr->vendor_ramdisk_table_entry_size = in populate_boot_info()
1218 hdr->vendor_bootconfig_size = in populate_boot_info()
1221 hdr->vendor_ramdisk_table_size = 0; in populate_boot_info()
1222 hdr->vendor_ramdisk_table_entry_num = 0; in populate_boot_info()
1223 hdr->vendor_ramdisk_table_entry_size = 0; in populate_boot_info()
1224 hdr->vendor_bootconfig_size = 0; in populate_boot_info()
1227 hdr->init_boot_buf = save_hdr ? (void *)init_boot_hdr : 0; in populate_boot_info()
1228 hdr->vendor_boot_buf = save_hdr ? (void *)vendor_boot_hdr : 0; in populate_boot_info()
1230 if (hdr->page_size < sizeof(*hdr)) { in populate_boot_info()
1358 void android_print_contents(const struct andr_img_hdr *hdr) in android_print_contents() argument
1362 u32 os_ver = hdr->os_version >> 11; in android_print_contents()
1363 u32 os_lvl = hdr->os_version & ((1U << 11) - 1); in android_print_contents()
1364 u32 header_version = hdr->header_version; in android_print_contents()
1366 printf("%skernel size: %x\n", p, hdr->kernel_size); in android_print_contents()
1367 printf("%skernel address: %x\n", p, hdr->kernel_addr); in android_print_contents()
1368 printf("%sramdisk size: %x\n", p, hdr->ramdisk_size); in android_print_contents()
1369 printf("%sramdisk address: %x\n", p, hdr->ramdisk_addr); in android_print_contents()
1370 printf("%ssecond size: %x\n", p, hdr->second_size); in android_print_contents()
1371 printf("%ssecond address: %x\n", p, hdr->second_addr); in android_print_contents()
1372 printf("%stags address: %x\n", p, hdr->tags_addr); in android_print_contents()
1373 printf("%spage size: %x\n", p, hdr->page_size); in android_print_contents()
1378 p, hdr->os_version, in android_print_contents()
1381 printf("%sname: %s\n", p, hdr->name); in android_print_contents()
1382 printf("%scmdline: %s\n", p, hdr->cmdline); in android_print_contents()
1385 printf("%srecovery dtbo size: %x\n", p, hdr->recovery_dtbo_size); in android_print_contents()
1386 printf("%srecovery dtbo offset: %llx\n", p, hdr->recovery_dtbo_offset); in android_print_contents()
1387 printf("%sheader size: %x\n", p, hdr->header_size); in android_print_contents()
1391 printf("%sdtb size: %x\n", p, hdr->dtb_size); in android_print_contents()
1392 printf("%sdtb addr: %llx\n", p, hdr->dtb_addr); in android_print_contents()
1396 printf("%scmdline: %s\n", p, hdr->total_cmdline); in android_print_contents()
1397 printf("%svendor ramdisk size: %x\n", p, hdr->vendor_ramdisk_size); in android_print_contents()
1398 printf("%svendor page size: %x\n", p, hdr->vendor_page_size); in android_print_contents()
1399 printf("%svendor header version: %d\n", p, hdr->vendor_header_version); in android_print_contents()
1400 printf("%svendor header size: %x\n", p, hdr->vendor_header_size); in android_print_contents()
1405 p, hdr->vendor_ramdisk_table_size); in android_print_contents()
1407 p, hdr->vendor_ramdisk_table_entry_num); in android_print_contents()
1409 p, hdr->vendor_ramdisk_table_entry_size); in android_print_contents()
1411 p, hdr->vendor_bootconfig_size); in android_print_contents()