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