1*3942d3a8SSheetal Tigadoli /* 2*3942d3a8SSheetal Tigadoli * Copyright (c) 2016 - 2020, Broadcom 3*3942d3a8SSheetal Tigadoli * 4*3942d3a8SSheetal Tigadoli * SPDX-License-Identifier: BSD-3-Clause 5*3942d3a8SSheetal Tigadoli */ 6*3942d3a8SSheetal Tigadoli 7*3942d3a8SSheetal Tigadoli #ifndef BNXNVM_DEFS_H 8*3942d3a8SSheetal Tigadoli #define BNXNVM_DEFS_H 9*3942d3a8SSheetal Tigadoli 10*3942d3a8SSheetal Tigadoli #if defined(__GNUC__) 11*3942d3a8SSheetal Tigadoli #define PACKED_STRUCT __packed 12*3942d3a8SSheetal Tigadoli #else /* non-GCC compiler */ 13*3942d3a8SSheetal Tigadoli 14*3942d3a8SSheetal Tigadoli #ifndef DOS_DRIVERS 15*3942d3a8SSheetal Tigadoli #pragma pack(push) 16*3942d3a8SSheetal Tigadoli #pragma pack(1) 17*3942d3a8SSheetal Tigadoli #endif 18*3942d3a8SSheetal Tigadoli #define PACKED_STRUCT 19*3942d3a8SSheetal Tigadoli #endif 20*3942d3a8SSheetal Tigadoli 21*3942d3a8SSheetal Tigadoli typedef uint32_t u32_t; 22*3942d3a8SSheetal Tigadoli typedef uint8_t u8_t; 23*3942d3a8SSheetal Tigadoli typedef uint16_t u16_t; 24*3942d3a8SSheetal Tigadoli 25*3942d3a8SSheetal Tigadoli #define BNXNVM_DEFAULT_BLOCK_SIZE 4096 26*3942d3a8SSheetal Tigadoli #define BNXNVM_UNUSED_BYTE_VALUE 0xff 27*3942d3a8SSheetal Tigadoli 28*3942d3a8SSheetal Tigadoli #define NV_MAX_BLOCK_SIZE 16384 29*3942d3a8SSheetal Tigadoli 30*3942d3a8SSheetal Tigadoli #define BITS_PER_BYTE (8) 31*3942d3a8SSheetal Tigadoli #define SIZEOF_IN_BITS(x) (sizeof(x)*BITS_PER_BYTE) 32*3942d3a8SSheetal Tigadoli 33*3942d3a8SSheetal Tigadoli /************************/ 34*3942d3a8SSheetal Tigadoli /* byte-swapping macros */ 35*3942d3a8SSheetal Tigadoli /************************/ 36*3942d3a8SSheetal Tigadoli #define BYTE_SWAP_16(x) \ 37*3942d3a8SSheetal Tigadoli ((((u16_t)(x) & 0xff00) >> 8) | \ 38*3942d3a8SSheetal Tigadoli (((u16_t)(x) & 0x00ff) << 8)) 39*3942d3a8SSheetal Tigadoli #define BYTE_SWAP_32(x) \ 40*3942d3a8SSheetal Tigadoli ((((u32_t)(x) & 0xff000000) >> 24) | \ 41*3942d3a8SSheetal Tigadoli (((u32_t)(x) & 0x00ff0000) >> 8) | \ 42*3942d3a8SSheetal Tigadoli (((u32_t)(x) & 0x0000ff00) << 8) | \ 43*3942d3a8SSheetal Tigadoli (((u32_t)(x) & 0x000000ff) << 24)) 44*3942d3a8SSheetal Tigadoli 45*3942d3a8SSheetal Tigadoli /* auto-detect integer size */ 46*3942d3a8SSheetal Tigadoli #define BYTE_SWAP_INT(x) \ 47*3942d3a8SSheetal Tigadoli (SIZEOF_IN_BITS(x) == 16 ? BYTE_SWAP_16(x) : \ 48*3942d3a8SSheetal Tigadoli SIZEOF_IN_BITS(x) == 32 ? BYTE_SWAP_32(x) : (x)) 49*3942d3a8SSheetal Tigadoli 50*3942d3a8SSheetal Tigadoli /********************************/ 51*3942d3a8SSheetal Tigadoli /* Architecture-specific macros */ 52*3942d3a8SSheetal Tigadoli /********************************/ 53*3942d3a8SSheetal Tigadoli #ifdef __BIG_ENDIAN__ /* e.g. Motorola */ 54*3942d3a8SSheetal Tigadoli 55*3942d3a8SSheetal Tigadoli #define BE_INT16(x) (x) 56*3942d3a8SSheetal Tigadoli #define BE_INT32(x) (x) 57*3942d3a8SSheetal Tigadoli #define BE_INT(x) (x) 58*3942d3a8SSheetal Tigadoli #define LE_INT16(x) BYTE_SWAP_16(x) 59*3942d3a8SSheetal Tigadoli #define LE_INT32(x) BYTE_SWAP_32(x) 60*3942d3a8SSheetal Tigadoli #define LE_INT(x) BYTE_SWAP_INT(x) 61*3942d3a8SSheetal Tigadoli 62*3942d3a8SSheetal Tigadoli #else /* Little Endian (e.g. Intel) */ 63*3942d3a8SSheetal Tigadoli 64*3942d3a8SSheetal Tigadoli #define LE_INT16(x) (x) 65*3942d3a8SSheetal Tigadoli #define LE_INT32(x) (x) 66*3942d3a8SSheetal Tigadoli #define LE_INT(x) (x) 67*3942d3a8SSheetal Tigadoli #define BE_INT16(x) BYTE_SWAP_16(x) 68*3942d3a8SSheetal Tigadoli #define BE_INT32(x) BYTE_SWAP_32(x) 69*3942d3a8SSheetal Tigadoli #define BE_INT(x) BYTE_SWAP_INT(x) 70*3942d3a8SSheetal Tigadoli 71*3942d3a8SSheetal Tigadoli #endif 72*3942d3a8SSheetal Tigadoli 73*3942d3a8SSheetal Tigadoli 74*3942d3a8SSheetal Tigadoli enum { 75*3942d3a8SSheetal Tigadoli NV_OK = 0, 76*3942d3a8SSheetal Tigadoli NV_NOT_NVRAM, 77*3942d3a8SSheetal Tigadoli NV_BAD_MB, 78*3942d3a8SSheetal Tigadoli NV_BAD_DIR_HEADER, 79*3942d3a8SSheetal Tigadoli NV_BAD_DIR_ENTRY, 80*3942d3a8SSheetal Tigadoli NV_FW_NOT_FOUND, 81*3942d3a8SSheetal Tigadoli }; 82*3942d3a8SSheetal Tigadoli 83*3942d3a8SSheetal Tigadoli typedef struct { 84*3942d3a8SSheetal Tigadoli #define BNXNVM_MASTER_BLOCK_SIG BE_INT32(0x424E5834) /*"BNX4"*/ 85*3942d3a8SSheetal Tigadoli /* Signature*/ 86*3942d3a8SSheetal Tigadoli u32_t sig; 87*3942d3a8SSheetal Tigadoli /* Length of Master Block Header, in bytes [32] */ 88*3942d3a8SSheetal Tigadoli u32_t length; 89*3942d3a8SSheetal Tigadoli /* Block size, in bytes [4096] */ 90*3942d3a8SSheetal Tigadoli u32_t block_size; 91*3942d3a8SSheetal Tigadoli /* Byte-offset to Directory Block (translated) */ 92*3942d3a8SSheetal Tigadoli u32_t directory_offset; 93*3942d3a8SSheetal Tigadoli /* Byte-offset to Block Redirection Table (non-translated) */ 94*3942d3a8SSheetal Tigadoli u32_t redirect_offset; 95*3942d3a8SSheetal Tigadoli /* Size, in bytes of Reserved Blocks region (at end of NVRAM) */ 96*3942d3a8SSheetal Tigadoli u32_t reserved_size; 97*3942d3a8SSheetal Tigadoli /* 98*3942d3a8SSheetal Tigadoli * Size of NVRAM (in bytes) - may be used to 99*3942d3a8SSheetal Tigadoli * override auto-detected size 100*3942d3a8SSheetal Tigadoli */ 101*3942d3a8SSheetal Tigadoli u32_t nvram_size; 102*3942d3a8SSheetal Tigadoli /* CRC-32 (IEEE 802.3 compatible) of the above */ 103*3942d3a8SSheetal Tigadoli u32_t chksum; 104*3942d3a8SSheetal Tigadoli } PACKED_STRUCT bnxnvm_master_block_header_t; 105*3942d3a8SSheetal Tigadoli 106*3942d3a8SSheetal Tigadoli typedef struct { 107*3942d3a8SSheetal Tigadoli #define BNXNVM_DIRECTORY_BLOCK_SIG BE_INT32(0x44697230) /* "Dir0" */ 108*3942d3a8SSheetal Tigadoli /* Signature */ 109*3942d3a8SSheetal Tigadoli u32_t sig; 110*3942d3a8SSheetal Tigadoli /* Length of Directory Header, in bytes [16] */ 111*3942d3a8SSheetal Tigadoli u32_t length; 112*3942d3a8SSheetal Tigadoli /* Number of Directory Entries */ 113*3942d3a8SSheetal Tigadoli u32_t entries; 114*3942d3a8SSheetal Tigadoli /* Length of each Directory Entry, in bytes [24] */ 115*3942d3a8SSheetal Tigadoli u32_t entry_length; 116*3942d3a8SSheetal Tigadoli } PACKED_STRUCT bnxnvm_directory_block_header_t; 117*3942d3a8SSheetal Tigadoli 118*3942d3a8SSheetal Tigadoli typedef struct { 119*3942d3a8SSheetal Tigadoli /* Directory Entry Type (see enum bnxnvm_directory_type) */ 120*3942d3a8SSheetal Tigadoli u16_t type; 121*3942d3a8SSheetal Tigadoli /* Instance of this Directory Entry type (0-based) */ 122*3942d3a8SSheetal Tigadoli u16_t ordinal; 123*3942d3a8SSheetal Tigadoli /* 124*3942d3a8SSheetal Tigadoli * Directory Entry Extension flags used to identify 125*3942d3a8SSheetal Tigadoli * secondary instances of a type:ordinal combinations 126*3942d3a8SSheetal Tigadoli */ 127*3942d3a8SSheetal Tigadoli u16_t ext; 128*3942d3a8SSheetal Tigadoli /* Directory Entry Attribute flags used to describe the item contents */ 129*3942d3a8SSheetal Tigadoli u16_t attr; 130*3942d3a8SSheetal Tigadoli /* Item location in NVRAM specified as offset (in bytes) */ 131*3942d3a8SSheetal Tigadoli u32_t item_location; 132*3942d3a8SSheetal Tigadoli /* 133*3942d3a8SSheetal Tigadoli * Length of NVRAM item in bytes 134*3942d3a8SSheetal Tigadoli * (including padding - multiple of block size) 135*3942d3a8SSheetal Tigadoli */ 136*3942d3a8SSheetal Tigadoli u32_t item_length; 137*3942d3a8SSheetal Tigadoli /* Length of item data in bytes (excluding padding) */ 138*3942d3a8SSheetal Tigadoli u32_t data_length; 139*3942d3a8SSheetal Tigadoli /* 140*3942d3a8SSheetal Tigadoli * CRC-32 (IEEE 802.3 compatible) of item data 141*3942d3a8SSheetal Tigadoli * (excluding padding) (optional) 142*3942d3a8SSheetal Tigadoli */ 143*3942d3a8SSheetal Tigadoli u32_t data_chksum; 144*3942d3a8SSheetal Tigadoli } PACKED_STRUCT bnxnvm_directory_entry_t; 145*3942d3a8SSheetal Tigadoli 146*3942d3a8SSheetal Tigadoli enum bnxnvm_version_format { 147*3942d3a8SSheetal Tigadoli /* US-ASCII string (not necessarily null-terminated) */ 148*3942d3a8SSheetal Tigadoli BNX_VERSION_FMT_ASCII = 0, 149*3942d3a8SSheetal Tigadoli /* Each field 16-bits, displayed as unpadded decimal (e.g. "1.2.3.4") */ 150*3942d3a8SSheetal Tigadoli BNX_VERSION_FMT_DEC = 1, 151*3942d3a8SSheetal Tigadoli /* A single hexadecimal value, up to 64-bits (no dots) */ 152*3942d3a8SSheetal Tigadoli BNX_VERSION_FMT_HEX = 2, 153*3942d3a8SSheetal Tigadoli /* Multiple version values (three 8-bit version fields) */ 154*3942d3a8SSheetal Tigadoli BNX_VERSION_FMT_MULTI = 3 155*3942d3a8SSheetal Tigadoli }; 156*3942d3a8SSheetal Tigadoli 157*3942d3a8SSheetal Tigadoli /* This structure definition must not change: */ 158*3942d3a8SSheetal Tigadoli typedef struct { 159*3942d3a8SSheetal Tigadoli u16_t flags; /* bit-flags (defaults to 0x0000) */ 160*3942d3a8SSheetal Tigadoli u8_t version_format; /* enum bnxnvm_version_format */ 161*3942d3a8SSheetal Tigadoli u8_t version_length; /* in bytes */ 162*3942d3a8SSheetal Tigadoli u8_t version[16]; /* version value */ 163*3942d3a8SSheetal Tigadoli u16_t dir_type; /* enum bnxnvm_directory_type */ 164*3942d3a8SSheetal Tigadoli /* size of the entire trailer (to locate end of component data) */ 165*3942d3a8SSheetal Tigadoli u16_t trailer_length; 166*3942d3a8SSheetal Tigadoli #define BNXNVM_COMPONENT_TRAILER_SIG BE_INT32(0x54726c72) /* "Trlr" */ 167*3942d3a8SSheetal Tigadoli u32_t sig; 168*3942d3a8SSheetal Tigadoli u32_t chksum; /* CRC-32 of all bytes to this point */ 169*3942d3a8SSheetal Tigadoli } PACKED_STRUCT bnxnvm_component_trailer_base_t; 170*3942d3a8SSheetal Tigadoli 171*3942d3a8SSheetal Tigadoli typedef struct { 172*3942d3a8SSheetal Tigadoli /* 173*3942d3a8SSheetal Tigadoli * new trailer members (e.g. digital signature) 174*3942d3a8SSheetal Tigadoli * go here (insert at top): 175*3942d3a8SSheetal Tigadoli */ 176*3942d3a8SSheetal Tigadoli u8_t rsa_sig[256]; /* 2048-bit RSA-encrypted SHA-256 hash */ 177*3942d3a8SSheetal Tigadoli bnxnvm_component_trailer_base_t base; 178*3942d3a8SSheetal Tigadoli } PACKED_STRUCT bnxnvm_component_trailer_t; 179*3942d3a8SSheetal Tigadoli 180*3942d3a8SSheetal Tigadoli #define BNX_MAX_LEN_DIR_NAME 12 181*3942d3a8SSheetal Tigadoli #define BNX_MAX_LEN_DIR_DESC 50 182*3942d3a8SSheetal Tigadoli /********************************************************* 183*3942d3a8SSheetal Tigadoli * NVRAM Directory Entry/Item Types, Names, and Descriptions 184*3942d3a8SSheetal Tigadoli * 185*3942d3a8SSheetal Tigadoli * If you see a name or description that needs improvement, 186*3942d3a8SSheetal Tigadoli * please correct it or raise for discussion. 187*3942d3a8SSheetal Tigadoli * When adding a new directory type, it would be appreciated 188*3942d3a8SSheetal Tigadoli * if you also updated ../../libs/nvm/bnxt_nvm_str.c. 189*3942d3a8SSheetal Tigadoli * DIR_NAME macros may contain up to 12 alpha-numeric 190*3942d3a8SSheetal Tigadoli * US-ASCII characters only, camelCase is preferred for clarity. 191*3942d3a8SSheetal Tigadoli * DIR_DESC macros may contain up to 50 US-ASCII characters 192*3942d3a8SSheetal Tigadoli * providing a verbose description of the directory type. 193*3942d3a8SSheetal Tigadoli */ 194*3942d3a8SSheetal Tigadoli enum bnxnvm_directory_type { 195*3942d3a8SSheetal Tigadoli /* 0x00 Unused directory entry, available for use */ 196*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_UNUSED = 0, 197*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_UNUSED "unused" 198*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_UNUSED "Deleted directory entry, available for reuse" 199*3942d3a8SSheetal Tigadoli /* 0x01 Package installation log */ 200*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_PKG_LOG = 1, 201*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_PKG_LOG "pkgLog" 202*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_PKG_LOG "Package Installation Log" 203*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_CHIMP_PATCH = 3, 204*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_CHIMP_PATCH "chimpPatch" 205*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_CHIMP_PATCH "ChiMP Patch Firmware" 206*3942d3a8SSheetal Tigadoli /* 0x04 ChiMP firmware: Boot Code phase 1 */ 207*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_BOOTCODE = 4, 208*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_BOOTCODE "chimpBoot" 209*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_BOOTCODE "Chip Management Processor Boot Firmware" 210*3942d3a8SSheetal Tigadoli /* 0x05 VPD data block */ 211*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_VPD = 5, 212*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_VPD "VPD" 213*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_VPD "Vital Product Data" 214*3942d3a8SSheetal Tigadoli /* 0x06 Exp ROM MBA */ 215*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_EXP_ROM_MBA = 6, 216*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_EXP_ROM_MBA "MBA" 217*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_EXP_ROM_MBA "Multiple Boot Agent Expansion ROM" 218*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_AVS = 7, /* 0x07 AVS FW */ 219*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_AVS "AVS" 220*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_AVS "Adaptive Voltage Scaling Firmware" 221*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_PCIE = 8, /* 0x08 PCIE FW */ 222*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_PCIE "PCIEucode" 223*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_PCIE "PCIe Microcode" 224*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_PORT_MACRO = 9, /* 0x09 PORT MACRO FW */ 225*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_PORT_MACRO "portMacro" 226*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_PORT_MACRO "Port Macro Firmware" 227*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_APE_FW = 10, /* 0x0A APE Firmware */ 228*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_APE_FW "apeFW" 229*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_APE_FW "Application Processing Engine Firmware" 230*3942d3a8SSheetal Tigadoli /* 0x0B Patch firmware executed by APE ROM */ 231*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_APE_PATCH = 11, 232*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_APE_PATCH "apePatch" 233*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_APE_PATCH "APE Patch Firmware" 234*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_KONG_FW = 12, /* 0x0C Kong Firmware */ 235*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_KONG_FW "kongFW" 236*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_KONG_FW "Kong Firmware" 237*3942d3a8SSheetal Tigadoli /* 0x0D Patch firmware executed by Kong ROM */ 238*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_KONG_PATCH = 13, 239*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_KONG_PATCH "kongPatch" 240*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_KONG_PATCH "Kong Patch Firmware" 241*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_BONO_FW = 14, /* 0x0E Bono Firmware */ 242*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_BONO_FW "bonoFW" 243*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_BONO_FW "Bono Firmware" 244*3942d3a8SSheetal Tigadoli /* 0x0F Patch firmware executed by Bono ROM */ 245*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_BONO_PATCH = 15, 246*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_BONO_PATCH "bonoPatch" 247*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_BONO_PATCH "Bono Patch Firmware" 248*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_TANG_FW = 16, /* 0x10 Tang firmware */ 249*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_TANG_FW "tangFW" 250*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_TANG_FW "Tang Firmware" 251*3942d3a8SSheetal Tigadoli /* 0x11 Patch firmware executed by Tang ROM */ 252*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_TANG_PATCH = 17, 253*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_TANG_PATCH "tangPatch" 254*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_TANG_PATCH "Tang Patch Firmware" 255*3942d3a8SSheetal Tigadoli /* 0x12 ChiMP firmware: Boot Code phase 2 (loaded by phase 1) */ 256*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_BOOTCODE_2 = 18, 257*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_BOOTCODE_2 "chimpHWRM" 258*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_BOOTCODE_2 "ChiMP Hardware Resource Manager Firmware" 259*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_CCM = 19, /* 0x13 CCM ROM binary */ 260*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_CCM "CCM" 261*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_CCM "Comprehensive Configuration Management" 262*3942d3a8SSheetal Tigadoli /* 0x14 PCI-IDs, PCI-related configuration properties */ 263*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_PCI_CFG = 20, 264*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_PCI_CFG "pciCFG" 265*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_PCI_CFG "PCIe Configuration Data" 266*3942d3a8SSheetal Tigadoli 267*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_TSCF_UCODE = 21, /* 0x15 TSCF micro-code */ 268*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_TSCF_UCODE "PHYucode" 269*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_TSCF_UCODE "Falcon PHY Microcode" 270*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_ISCSI_BOOT = 22, /* 0x16 iSCSI Boot */ 271*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_ISCSI_BOOT "iSCSIboot" 272*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_ISCSI_BOOT "iSCSI Boot Software Initiator" 273*3942d3a8SSheetal Tigadoli /* 0x18 iSCSI Boot IPV6 - ***DEPRECATED*** */ 274*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_ISCSI_BOOT_IPV6 = 24, 275*3942d3a8SSheetal Tigadoli /* 0x19 iSCSI Boot IPV4N6 - ***DEPRECATED*** */ 276*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_ISCSI_BOOT_IPV4N6 = 25, 277*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_ISCSI_BOOT_CFG = 26, /* 0x1a iSCSI Boot CFG v6 */ 278*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_ISCSI_BOOT_CFG "iSCSIcfg" 279*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_ISCSI_BOOT_CFG "iSCSI Boot Configuration Data" 280*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_EXT_PHY = 27, /* 0x1b External PHY FW */ 281*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_EXT_PHY "extPHYfw" 282*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_EXT_PHY "External PHY Firmware" 283*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MODULES_PN = 28, /* 0x1c Modules PartNum list */ 284*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MODULES_PN "modPartNums" 285*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MODULES_PN "Optical Modules Part Number List" 286*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_SHARED_CFG = 40, /* 0x28 shared configuration block */ 287*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_SHARED_CFG "sharedCFG" 288*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_SHARED_CFG "Shared Configuration Data" 289*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_PORT_CFG = 41, /* 0x29 port configuration block */ 290*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_PORT_CFG "portCFG" 291*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_PORT_CFG "Port Configuration Data" 292*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_FUNC_CFG = 42, /* 0x2A func configuration block */ 293*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_FUNC_CFG "funcCFG" 294*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_FUNC_CFG "Function Configuration Data" 295*3942d3a8SSheetal Tigadoli 296*3942d3a8SSheetal Tigadoli /* Management Firmware (TruManage) related dir entries*/ 297*3942d3a8SSheetal Tigadoli /* 0x30 Management firmware configuration (see BMCFG library)*/ 298*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MGMT_CFG = 48, 299*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MGMT_CFG "mgmtCFG" 300*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MGMT_CFG "Out-of-band Management Configuration Data" 301*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MGMT_DATA = 49, /* 0x31 "Opaque Management Data" */ 302*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MGMT_DATA "mgmtData" 303*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MGMT_DATA "Out-of-band Management Data" 304*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MGMT_WEB_DATA = 50, /* 0x32 "Web GUI" file data */ 305*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MGMT_WEB_DATA "webData" 306*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MGMT_WEB_DATA "Out-of-band Management Web Data" 307*3942d3a8SSheetal Tigadoli /* 0x33 "Web GUI" file metadata */ 308*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MGMT_WEB_META = 51, 309*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MGMT_WEB_META "webMeta" 310*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MGMT_WEB_META "Out-of-band Management Web Metadata" 311*3942d3a8SSheetal Tigadoli /* 0x34 Management firmware Event Log (a.k.a. "SEL") */ 312*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MGMT_EVENT_LOG = 52, 313*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MGMT_EVENT_LOG "eventLog" 314*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MGMT_EVENT_LOG "Out-of-band Management Event Log" 315*3942d3a8SSheetal Tigadoli /* 0x35 Management firmware Audit Log */ 316*3942d3a8SSheetal Tigadoli BNX_DIR_TYPE_MGMT_AUDIT_LOG = 53 317*3942d3a8SSheetal Tigadoli #define BNX_DIR_NAME_MGMT_AUDIT_LOG "auditLog" 318*3942d3a8SSheetal Tigadoli #define BNX_DIR_DESC_MGMT_AUDIT_LOG "Out-of-band Management Audit Log" 319*3942d3a8SSheetal Tigadoli 320*3942d3a8SSheetal Tigadoli }; 321*3942d3a8SSheetal Tigadoli 322*3942d3a8SSheetal Tigadoli /* For backwards compatibility only, may be removed later */ 323*3942d3a8SSheetal Tigadoli #define BNX_DIR_TYPE_ISCSI_BOOT_CFG6 BNX_DIR_TYPE_ISCSI_BOOT_CFG 324*3942d3a8SSheetal Tigadoli 325*3942d3a8SSheetal Tigadoli /* Firmware NVM items of "APE BIN" format are identified with 326*3942d3a8SSheetal Tigadoli * the following macro: 327*3942d3a8SSheetal Tigadoli */ 328*3942d3a8SSheetal Tigadoli #define BNX_DIR_TYPE_IS_APE_BIN_FMT(type)\ 329*3942d3a8SSheetal Tigadoli ((type) == BNX_DIR_TYPE_CHIMP_PATCH \ 330*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_BOOTCODE \ 331*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_BOOTCODE_2 \ 332*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_APE_FW \ 333*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_APE_PATCH \ 334*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_TANG_FW \ 335*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_TANG_PATCH \ 336*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_KONG_FW \ 337*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_KONG_PATCH \ 338*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_BONO_FW \ 339*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_BONO_PATCH \ 340*3942d3a8SSheetal Tigadoli ) 341*3942d3a8SSheetal Tigadoli 342*3942d3a8SSheetal Tigadoli /* Other (non APE BIN) executable NVM items are identified with 343*3942d3a8SSheetal Tigadoli * the following macro: 344*3942d3a8SSheetal Tigadoli */ 345*3942d3a8SSheetal Tigadoli #define BNX_DIR_TYPE_IS_OTHER_EXEC(type)\ 346*3942d3a8SSheetal Tigadoli ((type) == BNX_DIR_TYPE_AVS \ 347*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_EXP_ROM_MBA \ 348*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_PCIE \ 349*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_TSCF_UCODE \ 350*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_EXT_PHY \ 351*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_CCM \ 352*3942d3a8SSheetal Tigadoli || (type) == BNX_DIR_TYPE_ISCSI_BOOT \ 353*3942d3a8SSheetal Tigadoli ) 354*3942d3a8SSheetal Tigadoli 355*3942d3a8SSheetal Tigadoli /* Executable NVM items (e.g. microcode, firmware, software) identified 356*3942d3a8SSheetal Tigadoli * with the following macro 357*3942d3a8SSheetal Tigadoli */ 358*3942d3a8SSheetal Tigadoli #define BNX_DIR_TYPE_IS_EXECUTABLE(type) \ 359*3942d3a8SSheetal Tigadoli (BNX_DIR_TYPE_IS_APE_BIN_FMT(type) \ 360*3942d3a8SSheetal Tigadoli || BNX_DIR_TYPE_IS_OTHER_EXEC(type)) 361*3942d3a8SSheetal Tigadoli 362*3942d3a8SSheetal Tigadoli #define BNX_DIR_ORDINAL_FIRST 0 /* Ordinals are 0-based */ 363*3942d3a8SSheetal Tigadoli 364*3942d3a8SSheetal Tigadoli /* No extension flags for this directory entry */ 365*3942d3a8SSheetal Tigadoli #define BNX_DIR_EXT_NONE 0 366*3942d3a8SSheetal Tigadoli /* Directory entry is inactive (not used, not hidden, 367*3942d3a8SSheetal Tigadoli * not available for reuse) 368*3942d3a8SSheetal Tigadoli */ 369*3942d3a8SSheetal Tigadoli #define BNX_DIR_EXT_INACTIVE (1 << 0) 370*3942d3a8SSheetal Tigadoli /* Directory content is a temporary staging location for 371*3942d3a8SSheetal Tigadoli * updating the primary (non-update) directory entry contents 372*3942d3a8SSheetal Tigadoli * (e.g. performing a secure firmware update) 373*3942d3a8SSheetal Tigadoli */ 374*3942d3a8SSheetal Tigadoli #define BNX_DIR_EXT_UPDATE (1 << 1) 375*3942d3a8SSheetal Tigadoli 376*3942d3a8SSheetal Tigadoli /* No attribute flags set for this directory entry */ 377*3942d3a8SSheetal Tigadoli #define BNX_DIR_ATTR_NONE 0 378*3942d3a8SSheetal Tigadoli /* Directory entry checksum of contents is purposely incorrect */ 379*3942d3a8SSheetal Tigadoli #define BNX_DIR_ATTR_NO_CHKSUM (1 << 0) 380*3942d3a8SSheetal Tigadoli /* Directory contents are in the form of a property-stream 381*3942d3a8SSheetal Tigadoli * (e.g. configuration properties) 382*3942d3a8SSheetal Tigadoli */ 383*3942d3a8SSheetal Tigadoli #define BNX_DIR_ATTR_PROP_STREAM (1 << 1) 384*3942d3a8SSheetal Tigadoli /* Directory content (e.g. iSCSI boot) supports IPv4 */ 385*3942d3a8SSheetal Tigadoli #define BNX_DIR_ATTR_IPv4 (1 << 2) 386*3942d3a8SSheetal Tigadoli /* Directory content (e.g. iSCSI boot) supports IPv6 */ 387*3942d3a8SSheetal Tigadoli #define BNX_DIR_ATTR_IPv6 (1 << 3) 388*3942d3a8SSheetal Tigadoli /* Directory content includes standard NVM component trailer 389*3942d3a8SSheetal Tigadoli * (bnxnvm_component_trailer_t) 390*3942d3a8SSheetal Tigadoli */ 391*3942d3a8SSheetal Tigadoli #define BNX_DIR_ATTR_TRAILER (1 << 4) 392*3942d3a8SSheetal Tigadoli 393*3942d3a8SSheetal Tigadoli /* Index of tab-delimited fields in each package log 394*3942d3a8SSheetal Tigadoli * (BNX_DIR_TYPE_PKG_LOG) record (\n-terminated line): 395*3942d3a8SSheetal Tigadoli */ 396*3942d3a8SSheetal Tigadoli enum bnxnvm_pkglog_field_index { 397*3942d3a8SSheetal Tigadoli /* Package installation date/time in ISO-8601 format */ 398*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_INSTALLED_TIMESTAMP = 0, 399*3942d3a8SSheetal Tigadoli /* Installed package description (from package header) or "N/A" */ 400*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_PKG_DESCRIPTION = 1, 401*3942d3a8SSheetal Tigadoli /* Installed package version string (from package header) or "N/A" */ 402*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_PKG_VERSION = 2, 403*3942d3a8SSheetal Tigadoli /* Installed package creation/modification timestamp (ISO-8601) */ 404*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_PKG_TIMESTAMP = 3, 405*3942d3a8SSheetal Tigadoli /* Installed package checksum in hexadecimal (CRC-32) or "N/A" */ 406*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_PKG_CHECKSUM = 4, 407*3942d3a8SSheetal Tigadoli /* Total number of packaged items applied in this installation */ 408*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_INSTALLED_ITEMS = 5, 409*3942d3a8SSheetal Tigadoli /* Hexadecimal bit-mask identifying which items were installed */ 410*3942d3a8SSheetal Tigadoli BNX_PKG_LOG_FIELD_IDX_INSTALLED_MASK = 6 411*3942d3a8SSheetal Tigadoli }; 412*3942d3a8SSheetal Tigadoli 413*3942d3a8SSheetal Tigadoli #if !defined(__GNUC__) 414*3942d3a8SSheetal Tigadoli #ifndef DOS_DRIVERS 415*3942d3a8SSheetal Tigadoli #pragma pack(pop) /* original packing */ 416*3942d3a8SSheetal Tigadoli #endif 417*3942d3a8SSheetal Tigadoli #endif 418*3942d3a8SSheetal Tigadoli 419*3942d3a8SSheetal Tigadoli #endif /* Don't add anything after this line */ 420