diff options
author | Rasesh Mody <rmody@brocade.com> | 2010-08-23 23:24:12 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-08-23 23:24:12 -0400 |
commit | 8b230ed8ec96c933047dd0625cf95f739e4939a6 (patch) | |
tree | 517e761a804a2b2f9631b755abcbf525240b916e /drivers/net/bna/bfa_defs_mfg_comm.h | |
parent | 231cc2aaf14bad3b2325be0b19b8385ff5e75485 (diff) |
bna: Brocade 10Gb Ethernet device driver
This is patch 1/6 which contains linux driver source for
Brocade's BR1010/BR1020 10Gb CEE capable ethernet adapter.
Signed-off-by: Debashis Dutt <ddutt@brocade.com>
Signed-off-by: Rasesh Mody <rmody@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bna/bfa_defs_mfg_comm.h')
-rw-r--r-- | drivers/net/bna/bfa_defs_mfg_comm.h | 244 |
1 files changed, 244 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..987978fcb3f --- /dev/null +++ b/drivers/net/bna/bfa_defs_mfg_comm.h | |||
@@ -0,0 +1,244 @@ | |||
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 | /** | ||
99 | * Check if the card having old wwn/mac handling | ||
100 | */ | ||
101 | #define bfa_mfg_is_old_wwn_mac_model(type) (( \ | ||
102 | (type) == BFA_MFG_TYPE_FC8P2 || \ | ||
103 | (type) == BFA_MFG_TYPE_FC8P1 || \ | ||
104 | (type) == BFA_MFG_TYPE_FC4P2 || \ | ||
105 | (type) == BFA_MFG_TYPE_FC4P1 || \ | ||
106 | (type) == BFA_MFG_TYPE_CNA10P2 || \ | ||
107 | (type) == BFA_MFG_TYPE_CNA10P1 || \ | ||
108 | (type) == BFA_MFG_TYPE_JAYHAWK || \ | ||
109 | (type) == BFA_MFG_TYPE_WANCHESE)) | ||
110 | |||
111 | #define bfa_mfg_increment_wwn_mac(m, i) \ | ||
112 | do { \ | ||
113 | u32 t = ((m)[0] << 16) | ((m)[1] << 8) | (m)[2]; \ | ||
114 | t += (i); \ | ||
115 | (m)[0] = (t >> 16) & 0xFF; \ | ||
116 | (m)[1] = (t >> 8) & 0xFF; \ | ||
117 | (m)[2] = t & 0xFF; \ | ||
118 | } while (0) | ||
119 | |||
120 | #define bfa_mfg_adapter_prop_init_flash(card_type, prop) \ | ||
121 | do { \ | ||
122 | switch ((card_type)) { \ | ||
123 | case BFA_MFG_TYPE_FC8P2: \ | ||
124 | case BFA_MFG_TYPE_JAYHAWK: \ | ||
125 | case BFA_MFG_TYPE_ASTRA: \ | ||
126 | (prop) = BFI_ADAPTER_SETP(NPORTS, 2) | \ | ||
127 | BFI_ADAPTER_SETP(SPEED, 8); \ | ||
128 | break; \ | ||
129 | case BFA_MFG_TYPE_FC8P1: \ | ||
130 | (prop) = BFI_ADAPTER_SETP(NPORTS, 1) | \ | ||
131 | BFI_ADAPTER_SETP(SPEED, 8); \ | ||
132 | break; \ | ||
133 | case BFA_MFG_TYPE_FC4P2: \ | ||
134 | (prop) = BFI_ADAPTER_SETP(NPORTS, 2) | \ | ||
135 | BFI_ADAPTER_SETP(SPEED, 4); \ | ||
136 | break; \ | ||
137 | case BFA_MFG_TYPE_FC4P1: \ | ||
138 | (prop) = BFI_ADAPTER_SETP(NPORTS, 1) | \ | ||
139 | BFI_ADAPTER_SETP(SPEED, 4); \ | ||
140 | break; \ | ||
141 | case BFA_MFG_TYPE_CNA10P2: \ | ||
142 | case BFA_MFG_TYPE_WANCHESE: \ | ||
143 | case BFA_MFG_TYPE_LIGHTNING_P0: \ | ||
144 | case BFA_MFG_TYPE_LIGHTNING: \ | ||
145 | (prop) = BFI_ADAPTER_SETP(NPORTS, 2); \ | ||
146 | (prop) |= BFI_ADAPTER_SETP(SPEED, 10); \ | ||
147 | break; \ | ||
148 | case BFA_MFG_TYPE_CNA10P1: \ | ||
149 | (prop) = BFI_ADAPTER_SETP(NPORTS, 1); \ | ||
150 | (prop) |= BFI_ADAPTER_SETP(SPEED, 10); \ | ||
151 | break; \ | ||
152 | default: \ | ||
153 | (prop) = BFI_ADAPTER_UNSUPP; \ | ||
154 | } \ | ||
155 | } while (0) | ||
156 | |||
157 | enum { | ||
158 | CB_GPIO_TTV = (1), /*!< TTV debug capable cards */ | ||
159 | CB_GPIO_FC8P2 = (2), /*!< 8G 2port FC card */ | ||
160 | CB_GPIO_FC8P1 = (3), /*!< 8G 1port FC card */ | ||
161 | CB_GPIO_FC4P2 = (4), /*!< 4G 2port FC card */ | ||
162 | CB_GPIO_FC4P1 = (5), /*!< 4G 1port FC card */ | ||
163 | CB_GPIO_DFLY = (6), /*!< 8G 2port FC mezzanine card */ | ||
164 | CB_GPIO_PROTO = (1 << 7) /*!< 8G 2port FC prototypes */ | ||
165 | }; | ||
166 | |||
167 | #define bfa_mfg_adapter_prop_init_gpio(gpio, card_type, prop) \ | ||
168 | do { \ | ||
169 | if ((gpio) & CB_GPIO_PROTO) { \ | ||
170 | (prop) |= BFI_ADAPTER_PROTO; \ | ||
171 | (gpio) &= ~CB_GPIO_PROTO; \ | ||
172 | } \ | ||
173 | switch ((gpio)) { \ | ||
174 | case CB_GPIO_TTV: \ | ||
175 | (prop) |= BFI_ADAPTER_TTV; \ | ||
176 | case CB_GPIO_DFLY: \ | ||
177 | case CB_GPIO_FC8P2: \ | ||
178 | (prop) |= BFI_ADAPTER_SETP(NPORTS, 2); \ | ||
179 | (prop) |= BFI_ADAPTER_SETP(SPEED, 8); \ | ||
180 | (card_type) = BFA_MFG_TYPE_FC8P2; \ | ||
181 | break; \ | ||
182 | case CB_GPIO_FC8P1: \ | ||
183 | (prop) |= BFI_ADAPTER_SETP(NPORTS, 1); \ | ||
184 | (prop) |= BFI_ADAPTER_SETP(SPEED, 8); \ | ||
185 | (card_type) = BFA_MFG_TYPE_FC8P1; \ | ||
186 | break; \ | ||
187 | case CB_GPIO_FC4P2: \ | ||
188 | (prop) |= BFI_ADAPTER_SETP(NPORTS, 2); \ | ||
189 | (prop) |= BFI_ADAPTER_SETP(SPEED, 4); \ | ||
190 | (card_type) = BFA_MFG_TYPE_FC4P2; \ | ||
191 | break; \ | ||
192 | case CB_GPIO_FC4P1: \ | ||
193 | (prop) |= BFI_ADAPTER_SETP(NPORTS, 1); \ | ||
194 | (prop) |= BFI_ADAPTER_SETP(SPEED, 4); \ | ||
195 | (card_type) = BFA_MFG_TYPE_FC4P1; \ | ||
196 | break; \ | ||
197 | default: \ | ||
198 | (prop) |= BFI_ADAPTER_UNSUPP; \ | ||
199 | (card_type) = BFA_MFG_TYPE_INVALID; \ | ||
200 | } \ | ||
201 | } while (0) | ||
202 | |||
203 | /** | ||
204 | * VPD data length | ||
205 | */ | ||
206 | #define BFA_MFG_VPD_LEN 512 | ||
207 | #define BFA_MFG_VPD_LEN_INVALID 0 | ||
208 | |||
209 | #define BFA_MFG_VPD_PCI_HDR_OFF 137 | ||
210 | #define BFA_MFG_VPD_PCI_VER_MASK 0x07 /*!< version mask 3 bits */ | ||
211 | #define BFA_MFG_VPD_PCI_VDR_MASK 0xf8 /*!< vendor mask 5 bits */ | ||
212 | |||
213 | /** | ||
214 | * VPD vendor tag | ||
215 | */ | ||
216 | enum { | ||
217 | BFA_MFG_VPD_UNKNOWN = 0, /*!< vendor unknown */ | ||
218 | BFA_MFG_VPD_IBM = 1, /*!< vendor IBM */ | ||
219 | BFA_MFG_VPD_HP = 2, /*!< vendor HP */ | ||
220 | BFA_MFG_VPD_DELL = 3, /*!< vendor DELL */ | ||
221 | BFA_MFG_VPD_PCI_IBM = 0x08, /*!< PCI VPD IBM */ | ||
222 | BFA_MFG_VPD_PCI_HP = 0x10, /*!< PCI VPD HP */ | ||
223 | BFA_MFG_VPD_PCI_DELL = 0x20, /*!< PCI VPD DELL */ | ||
224 | BFA_MFG_VPD_PCI_BRCD = 0xf8, /*!< PCI VPD Brocade */ | ||
225 | }; | ||
226 | |||
227 | /** | ||
228 | * @brief BFA adapter flash vpd data definition. | ||
229 | * | ||
230 | * All numerical fields are in big-endian format. | ||
231 | */ | ||
232 | struct bfa_mfg_vpd { | ||
233 | u8 version; /*!< vpd data version */ | ||
234 | u8 vpd_sig[3]; /*!< characters 'V', 'P', 'D' */ | ||
235 | u8 chksum; /*!< u8 checksum */ | ||
236 | u8 vendor; /*!< vendor */ | ||
237 | u8 len; /*!< vpd data length excluding header */ | ||
238 | u8 rsv; | ||
239 | u8 data[BFA_MFG_VPD_LEN]; /*!< vpd data */ | ||
240 | }; | ||
241 | |||
242 | #pragma pack() | ||
243 | |||
244 | #endif /* __BFA_DEFS_MFG_H__ */ | ||