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)
CVMX_DPI_DMA_PPX_CNT(unsigned long offset)25 static 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)
CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)64 static 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  */
105 union 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 
138 typedef 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  */
146 union 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 
171 typedef 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  */
179 union 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 
201 typedef 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  */
209 union 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 
230 typedef union cvmx_dpi_dmax_dbell cvmx_dpi_dmax_dbell_t;
231 
232 /**
233  * cvmx_dpi_dma#_err_rsp_status
234  */
235 union 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 
254 typedef 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  */
262 union 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 
306 typedef union cvmx_dpi_dmax_ibuff_saddr cvmx_dpi_dmax_ibuff_saddr_t;
307 
308 /**
309  * cvmx_dpi_dma#_iflight
310  */
311 union 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 
330 typedef 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  */
338 union 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 
365 typedef 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  */
373 union 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 
393 typedef 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  */
401 union 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 
421 typedef 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  */
429 union 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 
443 typedef 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  */
451 union 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 
575 typedef 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  */
583 union 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 
609 typedef 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  */
622 union 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 
639 typedef union cvmx_dpi_dma_ppx_cnt cvmx_dpi_dma_ppx_cnt_t;
640 
641 /**
642  * cvmx_dpi_dma_pp_int
643  */
644 union 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 
659 typedef 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  */
667 union 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 
683 typedef 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  */
691 union 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 
705 typedef 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  */
714 union 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 
748 typedef union cvmx_dpi_engx_buf cvmx_dpi_engx_buf_t;
749 
750 /**
751  * cvmx_dpi_info_reg
752  */
753 union 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 
781 typedef union cvmx_dpi_info_reg cvmx_dpi_info_reg_t;
782 
783 /**
784  * cvmx_dpi_int_en
785  */
786 union 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 
852 typedef 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  */
860 union 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 
925 typedef union cvmx_dpi_int_reg cvmx_dpi_int_reg_t;
926 
927 /**
928  * cvmx_dpi_ncb#_cfg
929  */
930 union 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 
948 typedef 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  */
956 union 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 
990 typedef 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  */
998 union 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 
1021 typedef union cvmx_dpi_pint_info cvmx_dpi_pint_info_t;
1022 
1023 /**
1024  * cvmx_dpi_pkt_err_rsp
1025  */
1026 union 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 
1047 typedef union cvmx_dpi_pkt_err_rsp cvmx_dpi_pkt_err_rsp_t;
1048 
1049 /**
1050  * cvmx_dpi_req_err_rsp
1051  */
1052 union 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 
1073 typedef union cvmx_dpi_req_err_rsp cvmx_dpi_req_err_rsp_t;
1074 
1075 /**
1076  * cvmx_dpi_req_err_rsp_en
1077  */
1078 union 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 
1099 typedef union cvmx_dpi_req_err_rsp_en cvmx_dpi_req_err_rsp_en_t;
1100 
1101 /**
1102  * cvmx_dpi_req_err_rst
1103  */
1104 union 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 
1125 typedef union cvmx_dpi_req_err_rst cvmx_dpi_req_err_rst_t;
1126 
1127 /**
1128  * cvmx_dpi_req_err_rst_en
1129  */
1130 union 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 
1151 typedef union cvmx_dpi_req_err_rst_en cvmx_dpi_req_err_rst_en_t;
1152 
1153 /**
1154  * cvmx_dpi_req_err_skip_comp
1155  */
1156 union 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 
1177 typedef union cvmx_dpi_req_err_skip_comp cvmx_dpi_req_err_skip_comp_t;
1178 
1179 /**
1180  * cvmx_dpi_req_gbl_en
1181  */
1182 union 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 
1203 typedef 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  */
1211 union 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 
1304 typedef 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  */
1312 union 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 
1333 typedef 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  */
1341 union 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 
1384 typedef 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  */
1394 union 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 
1410 typedef 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  */
1422 union 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 
1432 typedef 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  */
1440 union 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 
1458 typedef union cvmx_dpi_swa_q_vmid cvmx_dpi_swa_q_vmid_t;
1459 
1460 #endif
1461