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-2012 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_DPI_DEFS_H__
29#define __CVMX_DPI_DEFS_H__
30
31#define CVMX_DPI_BIST_STATUS (CVMX_ADD_IO_SEG(0x0001DF0000000000ull))
32#define CVMX_DPI_CTL (CVMX_ADD_IO_SEG(0x0001DF0000000040ull))
33#define CVMX_DPI_DMAX_COUNTS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8)
34#define CVMX_DPI_DMAX_DBELL(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8)
35#define CVMX_DPI_DMAX_ERR_RSP_STATUS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000A80ull) + ((offset) & 7) * 8)
36#define CVMX_DPI_DMAX_IBUFF_SADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8)
37#define CVMX_DPI_DMAX_IFLIGHT(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000A00ull) + ((offset) & 7) * 8)
38#define CVMX_DPI_DMAX_NADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8)
39#define CVMX_DPI_DMAX_REQBNK0(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8)
40#define CVMX_DPI_DMAX_REQBNK1(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8)
41#define CVMX_DPI_DMA_CONTROL (CVMX_ADD_IO_SEG(0x0001DF0000000048ull))
42#define CVMX_DPI_DMA_ENGX_EN(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8)
43#define CVMX_DPI_DMA_PPX_CNT(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000B00ull) + ((offset) & 31) * 8)
44#define CVMX_DPI_ENGX_BUF(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8)
45#define CVMX_DPI_INFO_REG (CVMX_ADD_IO_SEG(0x0001DF0000000980ull))
46#define CVMX_DPI_INT_EN (CVMX_ADD_IO_SEG(0x0001DF0000000010ull))
47#define CVMX_DPI_INT_REG (CVMX_ADD_IO_SEG(0x0001DF0000000008ull))
48#define CVMX_DPI_NCBX_CFG(block_id) (CVMX_ADD_IO_SEG(0x0001DF0000000800ull))
49#define CVMX_DPI_PINT_INFO (CVMX_ADD_IO_SEG(0x0001DF0000000830ull))
50#define CVMX_DPI_PKT_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000078ull))
51#define CVMX_DPI_REQ_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000058ull))
52#define CVMX_DPI_REQ_ERR_RSP_EN (CVMX_ADD_IO_SEG(0x0001DF0000000068ull))
53#define CVMX_DPI_REQ_ERR_RST (CVMX_ADD_IO_SEG(0x0001DF0000000060ull))
54#define CVMX_DPI_REQ_ERR_RST_EN (CVMX_ADD_IO_SEG(0x0001DF0000000070ull))
55#define CVMX_DPI_REQ_ERR_SKIP_COMP (CVMX_ADD_IO_SEG(0x0001DF0000000838ull))
56#define CVMX_DPI_REQ_GBL_EN (CVMX_ADD_IO_SEG(0x0001DF0000000050ull))
57#define CVMX_DPI_SLI_PRTX_CFG(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 3) * 8)
58static inline uint64_t CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)
59{
60	switch (cvmx_get_octeon_family()) {
61	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
62		return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + (offset) * 8;
63	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
64	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
65	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
66
67		if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS1))
68			return CVMX_ADD_IO_SEG(0x0001DF0000000928ull) + (offset) * 8;
69
70		if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS2))
71			return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + (offset) * 8;
72		return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + (offset) * 8;
73	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
74		return CVMX_ADD_IO_SEG(0x0001DF0000000928ull) + (offset) * 8;
75	}
76	return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + (offset) * 8;
77}
78
79#define CVMX_DPI_SLI_PRTX_ERR_INFO(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 3) * 8)
80
81union cvmx_dpi_bist_status {
82	uint64_t u64;
83	struct cvmx_dpi_bist_status_s {
84#ifdef __BIG_ENDIAN_BITFIELD
85		uint64_t reserved_47_63:17;
86		uint64_t bist:47;
87#else
88		uint64_t bist:47;
89		uint64_t reserved_47_63:17;
90#endif
91	} s;
92	struct cvmx_dpi_bist_status_s cn61xx;
93	struct cvmx_dpi_bist_status_cn63xx {
94#ifdef __BIG_ENDIAN_BITFIELD
95		uint64_t reserved_45_63:19;
96		uint64_t bist:45;
97#else
98		uint64_t bist:45;
99		uint64_t reserved_45_63:19;
100#endif
101	} cn63xx;
102	struct cvmx_dpi_bist_status_cn63xxp1 {
103#ifdef __BIG_ENDIAN_BITFIELD
104		uint64_t reserved_37_63:27;
105		uint64_t bist:37;
106#else
107		uint64_t bist:37;
108		uint64_t reserved_37_63:27;
109#endif
110	} cn63xxp1;
111	struct cvmx_dpi_bist_status_s cn66xx;
112	struct cvmx_dpi_bist_status_cn63xx cn68xx;
113	struct cvmx_dpi_bist_status_cn63xx cn68xxp1;
114	struct cvmx_dpi_bist_status_s cnf71xx;
115};
116
117union cvmx_dpi_ctl {
118	uint64_t u64;
119	struct cvmx_dpi_ctl_s {
120#ifdef __BIG_ENDIAN_BITFIELD
121		uint64_t reserved_2_63:62;
122		uint64_t clk:1;
123		uint64_t en:1;
124#else
125		uint64_t en:1;
126		uint64_t clk:1;
127		uint64_t reserved_2_63:62;
128#endif
129	} s;
130	struct cvmx_dpi_ctl_cn61xx {
131#ifdef __BIG_ENDIAN_BITFIELD
132		uint64_t reserved_1_63:63;
133		uint64_t en:1;
134#else
135		uint64_t en:1;
136		uint64_t reserved_1_63:63;
137#endif
138	} cn61xx;
139	struct cvmx_dpi_ctl_s cn63xx;
140	struct cvmx_dpi_ctl_s cn63xxp1;
141	struct cvmx_dpi_ctl_s cn66xx;
142	struct cvmx_dpi_ctl_s cn68xx;
143	struct cvmx_dpi_ctl_s cn68xxp1;
144	struct cvmx_dpi_ctl_cn61xx cnf71xx;
145};
146
147union cvmx_dpi_dmax_counts {
148	uint64_t u64;
149	struct cvmx_dpi_dmax_counts_s {
150#ifdef __BIG_ENDIAN_BITFIELD
151		uint64_t reserved_39_63:25;
152		uint64_t fcnt:7;
153		uint64_t dbell:32;
154#else
155		uint64_t dbell:32;
156		uint64_t fcnt:7;
157		uint64_t reserved_39_63:25;
158#endif
159	} s;
160	struct cvmx_dpi_dmax_counts_s cn61xx;
161	struct cvmx_dpi_dmax_counts_s cn63xx;
162	struct cvmx_dpi_dmax_counts_s cn63xxp1;
163	struct cvmx_dpi_dmax_counts_s cn66xx;
164	struct cvmx_dpi_dmax_counts_s cn68xx;
165	struct cvmx_dpi_dmax_counts_s cn68xxp1;
166	struct cvmx_dpi_dmax_counts_s cnf71xx;
167};
168
169union cvmx_dpi_dmax_dbell {
170	uint64_t u64;
171	struct cvmx_dpi_dmax_dbell_s {
172#ifdef __BIG_ENDIAN_BITFIELD
173		uint64_t reserved_16_63:48;
174		uint64_t dbell:16;
175#else
176		uint64_t dbell:16;
177		uint64_t reserved_16_63:48;
178#endif
179	} s;
180	struct cvmx_dpi_dmax_dbell_s cn61xx;
181	struct cvmx_dpi_dmax_dbell_s cn63xx;
182	struct cvmx_dpi_dmax_dbell_s cn63xxp1;
183	struct cvmx_dpi_dmax_dbell_s cn66xx;
184	struct cvmx_dpi_dmax_dbell_s cn68xx;
185	struct cvmx_dpi_dmax_dbell_s cn68xxp1;
186	struct cvmx_dpi_dmax_dbell_s cnf71xx;
187};
188
189union cvmx_dpi_dmax_err_rsp_status {
190	uint64_t u64;
191	struct cvmx_dpi_dmax_err_rsp_status_s {
192#ifdef __BIG_ENDIAN_BITFIELD
193		uint64_t reserved_6_63:58;
194		uint64_t status:6;
195#else
196		uint64_t status:6;
197		uint64_t reserved_6_63:58;
198#endif
199	} s;
200	struct cvmx_dpi_dmax_err_rsp_status_s cn61xx;
201	struct cvmx_dpi_dmax_err_rsp_status_s cn66xx;
202	struct cvmx_dpi_dmax_err_rsp_status_s cn68xx;
203	struct cvmx_dpi_dmax_err_rsp_status_s cn68xxp1;
204	struct cvmx_dpi_dmax_err_rsp_status_s cnf71xx;
205};
206
207union cvmx_dpi_dmax_ibuff_saddr {
208	uint64_t u64;
209	struct cvmx_dpi_dmax_ibuff_saddr_s {
210#ifdef __BIG_ENDIAN_BITFIELD
211		uint64_t reserved_62_63:2;
212		uint64_t csize:14;
213		uint64_t reserved_41_47:7;
214		uint64_t idle:1;
215		uint64_t saddr:33;
216		uint64_t reserved_0_6:7;
217#else
218		uint64_t reserved_0_6:7;
219		uint64_t saddr:33;
220		uint64_t idle:1;
221		uint64_t reserved_41_47:7;
222		uint64_t csize:14;
223		uint64_t reserved_62_63:2;
224#endif
225	} s;
226	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx {
227#ifdef __BIG_ENDIAN_BITFIELD
228		uint64_t reserved_62_63:2;
229		uint64_t csize:14;
230		uint64_t reserved_41_47:7;
231		uint64_t idle:1;
232		uint64_t reserved_36_39:4;
233		uint64_t saddr:29;
234		uint64_t reserved_0_6:7;
235#else
236		uint64_t reserved_0_6:7;
237		uint64_t saddr:29;
238		uint64_t reserved_36_39:4;
239		uint64_t idle:1;
240		uint64_t reserved_41_47:7;
241		uint64_t csize:14;
242		uint64_t reserved_62_63:2;
243#endif
244	} cn61xx;
245	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xx;
246	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xxp1;
247	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn66xx;
248	struct cvmx_dpi_dmax_ibuff_saddr_s cn68xx;
249	struct cvmx_dpi_dmax_ibuff_saddr_s cn68xxp1;
250	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cnf71xx;
251};
252
253union cvmx_dpi_dmax_iflight {
254	uint64_t u64;
255	struct cvmx_dpi_dmax_iflight_s {
256#ifdef __BIG_ENDIAN_BITFIELD
257		uint64_t reserved_3_63:61;
258		uint64_t cnt:3;
259#else
260		uint64_t cnt:3;
261		uint64_t reserved_3_63:61;
262#endif
263	} s;
264	struct cvmx_dpi_dmax_iflight_s cn61xx;
265	struct cvmx_dpi_dmax_iflight_s cn66xx;
266	struct cvmx_dpi_dmax_iflight_s cn68xx;
267	struct cvmx_dpi_dmax_iflight_s cn68xxp1;
268	struct cvmx_dpi_dmax_iflight_s cnf71xx;
269};
270
271union cvmx_dpi_dmax_naddr {
272	uint64_t u64;
273	struct cvmx_dpi_dmax_naddr_s {
274#ifdef __BIG_ENDIAN_BITFIELD
275		uint64_t reserved_40_63:24;
276		uint64_t addr:40;
277#else
278		uint64_t addr:40;
279		uint64_t reserved_40_63:24;
280#endif
281	} s;
282	struct cvmx_dpi_dmax_naddr_cn61xx {
283#ifdef __BIG_ENDIAN_BITFIELD
284		uint64_t reserved_36_63:28;
285		uint64_t addr:36;
286#else
287		uint64_t addr:36;
288		uint64_t reserved_36_63:28;
289#endif
290	} cn61xx;
291	struct cvmx_dpi_dmax_naddr_cn61xx cn63xx;
292	struct cvmx_dpi_dmax_naddr_cn61xx cn63xxp1;
293	struct cvmx_dpi_dmax_naddr_cn61xx cn66xx;
294	struct cvmx_dpi_dmax_naddr_s cn68xx;
295	struct cvmx_dpi_dmax_naddr_s cn68xxp1;
296	struct cvmx_dpi_dmax_naddr_cn61xx cnf71xx;
297};
298
299union cvmx_dpi_dmax_reqbnk0 {
300	uint64_t u64;
301	struct cvmx_dpi_dmax_reqbnk0_s {
302#ifdef __BIG_ENDIAN_BITFIELD
303		uint64_t state:64;
304#else
305		uint64_t state:64;
306#endif
307	} s;
308	struct cvmx_dpi_dmax_reqbnk0_s cn61xx;
309	struct cvmx_dpi_dmax_reqbnk0_s cn63xx;
310	struct cvmx_dpi_dmax_reqbnk0_s cn63xxp1;
311	struct cvmx_dpi_dmax_reqbnk0_s cn66xx;
312	struct cvmx_dpi_dmax_reqbnk0_s cn68xx;
313	struct cvmx_dpi_dmax_reqbnk0_s cn68xxp1;
314	struct cvmx_dpi_dmax_reqbnk0_s cnf71xx;
315};
316
317union cvmx_dpi_dmax_reqbnk1 {
318	uint64_t u64;
319	struct cvmx_dpi_dmax_reqbnk1_s {
320#ifdef __BIG_ENDIAN_BITFIELD
321		uint64_t state:64;
322#else
323		uint64_t state:64;
324#endif
325	} s;
326	struct cvmx_dpi_dmax_reqbnk1_s cn61xx;
327	struct cvmx_dpi_dmax_reqbnk1_s cn63xx;
328	struct cvmx_dpi_dmax_reqbnk1_s cn63xxp1;
329	struct cvmx_dpi_dmax_reqbnk1_s cn66xx;
330	struct cvmx_dpi_dmax_reqbnk1_s cn68xx;
331	struct cvmx_dpi_dmax_reqbnk1_s cn68xxp1;
332	struct cvmx_dpi_dmax_reqbnk1_s cnf71xx;
333};
334
335union cvmx_dpi_dma_control {
336	uint64_t u64;
337	struct cvmx_dpi_dma_control_s {
338#ifdef __BIG_ENDIAN_BITFIELD
339		uint64_t reserved_62_63:2;
340		uint64_t dici_mode:1;
341		uint64_t pkt_en1:1;
342		uint64_t ffp_dis:1;
343		uint64_t commit_mode:1;
344		uint64_t pkt_hp:1;
345		uint64_t pkt_en:1;
346		uint64_t reserved_54_55:2;
347		uint64_t dma_enb:6;
348		uint64_t reserved_34_47:14;
349		uint64_t b0_lend:1;
350		uint64_t dwb_denb:1;
351		uint64_t dwb_ichk:9;
352		uint64_t fpa_que:3;
353		uint64_t o_add1:1;
354		uint64_t o_ro:1;
355		uint64_t o_ns:1;
356		uint64_t o_es:2;
357		uint64_t o_mode:1;
358		uint64_t reserved_0_13:14;
359#else
360		uint64_t reserved_0_13:14;
361		uint64_t o_mode:1;
362		uint64_t o_es:2;
363		uint64_t o_ns:1;
364		uint64_t o_ro:1;
365		uint64_t o_add1:1;
366		uint64_t fpa_que:3;
367		uint64_t dwb_ichk:9;
368		uint64_t dwb_denb:1;
369		uint64_t b0_lend:1;
370		uint64_t reserved_34_47:14;
371		uint64_t dma_enb:6;
372		uint64_t reserved_54_55:2;
373		uint64_t pkt_en:1;
374		uint64_t pkt_hp:1;
375		uint64_t commit_mode:1;
376		uint64_t ffp_dis:1;
377		uint64_t pkt_en1:1;
378		uint64_t dici_mode:1;
379		uint64_t reserved_62_63:2;
380#endif
381	} s;
382	struct cvmx_dpi_dma_control_s cn61xx;
383	struct cvmx_dpi_dma_control_cn63xx {
384#ifdef __BIG_ENDIAN_BITFIELD
385		uint64_t reserved_61_63:3;
386		uint64_t pkt_en1:1;
387		uint64_t ffp_dis:1;
388		uint64_t commit_mode:1;
389		uint64_t pkt_hp:1;
390		uint64_t pkt_en:1;
391		uint64_t reserved_54_55:2;
392		uint64_t dma_enb:6;
393		uint64_t reserved_34_47:14;
394		uint64_t b0_lend:1;
395		uint64_t dwb_denb:1;
396		uint64_t dwb_ichk:9;
397		uint64_t fpa_que:3;
398		uint64_t o_add1:1;
399		uint64_t o_ro:1;
400		uint64_t o_ns:1;
401		uint64_t o_es:2;
402		uint64_t o_mode:1;
403		uint64_t reserved_0_13:14;
404#else
405		uint64_t reserved_0_13:14;
406		uint64_t o_mode:1;
407		uint64_t o_es:2;
408		uint64_t o_ns:1;
409		uint64_t o_ro:1;
410		uint64_t o_add1:1;
411		uint64_t fpa_que:3;
412		uint64_t dwb_ichk:9;
413		uint64_t dwb_denb:1;
414		uint64_t b0_lend:1;
415		uint64_t reserved_34_47:14;
416		uint64_t dma_enb:6;
417		uint64_t reserved_54_55:2;
418		uint64_t pkt_en:1;
419		uint64_t pkt_hp:1;
420		uint64_t commit_mode:1;
421		uint64_t ffp_dis:1;
422		uint64_t pkt_en1:1;
423		uint64_t reserved_61_63:3;
424#endif
425	} cn63xx;
426	struct cvmx_dpi_dma_control_cn63xxp1 {
427#ifdef __BIG_ENDIAN_BITFIELD
428		uint64_t reserved_59_63:5;
429		uint64_t commit_mode:1;
430		uint64_t pkt_hp:1;
431		uint64_t pkt_en:1;
432		uint64_t reserved_54_55:2;
433		uint64_t dma_enb:6;
434		uint64_t reserved_34_47:14;
435		uint64_t b0_lend:1;
436		uint64_t dwb_denb:1;
437		uint64_t dwb_ichk:9;
438		uint64_t fpa_que:3;
439		uint64_t o_add1:1;
440		uint64_t o_ro:1;
441		uint64_t o_ns:1;
442		uint64_t o_es:2;
443		uint64_t o_mode:1;
444		uint64_t reserved_0_13:14;
445#else
446		uint64_t reserved_0_13:14;
447		uint64_t o_mode:1;
448		uint64_t o_es:2;
449		uint64_t o_ns:1;
450		uint64_t o_ro:1;
451		uint64_t o_add1:1;
452		uint64_t fpa_que:3;
453		uint64_t dwb_ichk:9;
454		uint64_t dwb_denb:1;
455		uint64_t b0_lend:1;
456		uint64_t reserved_34_47:14;
457		uint64_t dma_enb:6;
458		uint64_t reserved_54_55:2;
459		uint64_t pkt_en:1;
460		uint64_t pkt_hp:1;
461		uint64_t commit_mode:1;
462		uint64_t reserved_59_63:5;
463#endif
464	} cn63xxp1;
465	struct cvmx_dpi_dma_control_cn63xx cn66xx;
466	struct cvmx_dpi_dma_control_s cn68xx;
467	struct cvmx_dpi_dma_control_cn63xx cn68xxp1;
468	struct cvmx_dpi_dma_control_s cnf71xx;
469};
470
471union cvmx_dpi_dma_engx_en {
472	uint64_t u64;
473	struct cvmx_dpi_dma_engx_en_s {
474#ifdef __BIG_ENDIAN_BITFIELD
475		uint64_t reserved_8_63:56;
476		uint64_t qen:8;
477#else
478		uint64_t qen:8;
479		uint64_t reserved_8_63:56;
480#endif
481	} s;
482	struct cvmx_dpi_dma_engx_en_s cn61xx;
483	struct cvmx_dpi_dma_engx_en_s cn63xx;
484	struct cvmx_dpi_dma_engx_en_s cn63xxp1;
485	struct cvmx_dpi_dma_engx_en_s cn66xx;
486	struct cvmx_dpi_dma_engx_en_s cn68xx;
487	struct cvmx_dpi_dma_engx_en_s cn68xxp1;
488	struct cvmx_dpi_dma_engx_en_s cnf71xx;
489};
490
491union cvmx_dpi_dma_ppx_cnt {
492	uint64_t u64;
493	struct cvmx_dpi_dma_ppx_cnt_s {
494#ifdef __BIG_ENDIAN_BITFIELD
495		uint64_t reserved_16_63:48;
496		uint64_t cnt:16;
497#else
498		uint64_t cnt:16;
499		uint64_t reserved_16_63:48;
500#endif
501	} s;
502	struct cvmx_dpi_dma_ppx_cnt_s cn61xx;
503	struct cvmx_dpi_dma_ppx_cnt_s cn68xx;
504	struct cvmx_dpi_dma_ppx_cnt_s cnf71xx;
505};
506
507union cvmx_dpi_engx_buf {
508	uint64_t u64;
509	struct cvmx_dpi_engx_buf_s {
510#ifdef __BIG_ENDIAN_BITFIELD
511		uint64_t reserved_37_63:27;
512		uint64_t compblks:5;
513		uint64_t reserved_9_31:23;
514		uint64_t base:5;
515		uint64_t blks:4;
516#else
517		uint64_t blks:4;
518		uint64_t base:5;
519		uint64_t reserved_9_31:23;
520		uint64_t compblks:5;
521		uint64_t reserved_37_63:27;
522#endif
523	} s;
524	struct cvmx_dpi_engx_buf_s cn61xx;
525	struct cvmx_dpi_engx_buf_cn63xx {
526#ifdef __BIG_ENDIAN_BITFIELD
527		uint64_t reserved_8_63:56;
528		uint64_t base:4;
529		uint64_t blks:4;
530#else
531		uint64_t blks:4;
532		uint64_t base:4;
533		uint64_t reserved_8_63:56;
534#endif
535	} cn63xx;
536	struct cvmx_dpi_engx_buf_cn63xx cn63xxp1;
537	struct cvmx_dpi_engx_buf_s cn66xx;
538	struct cvmx_dpi_engx_buf_s cn68xx;
539	struct cvmx_dpi_engx_buf_s cn68xxp1;
540	struct cvmx_dpi_engx_buf_s cnf71xx;
541};
542
543union cvmx_dpi_info_reg {
544	uint64_t u64;
545	struct cvmx_dpi_info_reg_s {
546#ifdef __BIG_ENDIAN_BITFIELD
547		uint64_t reserved_8_63:56;
548		uint64_t ffp:4;
549		uint64_t reserved_2_3:2;
550		uint64_t ncb:1;
551		uint64_t rsl:1;
552#else
553		uint64_t rsl:1;
554		uint64_t ncb:1;
555		uint64_t reserved_2_3:2;
556		uint64_t ffp:4;
557		uint64_t reserved_8_63:56;
558#endif
559	} s;
560	struct cvmx_dpi_info_reg_s cn61xx;
561	struct cvmx_dpi_info_reg_s cn63xx;
562	struct cvmx_dpi_info_reg_cn63xxp1 {
563#ifdef __BIG_ENDIAN_BITFIELD
564		uint64_t reserved_2_63:62;
565		uint64_t ncb:1;
566		uint64_t rsl:1;
567#else
568		uint64_t rsl:1;
569		uint64_t ncb:1;
570		uint64_t reserved_2_63:62;
571#endif
572	} cn63xxp1;
573	struct cvmx_dpi_info_reg_s cn66xx;
574	struct cvmx_dpi_info_reg_s cn68xx;
575	struct cvmx_dpi_info_reg_s cn68xxp1;
576	struct cvmx_dpi_info_reg_s cnf71xx;
577};
578
579union cvmx_dpi_int_en {
580	uint64_t u64;
581	struct cvmx_dpi_int_en_s {
582#ifdef __BIG_ENDIAN_BITFIELD
583		uint64_t reserved_28_63:36;
584		uint64_t sprt3_rst:1;
585		uint64_t sprt2_rst:1;
586		uint64_t sprt1_rst:1;
587		uint64_t sprt0_rst:1;
588		uint64_t reserved_23_23:1;
589		uint64_t req_badfil:1;
590		uint64_t req_inull:1;
591		uint64_t req_anull:1;
592		uint64_t req_undflw:1;
593		uint64_t req_ovrflw:1;
594		uint64_t req_badlen:1;
595		uint64_t req_badadr:1;
596		uint64_t dmadbo:8;
597		uint64_t reserved_2_7:6;
598		uint64_t nfovr:1;
599		uint64_t nderr:1;
600#else
601		uint64_t nderr:1;
602		uint64_t nfovr:1;
603		uint64_t reserved_2_7:6;
604		uint64_t dmadbo:8;
605		uint64_t req_badadr:1;
606		uint64_t req_badlen:1;
607		uint64_t req_ovrflw:1;
608		uint64_t req_undflw:1;
609		uint64_t req_anull:1;
610		uint64_t req_inull:1;
611		uint64_t req_badfil:1;
612		uint64_t reserved_23_23:1;
613		uint64_t sprt0_rst:1;
614		uint64_t sprt1_rst:1;
615		uint64_t sprt2_rst:1;
616		uint64_t sprt3_rst:1;
617		uint64_t reserved_28_63:36;
618#endif
619	} s;
620	struct cvmx_dpi_int_en_s cn61xx;
621	struct cvmx_dpi_int_en_cn63xx {
622#ifdef __BIG_ENDIAN_BITFIELD
623		uint64_t reserved_26_63:38;
624		uint64_t sprt1_rst:1;
625		uint64_t sprt0_rst:1;
626		uint64_t reserved_23_23:1;
627		uint64_t req_badfil:1;
628		uint64_t req_inull:1;
629		uint64_t req_anull:1;
630		uint64_t req_undflw:1;
631		uint64_t req_ovrflw:1;
632		uint64_t req_badlen:1;
633		uint64_t req_badadr:1;
634		uint64_t dmadbo:8;
635		uint64_t reserved_2_7:6;
636		uint64_t nfovr:1;
637		uint64_t nderr:1;
638#else
639		uint64_t nderr:1;
640		uint64_t nfovr:1;
641		uint64_t reserved_2_7:6;
642		uint64_t dmadbo:8;
643		uint64_t req_badadr:1;
644		uint64_t req_badlen:1;
645		uint64_t req_ovrflw:1;
646		uint64_t req_undflw:1;
647		uint64_t req_anull:1;
648		uint64_t req_inull:1;
649		uint64_t req_badfil:1;
650		uint64_t reserved_23_23:1;
651		uint64_t sprt0_rst:1;
652		uint64_t sprt1_rst:1;
653		uint64_t reserved_26_63:38;
654#endif
655	} cn63xx;
656	struct cvmx_dpi_int_en_cn63xx cn63xxp1;
657	struct cvmx_dpi_int_en_s cn66xx;
658	struct cvmx_dpi_int_en_cn63xx cn68xx;
659	struct cvmx_dpi_int_en_cn63xx cn68xxp1;
660	struct cvmx_dpi_int_en_s cnf71xx;
661};
662
663union cvmx_dpi_int_reg {
664	uint64_t u64;
665	struct cvmx_dpi_int_reg_s {
666#ifdef __BIG_ENDIAN_BITFIELD
667		uint64_t reserved_28_63:36;
668		uint64_t sprt3_rst:1;
669		uint64_t sprt2_rst:1;
670		uint64_t sprt1_rst:1;
671		uint64_t sprt0_rst:1;
672		uint64_t reserved_23_23:1;
673		uint64_t req_badfil:1;
674		uint64_t req_inull:1;
675		uint64_t req_anull:1;
676		uint64_t req_undflw:1;
677		uint64_t req_ovrflw:1;
678		uint64_t req_badlen:1;
679		uint64_t req_badadr:1;
680		uint64_t dmadbo:8;
681		uint64_t reserved_2_7:6;
682		uint64_t nfovr:1;
683		uint64_t nderr:1;
684#else
685		uint64_t nderr:1;
686		uint64_t nfovr:1;
687		uint64_t reserved_2_7:6;
688		uint64_t dmadbo:8;
689		uint64_t req_badadr:1;
690		uint64_t req_badlen:1;
691		uint64_t req_ovrflw:1;
692		uint64_t req_undflw:1;
693		uint64_t req_anull:1;
694		uint64_t req_inull:1;
695		uint64_t req_badfil:1;
696		uint64_t reserved_23_23:1;
697		uint64_t sprt0_rst:1;
698		uint64_t sprt1_rst:1;
699		uint64_t sprt2_rst:1;
700		uint64_t sprt3_rst:1;
701		uint64_t reserved_28_63:36;
702#endif
703	} s;
704	struct cvmx_dpi_int_reg_s cn61xx;
705	struct cvmx_dpi_int_reg_cn63xx {
706#ifdef __BIG_ENDIAN_BITFIELD
707		uint64_t reserved_26_63:38;
708		uint64_t sprt1_rst:1;
709		uint64_t sprt0_rst:1;
710		uint64_t reserved_23_23:1;
711		uint64_t req_badfil:1;
712		uint64_t req_inull:1;
713		uint64_t req_anull:1;
714		uint64_t req_undflw:1;
715		uint64_t req_ovrflw:1;
716		uint64_t req_badlen:1;
717		uint64_t req_badadr:1;
718		uint64_t dmadbo:8;
719		uint64_t reserved_2_7:6;
720		uint64_t nfovr:1;
721		uint64_t nderr:1;
722#else
723		uint64_t nderr:1;
724		uint64_t nfovr:1;
725		uint64_t reserved_2_7:6;
726		uint64_t dmadbo:8;
727		uint64_t req_badadr:1;
728		uint64_t req_badlen:1;
729		uint64_t req_ovrflw:1;
730		uint64_t req_undflw:1;
731		uint64_t req_anull:1;
732		uint64_t req_inull:1;
733		uint64_t req_badfil:1;
734		uint64_t reserved_23_23:1;
735		uint64_t sprt0_rst:1;
736		uint64_t sprt1_rst:1;
737		uint64_t reserved_26_63:38;
738#endif
739	} cn63xx;
740	struct cvmx_dpi_int_reg_cn63xx cn63xxp1;
741	struct cvmx_dpi_int_reg_s cn66xx;
742	struct cvmx_dpi_int_reg_cn63xx cn68xx;
743	struct cvmx_dpi_int_reg_cn63xx cn68xxp1;
744	struct cvmx_dpi_int_reg_s cnf71xx;
745};
746
747union cvmx_dpi_ncbx_cfg {
748	uint64_t u64;
749	struct cvmx_dpi_ncbx_cfg_s {
750#ifdef __BIG_ENDIAN_BITFIELD
751		uint64_t reserved_6_63:58;
752		uint64_t molr:6;
753#else
754		uint64_t molr:6;
755		uint64_t reserved_6_63:58;
756#endif
757	} s;
758	struct cvmx_dpi_ncbx_cfg_s cn61xx;
759	struct cvmx_dpi_ncbx_cfg_s cn66xx;
760	struct cvmx_dpi_ncbx_cfg_s cn68xx;
761	struct cvmx_dpi_ncbx_cfg_s cnf71xx;
762};
763
764union cvmx_dpi_pint_info {
765	uint64_t u64;
766	struct cvmx_dpi_pint_info_s {
767#ifdef __BIG_ENDIAN_BITFIELD
768		uint64_t reserved_14_63:50;
769		uint64_t iinfo:6;
770		uint64_t reserved_6_7:2;
771		uint64_t sinfo:6;
772#else
773		uint64_t sinfo:6;
774		uint64_t reserved_6_7:2;
775		uint64_t iinfo:6;
776		uint64_t reserved_14_63:50;
777#endif
778	} s;
779	struct cvmx_dpi_pint_info_s cn61xx;
780	struct cvmx_dpi_pint_info_s cn63xx;
781	struct cvmx_dpi_pint_info_s cn63xxp1;
782	struct cvmx_dpi_pint_info_s cn66xx;
783	struct cvmx_dpi_pint_info_s cn68xx;
784	struct cvmx_dpi_pint_info_s cn68xxp1;
785	struct cvmx_dpi_pint_info_s cnf71xx;
786};
787
788union cvmx_dpi_pkt_err_rsp {
789	uint64_t u64;
790	struct cvmx_dpi_pkt_err_rsp_s {
791#ifdef __BIG_ENDIAN_BITFIELD
792		uint64_t reserved_1_63:63;
793		uint64_t pkterr:1;
794#else
795		uint64_t pkterr:1;
796		uint64_t reserved_1_63:63;
797#endif
798	} s;
799	struct cvmx_dpi_pkt_err_rsp_s cn61xx;
800	struct cvmx_dpi_pkt_err_rsp_s cn63xx;
801	struct cvmx_dpi_pkt_err_rsp_s cn63xxp1;
802	struct cvmx_dpi_pkt_err_rsp_s cn66xx;
803	struct cvmx_dpi_pkt_err_rsp_s cn68xx;
804	struct cvmx_dpi_pkt_err_rsp_s cn68xxp1;
805	struct cvmx_dpi_pkt_err_rsp_s cnf71xx;
806};
807
808union cvmx_dpi_req_err_rsp {
809	uint64_t u64;
810	struct cvmx_dpi_req_err_rsp_s {
811#ifdef __BIG_ENDIAN_BITFIELD
812		uint64_t reserved_8_63:56;
813		uint64_t qerr:8;
814#else
815		uint64_t qerr:8;
816		uint64_t reserved_8_63:56;
817#endif
818	} s;
819	struct cvmx_dpi_req_err_rsp_s cn61xx;
820	struct cvmx_dpi_req_err_rsp_s cn63xx;
821	struct cvmx_dpi_req_err_rsp_s cn63xxp1;
822	struct cvmx_dpi_req_err_rsp_s cn66xx;
823	struct cvmx_dpi_req_err_rsp_s cn68xx;
824	struct cvmx_dpi_req_err_rsp_s cn68xxp1;
825	struct cvmx_dpi_req_err_rsp_s cnf71xx;
826};
827
828union cvmx_dpi_req_err_rsp_en {
829	uint64_t u64;
830	struct cvmx_dpi_req_err_rsp_en_s {
831#ifdef __BIG_ENDIAN_BITFIELD
832		uint64_t reserved_8_63:56;
833		uint64_t en:8;
834#else
835		uint64_t en:8;
836		uint64_t reserved_8_63:56;
837#endif
838	} s;
839	struct cvmx_dpi_req_err_rsp_en_s cn61xx;
840	struct cvmx_dpi_req_err_rsp_en_s cn63xx;
841	struct cvmx_dpi_req_err_rsp_en_s cn63xxp1;
842	struct cvmx_dpi_req_err_rsp_en_s cn66xx;
843	struct cvmx_dpi_req_err_rsp_en_s cn68xx;
844	struct cvmx_dpi_req_err_rsp_en_s cn68xxp1;
845	struct cvmx_dpi_req_err_rsp_en_s cnf71xx;
846};
847
848union cvmx_dpi_req_err_rst {
849	uint64_t u64;
850	struct cvmx_dpi_req_err_rst_s {
851#ifdef __BIG_ENDIAN_BITFIELD
852		uint64_t reserved_8_63:56;
853		uint64_t qerr:8;
854#else
855		uint64_t qerr:8;
856		uint64_t reserved_8_63:56;
857#endif
858	} s;
859	struct cvmx_dpi_req_err_rst_s cn61xx;
860	struct cvmx_dpi_req_err_rst_s cn63xx;
861	struct cvmx_dpi_req_err_rst_s cn63xxp1;
862	struct cvmx_dpi_req_err_rst_s cn66xx;
863	struct cvmx_dpi_req_err_rst_s cn68xx;
864	struct cvmx_dpi_req_err_rst_s cn68xxp1;
865	struct cvmx_dpi_req_err_rst_s cnf71xx;
866};
867
868union cvmx_dpi_req_err_rst_en {
869	uint64_t u64;
870	struct cvmx_dpi_req_err_rst_en_s {
871#ifdef __BIG_ENDIAN_BITFIELD
872		uint64_t reserved_8_63:56;
873		uint64_t en:8;
874#else
875		uint64_t en:8;
876		uint64_t reserved_8_63:56;
877#endif
878	} s;
879	struct cvmx_dpi_req_err_rst_en_s cn61xx;
880	struct cvmx_dpi_req_err_rst_en_s cn63xx;
881	struct cvmx_dpi_req_err_rst_en_s cn63xxp1;
882	struct cvmx_dpi_req_err_rst_en_s cn66xx;
883	struct cvmx_dpi_req_err_rst_en_s cn68xx;
884	struct cvmx_dpi_req_err_rst_en_s cn68xxp1;
885	struct cvmx_dpi_req_err_rst_en_s cnf71xx;
886};
887
888union cvmx_dpi_req_err_skip_comp {
889	uint64_t u64;
890	struct cvmx_dpi_req_err_skip_comp_s {
891#ifdef __BIG_ENDIAN_BITFIELD
892		uint64_t reserved_24_63:40;
893		uint64_t en_rst:8;
894		uint64_t reserved_8_15:8;
895		uint64_t en_rsp:8;
896#else
897		uint64_t en_rsp:8;
898		uint64_t reserved_8_15:8;
899		uint64_t en_rst:8;
900		uint64_t reserved_24_63:40;
901#endif
902	} s;
903	struct cvmx_dpi_req_err_skip_comp_s cn61xx;
904	struct cvmx_dpi_req_err_skip_comp_s cn66xx;
905	struct cvmx_dpi_req_err_skip_comp_s cn68xx;
906	struct cvmx_dpi_req_err_skip_comp_s cn68xxp1;
907	struct cvmx_dpi_req_err_skip_comp_s cnf71xx;
908};
909
910union cvmx_dpi_req_gbl_en {
911	uint64_t u64;
912	struct cvmx_dpi_req_gbl_en_s {
913#ifdef __BIG_ENDIAN_BITFIELD
914		uint64_t reserved_8_63:56;
915		uint64_t qen:8;
916#else
917		uint64_t qen:8;
918		uint64_t reserved_8_63:56;
919#endif
920	} s;
921	struct cvmx_dpi_req_gbl_en_s cn61xx;
922	struct cvmx_dpi_req_gbl_en_s cn63xx;
923	struct cvmx_dpi_req_gbl_en_s cn63xxp1;
924	struct cvmx_dpi_req_gbl_en_s cn66xx;
925	struct cvmx_dpi_req_gbl_en_s cn68xx;
926	struct cvmx_dpi_req_gbl_en_s cn68xxp1;
927	struct cvmx_dpi_req_gbl_en_s cnf71xx;
928};
929
930union cvmx_dpi_sli_prtx_cfg {
931	uint64_t u64;
932	struct cvmx_dpi_sli_prtx_cfg_s {
933#ifdef __BIG_ENDIAN_BITFIELD
934		uint64_t reserved_25_63:39;
935		uint64_t halt:1;
936		uint64_t qlm_cfg:4;
937		uint64_t reserved_17_19:3;
938		uint64_t rd_mode:1;
939		uint64_t reserved_14_15:2;
940		uint64_t molr:6;
941		uint64_t mps_lim:1;
942		uint64_t reserved_5_6:2;
943		uint64_t mps:1;
944		uint64_t mrrs_lim:1;
945		uint64_t reserved_2_2:1;
946		uint64_t mrrs:2;
947#else
948		uint64_t mrrs:2;
949		uint64_t reserved_2_2:1;
950		uint64_t mrrs_lim:1;
951		uint64_t mps:1;
952		uint64_t reserved_5_6:2;
953		uint64_t mps_lim:1;
954		uint64_t molr:6;
955		uint64_t reserved_14_15:2;
956		uint64_t rd_mode:1;
957		uint64_t reserved_17_19:3;
958		uint64_t qlm_cfg:4;
959		uint64_t halt:1;
960		uint64_t reserved_25_63:39;
961#endif
962	} s;
963	struct cvmx_dpi_sli_prtx_cfg_s cn61xx;
964	struct cvmx_dpi_sli_prtx_cfg_cn63xx {
965#ifdef __BIG_ENDIAN_BITFIELD
966		uint64_t reserved_25_63:39;
967		uint64_t halt:1;
968		uint64_t reserved_21_23:3;
969		uint64_t qlm_cfg:1;
970		uint64_t reserved_17_19:3;
971		uint64_t rd_mode:1;
972		uint64_t reserved_14_15:2;
973		uint64_t molr:6;
974		uint64_t mps_lim:1;
975		uint64_t reserved_5_6:2;
976		uint64_t mps:1;
977		uint64_t mrrs_lim:1;
978		uint64_t reserved_2_2:1;
979		uint64_t mrrs:2;
980#else
981		uint64_t mrrs:2;
982		uint64_t reserved_2_2:1;
983		uint64_t mrrs_lim:1;
984		uint64_t mps:1;
985		uint64_t reserved_5_6:2;
986		uint64_t mps_lim:1;
987		uint64_t molr:6;
988		uint64_t reserved_14_15:2;
989		uint64_t rd_mode:1;
990		uint64_t reserved_17_19:3;
991		uint64_t qlm_cfg:1;
992		uint64_t reserved_21_23:3;
993		uint64_t halt:1;
994		uint64_t reserved_25_63:39;
995#endif
996	} cn63xx;
997	struct cvmx_dpi_sli_prtx_cfg_cn63xx cn63xxp1;
998	struct cvmx_dpi_sli_prtx_cfg_s cn66xx;
999	struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xx;
1000	struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xxp1;
1001	struct cvmx_dpi_sli_prtx_cfg_s cnf71xx;
1002};
1003
1004union cvmx_dpi_sli_prtx_err {
1005	uint64_t u64;
1006	struct cvmx_dpi_sli_prtx_err_s {
1007#ifdef __BIG_ENDIAN_BITFIELD
1008		uint64_t addr:61;
1009		uint64_t reserved_0_2:3;
1010#else
1011		uint64_t reserved_0_2:3;
1012		uint64_t addr:61;
1013#endif
1014	} s;
1015	struct cvmx_dpi_sli_prtx_err_s cn61xx;
1016	struct cvmx_dpi_sli_prtx_err_s cn63xx;
1017	struct cvmx_dpi_sli_prtx_err_s cn63xxp1;
1018	struct cvmx_dpi_sli_prtx_err_s cn66xx;
1019	struct cvmx_dpi_sli_prtx_err_s cn68xx;
1020	struct cvmx_dpi_sli_prtx_err_s cn68xxp1;
1021	struct cvmx_dpi_sli_prtx_err_s cnf71xx;
1022};
1023
1024union cvmx_dpi_sli_prtx_err_info {
1025	uint64_t u64;
1026	struct cvmx_dpi_sli_prtx_err_info_s {
1027#ifdef __BIG_ENDIAN_BITFIELD
1028		uint64_t reserved_9_63:55;
1029		uint64_t lock:1;
1030		uint64_t reserved_5_7:3;
1031		uint64_t type:1;
1032		uint64_t reserved_3_3:1;
1033		uint64_t reqq:3;
1034#else
1035		uint64_t reqq:3;
1036		uint64_t reserved_3_3:1;
1037		uint64_t type:1;
1038		uint64_t reserved_5_7:3;
1039		uint64_t lock:1;
1040		uint64_t reserved_9_63:55;
1041#endif
1042	} s;
1043	struct cvmx_dpi_sli_prtx_err_info_s cn61xx;
1044	struct cvmx_dpi_sli_prtx_err_info_s cn63xx;
1045	struct cvmx_dpi_sli_prtx_err_info_s cn63xxp1;
1046	struct cvmx_dpi_sli_prtx_err_info_s cn66xx;
1047	struct cvmx_dpi_sli_prtx_err_info_s cn68xx;
1048	struct cvmx_dpi_sli_prtx_err_info_s cn68xxp1;
1049	struct cvmx_dpi_sli_prtx_err_info_s cnf71xx;
1050};
1051
1052#endif
1053