xref: /openbmc/linux/drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h (revision 0cce284537fb42d9c28b9b31038ffc9b464555f5)
1c0c050c5SMichael Chan /* Broadcom NetXtreme-C/E network driver.
2c0c050c5SMichael Chan  *
311f15ed3SMichael Chan  * Copyright (c) 2014-2016 Broadcom Corporation
4c0c050c5SMichael Chan  *
5c0c050c5SMichael Chan  * This program is free software; you can redistribute it and/or modify
6c0c050c5SMichael Chan  * it under the terms of the GNU General Public License as published by
7c0c050c5SMichael Chan  * the Free Software Foundation.
8c0c050c5SMichael Chan  */
9c0c050c5SMichael Chan 
10c0c050c5SMichael Chan #ifndef __BNXT_FW_HDR_H__
11c0c050c5SMichael Chan #define __BNXT_FW_HDR_H__
12c0c050c5SMichael Chan 
13c0c050c5SMichael Chan #define BNXT_FIRMWARE_BIN_SIGNATURE     0x1a4d4342	/* "BCM"+0x1a */
14*5ac67d8bSRob Swindell #define BNXT_UCODE_TRAILER_SIGNATURE	0x726c7254	/* "Trlr" */
15c0c050c5SMichael Chan 
16c0c050c5SMichael Chan enum SUPPORTED_FAMILY {
17c0c050c5SMichael Chan 	DEVICE_5702_3_4_FAMILY,		/* 0  - Denali, Vinson, K2 */
18c0c050c5SMichael Chan 	DEVICE_5705_FAMILY,		/* 1  - Bachelor */
19c0c050c5SMichael Chan 	DEVICE_SHASTA_FAMILY,		/* 2  - 5751 */
20c0c050c5SMichael Chan 	DEVICE_5706_FAMILY,		/* 3  - Teton */
21c0c050c5SMichael Chan 	DEVICE_5714_FAMILY,		/* 4  - Hamilton */
22c0c050c5SMichael Chan 	DEVICE_STANFORD_FAMILY,		/* 5  - 5755 */
23c0c050c5SMichael Chan 	DEVICE_STANFORD_ME_FAMILY,	/* 6  - 5756 */
24c0c050c5SMichael Chan 	DEVICE_SOLEDAD_FAMILY,		/* 7  - 5761[E] */
25c0c050c5SMichael Chan 	DEVICE_CILAI_FAMILY,		/* 8  - 57780/60/90/91 */
26c0c050c5SMichael Chan 	DEVICE_ASPEN_FAMILY,		/* 9  - 57781/85/61/65/91/95 */
27c0c050c5SMichael Chan 	DEVICE_ASPEN_PLUS_FAMILY,	/* 10 - 57786 */
28c0c050c5SMichael Chan 	DEVICE_LOGAN_FAMILY,		/* 11 - Any device in the Logan family
29c0c050c5SMichael Chan 					 */
30c0c050c5SMichael Chan 	DEVICE_LOGAN_5762,		/* 12 - Logan Enterprise (aka Columbia)
31c0c050c5SMichael Chan 					 */
32c0c050c5SMichael Chan 	DEVICE_LOGAN_57767,		/* 13 - Logan Client */
33c0c050c5SMichael Chan 	DEVICE_LOGAN_57787,		/* 14 - Logan Consumer */
34c0c050c5SMichael Chan 	DEVICE_LOGAN_5725,		/* 15 - Logan Server (TruManage-enabled)
35c0c050c5SMichael Chan 					 */
36c0c050c5SMichael Chan 	DEVICE_SAWTOOTH_FAMILY,		/* 16 - 5717/18 */
37c0c050c5SMichael Chan 	DEVICE_COTOPAXI_FAMILY,		/* 17 - 5719 */
38c0c050c5SMichael Chan 	DEVICE_SNAGGLETOOTH_FAMILY,	/* 18 - 5720 */
39c0c050c5SMichael Chan 	DEVICE_CUMULUS_FAMILY,		/* 19 - Cumulus/Whitney */
40c0c050c5SMichael Chan 	MAX_DEVICE_FAMILY
41c0c050c5SMichael Chan };
42c0c050c5SMichael Chan 
43c0c050c5SMichael Chan enum SUPPORTED_CODE {
44c0c050c5SMichael Chan 	CODE_ASF1,		/* 0  - ASF VERSION 1.03 <deprecated> */
45c0c050c5SMichael Chan 	CODE_ASF2,		/* 1  - ASF VERSION 2.00 <deprecated> */
46c0c050c5SMichael Chan 	CODE_PASSTHRU,		/* 2  - PassThru         <deprecated> */
47c0c050c5SMichael Chan 	CODE_PT_SEC,		/* 3  - PassThru with security <deprecated> */
48c0c050c5SMichael Chan 	CODE_UMP,		/* 4  - UMP                     <deprecated> */
49c0c050c5SMichael Chan 	CODE_BOOT,		/* 5  - Bootcode */
50c0c050c5SMichael Chan 	CODE_DASH,		/* 6  - TruManage (DASH + ASF + PMCI)
51c0c050c5SMichael Chan 				 *	Management firmwares
52c0c050c5SMichael Chan 				 */
53c0c050c5SMichael Chan 	CODE_MCTP_PASSTHRU,	/* 7  - NCSI / MCTP Passt-hrough firmware */
54c0c050c5SMichael Chan 	CODE_PM_OFFLOAD,	/* 8  - Power-Management Proxy Offload firmwares
55c0c050c5SMichael Chan 				 */
56c0c050c5SMichael Chan 	CODE_MDNS_SD_OFFLOAD,	/* 9  - Multicast DNS Service Discovery Proxys
57c0c050c5SMichael Chan 				 *	Offload firmware
58c0c050c5SMichael Chan 				 */
59c0c050c5SMichael Chan 	CODE_DISC_OFFLOAD,	/* 10 - Discovery Offload firmware */
60c0c050c5SMichael Chan 	CODE_MUSTANG,		/* 11 - I2C Error reporting APE firmwares
61c0c050c5SMichael Chan 				 *	<deprecated>
62c0c050c5SMichael Chan 				 */
63c0c050c5SMichael Chan 	CODE_ARP_BATCH,		/* 12 - ARP Batch firmware */
64c0c050c5SMichael Chan 	CODE_SMASH,		/* 13 - TruManage (SMASH + DCMI/IPMI + PMCI)
65c0c050c5SMichael Chan 				 *	Management firmware
66c0c050c5SMichael Chan 				 */
67c0c050c5SMichael Chan 	CODE_APE_DIAG,		/* 14 - APE Test Diag firmware */
68c0c050c5SMichael Chan 	CODE_APE_PATCH,		/* 15 - APE Patch firmware */
69c0c050c5SMichael Chan 	CODE_TANG_PATCH,	/* 16 - TANG Patch firmware */
70c0c050c5SMichael Chan 	CODE_KONG_FW,		/* 17 - KONG firmware */
71c0c050c5SMichael Chan 	CODE_KONG_PATCH,	/* 18 - KONG Patch firmware */
72c0c050c5SMichael Chan 	CODE_BONO_FW,		/* 19 - BONO firmware */
73c0c050c5SMichael Chan 	CODE_BONO_PATCH,	/* 20 - BONO Patch firmware */
7493e0b4feSRob Swindell 	CODE_CHIMP_PATCH,	/* 21 - ChiMP Patch firmware */
75c0c050c5SMichael Chan 
76c0c050c5SMichael Chan 	MAX_CODE_TYPE,
77c0c050c5SMichael Chan };
78c0c050c5SMichael Chan 
79c0c050c5SMichael Chan enum SUPPORTED_MEDIA {
80c0c050c5SMichael Chan 	MEDIA_COPPER,		/* 0 */
81c0c050c5SMichael Chan 	MEDIA_FIBER,		/* 1 */
82c0c050c5SMichael Chan 	MEDIA_NONE,		/* 2 */
83c0c050c5SMichael Chan 	MEDIA_COPPER_FIBER,	/* 3 */
84c0c050c5SMichael Chan 	MAX_MEDIA_TYPE,
85c0c050c5SMichael Chan };
86c0c050c5SMichael Chan 
87c0c050c5SMichael Chan struct bnxt_fw_header {
88c0c050c5SMichael Chan 	__le32 signature;	/* constains the constant value of
89*5ac67d8bSRob Swindell 				 * BNXT_FIRMWARE_BIN_SIGNATURE
90c0c050c5SMichael Chan 				 */
91c0c050c5SMichael Chan 	u8 flags;		/* reserved for ChiMP use */
92c0c050c5SMichael Chan 	u8 code_type;		/* enum SUPPORTED_CODE */
93c0c050c5SMichael Chan 	u8 device;		/* enum SUPPORTED_FAMILY */
94c0c050c5SMichael Chan 	u8 media;		/* enum SUPPORTED_MEDIA */
95c0c050c5SMichael Chan 	u8 version[16];		/* the null terminated version string to
96c0c050c5SMichael Chan 				 * indicate the version of the
97c0c050c5SMichael Chan 				 * file, this will be copied from the binary
98c0c050c5SMichael Chan 				 * file version string
99c0c050c5SMichael Chan 				 */
100c0c050c5SMichael Chan 	u8 build;
101c0c050c5SMichael Chan 	u8 revision;
102c0c050c5SMichael Chan 	u8 minor_ver;
103c0c050c5SMichael Chan 	u8 major_ver;
104c0c050c5SMichael Chan };
105c0c050c5SMichael Chan 
106*5ac67d8bSRob Swindell /* Microcode and pre-boot software/firmware trailer: */
107*5ac67d8bSRob Swindell struct bnxt_ucode_trailer {
108*5ac67d8bSRob Swindell 	u8 rsa_sig[256];
109*5ac67d8bSRob Swindell 	__le16 flags;
110*5ac67d8bSRob Swindell 	u8 version_format;
111*5ac67d8bSRob Swindell 	u8 version_length;
112*5ac67d8bSRob Swindell 	u8 version[16];
113*5ac67d8bSRob Swindell 	__le16 dir_type;
114*5ac67d8bSRob Swindell 	__le16 trailer_length;
115*5ac67d8bSRob Swindell 	__le32 sig;		/* BNXT_UCODE_TRAILER_SIGNATURE */
116*5ac67d8bSRob Swindell 	__le32 chksum;		/* CRC-32 */
117*5ac67d8bSRob Swindell };
118*5ac67d8bSRob Swindell 
119c0c050c5SMichael Chan #endif
120