Lines Matching +full:boot +full:- +full:blks
4 * SPDX-License-Identifier: GPL-2.0+
26 #define DEFAULT_DTB_FILE "rk-kernel.dtb"
30 * ----------------------------------------------
34 * ---------------------------------------------|
38 * ------------------------ |
42 * ------------------------ |
44 * ------------------------ |
48 * ----------------------------------------------
52 * ----------------------------------------------
56 * ----------------------------------------------
58 * |---------------------------------------------
62 * ----------------------------------------------
71 * @blks: the size of the header ( 1 block = 512 bytes)
80 uint8_t blks; member
99 return memcmp(RESOURCE_MAGIC, hdr->magic, RESOURCE_MAGIC_SIZE); in resource_check_header()
104 printf("%s\n", f->name); in resource_dump()
105 printf(" blk_start: 0x%08lx\n", (ulong)f->blk_start); in resource_dump()
106 printf(" blk_offset: 0x%08lx\n", (ulong)f->blk_offset); in resource_dump()
107 printf(" size: 0x%08x\n", f->size); in resource_dump()
108 printf(" in_ram: %d\n", f->in_ram); in resource_dump()
109 printf(" hash_size: %d\n\n", f->hash_size); in resource_dump()
124 if (!strcmp(f->name, name)) { in resource_add_file()
133 return -ENOMEM; in resource_add_file()
135 list_add_tail(&f->link, &entry_head); in resource_add_file()
138 strcpy(f->name, name); in resource_add_file()
139 f->size = size; in resource_add_file()
140 f->in_ram = in_ram; in resource_add_file()
141 f->blk_start = blk_start; in resource_add_file()
142 f->blk_offset = blk_offset; in resource_add_file()
143 f->hash_size = hash_size; in resource_add_file()
144 memcpy(f->hash, hash, hash_size); in resource_add_file()
159 pos = (void *)hdr + hdr->c_offset * desc->blksz; in resource_setup_list()
160 stride = hdr->e_blks * desc->blksz; in resource_setup_list()
162 for (i = 0; i < hdr->e_nums; i++) { in resource_setup_list()
164 if (memcmp(et->tag, ENTRY_TAG, ENTRY_TAG_SIZE)) in resource_setup_list()
167 resource_add_file(et->name, et->size, in resource_setup_list()
168 blk_start, et->blk_offset, in resource_setup_list()
169 et->hash, et->hash_size, in_ram); in resource_setup_list()
178 return -ENODEV; in resource_setup_ram_list()
182 return -EINVAL; in resource_setup_ram_list()
195 * kernel or user-space dynamically.
199 * |----------------------| 0x00
201 * |----------------------| -> 512-byte aligned
203 * |----------------------|
208 * cat logo.bmp > logo.img && truncate -s %512 logo.img && cat logo_kernel.bmp >> logo.img
222 header = memalign(ARCH_DMA_MINALIGN, desc->blksz); in resource_setup_logo_bmp()
224 return -ENOMEM; in resource_setup_logo_bmp()
228 ret = -EIO; in resource_setup_logo_bmp()
232 if (header->signature[0] != 'B' || header->signature[1] != 'M') { in resource_setup_logo_bmp()
233 ret = -EINVAL; in resource_setup_logo_bmp()
237 filesz = get_unaligned_le32(&header->file_size); in resource_setup_logo_bmp()
244 blk_offset += DIV_ROUND_UP(filesz, desc->blksz); in resource_setup_logo_bmp()
262 hdr = memalign(ARCH_DMA_MINALIGN, desc->blksz); in resource_setup_blk_list()
264 return -ENOMEM; in resource_setup_blk_list()
267 ret = -EIO; in resource_setup_blk_list()
274 ret = -EINVAL; in resource_setup_blk_list()
286 blk_cnt = hdr->e_blks * hdr->e_nums; in resource_setup_blk_list()
287 hdr = realloc(hdr, (1 + blk_cnt) * desc->blksz); in resource_setup_blk_list()
289 ret = -ENOMEM; in resource_setup_blk_list()
293 buf = (void *)hdr + desc->blksz; in resource_setup_blk_list()
294 if (blk_dread(desc, blk_start + hdr->c_offset, blk_cnt, buf) != blk_cnt) { in resource_setup_blk_list()
295 ret = -EIO; in resource_setup_blk_list()
311 printf("RESC: '%s', blk@0x%08lx\n", part->name, part->start + blk_offset); in resource_init()
318 if (blk_dread(desc, part->start, 1, hdr) != 1) in resource_init()
319 return -EIO; in resource_init()
321 /* only handle android boot/recovery.img and resource.img, ignore fit */ in resource_init()
324 ret = android_image_verify_resource((const char *)part->name, &resc_buf); in resource_init()
326 printf("RESC: '%s', avb verify fail: %d\n", part->name, ret); in resource_init()
339 return resource_setup_blk_list(desc, part->start + blk_offset); in resource_init()
349 return -ENODEV; in resource_default()
365 return -ENODEV; in resource_scan()
373 if (!ret || ret != -EAGAIN) in resource_scan()
378 if (!ret || ret != -EAGAIN) in resource_scan()
387 /* partition priority: boot/recovery > resource */ in resource_scan()
390 return -EIO; in resource_scan()
395 return -ENOENT; in resource_scan()
397 printf("RESC: '%s' -> '%s'\n", name, part.name); in resource_scan()
401 return -ENOENT; in resource_scan()
404 /* now, 'part' can be boot/recovery/resource */ in resource_scan()
407 return -ENOENT; in resource_scan()
420 if (!strcmp(f->name, name)) in resource_get_file()
435 return -ENODEV; in rockchip_read_resource_file()
440 return -ENOENT; in rockchip_read_resource_file()
443 if (len <= 0 || len > f->size) in rockchip_read_resource_file()
444 len = f->size; in rockchip_read_resource_file()
446 if (f->in_ram) { in rockchip_read_resource_file()
447 pos = f->blk_start + (f->blk_offset + blk_offset) * desc->blksz; in rockchip_read_resource_file()
450 blk_cnt = DIV_ROUND_UP(len, desc->blksz); in rockchip_read_resource_file()
452 f->blk_start + f->blk_offset + blk_offset, in rockchip_read_resource_file()
454 len = -EIO; in rockchip_read_resource_file()
469 return -ENOENT; in rockchip_read_resource_dtb()
478 return -ENODEV; in rockchip_read_resource_dtb()
480 ret = rockchip_read_resource_file(fdt_addr, f->name, 0, 0); in rockchip_read_resource_dtb()
485 return -EBADF; in rockchip_read_resource_dtb()
487 *hash = f->hash; in rockchip_read_resource_dtb()
488 *hash_size = f->hash_size; in rockchip_read_resource_dtb()
490 printf("DTB: %s\n", f->name); in rockchip_read_resource_dtb()