/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
/* Copyright (c) 2017-2019 Mellanox Technologies. All rights reserved */

#ifndef _MLXFW_MFA2_FORMAT_H
#define _MLXFW_MFA2_FORMAT_H

#include "mlxfw_mfa2_file.h"
#include "mlxfw_mfa2_tlv.h"

enum mlxfw_mfa2_tlv_type {
	MLXFW_MFA2_TLV_MULTI_PART = 0x01,
	MLXFW_MFA2_TLV_PACKAGE_DESCRIPTOR = 0x02,
	MLXFW_MFA2_TLV_COMPONENT_DESCRIPTOR = 0x04,
	MLXFW_MFA2_TLV_COMPONENT_PTR = 0x22,
	MLXFW_MFA2_TLV_PSID = 0x2A,
};

enum mlxfw_mfa2_compression_type {
	MLXFW_MFA2_COMPRESSION_TYPE_NONE,
	MLXFW_MFA2_COMPRESSION_TYPE_XZ,
};

struct mlxfw_mfa2_tlv_package_descriptor {
	__be16 num_components;
	__be16 num_devices;
	__be32 cb_offset;
	__be32 cb_archive_size;
	__be32 cb_size_h;
	__be32 cb_size_l;
	u8 padding[3];
	u8 cv_compression;
	__be32 user_data_offset;
} __packed;

MLXFW_MFA2_TLV(package_descriptor, struct mlxfw_mfa2_tlv_package_descriptor,
	       MLXFW_MFA2_TLV_PACKAGE_DESCRIPTOR);

struct mlxfw_mfa2_tlv_multi {
	__be16 num_extensions;
	__be16 total_len;
} __packed;

MLXFW_MFA2_TLV(multi, struct mlxfw_mfa2_tlv_multi,
	       MLXFW_MFA2_TLV_MULTI_PART);

struct mlxfw_mfa2_tlv_psid {
	u8 psid[0];
} __packed;

MLXFW_MFA2_TLV_VARSIZE(psid, struct mlxfw_mfa2_tlv_psid,
		       MLXFW_MFA2_TLV_PSID);

struct mlxfw_mfa2_tlv_component_ptr {
	__be16 storage_id;
	__be16 component_index;
	__be32 storage_address;
} __packed;

MLXFW_MFA2_TLV(component_ptr, struct mlxfw_mfa2_tlv_component_ptr,
	       MLXFW_MFA2_TLV_COMPONENT_PTR);

struct mlxfw_mfa2_tlv_component_descriptor {
	__be16 pldm_classification;
	__be16 identifier;
	__be32 cb_offset_h;
	__be32 cb_offset_l;
	__be32 size;
} __packed;

MLXFW_MFA2_TLV(component_descriptor, struct mlxfw_mfa2_tlv_component_descriptor,
	       MLXFW_MFA2_TLV_COMPONENT_DESCRIPTOR);

#endif
