xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/spl_resource_img.h (revision dca57e1c3d022acbbc6a8816281bf9c6468be282)
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