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