Linux Audio

Check our new training course

Open-source upstreaming

Need help get the support for your hardware in upstream Linux?
Loading...
Note: File does not exist in v6.13.7.
  1/*
  2 * Linux network driver for Brocade Converged Network Adapter.
  3 *
  4 * This program is free software; you can redistribute it and/or modify it
  5 * under the terms of the GNU General Public License (GPL) Version 2 as
  6 * published by the Free Software Foundation
  7 *
  8 * This program is distributed in the hope that it will be useful, but
  9 * WITHOUT ANY WARRANTY; without even the implied warranty of
 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 11 * General Public License for more details.
 12 */
 13/*
 14 * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
 15 * All rights reserved
 16 * www.brocade.com
 17 */
 18#ifndef __BFA_DEFS_MFG_COMM_H__
 19#define __BFA_DEFS_MFG_COMM_H__
 20
 21#include "cna.h"
 22
 23/**
 24 * Manufacturing block version
 25 */
 26#define BFA_MFG_VERSION				2
 27#define BFA_MFG_VERSION_UNINIT			0xFF
 28
 29/**
 30 * Manufacturing block encrypted version
 31 */
 32#define BFA_MFG_ENC_VER				2
 33
 34/**
 35 * Manufacturing block version 1 length
 36 */
 37#define BFA_MFG_VER1_LEN			128
 38
 39/**
 40 * Manufacturing block header length
 41 */
 42#define BFA_MFG_HDR_LEN				4
 43
 44#define BFA_MFG_SERIALNUM_SIZE			11
 45#define STRSZ(_n)				(((_n) + 4) & ~3)
 46
 47/**
 48 * Manufacturing card type
 49 */
 50enum {
 51	BFA_MFG_TYPE_CB_MAX  = 825,      /*!< Crossbow card type max	*/
 52	BFA_MFG_TYPE_FC8P2   = 825,      /*!< 8G 2port FC card		*/
 53	BFA_MFG_TYPE_FC8P1   = 815,      /*!< 8G 1port FC card		*/
 54	BFA_MFG_TYPE_FC4P2   = 425,      /*!< 4G 2port FC card		*/
 55	BFA_MFG_TYPE_FC4P1   = 415,      /*!< 4G 1port FC card		*/
 56	BFA_MFG_TYPE_CNA10P2 = 1020,     /*!< 10G 2port CNA card	*/
 57	BFA_MFG_TYPE_CNA10P1 = 1010,     /*!< 10G 1port CNA card	*/
 58	BFA_MFG_TYPE_JAYHAWK = 804,	 /*!< Jayhawk mezz card		*/
 59	BFA_MFG_TYPE_WANCHESE = 1007,	 /*!< Wanchese mezz card	*/
 60	BFA_MFG_TYPE_ASTRA    = 807,	 /*!< Astra mezz card		*/
 61	BFA_MFG_TYPE_LIGHTNING_P0 = 902, /*!< Lightning mezz card - old	*/
 62	BFA_MFG_TYPE_LIGHTNING = 1741,	 /*!< Lightning mezz card	*/
 63	BFA_MFG_TYPE_INVALID = 0,	 /*!< Invalid card type		*/
 64};
 65
 66#pragma pack(1)
 67
 68/**
 69 * Check if 1-port card
 70 */
 71#define bfa_mfg_is_1port(type) (( \
 72	(type) == BFA_MFG_TYPE_FC8P1 || \
 73	(type) == BFA_MFG_TYPE_FC4P1 || \
 74	(type) == BFA_MFG_TYPE_CNA10P1))
 75
 76/**
 77 * Check if Mezz card
 78 */
 79#define bfa_mfg_is_mezz(type) (( \
 80	(type) == BFA_MFG_TYPE_JAYHAWK || \
 81	(type) == BFA_MFG_TYPE_WANCHESE || \
 82	(type) == BFA_MFG_TYPE_ASTRA || \
 83	(type) == BFA_MFG_TYPE_LIGHTNING_P0 || \
 84	(type) == BFA_MFG_TYPE_LIGHTNING))
 85
 86/**
 87 * Check if card type valid
 88 */
 89#define bfa_mfg_is_card_type_valid(type) (( \
 90	(type) == BFA_MFG_TYPE_FC8P2 || \
 91	(type) == BFA_MFG_TYPE_FC8P1 || \
 92	(type) == BFA_MFG_TYPE_FC4P2 || \
 93	(type) == BFA_MFG_TYPE_FC4P1 || \
 94	(type) == BFA_MFG_TYPE_CNA10P2 || \
 95	(type) == BFA_MFG_TYPE_CNA10P1 || \
 96	bfa_mfg_is_mezz(type)))
 97
 98#define bfa_mfg_adapter_prop_init_flash(card_type, prop)	\
 99do {								\
100	switch ((card_type)) {					\
101	case BFA_MFG_TYPE_FC8P2:				\
102	case BFA_MFG_TYPE_JAYHAWK:				\
103	case BFA_MFG_TYPE_ASTRA:				\
104		(prop) = BFI_ADAPTER_SETP(NPORTS, 2) |		\
105			BFI_ADAPTER_SETP(SPEED, 8);		\
106		break;						\
107	case BFA_MFG_TYPE_FC8P1:				\
108		(prop) = BFI_ADAPTER_SETP(NPORTS, 1) |		\
109			BFI_ADAPTER_SETP(SPEED, 8);		\
110		break;						\
111	case BFA_MFG_TYPE_FC4P2:				\
112		(prop) = BFI_ADAPTER_SETP(NPORTS, 2) |		\
113			BFI_ADAPTER_SETP(SPEED, 4);		\
114		break;						\
115	case BFA_MFG_TYPE_FC4P1:				\
116		(prop) = BFI_ADAPTER_SETP(NPORTS, 1) |		\
117			BFI_ADAPTER_SETP(SPEED, 4);		\
118		break;						\
119	case BFA_MFG_TYPE_CNA10P2:				\
120	case BFA_MFG_TYPE_WANCHESE:				\
121	case BFA_MFG_TYPE_LIGHTNING_P0:				\
122	case BFA_MFG_TYPE_LIGHTNING:				\
123		(prop) = BFI_ADAPTER_SETP(NPORTS, 2);		\
124		(prop) |= BFI_ADAPTER_SETP(SPEED, 10);		\
125		break;						\
126	case BFA_MFG_TYPE_CNA10P1:				\
127		(prop) = BFI_ADAPTER_SETP(NPORTS, 1);		\
128		(prop) |= BFI_ADAPTER_SETP(SPEED, 10);		\
129		break;						\
130	default:						\
131		(prop) = BFI_ADAPTER_UNSUPP;			\
132	}							\
133} while (0)
134
135enum {
136	CB_GPIO_TTV	= (1),		/*!< TTV debug capable cards	*/
137	CB_GPIO_FC8P2   = (2),		/*!< 8G 2port FC card		*/
138	CB_GPIO_FC8P1   = (3),		/*!< 8G 1port FC card		*/
139	CB_GPIO_FC4P2   = (4),		/*!< 4G 2port FC card		*/
140	CB_GPIO_FC4P1   = (5),		/*!< 4G 1port FC card		*/
141	CB_GPIO_DFLY    = (6),		/*!< 8G 2port FC mezzanine card	*/
142	CB_GPIO_PROTO   = (1 << 7)	/*!< 8G 2port FC prototypes	*/
143};
144
145#define bfa_mfg_adapter_prop_init_gpio(gpio, card_type, prop)	\
146do {								\
147	if ((gpio) & CB_GPIO_PROTO) {				\
148		(prop) |= BFI_ADAPTER_PROTO;			\
149		(gpio) &= ~CB_GPIO_PROTO;			\
150	}							\
151	switch ((gpio)) {					\
152	case CB_GPIO_TTV:					\
153		(prop) |= BFI_ADAPTER_TTV;			\
154	case CB_GPIO_DFLY:					\
155	case CB_GPIO_FC8P2:					\
156		(prop) |= BFI_ADAPTER_SETP(NPORTS, 2);		\
157		(prop) |= BFI_ADAPTER_SETP(SPEED, 8);		\
158		(card_type) = BFA_MFG_TYPE_FC8P2;		\
159		break;						\
160	case CB_GPIO_FC8P1:					\
161		(prop) |= BFI_ADAPTER_SETP(NPORTS, 1);		\
162		(prop) |= BFI_ADAPTER_SETP(SPEED, 8);		\
163		(card_type) = BFA_MFG_TYPE_FC8P1;		\
164		break;						\
165	case CB_GPIO_FC4P2:					\
166		(prop) |= BFI_ADAPTER_SETP(NPORTS, 2);		\
167		(prop) |= BFI_ADAPTER_SETP(SPEED, 4);		\
168		(card_type) = BFA_MFG_TYPE_FC4P2;		\
169		break;						\
170	case CB_GPIO_FC4P1:					\
171		(prop) |= BFI_ADAPTER_SETP(NPORTS, 1);		\
172		(prop) |= BFI_ADAPTER_SETP(SPEED, 4);		\
173		(card_type) = BFA_MFG_TYPE_FC4P1;		\
174		break;						\
175	default:						\
176		(prop) |= BFI_ADAPTER_UNSUPP;			\
177		(card_type) = BFA_MFG_TYPE_INVALID;		\
178	}							\
179} while (0)
180
181/**
182 * VPD data length
183 */
184#define BFA_MFG_VPD_LEN			512
185#define BFA_MFG_VPD_LEN_INVALID		0
186
187#define BFA_MFG_VPD_PCI_HDR_OFF		137
188#define BFA_MFG_VPD_PCI_VER_MASK	0x07	/*!< version mask 3 bits */
189#define BFA_MFG_VPD_PCI_VDR_MASK	0xf8	/*!< vendor mask 5 bits */
190
191/**
192 * VPD vendor tag
193 */
194enum {
195	BFA_MFG_VPD_UNKNOWN	= 0,     /*!< vendor unknown		*/
196	BFA_MFG_VPD_IBM		= 1,     /*!< vendor IBM		*/
197	BFA_MFG_VPD_HP		= 2,     /*!< vendor HP			*/
198	BFA_MFG_VPD_DELL	= 3,     /*!< vendor DELL		*/
199	BFA_MFG_VPD_PCI_IBM	= 0x08,  /*!< PCI VPD IBM		*/
200	BFA_MFG_VPD_PCI_HP	= 0x10,  /*!< PCI VPD HP		*/
201	BFA_MFG_VPD_PCI_DELL	= 0x20,  /*!< PCI VPD DELL		*/
202	BFA_MFG_VPD_PCI_BRCD	= 0xf8,  /*!< PCI VPD Brocade		*/
203};
204
205/**
206 * @brief BFA adapter flash vpd data definition.
207 *
208 * All numerical fields are in big-endian format.
209 */
210struct bfa_mfg_vpd {
211	u8		version;	/*!< vpd data version */
212	u8		vpd_sig[3];	/*!< characters 'V', 'P', 'D' */
213	u8		chksum;		/*!< u8 checksum */
214	u8		vendor;		/*!< vendor */
215	u8	len;		/*!< vpd data length excluding header */
216	u8	rsv;
217	u8		data[BFA_MFG_VPD_LEN];	/*!< vpd data */
218};
219
220#pragma pack()
221
222#endif /* __BFA_DEFS_MFG_H__ */