Lines Matching refs:hdr

39 	struct andr_img_hdr *hdr = NULL;  in android_version_init()  local
57 hdr = populate_andr_img_hdr(desc, &part); in android_version_init()
58 if (!hdr) in android_version_init()
61 os_version = hdr->os_version; in android_version_init()
66 hdr->header_version); in android_version_init()
67 free(hdr); in android_version_init()
104 struct andr_img_hdr *hdr = NULL; in android_image_init_resource() local
120 hdr = populate_andr_img_hdr(desc, &part); in android_image_init_resource()
121 if (!hdr) in android_image_init_resource()
124 if (hdr->header_version >= 2 && hdr->dtb_size) in android_image_init_resource()
127 if (hdr->header_version <= 2) { in android_image_init_resource()
128 offset = hdr->page_size + in android_image_init_resource()
129 ALIGN(hdr->kernel_size, hdr->page_size) + in android_image_init_resource()
130 ALIGN(hdr->ramdisk_size, hdr->page_size); in android_image_init_resource()
136 free(hdr); in android_image_init_resource()
142 static ulong android_image_get_kernel_addr(const struct andr_img_hdr *hdr) in android_image_get_kernel_addr() argument
155 if (hdr->kernel_addr == ANDROID_IMAGE_DEFAULT_KERNEL_ADDR) in android_image_get_kernel_addr()
156 return (ulong)hdr + hdr->page_size; in android_image_get_kernel_addr()
165 return hdr->kernel_addr; in android_image_get_kernel_addr()
172 return (ulong)hdr + hdr->page_size; in android_image_get_kernel_addr()
174 return hdr->kernel_addr; in android_image_get_kernel_addr()
179 void android_image_set_comp(struct andr_img_hdr *hdr, u32 comp) in android_image_set_comp() argument
184 u32 android_image_get_comp(const struct andr_img_hdr *hdr) in android_image_get_comp() argument
189 int android_image_parse_kernel_comp(const struct andr_img_hdr *hdr) in android_image_parse_kernel_comp() argument
191 ulong kaddr = android_image_get_kernel_addr(hdr); in android_image_parse_kernel_comp()
210 int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify, in android_image_get_kernel() argument
213 u32 kernel_addr = android_image_get_kernel_addr(hdr); in android_image_get_kernel()
214 const char *cmdline = hdr->header_version < 3 ? in android_image_get_kernel()
215 hdr->cmdline : hdr->total_cmdline; in android_image_get_kernel()
221 strncpy(andr_tmp_str, hdr->name, ANDR_BOOT_NAME_SIZE); in android_image_get_kernel()
227 kernel_addr, kernel_addr + hdr->kernel_size, in android_image_get_kernel()
228 DIV_ROUND_UP(hdr->kernel_size, 1024)); in android_image_get_kernel()
257 *os_data = (ulong)hdr; in android_image_get_kernel()
258 *os_data += hdr->page_size; in android_image_get_kernel()
261 *os_len = hdr->kernel_size; in android_image_get_kernel()
265 int android_image_check_header(const struct andr_img_hdr *hdr) in android_image_check_header() argument
267 return memcmp(ANDR_BOOT_MAGIC, hdr->magic, ANDR_BOOT_MAGIC_SIZE); in android_image_check_header()
270 ulong android_image_get_end(const struct andr_img_hdr *hdr) in android_image_get_end() argument
277 end = (ulong)hdr; in android_image_get_end()
278 if (hdr->header_version < 3) { in android_image_get_end()
279 end += hdr->page_size; in android_image_get_end()
280 end += ALIGN(hdr->kernel_size, hdr->page_size); in android_image_get_end()
281 end += ALIGN(hdr->ramdisk_size, hdr->page_size); in android_image_get_end()
282 end += ALIGN(hdr->second_size, hdr->page_size); in android_image_get_end()
283 if (hdr->header_version == 1) { in android_image_get_end()
284 end += ALIGN(hdr->recovery_dtbo_size, hdr->page_size); in android_image_get_end()
285 } else if (hdr->header_version == 2) { in android_image_get_end()
286 end += ALIGN(hdr->recovery_dtbo_size, hdr->page_size); in android_image_get_end()
287 end += ALIGN(hdr->dtb_size, hdr->page_size); in android_image_get_end()
291 end += hdr->page_size; in android_image_get_end()
292 end += ALIGN(hdr->kernel_size, hdr->page_size); in android_image_get_end()
293 end += ALIGN(hdr->ramdisk_size, hdr->page_size); in android_image_get_end()
299 u32 android_image_get_ksize(const struct andr_img_hdr *hdr) in android_image_get_ksize() argument
301 return hdr->kernel_size; in android_image_get_ksize()
304 void android_image_set_kload(struct andr_img_hdr *hdr, u32 load_address) in android_image_set_kload() argument
306 hdr->kernel_addr = load_address; in android_image_set_kload()
309 ulong android_image_get_kload(const struct andr_img_hdr *hdr) in android_image_get_kload() argument
311 return android_image_get_kernel_addr(hdr); in android_image_get_kload()
314 int android_image_get_ramdisk(const struct andr_img_hdr *hdr, in android_image_get_ramdisk() argument
320 if (!hdr->ramdisk_size) { in android_image_get_ramdisk()
333 *rd_len = hdr->ramdisk_size; in android_image_get_ramdisk()
334 if (hdr->header_version >= 3) in android_image_get_ramdisk()
335 *rd_len += hdr->vendor_ramdisk_size; in android_image_get_ramdisk()
336 if (hdr->header_version >= 4) { in android_image_get_ramdisk()
337 *rd_len += hdr->vendor_bootconfig_size + in android_image_get_ramdisk()
343 if (hdr->header_version >= 3) { in android_image_get_ramdisk()
344 end = start + (ulong)hdr->vendor_ramdisk_size; in android_image_get_ramdisk()
346 start, end, DIV_ROUND_UP(hdr->vendor_ramdisk_size, 1024)); in android_image_get_ramdisk()
350 end = start + (ulong)hdr->ramdisk_size; in android_image_get_ramdisk()
352 start, end, DIV_ROUND_UP(hdr->ramdisk_size, 1024)); in android_image_get_ramdisk()
355 if (hdr->header_version >= 4) { in android_image_get_ramdisk()
356 end = start + (ulong)hdr->vendor_bootconfig_size; in android_image_get_ramdisk()
358 start, end, DIV_ROUND_UP(hdr->vendor_bootconfig_size, 1024)); in android_image_get_ramdisk()
367 int android_image_get_fdt(const struct andr_img_hdr *hdr, in android_image_get_fdt() argument
372 if (!hdr->second_size) { in android_image_get_fdt()
387 hdr->second_addr, DIV_ROUND_UP(hdr->second_size, 1024)); in android_image_get_fdt()
420 static int image_load(img_t img, struct andr_img_hdr *hdr, in image_load() argument
427 u32 andr_version = (hdr->os_version >> 25) & 0x7f; in image_load()
428 ulong pgsz = hdr->page_size; in image_load()
442 length = hdr->kernel_size + pgsz; in image_load()
444 blkcnt = DIV_ROUND_UP(hdr->kernel_size + pgsz, blksz); in image_load()
445 typesz = sizeof(hdr->kernel_size); in image_load()
451 if (hdr->vendor_boot_buf) { in image_load()
452 ram_base = hdr->vendor_boot_buf; in image_load()
464 pgsz = hdr->vendor_page_size; in image_load()
466 length = hdr->vendor_ramdisk_size; in image_load()
468 blkcnt = DIV_ROUND_UP(hdr->vendor_ramdisk_size, blksz); in image_load()
469 typesz = sizeof(hdr->vendor_ramdisk_size); in image_load()
478 if (hdr->header_version >= 3) in image_load()
479 extra += ALIGN(hdr->ramdisk_size, blksz) + blksz; in image_load()
480 if (hdr->header_version >= 4) in image_load()
481 extra += ALIGN(hdr->vendor_bootconfig_size, blksz) + in image_load()
489 if (hdr->header_version >= 4 && andr_version >= 13) { in image_load()
490 if (hdr->init_boot_buf) { in image_load()
491 ram_base = hdr->init_boot_buf; in image_load()
504 bsoffs = pgsz + ALIGN(hdr->kernel_size, pgsz); in image_load()
507 length = hdr->ramdisk_size; in image_load()
509 blkcnt = DIV_ROUND_UP(hdr->ramdisk_size, blksz); in image_load()
510 typesz = sizeof(hdr->ramdisk_size); in image_load()
533 if (hdr->header_version >= 3) { in image_load()
534 buffer += hdr->vendor_ramdisk_size; in image_load()
541 if (hdr->header_version < 3) { in image_load()
548 if (hdr->header_version < 4) in image_load()
551 if (hdr->vendor_boot_buf) { in image_load()
552 ram_base = hdr->vendor_boot_buf; in image_load()
563 pgsz = hdr->vendor_page_size; in image_load()
565 ALIGN(hdr->vendor_ramdisk_size, pgsz) + in image_load()
566 ALIGN(hdr->dtb_size, pgsz) + in image_load()
567 ALIGN(hdr->vendor_ramdisk_table_size, pgsz); in image_load()
568 length = hdr->vendor_bootconfig_size; in image_load()
570 blkcnt = DIV_ROUND_UP(hdr->vendor_bootconfig_size, blksz); in image_load()
571 typesz = sizeof(hdr->vendor_bootconfig_size); in image_load()
573 buffer += hdr->vendor_ramdisk_size + hdr->ramdisk_size; in image_load()
581 ALIGN(hdr->kernel_size, pgsz) + in image_load()
582 ALIGN(hdr->ramdisk_size, pgsz); in image_load()
583 length = hdr->second_size; in image_load()
584 blkcnt = DIV_ROUND_UP(hdr->second_size, blksz); in image_load()
586 typesz = sizeof(hdr->second_size); in image_load()
590 ALIGN(hdr->kernel_size, pgsz) + in image_load()
591 ALIGN(hdr->ramdisk_size, pgsz) + in image_load()
592 ALIGN(hdr->second_size, pgsz); in image_load()
593 length = hdr->recovery_dtbo_size; in image_load()
594 blkcnt = DIV_ROUND_UP(hdr->recovery_dtbo_size, blksz); in image_load()
596 typesz = sizeof(hdr->recovery_dtbo_size); in image_load()
600 ALIGN(hdr->kernel_size, pgsz) + in image_load()
601 ALIGN(hdr->ramdisk_size, pgsz) + in image_load()
602 ALIGN(hdr->second_size, pgsz) + in image_load()
603 ALIGN(hdr->recovery_dtbo_size, pgsz); in image_load()
604 length = hdr->dtb_size; in image_load()
605 blkcnt = DIV_ROUND_UP(hdr->dtb_size, blksz); in image_load()
607 typesz = sizeof(hdr->dtb_size); in image_load()
651 if (hdr->header_version < 3) { in image_load()
664 static int images_load_verify(struct andr_img_hdr *hdr, ulong part_start, void *ram_base) in images_load_verify() argument
667 if (image_load(IMG_KERNEL, hdr, part_start, ram_base)) in images_load_verify()
669 if (image_load(IMG_RAMDISK, hdr, part_start, ram_base)) in images_load_verify()
671 if (image_load(IMG_SECOND, hdr, part_start, ram_base)) in images_load_verify()
673 if (hdr->header_version > 0) { in images_load_verify()
674 if (image_load(IMG_RECOVERY_DTBO, hdr, part_start, ram_base)) in images_load_verify()
677 if (hdr->header_version > 1) { in images_load_verify()
678 if (image_load(IMG_DTB, hdr, part_start, ram_base)) in images_load_verify()
688 static int android_image_separate(struct andr_img_hdr *hdr, in android_image_separate() argument
696 if (android_image_check_header(hdr)) { in android_image_separate()
711 if (image_load(IMG_RK_DTB, hdr, bstart, ram_base)) in android_image_separate()
720 if (hdr->header_version < 3 && verify) { in android_image_separate()
725 sha1_ctx.length += hdr->kernel_size + sizeof(hdr->kernel_size) + in android_image_separate()
726 hdr->ramdisk_size + sizeof(hdr->ramdisk_size) + in android_image_separate()
727 hdr->second_size + sizeof(hdr->second_size); in android_image_separate()
728 if (hdr->header_version > 0) in android_image_separate()
729 sha1_ctx.length += hdr->recovery_dtbo_size + in android_image_separate()
730 sizeof(hdr->recovery_dtbo_size); in android_image_separate()
731 if (hdr->header_version > 1) in android_image_separate()
732 sha1_ctx.length += hdr->dtb_size + sizeof(hdr->dtb_size); in android_image_separate()
735 ret = images_load_verify(hdr, bstart, ram_base); in android_image_separate()
740 if (memcmp(hash, hdr->id, 20)) { in android_image_separate()
741 print_hash("Hash from header", (u8 *)hdr->id, 20); in android_image_separate()
755 ret = images_load_verify(hdr, bstart, ram_base); in android_image_separate()
766 static int android_image_separate_v34(struct andr_img_hdr *hdr, in android_image_separate_v34() argument
772 if (android_image_check_header(hdr)) { in android_image_separate_v34()
785 if (image_load(IMG_RK_DTB, hdr, bstart, ram_base)) in android_image_separate_v34()
787 if (image_load(IMG_KERNEL, hdr, bstart, ram_base)) in android_image_separate_v34()
789 if (image_load(IMG_VENDOR_RAMDISK, hdr, bstart, ram_base)) in android_image_separate_v34()
791 if (image_load(IMG_RAMDISK, hdr, bstart, ram_base)) in android_image_separate_v34()
793 if (image_load(IMG_BOOTCONFIG, hdr, bstart, ram_base)) in android_image_separate_v34()
801 memcpy((char *)load_address, hdr, hdr->page_size); in android_image_separate_v34()
809 static ulong android_image_get_comp_addr(struct andr_img_hdr *hdr, int comp) in android_image_get_comp_addr() argument
834 load_addr = comp_addr - hdr->page_size; in android_image_get_comp_addr()
854 load_addr -= hdr->page_size; in android_image_get_comp_addr()
859 load_addr = kernel_addr_c - hdr->page_size; in android_image_get_comp_addr()
869 void android_image_set_decomp(struct andr_img_hdr *hdr, int comp) in android_image_set_decomp() argument
878 android_image_set_kload(hdr, kernel_addr_r); in android_image_set_decomp()
879 android_image_set_comp(hdr, comp); in android_image_set_decomp()
881 android_image_set_comp(hdr, IH_COMP_NONE); in android_image_set_decomp()
885 static int android_image_load_separate(struct andr_img_hdr *hdr, in android_image_load_separate() argument
889 if (hdr->header_version < 3) in android_image_load_separate()
890 return android_image_separate(hdr, part, load_addr, NULL); in android_image_load_separate()
892 return android_image_separate_v34(hdr, part, load_addr, NULL); in android_image_load_separate()
895 int android_image_memcpy_separate(struct andr_img_hdr *hdr, ulong *load_addr) in android_image_memcpy_separate() argument
900 comp = bootm_parse_comp((void *)(ulong)hdr + hdr->page_size); in android_image_memcpy_separate()
901 comp_addr = android_image_get_comp_addr(hdr, comp); in android_image_memcpy_separate()
904 if ((ulong)hdr == *load_addr) in android_image_memcpy_separate()
910 if ((ulong)hdr == comp_addr) /* already in-place */ in android_image_memcpy_separate()
920 if (hdr->header_version < 3) { in android_image_memcpy_separate()
921 if (android_image_separate(hdr, NULL, (void *)(*load_addr), hdr)) in android_image_memcpy_separate()
924 if (android_image_separate_v34(hdr, NULL, (void *)(*load_addr), hdr)) in android_image_memcpy_separate()
937 struct andr_img_hdr *hdr; in android_image_load() local
945 hdr = populate_andr_img_hdr(dev_desc, (disk_partition_t *)part_info); in android_image_load()
946 if (!hdr) { in android_image_load()
965 blk_off = BLK_CNT(hdr->page_size, dev_desc->blksz); in android_image_load()
966 hdr = (struct andr_img_hdr *) in android_image_load()
967 realloc(hdr, (blk_off + 1) * dev_desc->blksz); in android_image_load()
968 if (!hdr) in android_image_load()
972 (char *)hdr + hdr->page_size) != 1) { in android_image_load()
973 free(hdr); in android_image_load()
978 comp = bootm_parse_comp((void *)(ulong)hdr + hdr->page_size); in android_image_load()
979 comp_addr = android_image_get_comp_addr(hdr, comp); in android_image_load()
983 load_address -= hdr->page_size; in android_image_load()
985 ret = android_image_load_separate(hdr, part_info, (void *)load_address); in android_image_load()
994 free(hdr); in android_image_load()
998 free(hdr); in android_image_load()
1006 struct andr_img_hdr *hdr; in extract_boot_image_v012_header() local
1010 hdr = (struct andr_img_hdr *)malloc(blk_cnt * dev_desc->blksz); in extract_boot_image_v012_header()
1012 if (!blk_cnt || !hdr) in extract_boot_image_v012_header()
1015 blks_read = blk_dread(dev_desc, boot_img->start, blk_cnt, hdr); in extract_boot_image_v012_header()
1022 if (android_image_check_header((void *)hdr)) { in extract_boot_image_v012_header()
1027 if (hdr->page_size < sizeof(*hdr)) { in extract_boot_image_v012_header()
1032 return hdr; in extract_boot_image_v012_header()
1127 struct andr_img_hdr *hdr, bool save_hdr) in populate_boot_info() argument
1129 memset(hdr->magic, 0, ANDR_BOOT_MAGIC_SIZE); in populate_boot_info()
1130 memcpy(hdr->magic, boot_hdr->magic, ANDR_BOOT_MAGIC_SIZE); in populate_boot_info()
1132 hdr->kernel_size = boot_hdr->kernel_size; in populate_boot_info()
1134 hdr->kernel_addr = ANDROID_IMAGE_DEFAULT_KERNEL_ADDR; in populate_boot_info()
1141 hdr->ramdisk_size = init_boot_hdr->ramdisk_size; in populate_boot_info()
1143 hdr->ramdisk_size = boot_hdr->ramdisk_size; in populate_boot_info()
1146 hdr->ramdisk_addr = env_get_ulong("ramdisk_addr_r", 16, 0); in populate_boot_info()
1149 hdr->second_size = 0; in populate_boot_info()
1150 hdr->second_addr = 0; in populate_boot_info()
1152 hdr->tags_addr = vendor_boot_hdr->tags_addr; in populate_boot_info()
1155 hdr->page_size = 4096; in populate_boot_info()
1156 hdr->header_version = boot_hdr->header_version; in populate_boot_info()
1169 hdr->os_version = 13 << 25; in populate_boot_info()
1171 if (!hdr->os_version) in populate_boot_info()
1174 hdr->os_version = boot_hdr->os_version; in populate_boot_info()
1177 memset(hdr->name, 0, ANDR_BOOT_NAME_SIZE); in populate_boot_info()
1178 strncpy(hdr->name, (const char *)vendor_boot_hdr->name, ANDR_BOOT_NAME_SIZE); in populate_boot_info()
1181 memset(hdr->cmdline, 0, ANDR_BOOT_ARGS_SIZE); in populate_boot_info()
1182 memset(hdr->id, 0, 32); in populate_boot_info()
1183 memset(hdr->extra_cmdline, 0, ANDR_BOOT_EXTRA_ARGS_SIZE); in populate_boot_info()
1184 hdr->recovery_dtbo_size = 0; in populate_boot_info()
1185 hdr->recovery_dtbo_offset = 0; in populate_boot_info()
1187 hdr->header_size = boot_hdr->header_size; in populate_boot_info()
1188 hdr->dtb_size = vendor_boot_hdr->dtb_size; in populate_boot_info()
1189 hdr->dtb_addr = vendor_boot_hdr->dtb_addr; in populate_boot_info()
1192 hdr->vendor_ramdisk_size = vendor_boot_hdr->vendor_ramdisk_size; in populate_boot_info()
1193 hdr->vendor_page_size = vendor_boot_hdr->page_size; in populate_boot_info()
1194 hdr->vendor_header_version = vendor_boot_hdr->header_version; in populate_boot_info()
1195 hdr->vendor_header_size = vendor_boot_hdr->header_size; in populate_boot_info()
1197 hdr->total_cmdline = calloc(1, TOTAL_BOOT_ARGS_SIZE); in populate_boot_info()
1198 if (!hdr->total_cmdline) in populate_boot_info()
1200 strncpy(hdr->total_cmdline, (const char *)boot_hdr->cmdline, in populate_boot_info()
1202 strncat(hdr->total_cmdline, " ", 1); in populate_boot_info()
1203 strncat(hdr->total_cmdline, (const char *)vendor_boot_hdr->cmdline, in populate_boot_info()
1208 hdr->vendor_ramdisk_table_size = in populate_boot_info()
1210 hdr->vendor_ramdisk_table_entry_num = in populate_boot_info()
1212 hdr->vendor_ramdisk_table_entry_size = in populate_boot_info()
1219 hdr->vendor_bootconfig_size = in populate_boot_info()
1222 hdr->vendor_ramdisk_table_size = 0; in populate_boot_info()
1223 hdr->vendor_ramdisk_table_entry_num = 0; in populate_boot_info()
1224 hdr->vendor_ramdisk_table_entry_size = 0; in populate_boot_info()
1225 hdr->vendor_bootconfig_size = 0; in populate_boot_info()
1228 hdr->init_boot_buf = save_hdr ? (void *)init_boot_hdr : 0; in populate_boot_info()
1229 hdr->vendor_boot_buf = save_hdr ? (void *)vendor_boot_hdr : 0; in populate_boot_info()
1231 if (hdr->page_size < sizeof(*hdr)) { in populate_boot_info()
1359 void android_print_contents(const struct andr_img_hdr *hdr) in android_print_contents() argument
1363 u32 os_ver = hdr->os_version >> 11; in android_print_contents()
1364 u32 os_lvl = hdr->os_version & ((1U << 11) - 1); in android_print_contents()
1365 u32 header_version = hdr->header_version; in android_print_contents()
1367 printf("%skernel size: %x\n", p, hdr->kernel_size); in android_print_contents()
1368 printf("%skernel address: %x\n", p, hdr->kernel_addr); in android_print_contents()
1369 printf("%sramdisk size: %x\n", p, hdr->ramdisk_size); in android_print_contents()
1370 printf("%sramdisk address: %x\n", p, hdr->ramdisk_addr); in android_print_contents()
1371 printf("%ssecond size: %x\n", p, hdr->second_size); in android_print_contents()
1372 printf("%ssecond address: %x\n", p, hdr->second_addr); in android_print_contents()
1373 printf("%stags address: %x\n", p, hdr->tags_addr); in android_print_contents()
1374 printf("%spage size: %x\n", p, hdr->page_size); in android_print_contents()
1379 p, hdr->os_version, in android_print_contents()
1382 printf("%sname: %s\n", p, hdr->name); in android_print_contents()
1383 printf("%scmdline: %s\n", p, hdr->cmdline); in android_print_contents()
1386 printf("%srecovery dtbo size: %x\n", p, hdr->recovery_dtbo_size); in android_print_contents()
1387 printf("%srecovery dtbo offset: %llx\n", p, hdr->recovery_dtbo_offset); in android_print_contents()
1388 printf("%sheader size: %x\n", p, hdr->header_size); in android_print_contents()
1392 printf("%sdtb size: %x\n", p, hdr->dtb_size); in android_print_contents()
1393 printf("%sdtb addr: %llx\n", p, hdr->dtb_addr); in android_print_contents()
1397 printf("%scmdline: %s\n", p, hdr->total_cmdline); in android_print_contents()
1398 printf("%svendor ramdisk size: %x\n", p, hdr->vendor_ramdisk_size); in android_print_contents()
1399 printf("%svendor page size: %x\n", p, hdr->vendor_page_size); in android_print_contents()
1400 printf("%svendor header version: %d\n", p, hdr->vendor_header_version); in android_print_contents()
1401 printf("%svendor header size: %x\n", p, hdr->vendor_header_size); in android_print_contents()
1406 p, hdr->vendor_ramdisk_table_size); in android_print_contents()
1408 p, hdr->vendor_ramdisk_table_entry_num); in android_print_contents()
1410 p, hdr->vendor_ramdisk_table_entry_size); in android_print_contents()
1412 p, hdr->vendor_bootconfig_size); in android_print_contents()