1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020 Marvell International Ltd.
4 *
5 * Configuration and status register (CSR) type definitions for
6 * Octeon dpi.
7 */
8
9#ifndef __CVMX_DPI_DEFS_H__
10#define __CVMX_DPI_DEFS_H__
11
12#define CVMX_DPI_BIST_STATUS		     (0x0001DF0000000000ull)
13#define CVMX_DPI_CTL			     (0x0001DF0000000040ull)
14#define CVMX_DPI_DMAX_COUNTS(offset)	     (0x0001DF0000000300ull + ((offset) & 7) * 8)
15#define CVMX_DPI_DMAX_DBELL(offset)	     (0x0001DF0000000200ull + ((offset) & 7) * 8)
16#define CVMX_DPI_DMAX_ERR_RSP_STATUS(offset) (0x0001DF0000000A80ull + ((offset) & 7) * 8)
17#define CVMX_DPI_DMAX_IBUFF_SADDR(offset)    (0x0001DF0000000280ull + ((offset) & 7) * 8)
18#define CVMX_DPI_DMAX_IFLIGHT(offset)	     (0x0001DF0000000A00ull + ((offset) & 7) * 8)
19#define CVMX_DPI_DMAX_NADDR(offset)	     (0x0001DF0000000380ull + ((offset) & 7) * 8)
20#define CVMX_DPI_DMAX_REQBNK0(offset)	     (0x0001DF0000000400ull + ((offset) & 7) * 8)
21#define CVMX_DPI_DMAX_REQBNK1(offset)	     (0x0001DF0000000480ull + ((offset) & 7) * 8)
22#define CVMX_DPI_DMAX_REQQ_CTL(offset)	     (0x0001DF0000000180ull + ((offset) & 7) * 8)
23#define CVMX_DPI_DMA_CONTROL		     (0x0001DF0000000048ull)
24#define CVMX_DPI_DMA_ENGX_EN(offset)	     (0x0001DF0000000080ull + ((offset) & 7) * 8)
25static inline u64 CVMX_DPI_DMA_PPX_CNT(unsigned long offset)
26{
27	switch (cvmx_get_octeon_family()) {
28	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
29	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
30	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
31		return 0x0001DF0000000B00ull + (offset) * 8;
32	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
33		return 0x0001DF0000000B00ull + (offset) * 8;
34	case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
35	case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
36		return 0x0001DF0000000C00ull + (offset) * 8;
37	case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
38		if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
39			return 0x0001DF0000000C00ull + (offset) * 8;
40		if (OCTEON_IS_MODEL(OCTEON_CN78XX))
41			return 0x0001DF0000000C00ull + (offset) * 8;
42	}
43	return 0x0001DF0000000C00ull + (offset) * 8;
44}
45
46#define CVMX_DPI_DMA_PP_INT	      (0x0001DF0000000038ull)
47#define CVMX_DPI_ECC_CTL	      (0x0001DF0000000018ull)
48#define CVMX_DPI_ECC_INT	      (0x0001DF0000000020ull)
49#define CVMX_DPI_ENGX_BUF(offset)     (0x0001DF0000000880ull + ((offset) & 7) * 8)
50#define CVMX_DPI_INFO_REG	      (0x0001DF0000000980ull)
51#define CVMX_DPI_INT_EN		      (0x0001DF0000000010ull)
52#define CVMX_DPI_INT_REG	      (0x0001DF0000000008ull)
53#define CVMX_DPI_NCBX_CFG(offset)     (0x0001DF0000000800ull)
54#define CVMX_DPI_NCB_CTL	      (0x0001DF0000000028ull)
55#define CVMX_DPI_PINT_INFO	      (0x0001DF0000000830ull)
56#define CVMX_DPI_PKT_ERR_RSP	      (0x0001DF0000000078ull)
57#define CVMX_DPI_REQ_ERR_RSP	      (0x0001DF0000000058ull)
58#define CVMX_DPI_REQ_ERR_RSP_EN	      (0x0001DF0000000068ull)
59#define CVMX_DPI_REQ_ERR_RST	      (0x0001DF0000000060ull)
60#define CVMX_DPI_REQ_ERR_RST_EN	      (0x0001DF0000000070ull)
61#define CVMX_DPI_REQ_ERR_SKIP_COMP    (0x0001DF0000000838ull)
62#define CVMX_DPI_REQ_GBL_EN	      (0x0001DF0000000050ull)
63#define CVMX_DPI_SLI_PRTX_CFG(offset) (0x0001DF0000000900ull + ((offset) & 3) * 8)
64static inline u64 CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)
65{
66	switch (cvmx_get_octeon_family()) {
67	case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
68	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
69	case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
70	case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
71		if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
72			return 0x0001DF0000000920ull + (offset) * 8;
73		if (OCTEON_IS_MODEL(OCTEON_CN78XX))
74			return 0x0001DF0000000920ull + (offset) * 8;
75		return 0x0001DF0000000920ull + (offset) * 8;
76	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
77	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
78	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
79
80		if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS1))
81			return 0x0001DF0000000928ull + (offset) * 8;
82
83		if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS2))
84			return 0x0001DF0000000920ull + (offset) * 8;
85		return 0x0001DF0000000920ull + (offset) * 8;
86	case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
87		return 0x0001DF0000000920ull + (offset) * 8;
88	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
89		return 0x0001DF0000000928ull + (offset) * 8;
90	}
91	return 0x0001DF0000000920ull + (offset) * 8;
92}
93
94#define CVMX_DPI_SLI_PRTX_ERR_INFO(offset) (0x0001DF0000000940ull + ((offset) & 3) * 8)
95#define CVMX_DPI_SRIO_RX_BELLX(offset)	   (0x0001DF0000080200ull + ((offset) & 31) * 8)
96#define CVMX_DPI_SRIO_RX_BELL_SEQX(offset) (0x0001DF0000080400ull + ((offset) & 31) * 8)
97#define CVMX_DPI_SWA_Q_VMID		   (0x0001DF0000000030ull)
98
99/**
100 * cvmx_dpi_bist_status
101 *
102 * This is the built-in self-test (BIST) status register. Each bit is the BIST result of an
103 * individual memory (per bit, 0 = pass and 1 = fail).
104 */
105union cvmx_dpi_bist_status {
106	u64 u64;
107	struct cvmx_dpi_bist_status_s {
108		u64 reserved_57_63 : 7;
109		u64 bist : 57;
110	} s;
111	struct cvmx_dpi_bist_status_cn61xx {
112		u64 reserved_47_63 : 17;
113		u64 bist : 47;
114	} cn61xx;
115	struct cvmx_dpi_bist_status_cn63xx {
116		u64 reserved_45_63 : 19;
117		u64 bist : 45;
118	} cn63xx;
119	struct cvmx_dpi_bist_status_cn63xxp1 {
120		u64 reserved_37_63 : 27;
121		u64 bist : 37;
122	} cn63xxp1;
123	struct cvmx_dpi_bist_status_cn61xx cn66xx;
124	struct cvmx_dpi_bist_status_cn63xx cn68xx;
125	struct cvmx_dpi_bist_status_cn63xx cn68xxp1;
126	struct cvmx_dpi_bist_status_cn61xx cn70xx;
127	struct cvmx_dpi_bist_status_cn61xx cn70xxp1;
128	struct cvmx_dpi_bist_status_s cn73xx;
129	struct cvmx_dpi_bist_status_s cn78xx;
130	struct cvmx_dpi_bist_status_cn78xxp1 {
131		u64 reserved_51_63 : 13;
132		u64 bist : 51;
133	} cn78xxp1;
134	struct cvmx_dpi_bist_status_cn61xx cnf71xx;
135	struct cvmx_dpi_bist_status_s cnf75xx;
136};
137
138typedef union cvmx_dpi_bist_status cvmx_dpi_bist_status_t;
139
140/**
141 * cvmx_dpi_ctl
142 *
143 * This register provides the enable bit for the DMA and packet state machines.
144 *
145 */
146union cvmx_dpi_ctl {
147	u64 u64;
148	struct cvmx_dpi_ctl_s {
149		u64 reserved_2_63 : 62;
150		u64 clk : 1;
151		u64 en : 1;
152	} s;
153	struct cvmx_dpi_ctl_cn61xx {
154		u64 reserved_1_63 : 63;
155		u64 en : 1;
156	} cn61xx;
157	struct cvmx_dpi_ctl_s cn63xx;
158	struct cvmx_dpi_ctl_s cn63xxp1;
159	struct cvmx_dpi_ctl_s cn66xx;
160	struct cvmx_dpi_ctl_s cn68xx;
161	struct cvmx_dpi_ctl_s cn68xxp1;
162	struct cvmx_dpi_ctl_cn61xx cn70xx;
163	struct cvmx_dpi_ctl_cn61xx cn70xxp1;
164	struct cvmx_dpi_ctl_cn61xx cn73xx;
165	struct cvmx_dpi_ctl_cn61xx cn78xx;
166	struct cvmx_dpi_ctl_cn61xx cn78xxp1;
167	struct cvmx_dpi_ctl_cn61xx cnf71xx;
168	struct cvmx_dpi_ctl_cn61xx cnf75xx;
169};
170
171typedef union cvmx_dpi_ctl cvmx_dpi_ctl_t;
172
173/**
174 * cvmx_dpi_dma#_counts
175 *
176 * These registers provide values for determining the number of instructions in the local
177 * instruction FIFO.
178 */
179union cvmx_dpi_dmax_counts {
180	u64 u64;
181	struct cvmx_dpi_dmax_counts_s {
182		u64 reserved_39_63 : 25;
183		u64 fcnt : 7;
184		u64 dbell : 32;
185	} s;
186	struct cvmx_dpi_dmax_counts_s cn61xx;
187	struct cvmx_dpi_dmax_counts_s cn63xx;
188	struct cvmx_dpi_dmax_counts_s cn63xxp1;
189	struct cvmx_dpi_dmax_counts_s cn66xx;
190	struct cvmx_dpi_dmax_counts_s cn68xx;
191	struct cvmx_dpi_dmax_counts_s cn68xxp1;
192	struct cvmx_dpi_dmax_counts_s cn70xx;
193	struct cvmx_dpi_dmax_counts_s cn70xxp1;
194	struct cvmx_dpi_dmax_counts_s cn73xx;
195	struct cvmx_dpi_dmax_counts_s cn78xx;
196	struct cvmx_dpi_dmax_counts_s cn78xxp1;
197	struct cvmx_dpi_dmax_counts_s cnf71xx;
198	struct cvmx_dpi_dmax_counts_s cnf75xx;
199};
200
201typedef union cvmx_dpi_dmax_counts cvmx_dpi_dmax_counts_t;
202
203/**
204 * cvmx_dpi_dma#_dbell
205 *
206 * This is the door bell register for the eight DMA instruction queues.
207 *
208 */
209union cvmx_dpi_dmax_dbell {
210	u64 u64;
211	struct cvmx_dpi_dmax_dbell_s {
212		u64 reserved_16_63 : 48;
213		u64 dbell : 16;
214	} s;
215	struct cvmx_dpi_dmax_dbell_s cn61xx;
216	struct cvmx_dpi_dmax_dbell_s cn63xx;
217	struct cvmx_dpi_dmax_dbell_s cn63xxp1;
218	struct cvmx_dpi_dmax_dbell_s cn66xx;
219	struct cvmx_dpi_dmax_dbell_s cn68xx;
220	struct cvmx_dpi_dmax_dbell_s cn68xxp1;
221	struct cvmx_dpi_dmax_dbell_s cn70xx;
222	struct cvmx_dpi_dmax_dbell_s cn70xxp1;
223	struct cvmx_dpi_dmax_dbell_s cn73xx;
224	struct cvmx_dpi_dmax_dbell_s cn78xx;
225	struct cvmx_dpi_dmax_dbell_s cn78xxp1;
226	struct cvmx_dpi_dmax_dbell_s cnf71xx;
227	struct cvmx_dpi_dmax_dbell_s cnf75xx;
228};
229
230typedef union cvmx_dpi_dmax_dbell cvmx_dpi_dmax_dbell_t;
231
232/**
233 * cvmx_dpi_dma#_err_rsp_status
234 */
235union cvmx_dpi_dmax_err_rsp_status {
236	u64 u64;
237	struct cvmx_dpi_dmax_err_rsp_status_s {
238		u64 reserved_6_63 : 58;
239		u64 status : 6;
240	} s;
241	struct cvmx_dpi_dmax_err_rsp_status_s cn61xx;
242	struct cvmx_dpi_dmax_err_rsp_status_s cn66xx;
243	struct cvmx_dpi_dmax_err_rsp_status_s cn68xx;
244	struct cvmx_dpi_dmax_err_rsp_status_s cn68xxp1;
245	struct cvmx_dpi_dmax_err_rsp_status_s cn70xx;
246	struct cvmx_dpi_dmax_err_rsp_status_s cn70xxp1;
247	struct cvmx_dpi_dmax_err_rsp_status_s cn73xx;
248	struct cvmx_dpi_dmax_err_rsp_status_s cn78xx;
249	struct cvmx_dpi_dmax_err_rsp_status_s cn78xxp1;
250	struct cvmx_dpi_dmax_err_rsp_status_s cnf71xx;
251	struct cvmx_dpi_dmax_err_rsp_status_s cnf75xx;
252};
253
254typedef union cvmx_dpi_dmax_err_rsp_status cvmx_dpi_dmax_err_rsp_status_t;
255
256/**
257 * cvmx_dpi_dma#_ibuff_saddr
258 *
259 * These registers provide the address to start reading instructions for the eight DMA
260 * instruction queues.
261 */
262union cvmx_dpi_dmax_ibuff_saddr {
263	u64 u64;
264	struct cvmx_dpi_dmax_ibuff_saddr_s {
265		u64 reserved_62_63 : 2;
266		u64 csize : 14;
267		u64 reserved_0_47 : 48;
268	} s;
269	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx {
270		u64 reserved_62_63 : 2;
271		u64 csize : 14;
272		u64 reserved_41_47 : 7;
273		u64 idle : 1;
274		u64 reserved_36_39 : 4;
275		u64 saddr : 29;
276		u64 reserved_0_6 : 7;
277	} cn61xx;
278	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xx;
279	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xxp1;
280	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn66xx;
281	struct cvmx_dpi_dmax_ibuff_saddr_cn68xx {
282		u64 reserved_62_63 : 2;
283		u64 csize : 14;
284		u64 reserved_41_47 : 7;
285		u64 idle : 1;
286		u64 saddr : 33;
287		u64 reserved_0_6 : 7;
288	} cn68xx;
289	struct cvmx_dpi_dmax_ibuff_saddr_cn68xx cn68xxp1;
290	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn70xx;
291	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn70xxp1;
292	struct cvmx_dpi_dmax_ibuff_saddr_cn73xx {
293		u64 idle : 1;
294		u64 reserved_62_62 : 1;
295		u64 csize : 14;
296		u64 reserved_42_47 : 6;
297		u64 saddr : 35;
298		u64 reserved_0_6 : 7;
299	} cn73xx;
300	struct cvmx_dpi_dmax_ibuff_saddr_cn73xx cn78xx;
301	struct cvmx_dpi_dmax_ibuff_saddr_cn73xx cn78xxp1;
302	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cnf71xx;
303	struct cvmx_dpi_dmax_ibuff_saddr_cn73xx cnf75xx;
304};
305
306typedef union cvmx_dpi_dmax_ibuff_saddr cvmx_dpi_dmax_ibuff_saddr_t;
307
308/**
309 * cvmx_dpi_dma#_iflight
310 */
311union cvmx_dpi_dmax_iflight {
312	u64 u64;
313	struct cvmx_dpi_dmax_iflight_s {
314		u64 reserved_3_63 : 61;
315		u64 cnt : 3;
316	} s;
317	struct cvmx_dpi_dmax_iflight_s cn61xx;
318	struct cvmx_dpi_dmax_iflight_s cn66xx;
319	struct cvmx_dpi_dmax_iflight_s cn68xx;
320	struct cvmx_dpi_dmax_iflight_s cn68xxp1;
321	struct cvmx_dpi_dmax_iflight_s cn70xx;
322	struct cvmx_dpi_dmax_iflight_s cn70xxp1;
323	struct cvmx_dpi_dmax_iflight_s cn73xx;
324	struct cvmx_dpi_dmax_iflight_s cn78xx;
325	struct cvmx_dpi_dmax_iflight_s cn78xxp1;
326	struct cvmx_dpi_dmax_iflight_s cnf71xx;
327	struct cvmx_dpi_dmax_iflight_s cnf75xx;
328};
329
330typedef union cvmx_dpi_dmax_iflight cvmx_dpi_dmax_iflight_t;
331
332/**
333 * cvmx_dpi_dma#_naddr
334 *
335 * These registers provide the L2C addresses to read the next Ichunk data.
336 *
337 */
338union cvmx_dpi_dmax_naddr {
339	u64 u64;
340	struct cvmx_dpi_dmax_naddr_s {
341		u64 reserved_42_63 : 22;
342		u64 addr : 42;
343	} s;
344	struct cvmx_dpi_dmax_naddr_cn61xx {
345		u64 reserved_36_63 : 28;
346		u64 addr : 36;
347	} cn61xx;
348	struct cvmx_dpi_dmax_naddr_cn61xx cn63xx;
349	struct cvmx_dpi_dmax_naddr_cn61xx cn63xxp1;
350	struct cvmx_dpi_dmax_naddr_cn61xx cn66xx;
351	struct cvmx_dpi_dmax_naddr_cn68xx {
352		u64 reserved_40_63 : 24;
353		u64 addr : 40;
354	} cn68xx;
355	struct cvmx_dpi_dmax_naddr_cn68xx cn68xxp1;
356	struct cvmx_dpi_dmax_naddr_cn61xx cn70xx;
357	struct cvmx_dpi_dmax_naddr_cn61xx cn70xxp1;
358	struct cvmx_dpi_dmax_naddr_s cn73xx;
359	struct cvmx_dpi_dmax_naddr_s cn78xx;
360	struct cvmx_dpi_dmax_naddr_s cn78xxp1;
361	struct cvmx_dpi_dmax_naddr_cn61xx cnf71xx;
362	struct cvmx_dpi_dmax_naddr_s cnf75xx;
363};
364
365typedef union cvmx_dpi_dmax_naddr cvmx_dpi_dmax_naddr_t;
366
367/**
368 * cvmx_dpi_dma#_reqbnk0
369 *
370 * These registers provide the current contents of the request state machine, bank 0.
371 *
372 */
373union cvmx_dpi_dmax_reqbnk0 {
374	u64 u64;
375	struct cvmx_dpi_dmax_reqbnk0_s {
376		u64 state : 64;
377	} s;
378	struct cvmx_dpi_dmax_reqbnk0_s cn61xx;
379	struct cvmx_dpi_dmax_reqbnk0_s cn63xx;
380	struct cvmx_dpi_dmax_reqbnk0_s cn63xxp1;
381	struct cvmx_dpi_dmax_reqbnk0_s cn66xx;
382	struct cvmx_dpi_dmax_reqbnk0_s cn68xx;
383	struct cvmx_dpi_dmax_reqbnk0_s cn68xxp1;
384	struct cvmx_dpi_dmax_reqbnk0_s cn70xx;
385	struct cvmx_dpi_dmax_reqbnk0_s cn70xxp1;
386	struct cvmx_dpi_dmax_reqbnk0_s cn73xx;
387	struct cvmx_dpi_dmax_reqbnk0_s cn78xx;
388	struct cvmx_dpi_dmax_reqbnk0_s cn78xxp1;
389	struct cvmx_dpi_dmax_reqbnk0_s cnf71xx;
390	struct cvmx_dpi_dmax_reqbnk0_s cnf75xx;
391};
392
393typedef union cvmx_dpi_dmax_reqbnk0 cvmx_dpi_dmax_reqbnk0_t;
394
395/**
396 * cvmx_dpi_dma#_reqbnk1
397 *
398 * These registers provide the current contents of the request state machine, bank 1.
399 *
400 */
401union cvmx_dpi_dmax_reqbnk1 {
402	u64 u64;
403	struct cvmx_dpi_dmax_reqbnk1_s {
404		u64 state : 64;
405	} s;
406	struct cvmx_dpi_dmax_reqbnk1_s cn61xx;
407	struct cvmx_dpi_dmax_reqbnk1_s cn63xx;
408	struct cvmx_dpi_dmax_reqbnk1_s cn63xxp1;
409	struct cvmx_dpi_dmax_reqbnk1_s cn66xx;
410	struct cvmx_dpi_dmax_reqbnk1_s cn68xx;
411	struct cvmx_dpi_dmax_reqbnk1_s cn68xxp1;
412	struct cvmx_dpi_dmax_reqbnk1_s cn70xx;
413	struct cvmx_dpi_dmax_reqbnk1_s cn70xxp1;
414	struct cvmx_dpi_dmax_reqbnk1_s cn73xx;
415	struct cvmx_dpi_dmax_reqbnk1_s cn78xx;
416	struct cvmx_dpi_dmax_reqbnk1_s cn78xxp1;
417	struct cvmx_dpi_dmax_reqbnk1_s cnf71xx;
418	struct cvmx_dpi_dmax_reqbnk1_s cnf75xx;
419};
420
421typedef union cvmx_dpi_dmax_reqbnk1 cvmx_dpi_dmax_reqbnk1_t;
422
423/**
424 * cvmx_dpi_dma#_reqq_ctl
425 *
426 * This register contains the control bits for transactions on the eight request queues.
427 *
428 */
429union cvmx_dpi_dmax_reqq_ctl {
430	u64 u64;
431	struct cvmx_dpi_dmax_reqq_ctl_s {
432		u64 reserved_9_63 : 55;
433		u64 st_cmd : 1;
434		u64 reserved_2_7 : 6;
435		u64 ld_cmd : 2;
436	} s;
437	struct cvmx_dpi_dmax_reqq_ctl_s cn73xx;
438	struct cvmx_dpi_dmax_reqq_ctl_s cn78xx;
439	struct cvmx_dpi_dmax_reqq_ctl_s cn78xxp1;
440	struct cvmx_dpi_dmax_reqq_ctl_s cnf75xx;
441};
442
443typedef union cvmx_dpi_dmax_reqq_ctl cvmx_dpi_dmax_reqq_ctl_t;
444
445/**
446 * cvmx_dpi_dma_control
447 *
448 * This register controls the operation of DMA input and output.
449 *
450 */
451union cvmx_dpi_dma_control {
452	u64 u64;
453	struct cvmx_dpi_dma_control_s {
454		u64 reserved_62_63 : 2;
455		u64 dici_mode : 1;
456		u64 pkt_en1 : 1;
457		u64 ffp_dis : 1;
458		u64 commit_mode : 1;
459		u64 pkt_hp : 1;
460		u64 pkt_en : 1;
461		u64 reserved_54_55 : 2;
462		u64 dma_enb : 6;
463		u64 wqecsdis : 1;
464		u64 wqecsoff : 7;
465		u64 zbwcsen : 1;
466		u64 wqecsmode : 2;
467		u64 reserved_35_36 : 2;
468		u64 ncb_tag : 1;
469		u64 b0_lend : 1;
470		u64 reserved_20_32 : 13;
471		u64 o_add1 : 1;
472		u64 o_ro : 1;
473		u64 o_ns : 1;
474		u64 o_es : 2;
475		u64 o_mode : 1;
476		u64 reserved_0_13 : 14;
477	} s;
478	struct cvmx_dpi_dma_control_cn61xx {
479		u64 reserved_62_63 : 2;
480		u64 dici_mode : 1;
481		u64 pkt_en1 : 1;
482		u64 ffp_dis : 1;
483		u64 commit_mode : 1;
484		u64 pkt_hp : 1;
485		u64 pkt_en : 1;
486		u64 reserved_54_55 : 2;
487		u64 dma_enb : 6;
488		u64 reserved_34_47 : 14;
489		u64 b0_lend : 1;
490		u64 dwb_denb : 1;
491		u64 dwb_ichk : 9;
492		u64 fpa_que : 3;
493		u64 o_add1 : 1;
494		u64 o_ro : 1;
495		u64 o_ns : 1;
496		u64 o_es : 2;
497		u64 o_mode : 1;
498		u64 reserved_0_13 : 14;
499	} cn61xx;
500	struct cvmx_dpi_dma_control_cn63xx {
501		u64 reserved_61_63 : 3;
502		u64 pkt_en1 : 1;
503		u64 ffp_dis : 1;
504		u64 commit_mode : 1;
505		u64 pkt_hp : 1;
506		u64 pkt_en : 1;
507		u64 reserved_54_55 : 2;
508		u64 dma_enb : 6;
509		u64 reserved_34_47 : 14;
510		u64 b0_lend : 1;
511		u64 dwb_denb : 1;
512		u64 dwb_ichk : 9;
513		u64 fpa_que : 3;
514		u64 o_add1 : 1;
515		u64 o_ro : 1;
516		u64 o_ns : 1;
517		u64 o_es : 2;
518		u64 o_mode : 1;
519		u64 reserved_0_13 : 14;
520	} cn63xx;
521	struct cvmx_dpi_dma_control_cn63xxp1 {
522		u64 reserved_59_63 : 5;
523		u64 commit_mode : 1;
524		u64 pkt_hp : 1;
525		u64 pkt_en : 1;
526		u64 reserved_54_55 : 2;
527		u64 dma_enb : 6;
528		u64 reserved_34_47 : 14;
529		u64 b0_lend : 1;
530		u64 dwb_denb : 1;
531		u64 dwb_ichk : 9;
532		u64 fpa_que : 3;
533		u64 o_add1 : 1;
534		u64 o_ro : 1;
535		u64 o_ns : 1;
536		u64 o_es : 2;
537		u64 o_mode : 1;
538		u64 reserved_0_13 : 14;
539	} cn63xxp1;
540	struct cvmx_dpi_dma_control_cn63xx cn66xx;
541	struct cvmx_dpi_dma_control_cn61xx cn68xx;
542	struct cvmx_dpi_dma_control_cn63xx cn68xxp1;
543	struct cvmx_dpi_dma_control_cn61xx cn70xx;
544	struct cvmx_dpi_dma_control_cn61xx cn70xxp1;
545	struct cvmx_dpi_dma_control_cn73xx {
546		u64 reserved_60_63 : 4;
547		u64 ffp_dis : 1;
548		u64 commit_mode : 1;
549		u64 reserved_57_57 : 1;
550		u64 pkt_en : 1;
551		u64 reserved_54_55 : 2;
552		u64 dma_enb : 6;
553		u64 wqecsdis : 1;
554		u64 wqecsoff : 7;
555		u64 zbwcsen : 1;
556		u64 wqecsmode : 2;
557		u64 reserved_35_36 : 2;
558		u64 ncb_tag : 1;
559		u64 b0_lend : 1;
560		u64 ldwb : 1;
561		u64 aura_ichk : 12;
562		u64 o_add1 : 1;
563		u64 o_ro : 1;
564		u64 o_ns : 1;
565		u64 o_es : 2;
566		u64 o_mode : 1;
567		u64 reserved_0_13 : 14;
568	} cn73xx;
569	struct cvmx_dpi_dma_control_cn73xx cn78xx;
570	struct cvmx_dpi_dma_control_cn73xx cn78xxp1;
571	struct cvmx_dpi_dma_control_cn61xx cnf71xx;
572	struct cvmx_dpi_dma_control_cn73xx cnf75xx;
573};
574
575typedef union cvmx_dpi_dma_control cvmx_dpi_dma_control_t;
576
577/**
578 * cvmx_dpi_dma_eng#_en
579 *
580 * These registers provide control for the DMA engines.
581 *
582 */
583union cvmx_dpi_dma_engx_en {
584	u64 u64;
585	struct cvmx_dpi_dma_engx_en_s {
586		u64 reserved_39_63 : 25;
587		u64 eng_molr : 7;
588		u64 reserved_8_31 : 24;
589		u64 qen : 8;
590	} s;
591	struct cvmx_dpi_dma_engx_en_cn61xx {
592		u64 reserved_8_63 : 56;
593		u64 qen : 8;
594	} cn61xx;
595	struct cvmx_dpi_dma_engx_en_cn61xx cn63xx;
596	struct cvmx_dpi_dma_engx_en_cn61xx cn63xxp1;
597	struct cvmx_dpi_dma_engx_en_cn61xx cn66xx;
598	struct cvmx_dpi_dma_engx_en_cn61xx cn68xx;
599	struct cvmx_dpi_dma_engx_en_cn61xx cn68xxp1;
600	struct cvmx_dpi_dma_engx_en_cn61xx cn70xx;
601	struct cvmx_dpi_dma_engx_en_cn61xx cn70xxp1;
602	struct cvmx_dpi_dma_engx_en_s cn73xx;
603	struct cvmx_dpi_dma_engx_en_s cn78xx;
604	struct cvmx_dpi_dma_engx_en_s cn78xxp1;
605	struct cvmx_dpi_dma_engx_en_cn61xx cnf71xx;
606	struct cvmx_dpi_dma_engx_en_s cnf75xx;
607};
608
609typedef union cvmx_dpi_dma_engx_en cvmx_dpi_dma_engx_en_t;
610
611/**
612 * cvmx_dpi_dma_pp#_cnt
613 *
614 * DPI_DMA_PP[0..3]_CNT  = DMA per PP Instr Done Counter
615 * When DMA Instruction Completion Interrupt Mode DPI_DMA_CONTROL.DICI_MODE is enabled, every dma
616 * instruction
617 * that has the WQP=0 and a PTR value of 1..4 will incremrement DPI_DMA_PPx_CNT value-1 counter.
618 * Instructions with WQP=0 and PTR values higher then 0x3F will still send a zero byte write.
619 * Hardware reserves that values 5..63 for future use and will treat them as a PTR of 0 and do
620 * nothing.
621 */
622union cvmx_dpi_dma_ppx_cnt {
623	u64 u64;
624	struct cvmx_dpi_dma_ppx_cnt_s {
625		u64 reserved_16_63 : 48;
626		u64 cnt : 16;
627	} s;
628	struct cvmx_dpi_dma_ppx_cnt_s cn61xx;
629	struct cvmx_dpi_dma_ppx_cnt_s cn68xx;
630	struct cvmx_dpi_dma_ppx_cnt_s cn70xx;
631	struct cvmx_dpi_dma_ppx_cnt_s cn70xxp1;
632	struct cvmx_dpi_dma_ppx_cnt_s cn73xx;
633	struct cvmx_dpi_dma_ppx_cnt_s cn78xx;
634	struct cvmx_dpi_dma_ppx_cnt_s cn78xxp1;
635	struct cvmx_dpi_dma_ppx_cnt_s cnf71xx;
636	struct cvmx_dpi_dma_ppx_cnt_s cnf75xx;
637};
638
639typedef union cvmx_dpi_dma_ppx_cnt cvmx_dpi_dma_ppx_cnt_t;
640
641/**
642 * cvmx_dpi_dma_pp_int
643 */
644union cvmx_dpi_dma_pp_int {
645	u64 u64;
646	struct cvmx_dpi_dma_pp_int_s {
647		u64 reserved_48_63 : 16;
648		u64 complete : 48;
649	} s;
650	struct cvmx_dpi_dma_pp_int_cn73xx {
651		u64 reserved_16_63 : 48;
652		u64 complete : 16;
653	} cn73xx;
654	struct cvmx_dpi_dma_pp_int_s cn78xx;
655	struct cvmx_dpi_dma_pp_int_s cn78xxp1;
656	struct cvmx_dpi_dma_pp_int_cn73xx cnf75xx;
657};
658
659typedef union cvmx_dpi_dma_pp_int cvmx_dpi_dma_pp_int_t;
660
661/**
662 * cvmx_dpi_ecc_ctl
663 *
664 * This register allows inserting ECC errors for testing.
665 *
666 */
667union cvmx_dpi_ecc_ctl {
668	u64 u64;
669	struct cvmx_dpi_ecc_ctl_s {
670		u64 reserved_33_63 : 31;
671		u64 ram_cdis : 1;
672		u64 reserved_17_31 : 15;
673		u64 ram_flip1 : 1;
674		u64 reserved_1_15 : 15;
675		u64 ram_flip0 : 1;
676	} s;
677	struct cvmx_dpi_ecc_ctl_s cn73xx;
678	struct cvmx_dpi_ecc_ctl_s cn78xx;
679	struct cvmx_dpi_ecc_ctl_s cn78xxp1;
680	struct cvmx_dpi_ecc_ctl_s cnf75xx;
681};
682
683typedef union cvmx_dpi_ecc_ctl cvmx_dpi_ecc_ctl_t;
684
685/**
686 * cvmx_dpi_ecc_int
687 *
688 * This register contains ECC error interrupt summary bits.
689 *
690 */
691union cvmx_dpi_ecc_int {
692	u64 u64;
693	struct cvmx_dpi_ecc_int_s {
694		u64 reserved_47_63 : 17;
695		u64 ram_sbe : 15;
696		u64 reserved_15_31 : 17;
697		u64 ram_dbe : 15;
698	} s;
699	struct cvmx_dpi_ecc_int_s cn73xx;
700	struct cvmx_dpi_ecc_int_s cn78xx;
701	struct cvmx_dpi_ecc_int_s cn78xxp1;
702	struct cvmx_dpi_ecc_int_s cnf75xx;
703};
704
705typedef union cvmx_dpi_ecc_int cvmx_dpi_ecc_int_t;
706
707/**
708 * cvmx_dpi_eng#_buf
709 *
710 * Notes:
711 * The total amount of storage allocated to the 6 DPI DMA engines (via DPI_ENG*_BUF[BLKS]) must not exceed 8KB.
712 *
713 */
714union cvmx_dpi_engx_buf {
715	u64 u64;
716	struct cvmx_dpi_engx_buf_s {
717		u64 reserved_38_63 : 26;
718		u64 compblks : 6;
719		u64 reserved_10_31 : 22;
720		u64 base : 6;
721		u64 blks : 4;
722	} s;
723	struct cvmx_dpi_engx_buf_cn61xx {
724		u64 reserved_37_63 : 27;
725		u64 compblks : 5;
726		u64 reserved_9_31 : 23;
727		u64 base : 5;
728		u64 blks : 4;
729	} cn61xx;
730	struct cvmx_dpi_engx_buf_cn63xx {
731		u64 reserved_8_63 : 56;
732		u64 base : 4;
733		u64 blks : 4;
734	} cn63xx;
735	struct cvmx_dpi_engx_buf_cn63xx cn63xxp1;
736	struct cvmx_dpi_engx_buf_cn61xx cn66xx;
737	struct cvmx_dpi_engx_buf_cn61xx cn68xx;
738	struct cvmx_dpi_engx_buf_cn61xx cn68xxp1;
739	struct cvmx_dpi_engx_buf_cn61xx cn70xx;
740	struct cvmx_dpi_engx_buf_cn61xx cn70xxp1;
741	struct cvmx_dpi_engx_buf_s cn73xx;
742	struct cvmx_dpi_engx_buf_s cn78xx;
743	struct cvmx_dpi_engx_buf_s cn78xxp1;
744	struct cvmx_dpi_engx_buf_cn61xx cnf71xx;
745	struct cvmx_dpi_engx_buf_s cnf75xx;
746};
747
748typedef union cvmx_dpi_engx_buf cvmx_dpi_engx_buf_t;
749
750/**
751 * cvmx_dpi_info_reg
752 */
753union cvmx_dpi_info_reg {
754	u64 u64;
755	struct cvmx_dpi_info_reg_s {
756		u64 reserved_8_63 : 56;
757		u64 ffp : 4;
758		u64 reserved_2_3 : 2;
759		u64 ncb : 1;
760		u64 rsl : 1;
761	} s;
762	struct cvmx_dpi_info_reg_s cn61xx;
763	struct cvmx_dpi_info_reg_s cn63xx;
764	struct cvmx_dpi_info_reg_cn63xxp1 {
765		u64 reserved_2_63 : 62;
766		u64 ncb : 1;
767		u64 rsl : 1;
768	} cn63xxp1;
769	struct cvmx_dpi_info_reg_s cn66xx;
770	struct cvmx_dpi_info_reg_s cn68xx;
771	struct cvmx_dpi_info_reg_s cn68xxp1;
772	struct cvmx_dpi_info_reg_s cn70xx;
773	struct cvmx_dpi_info_reg_s cn70xxp1;
774	struct cvmx_dpi_info_reg_s cn73xx;
775	struct cvmx_dpi_info_reg_s cn78xx;
776	struct cvmx_dpi_info_reg_s cn78xxp1;
777	struct cvmx_dpi_info_reg_s cnf71xx;
778	struct cvmx_dpi_info_reg_s cnf75xx;
779};
780
781typedef union cvmx_dpi_info_reg cvmx_dpi_info_reg_t;
782
783/**
784 * cvmx_dpi_int_en
785 */
786union cvmx_dpi_int_en {
787	u64 u64;
788	struct cvmx_dpi_int_en_s {
789		u64 reserved_28_63 : 36;
790		u64 sprt3_rst : 1;
791		u64 sprt2_rst : 1;
792		u64 sprt1_rst : 1;
793		u64 sprt0_rst : 1;
794		u64 reserved_23_23 : 1;
795		u64 req_badfil : 1;
796		u64 req_inull : 1;
797		u64 req_anull : 1;
798		u64 req_undflw : 1;
799		u64 req_ovrflw : 1;
800		u64 req_badlen : 1;
801		u64 req_badadr : 1;
802		u64 dmadbo : 8;
803		u64 reserved_2_7 : 6;
804		u64 nfovr : 1;
805		u64 nderr : 1;
806	} s;
807	struct cvmx_dpi_int_en_s cn61xx;
808	struct cvmx_dpi_int_en_cn63xx {
809		u64 reserved_26_63 : 38;
810		u64 sprt1_rst : 1;
811		u64 sprt0_rst : 1;
812		u64 reserved_23_23 : 1;
813		u64 req_badfil : 1;
814		u64 req_inull : 1;
815		u64 req_anull : 1;
816		u64 req_undflw : 1;
817		u64 req_ovrflw : 1;
818		u64 req_badlen : 1;
819		u64 req_badadr : 1;
820		u64 dmadbo : 8;
821		u64 reserved_2_7 : 6;
822		u64 nfovr : 1;
823		u64 nderr : 1;
824	} cn63xx;
825	struct cvmx_dpi_int_en_cn63xx cn63xxp1;
826	struct cvmx_dpi_int_en_s cn66xx;
827	struct cvmx_dpi_int_en_cn63xx cn68xx;
828	struct cvmx_dpi_int_en_cn63xx cn68xxp1;
829	struct cvmx_dpi_int_en_cn70xx {
830		u64 reserved_28_63 : 36;
831		u64 sprt3_rst : 1;
832		u64 sprt2_rst : 1;
833		u64 sprt1_rst : 1;
834		u64 sprt0_rst : 1;
835		u64 reserved_23_23 : 1;
836		u64 req_badfil : 1;
837		u64 req_inull : 1;
838		u64 req_anull : 1;
839		u64 req_undflw : 1;
840		u64 req_ovrflw : 1;
841		u64 req_badlen : 1;
842		u64 req_badadr : 1;
843		u64 dmadbo : 8;
844		u64 reserved_7_2 : 6;
845		u64 nfovr : 1;
846		u64 nderr : 1;
847	} cn70xx;
848	struct cvmx_dpi_int_en_cn70xx cn70xxp1;
849	struct cvmx_dpi_int_en_s cnf71xx;
850};
851
852typedef union cvmx_dpi_int_en cvmx_dpi_int_en_t;
853
854/**
855 * cvmx_dpi_int_reg
856 *
857 * This register contains error flags for DPI.
858 *
859 */
860union cvmx_dpi_int_reg {
861	u64 u64;
862	struct cvmx_dpi_int_reg_s {
863		u64 reserved_28_63 : 36;
864		u64 sprt3_rst : 1;
865		u64 sprt2_rst : 1;
866		u64 sprt1_rst : 1;
867		u64 sprt0_rst : 1;
868		u64 reserved_23_23 : 1;
869		u64 req_badfil : 1;
870		u64 req_inull : 1;
871		u64 req_anull : 1;
872		u64 req_undflw : 1;
873		u64 req_ovrflw : 1;
874		u64 req_badlen : 1;
875		u64 req_badadr : 1;
876		u64 dmadbo : 8;
877		u64 reserved_2_7 : 6;
878		u64 nfovr : 1;
879		u64 nderr : 1;
880	} s;
881	struct cvmx_dpi_int_reg_s cn61xx;
882	struct cvmx_dpi_int_reg_cn63xx {
883		u64 reserved_26_63 : 38;
884		u64 sprt1_rst : 1;
885		u64 sprt0_rst : 1;
886		u64 reserved_23_23 : 1;
887		u64 req_badfil : 1;
888		u64 req_inull : 1;
889		u64 req_anull : 1;
890		u64 req_undflw : 1;
891		u64 req_ovrflw : 1;
892		u64 req_badlen : 1;
893		u64 req_badadr : 1;
894		u64 dmadbo : 8;
895		u64 reserved_2_7 : 6;
896		u64 nfovr : 1;
897		u64 nderr : 1;
898	} cn63xx;
899	struct cvmx_dpi_int_reg_cn63xx cn63xxp1;
900	struct cvmx_dpi_int_reg_s cn66xx;
901	struct cvmx_dpi_int_reg_cn63xx cn68xx;
902	struct cvmx_dpi_int_reg_cn63xx cn68xxp1;
903	struct cvmx_dpi_int_reg_s cn70xx;
904	struct cvmx_dpi_int_reg_s cn70xxp1;
905	struct cvmx_dpi_int_reg_cn73xx {
906		u64 reserved_23_63 : 41;
907		u64 req_badfil : 1;
908		u64 req_inull : 1;
909		u64 req_anull : 1;
910		u64 req_undflw : 1;
911		u64 req_ovrflw : 1;
912		u64 req_badlen : 1;
913		u64 req_badadr : 1;
914		u64 dmadbo : 8;
915		u64 reserved_2_7 : 6;
916		u64 nfovr : 1;
917		u64 nderr : 1;
918	} cn73xx;
919	struct cvmx_dpi_int_reg_cn73xx cn78xx;
920	struct cvmx_dpi_int_reg_s cn78xxp1;
921	struct cvmx_dpi_int_reg_s cnf71xx;
922	struct cvmx_dpi_int_reg_cn73xx cnf75xx;
923};
924
925typedef union cvmx_dpi_int_reg cvmx_dpi_int_reg_t;
926
927/**
928 * cvmx_dpi_ncb#_cfg
929 */
930union cvmx_dpi_ncbx_cfg {
931	u64 u64;
932	struct cvmx_dpi_ncbx_cfg_s {
933		u64 reserved_6_63 : 58;
934		u64 molr : 6;
935	} s;
936	struct cvmx_dpi_ncbx_cfg_s cn61xx;
937	struct cvmx_dpi_ncbx_cfg_s cn66xx;
938	struct cvmx_dpi_ncbx_cfg_s cn68xx;
939	struct cvmx_dpi_ncbx_cfg_s cn70xx;
940	struct cvmx_dpi_ncbx_cfg_s cn70xxp1;
941	struct cvmx_dpi_ncbx_cfg_s cn73xx;
942	struct cvmx_dpi_ncbx_cfg_s cn78xx;
943	struct cvmx_dpi_ncbx_cfg_s cn78xxp1;
944	struct cvmx_dpi_ncbx_cfg_s cnf71xx;
945	struct cvmx_dpi_ncbx_cfg_s cnf75xx;
946};
947
948typedef union cvmx_dpi_ncbx_cfg cvmx_dpi_ncbx_cfg_t;
949
950/**
951 * cvmx_dpi_ncb_ctl
952 *
953 * This register chooses which NCB interface DPI uses for L2/DRAM reads/writes.
954 *
955 */
956union cvmx_dpi_ncb_ctl {
957	u64 u64;
958	struct cvmx_dpi_ncb_ctl_s {
959		u64 reserved_25_63 : 39;
960		u64 ncbsel_prt_xor_dis : 1;
961		u64 reserved_21_23 : 3;
962		u64 ncbsel_zbw : 1;
963		u64 reserved_17_19 : 3;
964		u64 ncbsel_req : 1;
965		u64 reserved_13_15 : 3;
966		u64 ncbsel_dst : 1;
967		u64 reserved_9_11 : 3;
968		u64 ncbsel_src : 1;
969		u64 reserved_1_7 : 7;
970		u64 prt : 1;
971	} s;
972	struct cvmx_dpi_ncb_ctl_cn73xx {
973		u64 reserved_25_63 : 39;
974		u64 ncbsel_prt_xor_dis : 1;
975		u64 reserved_21_23 : 3;
976		u64 ncbsel_zbw : 1;
977		u64 reserved_17_19 : 3;
978		u64 ncbsel_req : 1;
979		u64 reserved_13_15 : 3;
980		u64 ncbsel_dst : 1;
981		u64 reserved_9_11 : 3;
982		u64 ncbsel_src : 1;
983		u64 reserved_0_7 : 8;
984	} cn73xx;
985	struct cvmx_dpi_ncb_ctl_s cn78xx;
986	struct cvmx_dpi_ncb_ctl_s cn78xxp1;
987	struct cvmx_dpi_ncb_ctl_cn73xx cnf75xx;
988};
989
990typedef union cvmx_dpi_ncb_ctl cvmx_dpi_ncb_ctl_t;
991
992/**
993 * cvmx_dpi_pint_info
994 *
995 * This register provides DPI packet interrupt information.
996 *
997 */
998union cvmx_dpi_pint_info {
999	u64 u64;
1000	struct cvmx_dpi_pint_info_s {
1001		u64 reserved_14_63 : 50;
1002		u64 iinfo : 6;
1003		u64 reserved_6_7 : 2;
1004		u64 sinfo : 6;
1005	} s;
1006	struct cvmx_dpi_pint_info_s cn61xx;
1007	struct cvmx_dpi_pint_info_s cn63xx;
1008	struct cvmx_dpi_pint_info_s cn63xxp1;
1009	struct cvmx_dpi_pint_info_s cn66xx;
1010	struct cvmx_dpi_pint_info_s cn68xx;
1011	struct cvmx_dpi_pint_info_s cn68xxp1;
1012	struct cvmx_dpi_pint_info_s cn70xx;
1013	struct cvmx_dpi_pint_info_s cn70xxp1;
1014	struct cvmx_dpi_pint_info_s cn73xx;
1015	struct cvmx_dpi_pint_info_s cn78xx;
1016	struct cvmx_dpi_pint_info_s cn78xxp1;
1017	struct cvmx_dpi_pint_info_s cnf71xx;
1018	struct cvmx_dpi_pint_info_s cnf75xx;
1019};
1020
1021typedef union cvmx_dpi_pint_info cvmx_dpi_pint_info_t;
1022
1023/**
1024 * cvmx_dpi_pkt_err_rsp
1025 */
1026union cvmx_dpi_pkt_err_rsp {
1027	u64 u64;
1028	struct cvmx_dpi_pkt_err_rsp_s {
1029		u64 reserved_1_63 : 63;
1030		u64 pkterr : 1;
1031	} s;
1032	struct cvmx_dpi_pkt_err_rsp_s cn61xx;
1033	struct cvmx_dpi_pkt_err_rsp_s cn63xx;
1034	struct cvmx_dpi_pkt_err_rsp_s cn63xxp1;
1035	struct cvmx_dpi_pkt_err_rsp_s cn66xx;
1036	struct cvmx_dpi_pkt_err_rsp_s cn68xx;
1037	struct cvmx_dpi_pkt_err_rsp_s cn68xxp1;
1038	struct cvmx_dpi_pkt_err_rsp_s cn70xx;
1039	struct cvmx_dpi_pkt_err_rsp_s cn70xxp1;
1040	struct cvmx_dpi_pkt_err_rsp_s cn73xx;
1041	struct cvmx_dpi_pkt_err_rsp_s cn78xx;
1042	struct cvmx_dpi_pkt_err_rsp_s cn78xxp1;
1043	struct cvmx_dpi_pkt_err_rsp_s cnf71xx;
1044	struct cvmx_dpi_pkt_err_rsp_s cnf75xx;
1045};
1046
1047typedef union cvmx_dpi_pkt_err_rsp cvmx_dpi_pkt_err_rsp_t;
1048
1049/**
1050 * cvmx_dpi_req_err_rsp
1051 */
1052union cvmx_dpi_req_err_rsp {
1053	u64 u64;
1054	struct cvmx_dpi_req_err_rsp_s {
1055		u64 reserved_8_63 : 56;
1056		u64 qerr : 8;
1057	} s;
1058	struct cvmx_dpi_req_err_rsp_s cn61xx;
1059	struct cvmx_dpi_req_err_rsp_s cn63xx;
1060	struct cvmx_dpi_req_err_rsp_s cn63xxp1;
1061	struct cvmx_dpi_req_err_rsp_s cn66xx;
1062	struct cvmx_dpi_req_err_rsp_s cn68xx;
1063	struct cvmx_dpi_req_err_rsp_s cn68xxp1;
1064	struct cvmx_dpi_req_err_rsp_s cn70xx;
1065	struct cvmx_dpi_req_err_rsp_s cn70xxp1;
1066	struct cvmx_dpi_req_err_rsp_s cn73xx;
1067	struct cvmx_dpi_req_err_rsp_s cn78xx;
1068	struct cvmx_dpi_req_err_rsp_s cn78xxp1;
1069	struct cvmx_dpi_req_err_rsp_s cnf71xx;
1070	struct cvmx_dpi_req_err_rsp_s cnf75xx;
1071};
1072
1073typedef union cvmx_dpi_req_err_rsp cvmx_dpi_req_err_rsp_t;
1074
1075/**
1076 * cvmx_dpi_req_err_rsp_en
1077 */
1078union cvmx_dpi_req_err_rsp_en {
1079	u64 u64;
1080	struct cvmx_dpi_req_err_rsp_en_s {
1081		u64 reserved_8_63 : 56;
1082		u64 en : 8;
1083	} s;
1084	struct cvmx_dpi_req_err_rsp_en_s cn61xx;
1085	struct cvmx_dpi_req_err_rsp_en_s cn63xx;
1086	struct cvmx_dpi_req_err_rsp_en_s cn63xxp1;
1087	struct cvmx_dpi_req_err_rsp_en_s cn66xx;
1088	struct cvmx_dpi_req_err_rsp_en_s cn68xx;
1089	struct cvmx_dpi_req_err_rsp_en_s cn68xxp1;
1090	struct cvmx_dpi_req_err_rsp_en_s cn70xx;
1091	struct cvmx_dpi_req_err_rsp_en_s cn70xxp1;
1092	struct cvmx_dpi_req_err_rsp_en_s cn73xx;
1093	struct cvmx_dpi_req_err_rsp_en_s cn78xx;
1094	struct cvmx_dpi_req_err_rsp_en_s cn78xxp1;
1095	struct cvmx_dpi_req_err_rsp_en_s cnf71xx;
1096	struct cvmx_dpi_req_err_rsp_en_s cnf75xx;
1097};
1098
1099typedef union cvmx_dpi_req_err_rsp_en cvmx_dpi_req_err_rsp_en_t;
1100
1101/**
1102 * cvmx_dpi_req_err_rst
1103 */
1104union cvmx_dpi_req_err_rst {
1105	u64 u64;
1106	struct cvmx_dpi_req_err_rst_s {
1107		u64 reserved_8_63 : 56;
1108		u64 qerr : 8;
1109	} s;
1110	struct cvmx_dpi_req_err_rst_s cn61xx;
1111	struct cvmx_dpi_req_err_rst_s cn63xx;
1112	struct cvmx_dpi_req_err_rst_s cn63xxp1;
1113	struct cvmx_dpi_req_err_rst_s cn66xx;
1114	struct cvmx_dpi_req_err_rst_s cn68xx;
1115	struct cvmx_dpi_req_err_rst_s cn68xxp1;
1116	struct cvmx_dpi_req_err_rst_s cn70xx;
1117	struct cvmx_dpi_req_err_rst_s cn70xxp1;
1118	struct cvmx_dpi_req_err_rst_s cn73xx;
1119	struct cvmx_dpi_req_err_rst_s cn78xx;
1120	struct cvmx_dpi_req_err_rst_s cn78xxp1;
1121	struct cvmx_dpi_req_err_rst_s cnf71xx;
1122	struct cvmx_dpi_req_err_rst_s cnf75xx;
1123};
1124
1125typedef union cvmx_dpi_req_err_rst cvmx_dpi_req_err_rst_t;
1126
1127/**
1128 * cvmx_dpi_req_err_rst_en
1129 */
1130union cvmx_dpi_req_err_rst_en {
1131	u64 u64;
1132	struct cvmx_dpi_req_err_rst_en_s {
1133		u64 reserved_8_63 : 56;
1134		u64 en : 8;
1135	} s;
1136	struct cvmx_dpi_req_err_rst_en_s cn61xx;
1137	struct cvmx_dpi_req_err_rst_en_s cn63xx;
1138	struct cvmx_dpi_req_err_rst_en_s cn63xxp1;
1139	struct cvmx_dpi_req_err_rst_en_s cn66xx;
1140	struct cvmx_dpi_req_err_rst_en_s cn68xx;
1141	struct cvmx_dpi_req_err_rst_en_s cn68xxp1;
1142	struct cvmx_dpi_req_err_rst_en_s cn70xx;
1143	struct cvmx_dpi_req_err_rst_en_s cn70xxp1;
1144	struct cvmx_dpi_req_err_rst_en_s cn73xx;
1145	struct cvmx_dpi_req_err_rst_en_s cn78xx;
1146	struct cvmx_dpi_req_err_rst_en_s cn78xxp1;
1147	struct cvmx_dpi_req_err_rst_en_s cnf71xx;
1148	struct cvmx_dpi_req_err_rst_en_s cnf75xx;
1149};
1150
1151typedef union cvmx_dpi_req_err_rst_en cvmx_dpi_req_err_rst_en_t;
1152
1153/**
1154 * cvmx_dpi_req_err_skip_comp
1155 */
1156union cvmx_dpi_req_err_skip_comp {
1157	u64 u64;
1158	struct cvmx_dpi_req_err_skip_comp_s {
1159		u64 reserved_24_63 : 40;
1160		u64 en_rst : 8;
1161		u64 reserved_8_15 : 8;
1162		u64 en_rsp : 8;
1163	} s;
1164	struct cvmx_dpi_req_err_skip_comp_s cn61xx;
1165	struct cvmx_dpi_req_err_skip_comp_s cn66xx;
1166	struct cvmx_dpi_req_err_skip_comp_s cn68xx;
1167	struct cvmx_dpi_req_err_skip_comp_s cn68xxp1;
1168	struct cvmx_dpi_req_err_skip_comp_s cn70xx;
1169	struct cvmx_dpi_req_err_skip_comp_s cn70xxp1;
1170	struct cvmx_dpi_req_err_skip_comp_s cn73xx;
1171	struct cvmx_dpi_req_err_skip_comp_s cn78xx;
1172	struct cvmx_dpi_req_err_skip_comp_s cn78xxp1;
1173	struct cvmx_dpi_req_err_skip_comp_s cnf71xx;
1174	struct cvmx_dpi_req_err_skip_comp_s cnf75xx;
1175};
1176
1177typedef union cvmx_dpi_req_err_skip_comp cvmx_dpi_req_err_skip_comp_t;
1178
1179/**
1180 * cvmx_dpi_req_gbl_en
1181 */
1182union cvmx_dpi_req_gbl_en {
1183	u64 u64;
1184	struct cvmx_dpi_req_gbl_en_s {
1185		u64 reserved_8_63 : 56;
1186		u64 qen : 8;
1187	} s;
1188	struct cvmx_dpi_req_gbl_en_s cn61xx;
1189	struct cvmx_dpi_req_gbl_en_s cn63xx;
1190	struct cvmx_dpi_req_gbl_en_s cn63xxp1;
1191	struct cvmx_dpi_req_gbl_en_s cn66xx;
1192	struct cvmx_dpi_req_gbl_en_s cn68xx;
1193	struct cvmx_dpi_req_gbl_en_s cn68xxp1;
1194	struct cvmx_dpi_req_gbl_en_s cn70xx;
1195	struct cvmx_dpi_req_gbl_en_s cn70xxp1;
1196	struct cvmx_dpi_req_gbl_en_s cn73xx;
1197	struct cvmx_dpi_req_gbl_en_s cn78xx;
1198	struct cvmx_dpi_req_gbl_en_s cn78xxp1;
1199	struct cvmx_dpi_req_gbl_en_s cnf71xx;
1200	struct cvmx_dpi_req_gbl_en_s cnf75xx;
1201};
1202
1203typedef union cvmx_dpi_req_gbl_en cvmx_dpi_req_gbl_en_t;
1204
1205/**
1206 * cvmx_dpi_sli_prt#_cfg
1207 *
1208 * This register configures the max read request size, max payload size, and max number of SLI
1209 * tags in use. Indexed by SLI_PORT_E.
1210 */
1211union cvmx_dpi_sli_prtx_cfg {
1212	u64 u64;
1213	struct cvmx_dpi_sli_prtx_cfg_s {
1214		u64 reserved_29_63 : 35;
1215		u64 ncbsel : 1;
1216		u64 reserved_25_27 : 3;
1217		u64 halt : 1;
1218		u64 qlm_cfg : 4;
1219		u64 reserved_17_19 : 3;
1220		u64 rd_mode : 1;
1221		u64 reserved_15_15 : 1;
1222		u64 molr : 7;
1223		u64 mps_lim : 1;
1224		u64 reserved_5_6 : 2;
1225		u64 mps : 1;
1226		u64 mrrs_lim : 1;
1227		u64 reserved_2_2 : 1;
1228		u64 mrrs : 2;
1229	} s;
1230	struct cvmx_dpi_sli_prtx_cfg_cn61xx {
1231		u64 reserved_25_63 : 39;
1232		u64 halt : 1;
1233		u64 qlm_cfg : 4;
1234		u64 reserved_17_19 : 3;
1235		u64 rd_mode : 1;
1236		u64 reserved_14_15 : 2;
1237		u64 molr : 6;
1238		u64 mps_lim : 1;
1239		u64 reserved_5_6 : 2;
1240		u64 mps : 1;
1241		u64 mrrs_lim : 1;
1242		u64 reserved_2_2 : 1;
1243		u64 mrrs : 2;
1244	} cn61xx;
1245	struct cvmx_dpi_sli_prtx_cfg_cn63xx {
1246		u64 reserved_25_63 : 39;
1247		u64 halt : 1;
1248		u64 reserved_21_23 : 3;
1249		u64 qlm_cfg : 1;
1250		u64 reserved_17_19 : 3;
1251		u64 rd_mode : 1;
1252		u64 reserved_14_15 : 2;
1253		u64 molr : 6;
1254		u64 mps_lim : 1;
1255		u64 reserved_5_6 : 2;
1256		u64 mps : 1;
1257		u64 mrrs_lim : 1;
1258		u64 reserved_2_2 : 1;
1259		u64 mrrs : 2;
1260	} cn63xx;
1261	struct cvmx_dpi_sli_prtx_cfg_cn63xx cn63xxp1;
1262	struct cvmx_dpi_sli_prtx_cfg_cn61xx cn66xx;
1263	struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xx;
1264	struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xxp1;
1265	struct cvmx_dpi_sli_prtx_cfg_cn70xx {
1266		u64 reserved_25_63 : 39;
1267		u64 halt : 1;
1268		u64 reserved_17_23 : 7;
1269		u64 rd_mode : 1;
1270		u64 reserved_14_15 : 2;
1271		u64 molr : 6;
1272		u64 mps_lim : 1;
1273		u64 reserved_5_6 : 2;
1274		u64 mps : 1;
1275		u64 mrrs_lim : 1;
1276		u64 reserved_2_2 : 1;
1277		u64 mrrs : 2;
1278	} cn70xx;
1279	struct cvmx_dpi_sli_prtx_cfg_cn70xx cn70xxp1;
1280	struct cvmx_dpi_sli_prtx_cfg_cn73xx {
1281		u64 reserved_29_63 : 35;
1282		u64 ncbsel : 1;
1283		u64 reserved_25_27 : 3;
1284		u64 halt : 1;
1285		u64 reserved_21_23 : 3;
1286		u64 qlm_cfg : 1;
1287		u64 reserved_17_19 : 3;
1288		u64 rd_mode : 1;
1289		u64 reserved_15_15 : 1;
1290		u64 molr : 7;
1291		u64 mps_lim : 1;
1292		u64 reserved_5_6 : 2;
1293		u64 mps : 1;
1294		u64 mrrs_lim : 1;
1295		u64 reserved_2_2 : 1;
1296		u64 mrrs : 2;
1297	} cn73xx;
1298	struct cvmx_dpi_sli_prtx_cfg_cn73xx cn78xx;
1299	struct cvmx_dpi_sli_prtx_cfg_cn73xx cn78xxp1;
1300	struct cvmx_dpi_sli_prtx_cfg_cn61xx cnf71xx;
1301	struct cvmx_dpi_sli_prtx_cfg_cn73xx cnf75xx;
1302};
1303
1304typedef union cvmx_dpi_sli_prtx_cfg cvmx_dpi_sli_prtx_cfg_t;
1305
1306/**
1307 * cvmx_dpi_sli_prt#_err
1308 *
1309 * This register logs the address associated with the reported SLI error response.
1310 * Indexed by SLI_PORT_E.
1311 */
1312union cvmx_dpi_sli_prtx_err {
1313	u64 u64;
1314	struct cvmx_dpi_sli_prtx_err_s {
1315		u64 addr : 61;
1316		u64 reserved_0_2 : 3;
1317	} s;
1318	struct cvmx_dpi_sli_prtx_err_s cn61xx;
1319	struct cvmx_dpi_sli_prtx_err_s cn63xx;
1320	struct cvmx_dpi_sli_prtx_err_s cn63xxp1;
1321	struct cvmx_dpi_sli_prtx_err_s cn66xx;
1322	struct cvmx_dpi_sli_prtx_err_s cn68xx;
1323	struct cvmx_dpi_sli_prtx_err_s cn68xxp1;
1324	struct cvmx_dpi_sli_prtx_err_s cn70xx;
1325	struct cvmx_dpi_sli_prtx_err_s cn70xxp1;
1326	struct cvmx_dpi_sli_prtx_err_s cn73xx;
1327	struct cvmx_dpi_sli_prtx_err_s cn78xx;
1328	struct cvmx_dpi_sli_prtx_err_s cn78xxp1;
1329	struct cvmx_dpi_sli_prtx_err_s cnf71xx;
1330	struct cvmx_dpi_sli_prtx_err_s cnf75xx;
1331};
1332
1333typedef union cvmx_dpi_sli_prtx_err cvmx_dpi_sli_prtx_err_t;
1334
1335/**
1336 * cvmx_dpi_sli_prt#_err_info
1337 *
1338 * This register logs information associated with the reported SLI error response.
1339 * Indexed by SLI_PORT_E.
1340 */
1341union cvmx_dpi_sli_prtx_err_info {
1342	u64 u64;
1343	struct cvmx_dpi_sli_prtx_err_info_s {
1344		u64 reserved_9_63 : 55;
1345		u64 lock : 1;
1346		u64 reserved_5_7 : 3;
1347		u64 type : 1;
1348		u64 reserved_3_3 : 1;
1349		u64 reqq : 3;
1350	} s;
1351	struct cvmx_dpi_sli_prtx_err_info_s cn61xx;
1352	struct cvmx_dpi_sli_prtx_err_info_s cn63xx;
1353	struct cvmx_dpi_sli_prtx_err_info_s cn63xxp1;
1354	struct cvmx_dpi_sli_prtx_err_info_s cn66xx;
1355	struct cvmx_dpi_sli_prtx_err_info_s cn68xx;
1356	struct cvmx_dpi_sli_prtx_err_info_s cn68xxp1;
1357	struct cvmx_dpi_sli_prtx_err_info_s cn70xx;
1358	struct cvmx_dpi_sli_prtx_err_info_s cn70xxp1;
1359	struct cvmx_dpi_sli_prtx_err_info_cn73xx {
1360		u64 reserved_32_63 : 32;
1361		u64 pvf : 16;
1362		u64 reserved_9_15 : 7;
1363		u64 lock : 1;
1364		u64 reserved_5_7 : 3;
1365		u64 type : 1;
1366		u64 reserved_3_3 : 1;
1367		u64 reqq : 3;
1368	} cn73xx;
1369	struct cvmx_dpi_sli_prtx_err_info_cn73xx cn78xx;
1370	struct cvmx_dpi_sli_prtx_err_info_cn78xxp1 {
1371		u64 reserved_23_63 : 41;
1372		u64 vf : 7;
1373		u64 reserved_9_15 : 7;
1374		u64 lock : 1;
1375		u64 reserved_5_7 : 3;
1376		u64 type : 1;
1377		u64 reserved_3_3 : 1;
1378		u64 reqq : 3;
1379	} cn78xxp1;
1380	struct cvmx_dpi_sli_prtx_err_info_s cnf71xx;
1381	struct cvmx_dpi_sli_prtx_err_info_cn73xx cnf75xx;
1382};
1383
1384typedef union cvmx_dpi_sli_prtx_err_info cvmx_dpi_sli_prtx_err_info_t;
1385
1386/**
1387 * cvmx_dpi_srio_rx_bell#
1388 *
1389 * Reading this register pops an entry off the corresponding SRIO RX doorbell FIFO.
1390 * The chip supports 16 FIFOs per SRIO interface for a total of 32 FIFOs/Registers.
1391 * The MSB of the registers indicates the MAC while the 4 LSBs indicate the FIFO.
1392 * Information on the doorbell allocation can be found in SRIO()_RX_BELL_CTRL.
1393 */
1394union cvmx_dpi_srio_rx_bellx {
1395	u64 u64;
1396	struct cvmx_dpi_srio_rx_bellx_s {
1397		u64 reserved_48_63 : 16;
1398		u64 data : 16;
1399		u64 sid : 16;
1400		u64 count : 8;
1401		u64 reserved_5_7 : 3;
1402		u64 dest_id : 1;
1403		u64 id16 : 1;
1404		u64 reserved_2_2 : 1;
1405		u64 dpriority : 2;
1406	} s;
1407	struct cvmx_dpi_srio_rx_bellx_s cnf75xx;
1408};
1409
1410typedef union cvmx_dpi_srio_rx_bellx cvmx_dpi_srio_rx_bellx_t;
1411
1412/**
1413 * cvmx_dpi_srio_rx_bell_seq#
1414 *
1415 * This register contains the value of the sequence counter when the doorbell
1416 * was received and a shadow copy of the Bell FIFO Count that can be read without
1417 * emptying the FIFO.  This register must be read prior to corresponding
1418 * DPI_SRIO_RX_BELL register to link the doorbell and sequence number.
1419 *
1420 * Information on the Doorbell Allocation can be found in SRIO()_RX_BELL_CTRL.
1421 */
1422union cvmx_dpi_srio_rx_bell_seqx {
1423	u64 u64;
1424	struct cvmx_dpi_srio_rx_bell_seqx_s {
1425		u64 reserved_40_63 : 24;
1426		u64 count : 8;
1427		u64 sid : 32;
1428	} s;
1429	struct cvmx_dpi_srio_rx_bell_seqx_s cnf75xx;
1430};
1431
1432typedef union cvmx_dpi_srio_rx_bell_seqx cvmx_dpi_srio_rx_bell_seqx_t;
1433
1434/**
1435 * cvmx_dpi_swa_q_vmid
1436 *
1437 * Not used.
1438 *
1439 */
1440union cvmx_dpi_swa_q_vmid {
1441	u64 u64;
1442	struct cvmx_dpi_swa_q_vmid_s {
1443		u64 vmid7 : 8;
1444		u64 vmid6 : 8;
1445		u64 vmid5 : 8;
1446		u64 vmid4 : 8;
1447		u64 vmid3 : 8;
1448		u64 vmid2 : 8;
1449		u64 vmid1 : 8;
1450		u64 vmid0 : 8;
1451	} s;
1452	struct cvmx_dpi_swa_q_vmid_s cn73xx;
1453	struct cvmx_dpi_swa_q_vmid_s cn78xx;
1454	struct cvmx_dpi_swa_q_vmid_s cn78xxp1;
1455	struct cvmx_dpi_swa_q_vmid_s cnf75xx;
1456};
1457
1458typedef union cvmx_dpi_swa_q_vmid cvmx_dpi_swa_q_vmid_t;
1459
1460#endif
1461