1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright 2018-2019 NXP 4 */ 5 6 #ifndef __CONTAINER_HEADER_H_ 7 #define __CONTAINER_HEADER_H_ 8 9 #include <linux/sizes.h> 10 #include <linux/types.h> 11 12 #define IV_MAX_LEN 32 13 #define HASH_MAX_LEN 64 14 15 #define CONTAINER_HDR_ALIGNMENT 0x400 16 #define CONTAINER_HDR_EMMC_OFFSET 0 17 #define CONTAINER_HDR_MMCSD_OFFSET SZ_32K 18 #define CONTAINER_HDR_QSPI_OFFSET SZ_4K 19 #define CONTAINER_HDR_NAND_OFFSET SZ_128M 20 21 struct container_hdr { 22 u8 version; 23 u8 length_lsb; 24 u8 length_msb; 25 u8 tag; 26 u32 flags; 27 u16 sw_version; 28 u8 fuse_version; 29 u8 num_images; 30 u16 sig_blk_offset; 31 u16 reserved; 32 } __packed; 33 34 struct boot_img_t { 35 u32 offset; 36 u32 size; 37 u64 dst; 38 u64 entry; 39 u32 hab_flags; 40 u32 meta; 41 u8 hash[HASH_MAX_LEN]; 42 u8 iv[IV_MAX_LEN]; 43 } __packed; 44 45 struct signature_block_hdr { 46 u8 version; 47 u8 length_lsb; 48 u8 length_msb; 49 u8 tag; 50 u16 srk_table_offset; 51 u16 cert_offset; 52 u16 blob_offset; 53 u16 signature_offset; 54 u32 reserved; 55 } __packed; 56 #endif 57