Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Linux network driver for QLogic BR-series Converged Network Adapter.
0004  */
0005 /*
0006  * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
0007  * Copyright (c) 2014-2015 QLogic Corporation
0008  * All rights reserved
0009  * www.qlogic.com
0010  */
0011 #ifndef __BFA_DEFS_MFG_COMM_H__
0012 #define __BFA_DEFS_MFG_COMM_H__
0013 
0014 #include "bfa_defs.h"
0015 
0016 /* Manufacturing block version */
0017 #define BFA_MFG_VERSION             3
0018 #define BFA_MFG_VERSION_UNINIT          0xFF
0019 
0020 /* Manufacturing block encrypted version */
0021 #define BFA_MFG_ENC_VER             2
0022 
0023 /* Manufacturing block version 1 length */
0024 #define BFA_MFG_VER1_LEN            128
0025 
0026 /* Manufacturing block header length */
0027 #define BFA_MFG_HDR_LEN             4
0028 
0029 #define BFA_MFG_SERIALNUM_SIZE          11
0030 #define STRSZ(_n)               (((_n) + 4) & ~3)
0031 
0032 /* Manufacturing card type */
0033 enum {
0034     BFA_MFG_TYPE_CB_MAX  = 825,      /*!< Crossbow card type max    */
0035     BFA_MFG_TYPE_FC8P2   = 825,      /*!< 8G 2port FC card      */
0036     BFA_MFG_TYPE_FC8P1   = 815,      /*!< 8G 1port FC card      */
0037     BFA_MFG_TYPE_FC4P2   = 425,      /*!< 4G 2port FC card      */
0038     BFA_MFG_TYPE_FC4P1   = 415,      /*!< 4G 1port FC card      */
0039     BFA_MFG_TYPE_CNA10P2 = 1020,     /*!< 10G 2port CNA card    */
0040     BFA_MFG_TYPE_CNA10P1 = 1010,     /*!< 10G 1port CNA card    */
0041     BFA_MFG_TYPE_JAYHAWK = 804,  /*!< Jayhawk mezz card     */
0042     BFA_MFG_TYPE_WANCHESE = 1007,    /*!< Wanchese mezz card    */
0043     BFA_MFG_TYPE_ASTRA    = 807,     /*!< Astra mezz card       */
0044     BFA_MFG_TYPE_LIGHTNING_P0 = 902, /*!< Lightning mezz card - old */
0045     BFA_MFG_TYPE_LIGHTNING = 1741,   /*!< Lightning mezz card   */
0046     BFA_MFG_TYPE_PROWLER_F = 1560,   /*!< Prowler FC only cards */
0047     BFA_MFG_TYPE_PROWLER_N = 1410,   /*!< Prowler NIC only cards    */
0048     BFA_MFG_TYPE_PROWLER_C = 1710,   /*!< Prowler CNA only cards    */
0049     BFA_MFG_TYPE_PROWLER_D = 1860,   /*!< Prowler Dual cards    */
0050     BFA_MFG_TYPE_CHINOOK   = 1867,   /*!< Chinook cards     */
0051     BFA_MFG_TYPE_INVALID = 0,    /*!< Invalid card type     */
0052 };
0053 
0054 /* Check if Mezz card */
0055 #define bfa_mfg_is_mezz(type) (( \
0056     (type) == BFA_MFG_TYPE_JAYHAWK || \
0057     (type) == BFA_MFG_TYPE_WANCHESE || \
0058     (type) == BFA_MFG_TYPE_ASTRA || \
0059     (type) == BFA_MFG_TYPE_LIGHTNING_P0 || \
0060     (type) == BFA_MFG_TYPE_LIGHTNING || \
0061     (type) == BFA_MFG_TYPE_CHINOOK))
0062 
0063 enum {
0064     CB_GPIO_TTV = (1),      /*!< TTV debug capable cards    */
0065     CB_GPIO_FC8P2   = (2),      /*!< 8G 2port FC card       */
0066     CB_GPIO_FC8P1   = (3),      /*!< 8G 1port FC card       */
0067     CB_GPIO_FC4P2   = (4),      /*!< 4G 2port FC card       */
0068     CB_GPIO_FC4P1   = (5),      /*!< 4G 1port FC card       */
0069     CB_GPIO_DFLY    = (6),      /*!< 8G 2port FC mezzanine card */
0070     CB_GPIO_PROTO   = BIT(7)    /*!< 8G 2port FC prototypes */
0071 };
0072 
0073 #define bfa_mfg_adapter_prop_init_gpio(gpio, card_type, prop)   \
0074 do {                                \
0075     if ((gpio) & CB_GPIO_PROTO) {               \
0076         (prop) |= BFI_ADAPTER_PROTO;            \
0077         (gpio) &= ~CB_GPIO_PROTO;           \
0078     }                           \
0079     switch (gpio) {                     \
0080     case CB_GPIO_TTV:                   \
0081         (prop) |= BFI_ADAPTER_TTV;          \
0082     case CB_GPIO_DFLY:                  \
0083     case CB_GPIO_FC8P2:                 \
0084         (prop) |= BFI_ADAPTER_SETP(NPORTS, 2);      \
0085         (prop) |= BFI_ADAPTER_SETP(SPEED, 8);       \
0086         (card_type) = BFA_MFG_TYPE_FC8P2;       \
0087         break;                      \
0088     case CB_GPIO_FC8P1:                 \
0089         (prop) |= BFI_ADAPTER_SETP(NPORTS, 1);      \
0090         (prop) |= BFI_ADAPTER_SETP(SPEED, 8);       \
0091         (card_type) = BFA_MFG_TYPE_FC8P1;       \
0092         break;                      \
0093     case CB_GPIO_FC4P2:                 \
0094         (prop) |= BFI_ADAPTER_SETP(NPORTS, 2);      \
0095         (prop) |= BFI_ADAPTER_SETP(SPEED, 4);       \
0096         (card_type) = BFA_MFG_TYPE_FC4P2;       \
0097         break;                      \
0098     case CB_GPIO_FC4P1:                 \
0099         (prop) |= BFI_ADAPTER_SETP(NPORTS, 1);      \
0100         (prop) |= BFI_ADAPTER_SETP(SPEED, 4);       \
0101         (card_type) = BFA_MFG_TYPE_FC4P1;       \
0102         break;                      \
0103     default:                        \
0104         (prop) |= BFI_ADAPTER_UNSUPP;           \
0105         (card_type) = BFA_MFG_TYPE_INVALID;     \
0106     }                           \
0107 } while (0)
0108 
0109 /* VPD data length */
0110 #define BFA_MFG_VPD_LEN         512
0111 #define BFA_MFG_VPD_LEN_INVALID     0
0112 
0113 #define BFA_MFG_VPD_PCI_HDR_OFF     137
0114 #define BFA_MFG_VPD_PCI_VER_MASK    0x07    /*!< version mask 3 bits */
0115 #define BFA_MFG_VPD_PCI_VDR_MASK    0xf8    /*!< vendor mask 5 bits */
0116 
0117 /* VPD vendor tag */
0118 enum {
0119     BFA_MFG_VPD_UNKNOWN = 0,     /*!< vendor unknown        */
0120     BFA_MFG_VPD_IBM     = 1,     /*!< vendor IBM        */
0121     BFA_MFG_VPD_HP      = 2,     /*!< vendor HP         */
0122     BFA_MFG_VPD_DELL    = 3,     /*!< vendor DELL       */
0123     BFA_MFG_VPD_PCI_IBM = 0x08,  /*!< PCI VPD IBM       */
0124     BFA_MFG_VPD_PCI_HP  = 0x10,  /*!< PCI VPD HP        */
0125     BFA_MFG_VPD_PCI_DELL    = 0x20,  /*!< PCI VPD DELL      */
0126     BFA_MFG_VPD_PCI_BRCD    = 0xf8,  /*!< PCI VPD Brocade       */
0127 };
0128 
0129 /* BFA adapter flash vpd data definition.
0130  *
0131  * All numerical fields are in big-endian format.
0132  */
0133 struct bfa_mfg_vpd {
0134     u8      version;    /*!< vpd data version */
0135     u8      vpd_sig[3]; /*!< characters 'V', 'P', 'D' */
0136     u8      chksum;     /*!< u8 checksum */
0137     u8      vendor;     /*!< vendor */
0138     u8  len;        /*!< vpd data length excluding header */
0139     u8  rsv;
0140     u8      data[BFA_MFG_VPD_LEN];  /*!< vpd data */
0141 } __packed;
0142 
0143 #endif /* __BFA_DEFS_MFG_H__ */