Linux-libre 3.10.70-gnu
[librecmc/linux-libre.git] / drivers / staging / silicom / bp_mod.h
1 /******************************************************************************/
2 /*                                                                            */
3 /* Bypass Control utility, Copyright (c) 2005 Silicom                         */
4 /*                                                                            */
5 /* This program is free software; you can redistribute it and/or modify       */
6 /* it under the terms of the GNU General Public License as published by       */
7 /* the Free Software Foundation, located in the file LICENSE.                 */
8 /*                                                                            */
9 /*                                                                            */
10 /* bp_mod.h                                                                   */
11 /*                                                                            */
12 /******************************************************************************/
13
14 #ifndef BP_MOD_H
15 #define BP_MOD_H
16 #include "bits.h"
17
18 #define EXPORT_SYMBOL_NOVERS EXPORT_SYMBOL
19
20 #define usec_delay(x) udelay(x)
21 #ifndef msec_delay_bp
22 #define msec_delay_bp(x)                        \
23 do {                                            \
24         int  i;                                 \
25         if (1) {                                \
26                 for (i = 0; i < 1000; i++) {    \
27                         udelay(x) ;             \
28                 }                               \
29         } else {                                \
30                 msleep(x);                      \
31         }                                       \
32 } while (0)
33
34 #endif
35
36 #include <linux/param.h>
37
38 #ifndef jiffies_to_msecs
39 #define jiffies_to_msecs(x) _kc_jiffies_to_msecs(x)
40 static inline unsigned int jiffies_to_msecs(const unsigned long j)
41 {
42 #if HZ <= 1000 && !(1000 % HZ)
43         return (1000 / HZ) * j;
44 #elif HZ > 1000 && !(HZ % 1000)
45         return (j + (HZ / 1000) - 1) / (HZ / 1000);
46 #else
47         return (j * 1000) / HZ;
48 #endif
49 }
50 #endif
51
52 #define SILICOM_VID              0x1374
53 #define SILICOM_SVID             0x1374
54
55 #define SILICOM_PXG2BPFI_SSID    0x0026
56 #define SILICOM_PXG2BPFILX_SSID  0x0027
57 #define SILICOM_PXGBPI_SSID      0x0028
58 #define SILICOM_PXGBPIG_SSID     0x0029
59 #define SILICOM_PXG2TBFI_SSID    0x002a
60 #define SILICOM_PXG4BPI_SSID     0x002c
61 #define SILICOM_PXG4BPFI_SSID    0x002d
62 #define SILICOM_PXG4BPFILX_SSID  0x002e
63 #define SILICOM_PXG2BPFIL_SSID   0x002F
64 #define SILICOM_PXG2BPFILLX_SSID 0x0030
65 #define SILICOM_PEG4BPI_SSID     0x0031
66 #define SILICOM_PEG2BPI_SSID     0x0037
67 #define SILICOM_PEG4BPIN_SSID    0x0038
68 #define SILICOM_PEG2BPFI_SSID    0x0039
69 #define SILICOM_PEG2BPFILX_SSID  0x003A
70 #define SILICOM_PMCXG2BPFI_SSID  0x003B
71 #define NOKIA_PMCXG2BPFIN_SSID   0x0510
72 #define NOKIA_PMCXG2BPIN_SSID    0x0513
73 #define NOKIA_PMCXG4BPIN_SSID    0x0514
74 #define NOKIA_PMCXG2BPFIN_SVID   0x13B8
75 #define NOKIA_PMCXG2BPIN2_SSID    0x0515
76 #define NOKIA_PMCXG4BPIN2_SSID    0x0516
77 #define SILICOM_PMCX2BPI_SSID       0x041
78 #define SILICOM_PMCX4BPI_SSID       0x042
79 #define SILICOM_PXG2BISC1_SSID   0x003d
80 #define SILICOM_PEG2TBFI_SSID    0x003E
81 #define SILICOM_PXG2TBI_SSID     0x003f
82 #define SILICOM_PXG4BPFID_SSID   0x0043
83 #define SILICOM_PEG4BPFI_SSID    0x0040
84 #define SILICOM_PEG4BPIPT_SSID   0x0044
85 #define SILICOM_PXG6BPI_SSID     0x0045
86 #define SILICOM_PEG4BPIL_SSID    0x0046
87 #define SILICOM_PEG2BPI5_SSID    0x0052
88 #define SILICOM_PEG6BPI_SSID    0x0053
89 #define SILICOM_PEG4BPFI5_SSID   0x0050
90 #define SILICOM_PEG4BPFI5LX_SSID   0x0051
91 #define SILICOM_PEG2BISC6_SSID 0x54
92
93 #define SILICOM_PEG6BPIFC_SSID 0x55
94
95 #define SILICOM_PEG2BPFI5_SSID   0x0056
96 #define SILICOM_PEG2BPFI5LX_SSID   0x0057
97
98 #define SILICOM_PXEG4BPFI_SSID    0x0058
99
100 #define SILICOM_PEG2BPFID_SSID   0x0047
101 #define SILICOM_PEG2BPFIDLX_SSID  0x004C
102 #define SILICOM_MEG2BPFILN_SSID  0x0048
103 #define SILICOM_MEG2BPFINX_SSID  0x0049
104 #define SILICOM_PEG4BPFILX_SSID  0x004A
105 #define SILICOM_MHIO8AD_SSID    0x004F
106
107 #define SILICOM_MEG2BPFILXLN_SSID 0x004b
108 #define SILICOM_PEG2BPIX1_SSID    0x004d
109 #define SILICOM_MEG2BPFILXNX_SSID 0x004e
110
111 #define SILICOM_PE10G2BPISR_SSID  0x0102
112 #define SILICOM_PE10G2BPILR_SSID  0x0103
113 #define SILICOM_PE10G2BPICX4_SSID  0x0101
114
115 #define SILICOM_XE10G2BPILR_SSID 0x0163
116 #define SILICOM_XE10G2BPISR_SSID 0x0162
117 #define SILICOM_XE10G2BPICX4_SSID 0x0161
118 #define SILICOM_XE10G2BPIT_SSID   0x0160
119
120 #define SILICOM_PE10GDBISR_SSID   0x0181
121 #define SILICOM_PE10GDBILR_SSID   0x0182
122
123 #define SILICOM_PE210G2DBi9SR_SSID          0x0188
124 #define SILICOM_PE210G2DBi9SRRB_SSID    0x0188
125 #define SILICOM_PE210G2DBi9LR_SSID          0x0189
126 #define SILICOM_PE210G2DBi9LRRB_SSID    0x0189
127 #define SILICOM_PE310G4DBi940SR_SSID    0x018C
128
129 #define SILICOM_PE310G4BPi9T_SSID       0x130
130 #define SILICOM_PE310G4BPi9SR_SSID        0x132
131 #define SILICOM_PE310G4BPi9LR_SSID        0x133
132
133 #define NOKIA_XE10G2BPIXR_SVID   0x13B8
134 #define NOKIA_XE10G2BPIXR_SSID   0x051C
135
136 #define INTEL_PEG4BPII_PID   0x10A0
137 #define INTEL_PEG4BPFII_PID   0x10A1
138 #define INTEL_PEG4BPII_SSID   0x11A0
139 #define INTEL_PEG4BPFII_SSID   0x11A1
140
141 #define INTEL_PEG4BPIIO_SSID   0x10A0
142 #define INTEL_PEG4BPIIO_PID   0x105e
143
144 #define BROADCOM_VID         0x14e4
145 #define BROADCOM_PE10G2_PID  0x164e
146
147 #define SILICOM_PE10G2BPTCX4_SSID 0x0141
148 #define SILICOM_PE10G2BPTSR_SSID  0x0142
149 #define SILICOM_PE10G2BPTLR_SSID  0x0143
150 #define SILICOM_PE10G2BPTT_SSID   0x0140
151
152 #define SILICOM_PEG4BPI6_SSID     0x0320
153 #define SILICOM_PEG4BPFI6_SSID    0x0321
154 #define SILICOM_PEG4BPFI6LX_SSID    0x0322
155 #define SILICOM_PEG4BPFI6ZX_SSID    0x0323
156
157 #define SILICOM_PEG2BPI6_SSID    0x0300
158 #define SILICOM_PEG2BPFI6_SSID    0x0301
159 #define SILICOM_PEG2BPFI6LX_SSID    0x0302
160 #define SILICOM_PEG2BPFI6ZX_SSID    0x0303
161 #define SILICOM_PEG2BPFI6FLXM_SSID  0x0304
162
163 #define SILICOM_PEG2DBI6_SSID    0x0308
164 #define SILICOM_PEG2DBFI6_SSID    0x0309
165 #define SILICOM_PEG2DBFI6LX_SSID    0x030A
166 #define SILICOM_PEG2DBFI6ZX_SSID    0x030B
167
168 #define SILICOM_MEG2BPI6_SSID     0x0310
169 #define SILICOM_XEG2BPI6_SSID    0x0318
170 #define SILICOM_PEG4BPI6FC_SSID     0x0328
171 #define SILICOM_PEG4BPFI6FC_SSID    0x0329
172 #define SILICOM_PEG4BPFI6FCLX_SSID    0x032A
173 #define SILICOM_PEG4BPFI6FCZX_SSID    0x032B
174
175 #define SILICOM_PEG6BPI6_SSID     0x0340
176
177 #define SILICOM_PEG2BPI6SC6_SSID     0x0360
178
179 #define SILICOM_MEG2BPI6_SSID     0x0310
180 #define SILICOM_XEG2BPI6_SSID     0x0318
181 #define SILICOM_MEG4BPI6_SSID     0x0330
182
183 #define SILICOM_PE2G4BPi80L_SSID    0x0380
184
185 #define SILICOM_M6E2G8BPi80A_SSID    0x0474
186
187 #define SILICOM_PE2G4BPi35_SSID    0x03d8
188
189 #define SILICOM_PE2G4BPFi80_SSID    0x0381
190 #define SILICOM_PE2G4BPFi80LX_SSID    0x0382
191 #define SILICOM_PE2G4BPFi80ZX_SSID    0x0383
192
193 #define SILICOM_PE2G4BPi80_SSID    0x0388
194
195 #define SILICOM_PE2G2BPi80_SSID    0x0390
196 #define SILICOM_PE2G2BPFi80_SSID    0x0391
197 #define SILICOM_PE2G2BPFi80LX_SSID    0x0392
198 #define SILICOM_PE2G2BPFi80ZX_SSID    0x0393
199
200 #define SILICOM_PE2G4BPi35L_SSID    0x03D0
201 #define SILICOM_PE2G4BPFi35_SSID    0x03D1
202 #define SILICOM_PE2G4BPFi35LX_SSID    0x03D2
203 #define SILICOM_PE2G4BPFi35ZX_SSID    0x03D3
204
205 #define SILICOM_PE2G2BPi35_SSID    0x03c0
206 #define SILICOM_PAC1200BPi35_SSID    0x03cc
207 #define SILICOM_PE2G2BPFi35_SSID    0x03C1
208 #define SILICOM_PE2G2BPFi35LX_SSID    0x03C2
209 #define SILICOM_PE2G2BPFi35ZX_SSID    0x03C3
210
211 #define SILICOM_PE2G6BPi35_SSID    0x03E0
212 #define SILICOM_PE2G6BPi35CX_SSID  0x0AA0
213
214 #define INTEL_PE210G2SPI9_SSID     0x00C
215
216 #define SILICOM_M1EG2BPI6_SSID     0x400
217
218 #define SILICOM_M1EG2BPFI6_SSID     0x0401
219 #define SILICOM_M1EG2BPFI6LX_SSID     0x0402
220 #define SILICOM_M1EG2BPFI6ZX_SSID     0x0403
221
222 #define SILICOM_M1EG4BPI6_SSID     0x0420
223
224 #define SILICOM_M1EG4BPFI6_SSID       0x0421
225 #define SILICOM_M1EG4BPFI6LX_SSID     0x0422
226 #define SILICOM_M1EG4BPFI6ZX_SSID     0x0423
227
228 #define SILICOM_M1EG6BPI6_SSID     0x0440
229
230 #define SILICOM_M1E2G4BPi80_SSID     0x0460
231 #define SILICOM_M1E2G4BPFi80_SSID       0x0461
232 #define SILICOM_M1E2G4BPFi80LX_SSID     0x0462
233 #define SILICOM_M1E2G4BPFi80ZX_SSID     0x0463
234
235 #define SILICOM_M6E2G8BPi80_SSID        0x0470
236 #define SILICOM_PE210G2BPi40_SSID       0x01a0
237
238 #define PEG540_IF_SERIES(pid) \
239         ((pid == SILICOM_PE210G2BPi40_SSID))
240
241 #define OLD_IF_SERIES(pid)\
242         ((pid == SILICOM_PXG2BPFI_SSID) || \
243          (pid == SILICOM_PXG2BPFILX_SSID))
244
245 #define P2BPFI_IF_SERIES(pid) \
246         ((pid == SILICOM_PXG2BPFI_SSID) || \
247          (pid == SILICOM_PXG2BPFILX_SSID) || \
248          (pid == SILICOM_PEG2BPFI_SSID) || \
249          (pid == SILICOM_PEG2BPFID_SSID) || \
250          (pid == SILICOM_PEG2BPFIDLX_SSID) || \
251          (pid == SILICOM_MEG2BPFILN_SSID) || \
252          (pid == SILICOM_MEG2BPFINX_SSID) || \
253          (pid == SILICOM_PEG4BPFILX_SSID) || \
254          (pid == SILICOM_PEG4BPFI_SSID) || \
255          (pid == SILICOM_PXEG4BPFI_SSID) || \
256          (pid == SILICOM_PXG4BPFID_SSID) || \
257          (pid == SILICOM_PEG2TBFI_SSID) || \
258          (pid == SILICOM_PE10G2BPISR_SSID) || \
259          (pid == SILICOM_PE10G2BPILR_SSID) || \
260          (pid == SILICOM_PEG2BPFILX_SSID) || \
261          (pid == SILICOM_PMCXG2BPFI_SSID) || \
262          (pid == SILICOM_MHIO8AD_SSID) || \
263          (pid == SILICOM_PEG4BPFI5LX_SSID) || \
264          (pid == SILICOM_PEG4BPFI5_SSID) || \
265          (pid == SILICOM_PEG4BPFI6FC_SSID) || \
266          (pid == SILICOM_PEG4BPFI6FCLX_SSID) || \
267          (pid == SILICOM_PEG4BPFI6FCZX_SSID) || \
268          (pid == NOKIA_PMCXG2BPFIN_SSID) || \
269          (pid == SILICOM_MEG2BPFILXLN_SSID) || \
270          (pid == SILICOM_MEG2BPFILXNX_SSID) || \
271          (pid == SILICOM_XE10G2BPIT_SSID) || \
272          (pid == SILICOM_XE10G2BPICX4_SSID) || \
273          (pid == SILICOM_XE10G2BPISR_SSID) || \
274          (pid == NOKIA_XE10G2BPIXR_SSID) || \
275          (pid == SILICOM_PE10GDBISR_SSID) || \
276          (pid == SILICOM_PE10GDBILR_SSID) || \
277          (pid == SILICOM_XE10G2BPILR_SSID))
278
279 #define INTEL_IF_SERIES(pid) \
280         ((pid == INTEL_PEG4BPII_SSID) || \
281          (pid == INTEL_PEG4BPIIO_SSID) || \
282          (pid == INTEL_PEG4BPFII_SSID))
283
284 #define NOKIA_SERIES(pid) \
285         ((pid == NOKIA_PMCXG2BPIN_SSID) || \
286          (pid == NOKIA_PMCXG4BPIN_SSID) || \
287          (pid == SILICOM_PMCX4BPI_SSID) || \
288          (pid == NOKIA_PMCXG2BPFIN_SSID) || \
289          (pid == SILICOM_PMCXG2BPFI_SSID) || \
290          (pid == NOKIA_PMCXG2BPIN2_SSID) || \
291          (pid == NOKIA_PMCXG4BPIN2_SSID) || \
292          (pid == SILICOM_PMCX2BPI_SSID))
293
294 #define DISCF_IF_SERIES(pid) \
295         (pid == SILICOM_PEG2TBFI_SSID)
296
297 #define PEGF_IF_SERIES(pid) \
298         ((pid == SILICOM_PEG2BPFI_SSID) || \
299          (pid == SILICOM_PEG2BPFID_SSID) || \
300          (pid == SILICOM_PEG2BPFIDLX_SSID) || \
301          (pid == SILICOM_PEG2BPFILX_SSID) || \
302          (pid == SILICOM_PEG4BPFI_SSID) || \
303          (pid == SILICOM_PXEG4BPFI_SSID) || \
304          (pid == SILICOM_MEG2BPFILN_SSID) || \
305          (pid == SILICOM_MEG2BPFINX_SSID) || \
306          (pid == SILICOM_PEG4BPFILX_SSID) || \
307          (pid == SILICOM_PEG2TBFI_SSID) || \
308          (pid == SILICOM_MEG2BPFILXLN_SSID) || \
309          (pid == SILICOM_MEG2BPFILXNX_SSID))
310
311 #define TPL_IF_SERIES(pid) \
312         ((pid == SILICOM_PXG2BPFIL_SSID) || \
313          (pid == SILICOM_PXG2BPFILLX_SSID) || \
314          (pid == SILICOM_PXG2TBFI_SSID) || \
315          (pid == SILICOM_PXG4BPFID_SSID) || \
316          (pid == SILICOM_PXG4BPFI_SSID))
317
318 #define BP10G_IF_SERIES(pid) \
319         ((pid == SILICOM_PE10G2BPISR_SSID) || \
320          (pid == SILICOM_PE10G2BPICX4_SSID) || \
321          (pid == SILICOM_PE10G2BPILR_SSID) || \
322          (pid == SILICOM_XE10G2BPIT_SSID) || \
323          (pid == SILICOM_XE10G2BPICX4_SSID) || \
324          (pid == SILICOM_XE10G2BPISR_SSID) || \
325          (pid == NOKIA_XE10G2BPIXR_SSID) || \
326          (pid == SILICOM_PE10GDBISR_SSID) || \
327          (pid == SILICOM_PE10GDBILR_SSID) || \
328          (pid == SILICOM_XE10G2BPILR_SSID))
329
330 #define BP10GB_IF_SERIES(pid) \
331         ((pid == SILICOM_PE10G2BPTCX4_SSID) || \
332          (pid == SILICOM_PE10G2BPTSR_SSID) || \
333          (pid == SILICOM_PE10G2BPTLR_SSID) || \
334          (pid == SILICOM_PE10G2BPTT_SSID))
335
336 #define BP10G_CX4_SERIES(pid) \
337         (pid == SILICOM_PE10G2BPICX4_SSID)
338
339 #define BP10GB_CX4_SERIES(pid) \
340         (pid == SILICOM_PE10G2BPTCX4_SSID)
341
342 #define SILICOM_M2EG2BPFI6_SSID       0x0501
343 #define SILICOM_M2EG2BPFI6LX_SSID     0x0502
344 #define SILICOM_M2EG2BPFI6ZX_SSID     0x0503
345 #define SILICOM_M2EG4BPI6_SSID        0x0520
346
347 #define SILICOM_M2EG4BPFI6_SSID       0x0521
348 #define SILICOM_M2EG4BPFI6LX_SSID     0x0522
349 #define SILICOM_M2EG4BPFI6ZX_SSID     0x0523
350
351 #define SILICOM_M2EG6BPI6_SSID     0x0540
352
353 #define SILICOM_M1E10G2BPI9CX4_SSID  0x481
354 #define SILICOM_M1E10G2BPI9SR_SSID   0x482
355 #define SILICOM_M1E10G2BPI9LR_SSID   0x483
356 #define SILICOM_M1E10G2BPI9T_SSID    0x480
357
358 #define SILICOM_M2E10G2BPI9CX4_SSID  0x581
359 #define SILICOM_M2E10G2BPI9SR_SSID   0x582
360 #define SILICOM_M2E10G2BPI9LR_SSID   0x583
361 #define SILICOM_M2E10G2BPI9T_SSID    0x580
362
363 #define SILICOM_PE210G2BPI9CX4_SSID  0x121
364 #define SILICOM_PE210G2BPI9SR_SSID   0x122
365 #define SILICOM_PE210G2BPI9LR_SSID   0x123
366 #define SILICOM_PE210G2BPI9T_SSID    0x120
367
368 #define DBI_IF_SERIES(pid) \
369         ((pid == SILICOM_PE10GDBISR_SSID) || \
370          (pid == SILICOM_PE10GDBILR_SSID) || \
371          (pid == SILICOM_XE10G2BPILR_SSID) || \
372          (pid == SILICOM_PE210G2DBi9LR_SSID))
373
374 #define PEGF5_IF_SERIES(pid) \
375         ((pid == SILICOM_PEG2BPFI5_SSID) || \
376          (pid == SILICOM_PEG2BPFI5LX_SSID) || \
377          (pid == SILICOM_PEG4BPFI6_SSID) || \
378          (pid == SILICOM_PEG4BPFI6LX_SSID) || \
379          (pid == SILICOM_PEG4BPFI6ZX_SSID) || \
380          (pid == SILICOM_PEG2BPFI6_SSID) || \
381          (pid == SILICOM_PEG2BPFI6LX_SSID) || \
382          (pid == SILICOM_PEG2BPFI6ZX_SSID) || \
383          (pid == SILICOM_PEG2BPFI6FLXM_SSID) || \
384          (pid == SILICOM_PEG2DBFI6_SSID) || \
385          (pid == SILICOM_PEG2DBFI6LX_SSID) || \
386          (pid == SILICOM_PEG2DBFI6ZX_SSID) || \
387          (pid == SILICOM_PEG4BPI6FC_SSID) || \
388          (pid == SILICOM_PEG4BPFI6FCLX_SSID) || \
389          (pid == SILICOM_PEG4BPI6FC_SSID) || \
390          (pid == SILICOM_M1EG2BPFI6_SSID) || \
391          (pid == SILICOM_M1EG2BPFI6LX_SSID) || \
392          (pid == SILICOM_M1EG2BPFI6ZX_SSID) || \
393          (pid == SILICOM_M1EG4BPFI6_SSID) || \
394          (pid == SILICOM_M1EG4BPFI6LX_SSID) || \
395          (pid == SILICOM_M1EG4BPFI6ZX_SSID) || \
396          (pid == SILICOM_M2EG2BPFI6_SSID) || \
397          (pid == SILICOM_M2EG2BPFI6LX_SSID) || \
398          (pid == SILICOM_M2EG2BPFI6ZX_SSID) || \
399          (pid == SILICOM_M2EG4BPFI6_SSID) || \
400          (pid == SILICOM_M2EG4BPFI6LX_SSID) || \
401          (pid == SILICOM_M2EG4BPFI6ZX_SSID) || \
402          (pid == SILICOM_PEG4BPFI6FCZX_SSID))
403
404 #define PEG5_IF_SERIES(pid) \
405         ((pid == SILICOM_PEG4BPI6_SSID) || \
406          (pid == SILICOM_PEG2BPI6_SSID) || \
407          (pid == SILICOM_PEG4BPI6FC_SSID) || \
408          (pid == SILICOM_PEG6BPI6_SSID) || \
409          (pid == SILICOM_PEG2BPI6SC6_SSID) || \
410          (pid == SILICOM_MEG2BPI6_SSID) || \
411          (pid == SILICOM_XEG2BPI6_SSID) || \
412          (pid == SILICOM_MEG4BPI6_SSID) || \
413          (pid == SILICOM_M1EG2BPI6_SSID) || \
414          (pid == SILICOM_M1EG4BPI6_SSID) || \
415          (pid == SILICOM_M1EG6BPI6_SSID) || \
416          (pid == SILICOM_PEG6BPI_SSID) || \
417          (pid == SILICOM_PEG4BPIL_SSID) || \
418          (pid == SILICOM_PEG2BISC6_SSID) || \
419          (pid == SILICOM_PEG2BPI5_SSID))
420
421 #define PEG80_IF_SERIES(pid) \
422         ((pid == SILICOM_M1E2G4BPi80_SSID) || \
423          (pid == SILICOM_M6E2G8BPi80_SSID) || \
424          (pid == SILICOM_PE2G4BPi80L_SSID) || \
425          (pid == SILICOM_M6E2G8BPi80A_SSID) || \
426          (pid == SILICOM_PE2G2BPi35_SSID) || \
427          (pid == SILICOM_PAC1200BPi35_SSID) || \
428          (pid == SILICOM_PE2G4BPi35_SSID) || \
429          (pid == SILICOM_PE2G4BPi35L_SSID) || \
430          (pid == SILICOM_PE2G6BPi35_SSID) || \
431          (pid == SILICOM_PE2G2BPi80_SSID) || \
432          (pid == SILICOM_PE2G4BPi80_SSID) || \
433          (pid == SILICOM_PE2G4BPFi80_SSID) || \
434          (pid == SILICOM_PE2G4BPFi80LX_SSID) || \
435          (pid == SILICOM_PE2G4BPFi80ZX_SSID) || \
436          (pid == SILICOM_PE2G4BPFi80ZX_SSID) || \
437          (pid == SILICOM_PE2G2BPFi80_SSID) || \
438          (pid == SILICOM_PE2G2BPFi80LX_SSID) || \
439          (pid == SILICOM_PE2G2BPFi80ZX_SSID) || \
440          (pid == SILICOM_PE2G2BPFi35_SSID) || \
441          (pid == SILICOM_PE2G2BPFi35LX_SSID) || \
442          (pid == SILICOM_PE2G2BPFi35ZX_SSID) || \
443          (pid == SILICOM_PE2G4BPFi35_SSID) || \
444          (pid == SILICOM_PE2G4BPFi35LX_SSID) || \
445          (pid == SILICOM_PE2G4BPFi35ZX_SSID))
446
447 #define PEGF80_IF_SERIES(pid) \
448         ((pid == SILICOM_PE2G4BPFi80_SSID) || \
449          (pid == SILICOM_PE2G4BPFi80LX_SSID) || \
450          (pid == SILICOM_PE2G4BPFi80ZX_SSID) || \
451          (pid == SILICOM_PE2G4BPFi80ZX_SSID) || \
452          (pid == SILICOM_M1E2G4BPFi80_SSID) || \
453          (pid == SILICOM_M1E2G4BPFi80LX_SSID) || \
454          (pid == SILICOM_M1E2G4BPFi80ZX_SSID) || \
455          (pid == SILICOM_PE2G2BPFi80_SSID) || \
456          (pid == SILICOM_PE2G2BPFi80LX_SSID) || \
457          (pid == SILICOM_PE2G2BPFi80ZX_SSID) || \
458          (pid == SILICOM_PE2G2BPFi35_SSID) || \
459          (pid == SILICOM_PE2G2BPFi35LX_SSID) || \
460          (pid == SILICOM_PE2G2BPFi35ZX_SSID) || \
461          (pid == SILICOM_PE2G4BPFi35_SSID) || \
462          (pid == SILICOM_PE2G4BPFi35LX_SSID) || \
463          (pid == SILICOM_PE2G4BPFi35ZX_SSID))
464
465 #define BP10G9_IF_SERIES(pid) \
466         ((pid == INTEL_PE210G2SPI9_SSID) || \
467          (pid == SILICOM_M1E10G2BPI9CX4_SSID) || \
468          (pid == SILICOM_M1E10G2BPI9SR_SSID) || \
469          (pid == SILICOM_M1E10G2BPI9LR_SSID) || \
470          (pid == SILICOM_M1E10G2BPI9T_SSID) || \
471          (pid == SILICOM_M2E10G2BPI9CX4_SSID) || \
472          (pid == SILICOM_M2E10G2BPI9SR_SSID) || \
473          (pid == SILICOM_M2E10G2BPI9LR_SSID) || \
474          (pid == SILICOM_M2E10G2BPI9T_SSID) || \
475          (pid == SILICOM_PE210G2BPI9CX4_SSID) || \
476          (pid == SILICOM_PE210G2BPI9SR_SSID) || \
477          (pid == SILICOM_PE210G2BPI9LR_SSID) || \
478          (pid == SILICOM_PE210G2DBi9SR_SSID) || \
479          (pid == SILICOM_PE210G2DBi9SRRB_SSID) || \
480          (pid == SILICOM_PE210G2DBi9LR_SSID) || \
481          (pid == SILICOM_PE210G2DBi9LRRB_SSID) || \
482          (pid == SILICOM_PE310G4DBi940SR_SSID) || \
483          (pid == SILICOM_PEG2BISC6_SSID) || \
484          (pid == SILICOM_PE310G4BPi9T_SSID) || \
485          (pid == SILICOM_PE310G4BPi9SR_SSID) || \
486          (pid == SILICOM_PE310G4BPi9LR_SSID) || \
487          (pid == SILICOM_PE210G2BPI9T_SSID))
488
489 /*******************************************************/
490 /* 1G INTERFACE ****************************************/
491 /*******************************************************/
492
493 /* Intel Registers */
494 #define BPCTLI_CTRL          0x00000
495 #define BPCTLI_CTRL_SWDPIO0  0x00400000
496 #define BPCTLI_CTRL_SWDPIN0  0x00040000
497
498 #define BPCTLI_CTRL_EXT 0x00018 /* Extended Device Control - RW */
499 #define BPCTLI_STATUS   0x00008 /* Device Status - RO */
500
501 /* HW related */
502 #define BPCTLI_CTRL_EXT_SDP6_DATA 0x00000040    /* Value of SW Defineable Pin 6 */
503 #define BPCTLI_CTRL_EXT_SDP7_DATA 0x00000080    /* Value of SW Defineable Pin 7 */
504 #define BPCTLI_CTRL_SDP0_DATA     0x00040000    /* SWDPIN 0 value */
505 #define BPCTLI_CTRL_EXT_SDP6_DIR  0x00000400    /* Direction of SDP6 0=in 1=out */
506 #define BPCTLI_CTRL_EXT_SDP7_DIR  0x00000800    /* Direction of SDP7 0=in 1=out */
507 #define BPCTLI_CTRL_SDP0_DIR      0x00400000    /* SDP0 Input or output */
508 #define BPCTLI_CTRL_SWDPIN1       0x00080000
509 #define BPCTLI_CTRL_SDP1_DIR      0x00800000
510
511 #define BPCTLI_STATUS_LU          0x00000002    /* Link up.0=no,1=link */
512
513 #define BPCTLI_CTRL_SDP0_SHIFT     18
514 #define BPCTLI_CTRL_EXT_SDP6_SHIFT 6
515
516 #define BPCTLI_STATUS_TBIMODE     0x00000020
517 #define BPCTLI_CTRL_EXT_LINK_MODE_PCIE_SERDES  0x00C00000
518 #define BPCTLI_CTRL_EXT_LINK_MODE_MASK         0x00C00000
519
520 #define BPCTLI_CTRL_EXT_MCLK_DIR  BPCTLI_CTRL_EXT_SDP7_DIR
521 #define BPCTLI_CTRL_EXT_MCLK_DATA BPCTLI_CTRL_EXT_SDP7_DATA
522 #define BPCTLI_CTRL_EXT_MDIO_DIR  BPCTLI_CTRL_EXT_SDP6_DIR
523 #define BPCTLI_CTRL_EXT_MDIO_DATA BPCTLI_CTRL_EXT_SDP6_DATA
524
525 #define BPCTLI_CTRL_EXT_MCLK_DIR5  BPCTLI_CTRL_SDP1_DIR
526 #define BPCTLI_CTRL_EXT_MCLK_DATA5 BPCTLI_CTRL_SWDPIN1
527 #define BPCTLI_CTRL_EXT_MCLK_DIR80  BPCTLI_CTRL_EXT_SDP6_DIR
528 #define BPCTLI_CTRL_EXT_MCLK_DATA80 BPCTLI_CTRL_EXT_SDP6_DATA
529 #define BPCTLI_CTRL_EXT_MDIO_DIR5  BPCTLI_CTRL_SWDPIO0
530 #define BPCTLI_CTRL_EXT_MDIO_DATA5 BPCTLI_CTRL_SWDPIN0
531 #define BPCTLI_CTRL_EXT_MDIO_DIR80  BPCTLI_CTRL_SWDPIO0
532 #define BPCTLI_CTRL_EXT_MDIO_DATA80 BPCTLI_CTRL_SWDPIN0
533
534 #define BPCTL_WRITE_REG(a, reg, value) \
535         (writel((value), (void *)(((a)->mem_map) + BPCTLI_##reg)))
536
537 #define BPCTL_READ_REG(a, reg) ( \
538         readl((void *)((a)->mem_map) + BPCTLI_##reg))
539
540 #define BPCTL_WRITE_FLUSH(a) BPCTL_READ_REG(a, STATUS)
541
542 #define BPCTL_BP_WRITE_REG(a, reg, value) ({ \
543         BPCTL_WRITE_REG(a, reg, value); \
544         BPCTL_WRITE_FLUSH(a); })
545
546 /**************************************************************/
547 /************** 82575 Interface********************************/
548 /**************************************************************/
549
550 #define BPCTLI_MII_CR_POWER_DOWN       0x0800
551 #define BPCTLI_PHY_CONTROL      0x00    /* Control Register */
552 #define BPCTLI_MDIC     0x00020 /* MDI Control - RW */
553 #define BPCTLI_IGP01E1000_PHY_PAGE_SELECT        0x1F   /* Page Select */
554 #define BPCTLI_MAX_PHY_REG_ADDRESS    0x1F      /* 5 bit address bus (0-0x1F) */
555
556 #define BPCTLI_MDIC_DATA_MASK 0x0000FFFF
557 #define BPCTLI_MDIC_REG_MASK  0x001F0000
558 #define BPCTLI_MDIC_REG_SHIFT 16
559 #define BPCTLI_MDIC_PHY_MASK  0x03E00000
560 #define BPCTLI_MDIC_PHY_SHIFT 21
561 #define BPCTLI_MDIC_OP_WRITE  0x04000000
562 #define BPCTLI_MDIC_OP_READ   0x08000000
563 #define BPCTLI_MDIC_READY     0x10000000
564 #define BPCTLI_MDIC_INT_EN    0x20000000
565 #define BPCTLI_MDIC_ERROR     0x40000000
566
567 #define BPCTLI_SWFW_PHY0_SM  0x02
568 #define BPCTLI_SWFW_PHY1_SM  0x04
569
570 #define BPCTLI_SW_FW_SYNC  0x05B5C      /* Software-Firmware Synchronization - RW */
571
572 #define BPCTLI_SWSM      0x05B50        /* SW Semaphore */
573 #define BPCTLI_FWSM      0x05B54        /* FW Semaphore */
574
575 #define BPCTLI_SWSM_SMBI         0x00000001     /* Driver Semaphore bit */
576 #define BPCTLI_SWSM_SWESMBI      0x00000002     /* FW Semaphore bit */
577 #define BPCTLI_MAX_PHY_MULTI_PAGE_REG 0xF
578 #define BPCTLI_GEN_POLL_TIMEOUT          640
579
580 /********************************************************/
581
582 /********************************************************/
583 /* 10G INTERFACE ****************************************/
584 /********************************************************/
585
586 #define BP10G_I2CCTL              0x28
587
588 /* I2CCTL Bit Masks */
589 #define BP10G_I2C_CLK_IN    0x00000001
590 #define BP10G_I2C_CLK_OUT   0x00000002
591 #define BP10G_I2C_DATA_IN   0x00000004
592 #define BP10G_I2C_DATA_OUT  0x00000008
593
594 #define BP10G_ESDP                0x20
595
596 #define BP10G_SDP0_DIR            0x100
597 #define BP10G_SDP1_DIR            0x200
598 #define BP10G_SDP3_DIR            0x800
599 #define BP10G_SDP4_DIR            BIT_12
600 #define BP10G_SDP5_DIR            0x2000
601 #define BP10G_SDP0_DATA           0x001
602 #define BP10G_SDP1_DATA           0x002
603 #define BP10G_SDP3_DATA           0x008
604 #define BP10G_SDP4_DATA           0x010
605 #define BP10G_SDP5_DATA           0x020
606
607 #define BP10G_SDP2_DIR            0x400
608 #define BP10G_SDP2_DATA            0x4
609
610 #define BP10G_EODSDP              0x28
611
612 #define BP10G_SDP6_DATA_IN        0x001
613 #define BP10G_SDP6_DATA_OUT       0x002
614
615 #define BP10G_SDP7_DATA_IN        0x004
616 #define BP10G_SDP7_DATA_OUT       0x008
617
618 #define BP10G_MCLK_DATA_OUT       BP10G_SDP7_DATA_OUT
619 #define BP10G_MDIO_DATA_OUT       BP10G_SDP6_DATA_OUT
620 #define BP10G_MDIO_DATA_IN        BP10G_SDP6_DATA_IN
621
622 #define BP10G_MDIO_DATA           /*BP10G_SDP5_DATA*/ BP10G_SDP3_DATA
623 #define BP10G_MDIO_DIR            /*BP10G_SDP5_DIR*/  BP10G_SDP3_DATA
624
625 /*#define BP10G_MCLK_DATA_OUT9       BP10G_I2C_CLK_OUT
626 #define BP10G_MDIO_DATA_OUT9       BP10G_I2C_DATA_OUT*/
627
628                                        /*#define BP10G_MCLK_DATA_OUT9*//*BP10G_I2C_DATA_OUT */
629 #define BP10G_MDIO_DATA_OUT9           BP10G_I2C_DATA_OUT       /*BP10G_I2C_CLK_OUT */
630
631 /* VIA EOSDP ! */
632 #define BP10G_MCLK_DATA_OUT9           BP10G_SDP4_DATA
633 #define BP10G_MCLK_DIR_OUT9            BP10G_SDP4_DIR
634
635 /*#define BP10G_MDIO_DATA_IN9        BP10G_I2C_DATA_IN*/
636
637 #define BP10G_MDIO_DATA_IN9           BP10G_I2C_DATA_IN /*BP10G_I2C_CLK_IN */
638
639 #define BP540_MDIO_DATA           /*BP10G_SDP5_DATA*/ BP10G_SDP0_DATA
640 #define BP540_MDIO_DIR            /*BP10G_SDP5_DIR*/  BP10G_SDP0_DIR
641 #define BP540_MCLK_DATA       BP10G_SDP2_DATA
642 #define BP540_MCLK_DIR       BP10G_SDP2_DIR
643
644 #define BP10G_WRITE_REG(a, reg, value) \
645         (writel((value), (void *)(((a)->mem_map) + BP10G_##reg)))
646
647 #define BP10G_READ_REG(a, reg) ( \
648         readl((void *)((a)->mem_map) + BP10G_##reg))
649
650 /*****BROADCOM*******************************************/
651
652 #define BP10GB_MISC_REG_GPIO                                             0xa490
653 #define BP10GB_GPIO3_P0                              BIT_3
654 #define BP10GB_GPIO3_P1                              BIT_7
655
656 #define BP10GB_GPIO3_SET_P0                          BIT_11
657 #define BP10GB_GPIO3_CLR_P0                          BIT_19
658 #define BP10GB_GPIO3_OE_P0                           BIT_27
659
660 #define BP10GB_GPIO3_SET_P1                          BIT_15
661 #define BP10GB_GPIO3_CLR_P1                          BIT_23
662 #define BP10GB_GPIO3_OE_P1                           BIT_31
663
664 #define BP10GB_GPIO0_P1                              0x10
665 #define BP10GB_GPIO0_P0                              0x1
666 #define BP10GB_GPIO0_CLR_P0                          0x10000
667 #define BP10GB_GPIO0_CLR_P1                          0x100000
668 #define BP10GB_GPIO0_SET_P0                          0x100
669 #define BP10GB_GPIO0_SET_P1                          0x1000
670
671 #define BP10GB_GPIO0_OE_P1                           0x10000000
672 #define BP10GB_GPIO0_OE_P0                           0x1000000
673
674 #define BP10GB_MISC_REG_SPIO                                             0xa4fc
675 #define BP10GB_GPIO4_OE                              BIT_28
676 #define BP10GB_GPIO5_OE                              BIT_29
677 #define BP10GB_GPIO4_CLR                             BIT_20
678 #define BP10GB_GPIO5_CLR                             BIT_21
679 #define BP10GB_GPIO4_SET                             BIT_12
680 #define BP10GB_GPIO5_SET                             BIT_13
681 #define BP10GB_GPIO4                                 BIT_4
682 #define BP10GB_GPIO5                                 BIT_5
683
684 #define BP10GB_MCLK_DIR  BP10GB_GPIO5_OE
685 #define BP10GB_MDIO_DIR  BP10GB_GPIO4_OE
686
687 #define BP10GB_MCLK_DATA BP10GB_GPIO5
688 #define BP10GB_MDIO_DATA BP10GB_GPIO4
689
690 #define BP10GB_MCLK_SET BP10GB_GPIO5_SET
691 #define BP10GB_MDIO_SET BP10GB_GPIO4_SET
692
693 #define BP10GB_MCLK_CLR BP10GB_GPIO5_CLR
694 #define BP10GB_MDIO_CLR BP10GB_GPIO4_CLR
695
696 #define BP10GB_WRITE_REG(a, reg, value) \
697         (writel((value), (void *)(((a)->mem_map) + BP10GB_##reg)))
698
699 #define BP10GB_READ_REG(a, reg) ( \
700         readl((void *)((a)->mem_map) + BP10GB_##reg))
701
702 #endif
703
704 int bp_proc_create(void);