/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright 2018-2019 NXP
 */

#ifndef __CONTAINER_HEADER_H_
#define __CONTAINER_HEADER_H_

#include <linux/sizes.h>
#include <linux/types.h>

#define IV_MAX_LEN			32
#define HASH_MAX_LEN			64

#define CONTAINER_HDR_ALIGNMENT 0x400
#define CONTAINER_HDR_EMMC_OFFSET 0
#define CONTAINER_HDR_MMCSD_OFFSET SZ_32K
#define CONTAINER_HDR_QSPI_OFFSET SZ_4K
#define CONTAINER_HDR_NAND_OFFSET SZ_128M

#define CONTAINER_HDR_TAG 0x87
#define CONTAINER_HDR_VERSION 0

struct container_hdr {
	u8 version;
	u8 length_lsb;
	u8 length_msb;
	u8 tag;
	u32 flags;
	u16 sw_version;
	u8 fuse_version;
	u8 num_images;
	u16 sig_blk_offset;
	u16 reserved;
} __packed;

struct boot_img_t {
	u32 offset;
	u32 size;
	u64 dst;
	u64 entry;
	u32 hab_flags;
	u32 meta;
	u8 hash[HASH_MAX_LEN];
	u8 iv[IV_MAX_LEN];
} __packed;

struct signature_block_hdr {
	u8 version;
	u8 length_lsb;
	u8 length_msb;
	u8 tag;
	u16 cert_offset;
	u16 srk_table_offset;
	u16 signature_offset;
	u16 blob_offset;
	u32 reserved;
} __packed;

struct generate_key_blob_hdr {
	u8 version;
	u8 length_lsb;
	u8 length_msb;
	u8 tag;
	u8 flags;
	u8 size;
	u8 algorithm;
	u8 mode;
} __packed;

int get_container_size(ulong addr, u16 *header_length);

static inline bool valid_container_hdr(struct container_hdr *container)
{
	return container->tag == CONTAINER_HDR_TAG &&
	       container->version == CONTAINER_HDR_VERSION;
}
#endif
