diff options
Diffstat (limited to 'drivers/net/bna/bfa_defs_mfg_comm.h')
-rw-r--r-- | drivers/net/bna/bfa_defs_mfg_comm.h | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/drivers/net/bna/bfa_defs_mfg_comm.h b/drivers/net/bna/bfa_defs_mfg_comm.h new file mode 100644 index 00000000000..885ef3afdd4 --- /dev/null +++ b/drivers/net/bna/bfa_defs_mfg_comm.h | |||
@@ -0,0 +1,222 @@ | |||
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 | */ | ||
50 | enum { | ||
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) \ | ||
99 | do { \ | ||
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 | |||
135 | enum { | ||
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) \ | ||
146 | do { \ | ||
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 | */ | ||
194 | enum { | ||
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 | */ | ||
210 | struct 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__ */ | ||