openssl: update to 1.0.2d
[tomato.git] / release / src / include / bcmsrom.h
blobf9b1295aaaa4d9b2d74fe98fbc9392896f196711
1 /*
2 * Misc useful routines to access NIC local SROM/OTP .
4 * Copyright 2004, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
12 * $Id$
15 #ifndef _bcmsrom_h_
16 #define _bcmsrom_h_
18 /* Maximum srom: 4 Kilobits == 512 bytes */
19 #define SROM_MAX 512
22 #define SROM_WORDS 64
24 #define SROM3_SWRGN_OFF 28 /* s/w region offset in words */
26 #define SROM_SSID 2
28 #define SROM_WL1LHMAXP 29
30 #define SROM_WL1LPAB0 30
31 #define SROM_WL1LPAB1 31
32 #define SROM_WL1LPAB2 32
34 #define SROM_WL1HPAB0 33
35 #define SROM_WL1HPAB1 34
36 #define SROM_WL1HPAB2 35
38 #define SROM_MACHI_IL0 36
39 #define SROM_MACMID_IL0 37
40 #define SROM_MACLO_IL0 38
41 #define SROM_MACHI_ET0 39
42 #define SROM_MACMID_ET0 40
43 #define SROM_MACLO_ET0 41
44 #define SROM_MACHI_ET1 42
45 #define SROM_MACMID_ET1 43
46 #define SROM_MACLO_ET1 44
47 #define SROM3_MACHI 37
48 #define SROM3_MACMID 38
49 #define SROM3_MACLO 39
51 #define SROM_BXARSSI2G 40
52 #define SROM_BXARSSI5G 41
54 #define SROM_TRI52G 42
55 #define SROM_TRI5GHL 43
57 #define SROM_RXPO52G 45
59 #define SROM2_ENETPHY 45
61 #define SROM_AABREV 46
62 /* Fields in AABREV */
63 #define SROM_BR_MASK 0x00ff
64 #define SROM_CC_MASK 0x0f00
65 #define SROM_CC_SHIFT 8
66 #define SROM_AA0_MASK 0x3000
67 #define SROM_AA0_SHIFT 12
68 #define SROM_AA1_MASK 0xc000
69 #define SROM_AA1_SHIFT 14
71 #define SROM_WL0PAB0 47
72 #define SROM_WL0PAB1 48
73 #define SROM_WL0PAB2 49
75 #define SROM_LEDBH10 50
76 #define SROM_LEDBH32 51
78 #define SROM_WL10MAXP 52
80 #define SROM_WL1PAB0 53
81 #define SROM_WL1PAB1 54
82 #define SROM_WL1PAB2 55
84 #define SROM_ITT 56
86 #define SROM_BFL 57
87 #define SROM_BFL2 28
88 #define SROM3_BFL2 61
90 #define SROM_AG10 58
92 #define SROM_CCODE 59
94 #define SROM_OPO 60
96 #define SROM3_LEDDC 62
98 #define SROM_CRCREV 63
100 /* SROM Rev 4: Reallocate the software part of the srom to accomodate
101 * MIMO features. It assumes up to two PCIE functions and 440 bytes
102 * of useable srom i.e. the useable storage in chips with OTP that
103 * implements hardware redundancy.
106 #define SROM4_WORDS 220
108 #define SROM4_SIGN 32
109 #define SROM4_SIGNATURE 0x5372
111 #define SROM4_BREV 33
113 #define SROM4_BFL0 34
114 #define SROM4_BFL1 35
115 #define SROM4_BFL2 36
116 #define SROM4_BFL3 37
117 #define SROM5_BFL0 37
118 #define SROM5_BFL1 38
119 #define SROM5_BFL2 39
120 #define SROM5_BFL3 40
122 #define SROM4_MACHI 38
123 #define SROM4_MACMID 39
124 #define SROM4_MACLO 40
125 #define SROM5_MACHI 41
126 #define SROM5_MACMID 42
127 #define SROM5_MACLO 43
129 #define SROM4_CCODE 41
130 #define SROM4_REGREV 42
131 #define SROM5_CCODE 34
132 #define SROM5_REGREV 35
134 #define SROM4_LEDBH10 43
135 #define SROM4_LEDBH32 44
136 #define SROM5_LEDBH10 59
137 #define SROM5_LEDBH32 60
139 #define SROM4_LEDDC 45
140 #define SROM5_LEDDC 45
142 #define SROM4_AA 46
143 #define SROM4_AA2G_MASK 0x00ff
144 #define SROM4_AA2G_SHIFT 0
145 #define SROM4_AA5G_MASK 0xff00
146 #define SROM4_AA5G_SHIFT 8
148 #define SROM4_AG10 47
149 #define SROM4_AG32 48
151 #define SROM4_TXPID2G 49
152 #define SROM4_TXPID5G 51
153 #define SROM4_TXPID5GL 53
154 #define SROM4_TXPID5GH 55
156 #define SROM4_TXRXC 61
157 #define SROM4_TXCHAIN_MASK 0x000f
158 #define SROM4_TXCHAIN_SHIFT 0
159 #define SROM4_RXCHAIN_MASK 0x00f0
160 #define SROM4_RXCHAIN_SHIFT 4
161 #define SROM4_SWITCH_MASK 0xff00
162 #define SROM4_SWITCH_SHIFT 8
164 /* Per-path fields */
165 #define MAX_PATH 4
166 #define SROM4_PATH0 64
167 #define SROM4_PATH1 87
168 #define SROM4_PATH2 110
169 #define SROM4_PATH3 133
171 #define SROM4_2G_ITT_MAXP 0
172 #define SROM4_2G_PA 1
173 #define SROM4_5G_ITT_MAXP 5
174 #define SROM4_5GLH_MAXP 6
175 #define SROM4_5G_PA 7
176 #define SROM4_5GL_PA 11
177 #define SROM4_5GH_PA 15
179 /* Fields in the ITT_MAXP and 5GLH_MAXP words */
180 #define B2G_MAXP_MASK 0xff
181 #define B2G_ITT_SHIFT 8
182 #define B5G_MAXP_MASK 0xff
183 #define B5G_ITT_SHIFT 8
184 #define B5GH_MAXP_MASK 0xff
185 #define B5GL_MAXP_SHIFT 8
187 /* All the miriad power offsets */
188 #define SROM4_2G_CCKPO 156
189 #define SROM4_2G_OFDMPO 157
190 #define SROM4_5G_OFDMPO 159
191 #define SROM4_5GL_OFDMPO 161
192 #define SROM4_5GH_OFDMPO 163
193 #define SROM4_2G_MCSPO 165
194 #define SROM4_5G_MCSPO 173
195 #define SROM4_5GL_MCSPO 181
196 #define SROM4_5GH_MCSPO 189
197 #define SROM4_CDDPO 197
198 #define SROM4_STBCPO 198
199 #define SROM4_BW40PO 199
200 #define SROM4_BWDUPPO 200
202 #define SROM4_CRCREV 219
205 /*SROM Rev 8: Make space for a 48word hardware header for PCIe rev >= 6.
206 * This is acombined srom for both MIMO and SISO boards, usable in
207 * the .130 4Kilobit OTP with hardware redundancy.
210 #define SROM8_SIGN 64
212 #define SROM8_BREV 65
214 #define SROM8_BFL0 66
215 #define SROM8_BFL1 67
216 #define SROM8_BFL2 68
217 #define SROM8_BFL3 69
219 #define SROM8_MACHI 70
220 #define SROM8_MACMID 71
221 #define SROM8_MACLO 72
223 #define SROM8_CCODE 73
224 #define SROM8_REGREV 74
226 #define SROM8_LEDBH10 75
227 #define SROM8_LEDBH32 76
229 #define SROM8_LEDDC 77
231 #define SROM8_AA 78
233 #define SROM8_AG10 79
234 #define SROM8_AG32 80
236 #define SROM8_TXRXC 81
238 #define SROM8_BXARSSI2G 82
239 #define SROM8_BXARSSI5G 83
240 #define SROM8_TRI52G 84
241 #define SROM8_TRI5GHL 85
242 #define SROM8_RXPO52G 86
244 /* Per-path offsets & fields */
245 #define SROM8_PATH0 96
246 #define SROM8_PATH1 112
247 #define SROM8_PATH2 128
248 #define SROM8_PATH3 144
250 #define SROM8_2G_ITT_MAXP 0
251 #define SROM8_2G_PA 1
252 #define SROM8_5G_ITT_MAXP 4
253 #define SROM8_5GLH_MAXP 5
254 #define SROM8_5G_PA 6
255 #define SROM8_5GL_PA 9
256 #define SROM8_5GH_PA 12
258 /* All the miriad power offsets */
259 #define SROM8_2G_CCKPO 160
261 #define SROM8_2G_OFDMPO 161
262 #define SROM8_5G_OFDMPO 163
263 #define SROM8_5GL_OFDMPO 165
264 #define SROM8_5GH_OFDMPO 167
266 #define SROM8_2G_MCSPO 169
267 #define SROM8_5G_MCSPO 177
268 #define SROM8_5GL_MCSPO 185
269 #define SROM8_5GH_MCSPO 193
271 #define SROM8_CDDPO 201
272 #define SROM8_STBCPO 202
273 #define SROM8_BW40PO 203
274 #define SROM8_BWDUPPO 204
276 /* SISO PA parameters are in the path0 spaces */
277 #define SROM8_SISO 96
279 /* Legacy names for SISO PA paramters */
280 #define SROM8_W0_ITTMAXP (SROM8_SISO + SROM8_2G_ITT_MAXP)
281 #define SROM8_W0_PAB0 (SROM8_SISO + SROM8_2G_PA)
282 #define SROM8_W0_PAB1 (SROM8_SISO + SROM8_2G_PA + 1)
283 #define SROM8_W0_PAB2 (SROM8_SISO + SROM8_2G_PA + 2)
284 #define SROM8_W1_ITTMAXP (SROM8_SISO + SROM8_5G_ITT_MAXP)
285 #define SROM8_W1_MAXP_LCHC (SROM8_SISO + SROM8_5GLH_MAXP)
286 #define SROM8_W1_PAB0 (SROM8_SISO + SROM8_5G_PA)
287 #define SROM8_W1_PAB1 (SROM8_SISO + SROM8_5G_PA + 1)
288 #define SROM8_W1_PAB2 (SROM8_SISO + SROM8_5G_PA + 2)
289 #define SROM8_W1_PAB0_LC (SROM8_SISO + SROM8_5GL_PA)
290 #define SROM8_W1_PAB1_LC (SROM8_SISO + SROM8_5GL_PA + 1)
291 #define SROM8_W1_PAB2_LC (SROM8_SISO + SROM8_5GL_PA + 2)
292 #define SROM8_W1_PAB0_HC (SROM8_SISO + SROM8_5GH_PA)
293 #define SROM8_W1_PAB1_HC (SROM8_SISO + SROM8_5GH_PA + 1)
294 #define SROM8_W1_PAB2_HC (SROM8_SISO + SROM8_5GH_PA + 2)
296 #define SROM8_CRCREV 219
298 /* Prototypes */
299 extern int srom_var_init(sb_t *sbh, uint bus, void *curmap, osl_t *osh,
300 char **vars, uint *count);
302 extern int srom_read(sb_t *sbh, uint bus, void *curmap, osl_t *osh,
303 uint byteoff, uint nbytes, uint16 *buf);
304 extern int srom_write(sb_t *sbh, uint bus, void *curmap, osl_t *osh,
305 uint byteoff, uint nbytes, uint16 *buf);
307 extern int srom_parsecis(osl_t *osh, uint8 **pcis, uint ciscnt,
308 char **vars, uint *count);
310 #endif /* _bcmsrom_h_ */