1 /***********************license start***************
2  * Author: Cavium Networks
3  *
4  * Contact: support@caviumnetworks.com
5  * This file is part of the OCTEON SDK
6  *
7  * Copyright (c) 2003-2008 Cavium Networks
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License, Version 2, as
11  * published by the Free Software Foundation.
12  *
13  * This file is distributed in the hope that it will be useful, but
14  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16  * NONINFRINGEMENT.  See the GNU General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this file; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22  * or visit http://www.gnu.org/licenses/.
23  *
24  * This file may also be available under a different license from Cavium.
25  * Contact Cavium Networks for more information
26  ***********************license end**************************************/
27 
28 #ifndef __CVMX_L2D_DEFS_H__
29 #define __CVMX_L2D_DEFS_H__
30 
31 #define CVMX_L2D_BST0 \
32 	 CVMX_ADD_IO_SEG(0x0001180080000780ull)
33 #define CVMX_L2D_BST1 \
34 	 CVMX_ADD_IO_SEG(0x0001180080000788ull)
35 #define CVMX_L2D_BST2 \
36 	 CVMX_ADD_IO_SEG(0x0001180080000790ull)
37 #define CVMX_L2D_BST3 \
38 	 CVMX_ADD_IO_SEG(0x0001180080000798ull)
39 #define CVMX_L2D_ERR \
40 	 CVMX_ADD_IO_SEG(0x0001180080000010ull)
41 #define CVMX_L2D_FADR \
42 	 CVMX_ADD_IO_SEG(0x0001180080000018ull)
43 #define CVMX_L2D_FSYN0 \
44 	 CVMX_ADD_IO_SEG(0x0001180080000020ull)
45 #define CVMX_L2D_FSYN1 \
46 	 CVMX_ADD_IO_SEG(0x0001180080000028ull)
47 #define CVMX_L2D_FUS0 \
48 	 CVMX_ADD_IO_SEG(0x00011800800007A0ull)
49 #define CVMX_L2D_FUS1 \
50 	 CVMX_ADD_IO_SEG(0x00011800800007A8ull)
51 #define CVMX_L2D_FUS2 \
52 	 CVMX_ADD_IO_SEG(0x00011800800007B0ull)
53 #define CVMX_L2D_FUS3 \
54 	 CVMX_ADD_IO_SEG(0x00011800800007B8ull)
55 
56 union cvmx_l2d_bst0 {
57 	uint64_t u64;
58 	struct cvmx_l2d_bst0_s {
59 		uint64_t reserved_35_63:29;
60 		uint64_t ftl:1;
61 		uint64_t q0stat:34;
62 	} s;
63 	struct cvmx_l2d_bst0_s cn30xx;
64 	struct cvmx_l2d_bst0_s cn31xx;
65 	struct cvmx_l2d_bst0_s cn38xx;
66 	struct cvmx_l2d_bst0_s cn38xxp2;
67 	struct cvmx_l2d_bst0_s cn50xx;
68 	struct cvmx_l2d_bst0_s cn52xx;
69 	struct cvmx_l2d_bst0_s cn52xxp1;
70 	struct cvmx_l2d_bst0_s cn56xx;
71 	struct cvmx_l2d_bst0_s cn56xxp1;
72 	struct cvmx_l2d_bst0_s cn58xx;
73 	struct cvmx_l2d_bst0_s cn58xxp1;
74 };
75 
76 union cvmx_l2d_bst1 {
77 	uint64_t u64;
78 	struct cvmx_l2d_bst1_s {
79 		uint64_t reserved_34_63:30;
80 		uint64_t q1stat:34;
81 	} s;
82 	struct cvmx_l2d_bst1_s cn30xx;
83 	struct cvmx_l2d_bst1_s cn31xx;
84 	struct cvmx_l2d_bst1_s cn38xx;
85 	struct cvmx_l2d_bst1_s cn38xxp2;
86 	struct cvmx_l2d_bst1_s cn50xx;
87 	struct cvmx_l2d_bst1_s cn52xx;
88 	struct cvmx_l2d_bst1_s cn52xxp1;
89 	struct cvmx_l2d_bst1_s cn56xx;
90 	struct cvmx_l2d_bst1_s cn56xxp1;
91 	struct cvmx_l2d_bst1_s cn58xx;
92 	struct cvmx_l2d_bst1_s cn58xxp1;
93 };
94 
95 union cvmx_l2d_bst2 {
96 	uint64_t u64;
97 	struct cvmx_l2d_bst2_s {
98 		uint64_t reserved_34_63:30;
99 		uint64_t q2stat:34;
100 	} s;
101 	struct cvmx_l2d_bst2_s cn30xx;
102 	struct cvmx_l2d_bst2_s cn31xx;
103 	struct cvmx_l2d_bst2_s cn38xx;
104 	struct cvmx_l2d_bst2_s cn38xxp2;
105 	struct cvmx_l2d_bst2_s cn50xx;
106 	struct cvmx_l2d_bst2_s cn52xx;
107 	struct cvmx_l2d_bst2_s cn52xxp1;
108 	struct cvmx_l2d_bst2_s cn56xx;
109 	struct cvmx_l2d_bst2_s cn56xxp1;
110 	struct cvmx_l2d_bst2_s cn58xx;
111 	struct cvmx_l2d_bst2_s cn58xxp1;
112 };
113 
114 union cvmx_l2d_bst3 {
115 	uint64_t u64;
116 	struct cvmx_l2d_bst3_s {
117 		uint64_t reserved_34_63:30;
118 		uint64_t q3stat:34;
119 	} s;
120 	struct cvmx_l2d_bst3_s cn30xx;
121 	struct cvmx_l2d_bst3_s cn31xx;
122 	struct cvmx_l2d_bst3_s cn38xx;
123 	struct cvmx_l2d_bst3_s cn38xxp2;
124 	struct cvmx_l2d_bst3_s cn50xx;
125 	struct cvmx_l2d_bst3_s cn52xx;
126 	struct cvmx_l2d_bst3_s cn52xxp1;
127 	struct cvmx_l2d_bst3_s cn56xx;
128 	struct cvmx_l2d_bst3_s cn56xxp1;
129 	struct cvmx_l2d_bst3_s cn58xx;
130 	struct cvmx_l2d_bst3_s cn58xxp1;
131 };
132 
133 union cvmx_l2d_err {
134 	uint64_t u64;
135 	struct cvmx_l2d_err_s {
136 		uint64_t reserved_6_63:58;
137 		uint64_t bmhclsel:1;
138 		uint64_t ded_err:1;
139 		uint64_t sec_err:1;
140 		uint64_t ded_intena:1;
141 		uint64_t sec_intena:1;
142 		uint64_t ecc_ena:1;
143 	} s;
144 	struct cvmx_l2d_err_s cn30xx;
145 	struct cvmx_l2d_err_s cn31xx;
146 	struct cvmx_l2d_err_s cn38xx;
147 	struct cvmx_l2d_err_s cn38xxp2;
148 	struct cvmx_l2d_err_s cn50xx;
149 	struct cvmx_l2d_err_s cn52xx;
150 	struct cvmx_l2d_err_s cn52xxp1;
151 	struct cvmx_l2d_err_s cn56xx;
152 	struct cvmx_l2d_err_s cn56xxp1;
153 	struct cvmx_l2d_err_s cn58xx;
154 	struct cvmx_l2d_err_s cn58xxp1;
155 };
156 
157 union cvmx_l2d_fadr {
158 	uint64_t u64;
159 	struct cvmx_l2d_fadr_s {
160 		uint64_t reserved_19_63:45;
161 		uint64_t fadru:1;
162 		uint64_t fowmsk:4;
163 		uint64_t fset:3;
164 		uint64_t fadr:11;
165 	} s;
166 	struct cvmx_l2d_fadr_cn30xx {
167 		uint64_t reserved_18_63:46;
168 		uint64_t fowmsk:4;
169 		uint64_t reserved_13_13:1;
170 		uint64_t fset:2;
171 		uint64_t reserved_9_10:2;
172 		uint64_t fadr:9;
173 	} cn30xx;
174 	struct cvmx_l2d_fadr_cn31xx {
175 		uint64_t reserved_18_63:46;
176 		uint64_t fowmsk:4;
177 		uint64_t reserved_13_13:1;
178 		uint64_t fset:2;
179 		uint64_t reserved_10_10:1;
180 		uint64_t fadr:10;
181 	} cn31xx;
182 	struct cvmx_l2d_fadr_cn38xx {
183 		uint64_t reserved_18_63:46;
184 		uint64_t fowmsk:4;
185 		uint64_t fset:3;
186 		uint64_t fadr:11;
187 	} cn38xx;
188 	struct cvmx_l2d_fadr_cn38xx cn38xxp2;
189 	struct cvmx_l2d_fadr_cn50xx {
190 		uint64_t reserved_18_63:46;
191 		uint64_t fowmsk:4;
192 		uint64_t fset:3;
193 		uint64_t reserved_8_10:3;
194 		uint64_t fadr:8;
195 	} cn50xx;
196 	struct cvmx_l2d_fadr_cn52xx {
197 		uint64_t reserved_18_63:46;
198 		uint64_t fowmsk:4;
199 		uint64_t fset:3;
200 		uint64_t reserved_10_10:1;
201 		uint64_t fadr:10;
202 	} cn52xx;
203 	struct cvmx_l2d_fadr_cn52xx cn52xxp1;
204 	struct cvmx_l2d_fadr_s cn56xx;
205 	struct cvmx_l2d_fadr_s cn56xxp1;
206 	struct cvmx_l2d_fadr_s cn58xx;
207 	struct cvmx_l2d_fadr_s cn58xxp1;
208 };
209 
210 union cvmx_l2d_fsyn0 {
211 	uint64_t u64;
212 	struct cvmx_l2d_fsyn0_s {
213 		uint64_t reserved_20_63:44;
214 		uint64_t fsyn_ow1:10;
215 		uint64_t fsyn_ow0:10;
216 	} s;
217 	struct cvmx_l2d_fsyn0_s cn30xx;
218 	struct cvmx_l2d_fsyn0_s cn31xx;
219 	struct cvmx_l2d_fsyn0_s cn38xx;
220 	struct cvmx_l2d_fsyn0_s cn38xxp2;
221 	struct cvmx_l2d_fsyn0_s cn50xx;
222 	struct cvmx_l2d_fsyn0_s cn52xx;
223 	struct cvmx_l2d_fsyn0_s cn52xxp1;
224 	struct cvmx_l2d_fsyn0_s cn56xx;
225 	struct cvmx_l2d_fsyn0_s cn56xxp1;
226 	struct cvmx_l2d_fsyn0_s cn58xx;
227 	struct cvmx_l2d_fsyn0_s cn58xxp1;
228 };
229 
230 union cvmx_l2d_fsyn1 {
231 	uint64_t u64;
232 	struct cvmx_l2d_fsyn1_s {
233 		uint64_t reserved_20_63:44;
234 		uint64_t fsyn_ow3:10;
235 		uint64_t fsyn_ow2:10;
236 	} s;
237 	struct cvmx_l2d_fsyn1_s cn30xx;
238 	struct cvmx_l2d_fsyn1_s cn31xx;
239 	struct cvmx_l2d_fsyn1_s cn38xx;
240 	struct cvmx_l2d_fsyn1_s cn38xxp2;
241 	struct cvmx_l2d_fsyn1_s cn50xx;
242 	struct cvmx_l2d_fsyn1_s cn52xx;
243 	struct cvmx_l2d_fsyn1_s cn52xxp1;
244 	struct cvmx_l2d_fsyn1_s cn56xx;
245 	struct cvmx_l2d_fsyn1_s cn56xxp1;
246 	struct cvmx_l2d_fsyn1_s cn58xx;
247 	struct cvmx_l2d_fsyn1_s cn58xxp1;
248 };
249 
250 union cvmx_l2d_fus0 {
251 	uint64_t u64;
252 	struct cvmx_l2d_fus0_s {
253 		uint64_t reserved_34_63:30;
254 		uint64_t q0fus:34;
255 	} s;
256 	struct cvmx_l2d_fus0_s cn30xx;
257 	struct cvmx_l2d_fus0_s cn31xx;
258 	struct cvmx_l2d_fus0_s cn38xx;
259 	struct cvmx_l2d_fus0_s cn38xxp2;
260 	struct cvmx_l2d_fus0_s cn50xx;
261 	struct cvmx_l2d_fus0_s cn52xx;
262 	struct cvmx_l2d_fus0_s cn52xxp1;
263 	struct cvmx_l2d_fus0_s cn56xx;
264 	struct cvmx_l2d_fus0_s cn56xxp1;
265 	struct cvmx_l2d_fus0_s cn58xx;
266 	struct cvmx_l2d_fus0_s cn58xxp1;
267 };
268 
269 union cvmx_l2d_fus1 {
270 	uint64_t u64;
271 	struct cvmx_l2d_fus1_s {
272 		uint64_t reserved_34_63:30;
273 		uint64_t q1fus:34;
274 	} s;
275 	struct cvmx_l2d_fus1_s cn30xx;
276 	struct cvmx_l2d_fus1_s cn31xx;
277 	struct cvmx_l2d_fus1_s cn38xx;
278 	struct cvmx_l2d_fus1_s cn38xxp2;
279 	struct cvmx_l2d_fus1_s cn50xx;
280 	struct cvmx_l2d_fus1_s cn52xx;
281 	struct cvmx_l2d_fus1_s cn52xxp1;
282 	struct cvmx_l2d_fus1_s cn56xx;
283 	struct cvmx_l2d_fus1_s cn56xxp1;
284 	struct cvmx_l2d_fus1_s cn58xx;
285 	struct cvmx_l2d_fus1_s cn58xxp1;
286 };
287 
288 union cvmx_l2d_fus2 {
289 	uint64_t u64;
290 	struct cvmx_l2d_fus2_s {
291 		uint64_t reserved_34_63:30;
292 		uint64_t q2fus:34;
293 	} s;
294 	struct cvmx_l2d_fus2_s cn30xx;
295 	struct cvmx_l2d_fus2_s cn31xx;
296 	struct cvmx_l2d_fus2_s cn38xx;
297 	struct cvmx_l2d_fus2_s cn38xxp2;
298 	struct cvmx_l2d_fus2_s cn50xx;
299 	struct cvmx_l2d_fus2_s cn52xx;
300 	struct cvmx_l2d_fus2_s cn52xxp1;
301 	struct cvmx_l2d_fus2_s cn56xx;
302 	struct cvmx_l2d_fus2_s cn56xxp1;
303 	struct cvmx_l2d_fus2_s cn58xx;
304 	struct cvmx_l2d_fus2_s cn58xxp1;
305 };
306 
307 union cvmx_l2d_fus3 {
308 	uint64_t u64;
309 	struct cvmx_l2d_fus3_s {
310 		uint64_t reserved_40_63:24;
311 		uint64_t ema_ctl:3;
312 		uint64_t reserved_34_36:3;
313 		uint64_t q3fus:34;
314 	} s;
315 	struct cvmx_l2d_fus3_cn30xx {
316 		uint64_t reserved_35_63:29;
317 		uint64_t crip_64k:1;
318 		uint64_t q3fus:34;
319 	} cn30xx;
320 	struct cvmx_l2d_fus3_cn31xx {
321 		uint64_t reserved_35_63:29;
322 		uint64_t crip_128k:1;
323 		uint64_t q3fus:34;
324 	} cn31xx;
325 	struct cvmx_l2d_fus3_cn38xx {
326 		uint64_t reserved_36_63:28;
327 		uint64_t crip_256k:1;
328 		uint64_t crip_512k:1;
329 		uint64_t q3fus:34;
330 	} cn38xx;
331 	struct cvmx_l2d_fus3_cn38xx cn38xxp2;
332 	struct cvmx_l2d_fus3_cn50xx {
333 		uint64_t reserved_40_63:24;
334 		uint64_t ema_ctl:3;
335 		uint64_t reserved_36_36:1;
336 		uint64_t crip_32k:1;
337 		uint64_t crip_64k:1;
338 		uint64_t q3fus:34;
339 	} cn50xx;
340 	struct cvmx_l2d_fus3_cn52xx {
341 		uint64_t reserved_40_63:24;
342 		uint64_t ema_ctl:3;
343 		uint64_t reserved_36_36:1;
344 		uint64_t crip_128k:1;
345 		uint64_t crip_256k:1;
346 		uint64_t q3fus:34;
347 	} cn52xx;
348 	struct cvmx_l2d_fus3_cn52xx cn52xxp1;
349 	struct cvmx_l2d_fus3_cn56xx {
350 		uint64_t reserved_40_63:24;
351 		uint64_t ema_ctl:3;
352 		uint64_t reserved_36_36:1;
353 		uint64_t crip_512k:1;
354 		uint64_t crip_1024k:1;
355 		uint64_t q3fus:34;
356 	} cn56xx;
357 	struct cvmx_l2d_fus3_cn56xx cn56xxp1;
358 	struct cvmx_l2d_fus3_cn58xx {
359 		uint64_t reserved_39_63:25;
360 		uint64_t ema_ctl:2;
361 		uint64_t reserved_36_36:1;
362 		uint64_t crip_512k:1;
363 		uint64_t crip_1024k:1;
364 		uint64_t q3fus:34;
365 	} cn58xx;
366 	struct cvmx_l2d_fus3_cn58xx cn58xxp1;
367 };
368 
369 #endif
370