189568226SJason Zhu /* SPDX-License-Identifier: GPL-2.0+ */ 289568226SJason Zhu /* 389568226SJason Zhu * (C) Copyright 2020 Rockchip Electronics Co., Ltd 489568226SJason Zhu */ 589568226SJason Zhu 689568226SJason Zhu #ifndef _SPL_RESOURCE_IMG_H_ 789568226SJason Zhu #define _SPL_RESOURCE_IMG_H_ 889568226SJason Zhu 989568226SJason Zhu #define RESOURCE_MAGIC "RSCE" 1089568226SJason Zhu #define RESOURCE_MAGIC_SIZE 4 1189568226SJason Zhu #define RESOURCE_VERSION 0 1289568226SJason Zhu #define CONTENT_VERSION 0 1389568226SJason Zhu #define ENTRY_TAG "ENTR" 1489568226SJason Zhu #define ENTRY_TAG_SIZE 4 1589568226SJason Zhu #define MAX_FILE_NAME_LEN 220 1689568226SJason Zhu #define MAX_HASH_LEN 32 1789568226SJason Zhu 18*dca57e1cSJoseph Chen #define DEFAULT_DTB_FILE "rk-kernel.dtb" 1989568226SJason Zhu 2089568226SJason Zhu /* 2189568226SJason Zhu * resource image structure 2289568226SJason Zhu * ---------------------------------------------- 2389568226SJason Zhu * | | 2489568226SJason Zhu * | header (1 block) | 2589568226SJason Zhu * | | 2689568226SJason Zhu * ---------------------------------------------| 2789568226SJason Zhu * | | | 2889568226SJason Zhu * | entry0 (1 block) | | 2989568226SJason Zhu * | | | 3089568226SJason Zhu * ------------------------ | 3189568226SJason Zhu * | | | 3289568226SJason Zhu * | entry1 (1 block) | contents (n blocks) | 3389568226SJason Zhu * | | | 3489568226SJason Zhu * ------------------------ | 3589568226SJason Zhu * | ...... | | 3689568226SJason Zhu * ------------------------ | 3789568226SJason Zhu * | | | 3889568226SJason Zhu * | entryn (1 block) | | 3989568226SJason Zhu * | | | 4089568226SJason Zhu * ---------------------------------------------- 4189568226SJason Zhu * | | 4289568226SJason Zhu * | file0 (x blocks) | 4389568226SJason Zhu * | | 4489568226SJason Zhu * ---------------------------------------------- 4589568226SJason Zhu * | | 4689568226SJason Zhu * | file1 (y blocks) | 4789568226SJason Zhu * | | 4889568226SJason Zhu * ---------------------------------------------- 4989568226SJason Zhu * | ...... | 5089568226SJason Zhu * |--------------------------------------------- 5189568226SJason Zhu * | | 5289568226SJason Zhu * | filen (z blocks) | 5389568226SJason Zhu * | | 5489568226SJason Zhu * ---------------------------------------------- 5589568226SJason Zhu */ 5689568226SJason Zhu 5789568226SJason Zhu /** 5889568226SJason Zhu * struct resource_image_header 5989568226SJason Zhu * 6089568226SJason Zhu * @magic: should be "RSCE" 6189568226SJason Zhu * @version: resource image version, current is 0 6289568226SJason Zhu * @c_version: content version, current is 0 6389568226SJason Zhu * @blks: the size of the header ( 1 block = 512 bytes) 6489568226SJason Zhu * @c_offset: contents offset(by block) in the image 6589568226SJason Zhu * @e_blks: the size(by block) of the entry in the contents 6689568226SJason Zhu * @e_num: numbers of the entries. 6789568226SJason Zhu */ 6889568226SJason Zhu 6989568226SJason Zhu struct resource_img_hdr { 7089568226SJason Zhu char magic[4]; 7189568226SJason Zhu uint16_t version; 7289568226SJason Zhu uint16_t c_version; 7389568226SJason Zhu uint8_t blks; 7489568226SJason Zhu uint8_t c_offset; 7589568226SJason Zhu uint8_t e_blks; 7689568226SJason Zhu uint32_t e_nums; 7789568226SJason Zhu }; 7889568226SJason Zhu 7989568226SJason Zhu struct resource_entry { 8089568226SJason Zhu char tag[4]; 8189568226SJason Zhu char name[MAX_FILE_NAME_LEN]; 8289568226SJason Zhu char hash[MAX_HASH_LEN]; 8389568226SJason Zhu uint32_t hash_size; 8489568226SJason Zhu uint32_t f_offset; 8589568226SJason Zhu uint32_t f_size; 8689568226SJason Zhu }; 8789568226SJason Zhu 8889568226SJason Zhu int spl_resource_image_check_header(const struct resource_img_hdr *hdr); 8989568226SJason Zhu 9089568226SJason Zhu struct resource_entry * 9189568226SJason Zhu spl_resource_image_get_dtb_entry(const struct resource_img_hdr *hdr); 9289568226SJason Zhu 9389568226SJason Zhu #endif 94