xref: /rk3399_ARM-atf/include/drivers/brcm/chimp_nv_defs.h (revision 926cd70a0cc3a0cbf209a87765a8dc0b869798e3)
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