xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/resource_img.h (revision 06a213412b027f93b07f8d3fea776fb12b505ea1)
108dcd37cSAndy Yan /*
208dcd37cSAndy Yan  * (C) Copyright 2017 Rockchip Electronics Co., Ltd
308dcd37cSAndy Yan  *
408dcd37cSAndy Yan  * SPDX-License-Identifier:     GPL-2.0+
508dcd37cSAndy Yan  */
608dcd37cSAndy Yan 
708dcd37cSAndy Yan #ifndef __RESC_IMG_H_
808dcd37cSAndy Yan #define __RESC_IMG_H_
908dcd37cSAndy Yan 
10ea513bf6SJoseph Chen #include <linux/list.h>
11ea513bf6SJoseph Chen 
12ea513bf6SJoseph Chen #define MAX_FILE_NAME_LEN		220
13ea513bf6SJoseph Chen #define MAX_HASH_LEN			32
146a03cdbaSJoseph Chen #define DTB_SUFFIX			".dtb"
15ea513bf6SJoseph Chen 
16ea513bf6SJoseph Chen struct resource_file {
17ea513bf6SJoseph Chen 	char		name[MAX_FILE_NAME_LEN];
181cc374d6SXuhui Lin 	ulong		blk_start;
191cc374d6SXuhui Lin 	ulong		blk_offset;
20ea513bf6SJoseph Chen 	char		hash[MAX_HASH_LEN];
21ea513bf6SJoseph Chen 	uint32_t	hash_size;
226ea28a6cSJoseph Chen 	uint32_t	size;		/* in byte */
236ea28a6cSJoseph Chen 	bool		in_ram;
24ea513bf6SJoseph Chen 	struct list_head link;
25ea513bf6SJoseph Chen };
26ea513bf6SJoseph Chen 
276ea28a6cSJoseph Chen extern struct list_head entry_head;
28ea513bf6SJoseph Chen 
2908dcd37cSAndy Yan /*
30*06a21341SJoseph Chen  * resource_destroy() - Destroy resource file list
31*06a21341SJoseph Chen  */
32*06a21341SJoseph Chen void resource_destroy(void);
33*06a21341SJoseph Chen 
34*06a21341SJoseph Chen /*
356ea28a6cSJoseph Chen  * resource_setup_ram_list() - setup resource file list by given resource image.
3645390edfSJoseph Chen  *
376ea28a6cSJoseph Chen  * @dev_desc: boot device
386ea28a6cSJoseph Chen  * @hdr: resource file hdr
3945390edfSJoseph Chen  *
406ea28a6cSJoseph Chen  * return 0 on success, otherwise fail.
4145390edfSJoseph Chen  */
426ea28a6cSJoseph Chen int resource_setup_ram_list(struct blk_desc *dev_desc, void *hdr);
4345390edfSJoseph Chen 
4445390edfSJoseph Chen /*
456ea28a6cSJoseph Chen  * rockchip_read_resource_file() - read file from resource.
464ec36d68SJoseph Chen  *
474ec36d68SJoseph Chen  * @buf: destination buf to store file data
4808dcd37cSAndy Yan  * @name: file name
496ea28a6cSJoseph Chen  * @blk_offset: blocks offset in the file, 1 block = 512 bytes
506ea28a6cSJoseph Chen  * @len: the size(by bytes) of file to read
514ec36d68SJoseph Chen  *
526ea28a6cSJoseph Chen  * return the length of read data.
5308dcd37cSAndy Yan  */
546ea28a6cSJoseph Chen int rockchip_read_resource_file(void *buf, const char *name, int blk_offset, int len);
55a12bbc34SJason Zhu 
564ec36d68SJoseph Chen /*
57bc4ccd53SJoseph Chen  * rockchip_read_resource_dtb() - read dtb file
584ec36d68SJoseph Chen  *
594ec36d68SJoseph Chen  * @fdt_addr: destination buf to store dtb file
60bc4ccd53SJoseph Chen  * @hash: hash value buffer
61bc4ccd53SJoseph Chen  * @hash_size: hash value length
624ec36d68SJoseph Chen  */
63bc4ccd53SJoseph Chen int rockchip_read_resource_dtb(void *fdt_addr, char **hash, int *hash_size);
64ea513bf6SJoseph Chen 
6508dcd37cSAndy Yan #endif
66