Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
0002 /* Copyright (c) 2017-2019 Mellanox Technologies. All rights reserved */
0003 
0004 #ifndef _MLXFW_MFA2_FORMAT_H
0005 #define _MLXFW_MFA2_FORMAT_H
0006 
0007 #include "mlxfw_mfa2_file.h"
0008 #include "mlxfw_mfa2_tlv.h"
0009 
0010 enum mlxfw_mfa2_tlv_type {
0011     MLXFW_MFA2_TLV_MULTI_PART = 0x01,
0012     MLXFW_MFA2_TLV_PACKAGE_DESCRIPTOR = 0x02,
0013     MLXFW_MFA2_TLV_COMPONENT_DESCRIPTOR = 0x04,
0014     MLXFW_MFA2_TLV_COMPONENT_PTR = 0x22,
0015     MLXFW_MFA2_TLV_PSID = 0x2A,
0016 };
0017 
0018 enum mlxfw_mfa2_compression_type {
0019     MLXFW_MFA2_COMPRESSION_TYPE_NONE,
0020     MLXFW_MFA2_COMPRESSION_TYPE_XZ,
0021 };
0022 
0023 struct mlxfw_mfa2_tlv_package_descriptor {
0024     __be16 num_components;
0025     __be16 num_devices;
0026     __be32 cb_offset;
0027     __be32 cb_archive_size;
0028     __be32 cb_size_h;
0029     __be32 cb_size_l;
0030     u8 padding[3];
0031     u8 cv_compression;
0032     __be32 user_data_offset;
0033 } __packed;
0034 
0035 MLXFW_MFA2_TLV(package_descriptor, struct mlxfw_mfa2_tlv_package_descriptor,
0036            MLXFW_MFA2_TLV_PACKAGE_DESCRIPTOR);
0037 
0038 struct mlxfw_mfa2_tlv_multi {
0039     __be16 num_extensions;
0040     __be16 total_len;
0041 } __packed;
0042 
0043 MLXFW_MFA2_TLV(multi, struct mlxfw_mfa2_tlv_multi,
0044            MLXFW_MFA2_TLV_MULTI_PART);
0045 
0046 struct mlxfw_mfa2_tlv_psid {
0047     u8 psid[0];
0048 } __packed;
0049 
0050 MLXFW_MFA2_TLV_VARSIZE(psid, struct mlxfw_mfa2_tlv_psid,
0051                MLXFW_MFA2_TLV_PSID);
0052 
0053 struct mlxfw_mfa2_tlv_component_ptr {
0054     __be16 storage_id;
0055     __be16 component_index;
0056     __be32 storage_address;
0057 } __packed;
0058 
0059 MLXFW_MFA2_TLV(component_ptr, struct mlxfw_mfa2_tlv_component_ptr,
0060            MLXFW_MFA2_TLV_COMPONENT_PTR);
0061 
0062 struct mlxfw_mfa2_tlv_component_descriptor {
0063     __be16 pldm_classification;
0064     __be16 identifier;
0065     __be32 cb_offset_h;
0066     __be32 cb_offset_l;
0067     __be32 size;
0068 } __packed;
0069 
0070 MLXFW_MFA2_TLV(component_descriptor, struct mlxfw_mfa2_tlv_component_descriptor,
0071            MLXFW_MFA2_TLV_COMPONENT_DESCRIPTOR);
0072 
0073 #endif