cvmx-dpi-defs.h revision 303975
1221345Sdim/***********************license start***************
2218885Sdim * Copyright (c) 2003-2012  Cavium Inc. (support@cavium.com). All rights
3218885Sdim * reserved.
4218885Sdim *
5218885Sdim *
6218885Sdim * Redistribution and use in source and binary forms, with or without
7218885Sdim * modification, are permitted provided that the following conditions are
8218885Sdim * met:
9218885Sdim *
10218885Sdim *   * Redistributions of source code must retain the above copyright
11218885Sdim *     notice, this list of conditions and the following disclaimer.
12218885Sdim *
13218885Sdim *   * Redistributions in binary form must reproduce the above
14218885Sdim *     copyright notice, this list of conditions and the following
15218885Sdim *     disclaimer in the documentation and/or other materials provided
16218885Sdim *     with the distribution.
17249423Sdim
18249423Sdim *   * Neither the name of Cavium Inc. nor the names of
19218885Sdim *     its contributors may be used to endorse or promote products
20243830Sdim *     derived from this software without specific prior written
21243830Sdim *     permission.
22218885Sdim
23218885Sdim * This Software, including technical data, may be subject to U.S. export  control
24218885Sdim * laws, including the U.S. Export Administration Act and its  associated
25218885Sdim * regulations, and may be subject to export or import  regulations in other
26218885Sdim * countries.
27218885Sdim
28218885Sdim * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29218885Sdim * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30218885Sdim * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31218885Sdim * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32218885Sdim * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33218885Sdim * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34218885Sdim * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35218885Sdim * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36218885Sdim * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
37218885Sdim * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38218885Sdim ***********************license end**************************************/
39218885Sdim
40218885Sdim
41218885Sdim/**
42218885Sdim * cvmx-dpi-defs.h
43218885Sdim *
44218885Sdim * Configuration and status register (CSR) type definitions for
45218885Sdim * Octeon dpi.
46218885Sdim *
47218885Sdim * This file is auto generated. Do not edit.
48218885Sdim *
49218885Sdim * <hr>$Revision$<hr>
50218885Sdim *
51218885Sdim */
52218885Sdim#ifndef __CVMX_DPI_DEFS_H__
53218885Sdim#define __CVMX_DPI_DEFS_H__
54218885Sdim
55218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56218885Sdim#define CVMX_DPI_BIST_STATUS CVMX_DPI_BIST_STATUS_FUNC()
57218885Sdimstatic inline uint64_t CVMX_DPI_BIST_STATUS_FUNC(void)
58218885Sdim{
59218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
60218885Sdim		cvmx_warn("CVMX_DPI_BIST_STATUS not supported on this chip\n");
61218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000000ull);
62218885Sdim}
63218885Sdim#else
64218885Sdim#define CVMX_DPI_BIST_STATUS (CVMX_ADD_IO_SEG(0x0001DF0000000000ull))
65218885Sdim#endif
66218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
67218885Sdim#define CVMX_DPI_CTL CVMX_DPI_CTL_FUNC()
68218885Sdimstatic inline uint64_t CVMX_DPI_CTL_FUNC(void)
69218885Sdim{
70218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
71218885Sdim		cvmx_warn("CVMX_DPI_CTL not supported on this chip\n");
72218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000040ull);
73218885Sdim}
74218885Sdim#else
75218885Sdim#define CVMX_DPI_CTL (CVMX_ADD_IO_SEG(0x0001DF0000000040ull))
76218885Sdim#endif
77218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
78218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_COUNTS(unsigned long offset)
79218885Sdim{
80218885Sdim	if (!(
81218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
82218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
83218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
84218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
85218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
86218885Sdim		cvmx_warn("CVMX_DPI_DMAX_COUNTS(%lu) is invalid on this chip\n", offset);
87218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8;
88218885Sdim}
89218885Sdim#else
90218885Sdim#define CVMX_DPI_DMAX_COUNTS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8)
91218885Sdim#endif
92218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
93218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_DBELL(unsigned long offset)
94218885Sdim{
95218885Sdim	if (!(
96218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
97218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
98218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
99218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
100218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
101218885Sdim		cvmx_warn("CVMX_DPI_DMAX_DBELL(%lu) is invalid on this chip\n", offset);
102218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8;
103218885Sdim}
104218885Sdim#else
105218885Sdim#define CVMX_DPI_DMAX_DBELL(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8)
106218885Sdim#endif
107218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
108218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_ERR_RSP_STATUS(unsigned long offset)
109218885Sdim{
110218885Sdim	if (!(
111218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
112218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
113218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
114218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
115218885Sdim		cvmx_warn("CVMX_DPI_DMAX_ERR_RSP_STATUS(%lu) is invalid on this chip\n", offset);
116218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000A80ull) + ((offset) & 7) * 8;
117218885Sdim}
118218885Sdim#else
119218885Sdim#define CVMX_DPI_DMAX_ERR_RSP_STATUS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000A80ull) + ((offset) & 7) * 8)
120218885Sdim#endif
121218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
122218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_IBUFF_SADDR(unsigned long offset)
123218885Sdim{
124218885Sdim	if (!(
125218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
126218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
127218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
128218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
129218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
130218885Sdim		cvmx_warn("CVMX_DPI_DMAX_IBUFF_SADDR(%lu) is invalid on this chip\n", offset);
131218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8;
132218885Sdim}
133218885Sdim#else
134218885Sdim#define CVMX_DPI_DMAX_IBUFF_SADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8)
135218885Sdim#endif
136218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
137218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_IFLIGHT(unsigned long offset)
138218885Sdim{
139218885Sdim	if (!(
140218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
141218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
142218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
143218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
144218885Sdim		cvmx_warn("CVMX_DPI_DMAX_IFLIGHT(%lu) is invalid on this chip\n", offset);
145218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000A00ull) + ((offset) & 7) * 8;
146218885Sdim}
147218885Sdim#else
148218885Sdim#define CVMX_DPI_DMAX_IFLIGHT(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000A00ull) + ((offset) & 7) * 8)
149218885Sdim#endif
150218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
151218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_NADDR(unsigned long offset)
152218885Sdim{
153218885Sdim	if (!(
154218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
155218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
156218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
157218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
158218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
159218885Sdim		cvmx_warn("CVMX_DPI_DMAX_NADDR(%lu) is invalid on this chip\n", offset);
160218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8;
161218885Sdim}
162218885Sdim#else
163218885Sdim#define CVMX_DPI_DMAX_NADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8)
164218885Sdim#endif
165218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
166218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_REQBNK0(unsigned long offset)
167218885Sdim{
168218885Sdim	if (!(
169218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
170218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
171218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
172218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
173218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
174218885Sdim		cvmx_warn("CVMX_DPI_DMAX_REQBNK0(%lu) is invalid on this chip\n", offset);
175218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8;
176218885Sdim}
177218885Sdim#else
178218885Sdim#define CVMX_DPI_DMAX_REQBNK0(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8)
179218885Sdim#endif
180218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
181218885Sdimstatic inline uint64_t CVMX_DPI_DMAX_REQBNK1(unsigned long offset)
182218885Sdim{
183218885Sdim	if (!(
184218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
185218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
186218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
187218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
188218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
189218885Sdim		cvmx_warn("CVMX_DPI_DMAX_REQBNK1(%lu) is invalid on this chip\n", offset);
190218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8;
191218885Sdim}
192218885Sdim#else
193218885Sdim#define CVMX_DPI_DMAX_REQBNK1(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8)
194218885Sdim#endif
195218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
196218885Sdim#define CVMX_DPI_DMA_CONTROL CVMX_DPI_DMA_CONTROL_FUNC()
197218885Sdimstatic inline uint64_t CVMX_DPI_DMA_CONTROL_FUNC(void)
198218885Sdim{
199218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
200218885Sdim		cvmx_warn("CVMX_DPI_DMA_CONTROL not supported on this chip\n");
201218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000048ull);
202218885Sdim}
203218885Sdim#else
204218885Sdim#define CVMX_DPI_DMA_CONTROL (CVMX_ADD_IO_SEG(0x0001DF0000000048ull))
205218885Sdim#endif
206218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
207218885Sdimstatic inline uint64_t CVMX_DPI_DMA_ENGX_EN(unsigned long offset)
208218885Sdim{
209218885Sdim	if (!(
210218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 5))) ||
211218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 5))) ||
212218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 5))) ||
213218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 5))) ||
214218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 5)))))
215218885Sdim		cvmx_warn("CVMX_DPI_DMA_ENGX_EN(%lu) is invalid on this chip\n", offset);
216218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8;
217218885Sdim}
218218885Sdim#else
219218885Sdim#define CVMX_DPI_DMA_ENGX_EN(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8)
220218885Sdim#endif
221218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
222218885Sdimstatic inline uint64_t CVMX_DPI_DMA_PPX_CNT(unsigned long offset)
223218885Sdim{
224218885Sdim	if (!(
225218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 3))) ||
226218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 31))) ||
227224145Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 3)))))
228218885Sdim		cvmx_warn("CVMX_DPI_DMA_PPX_CNT(%lu) is invalid on this chip\n", offset);
229218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000B00ull) + ((offset) & 31) * 8;
230218885Sdim}
231218885Sdim#else
232218885Sdim#define CVMX_DPI_DMA_PPX_CNT(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000B00ull) + ((offset) & 31) * 8)
233218885Sdim#endif
234218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
235218885Sdimstatic inline uint64_t CVMX_DPI_ENGX_BUF(unsigned long offset)
236218885Sdim{
237218885Sdim	if (!(
238218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 5))) ||
239218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 5))) ||
240218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 5))) ||
241218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 5))) ||
242218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 5)))))
243218885Sdim		cvmx_warn("CVMX_DPI_ENGX_BUF(%lu) is invalid on this chip\n", offset);
244218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8;
245218885Sdim}
246218885Sdim#else
247218885Sdim#define CVMX_DPI_ENGX_BUF(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8)
248218885Sdim#endif
249218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
250218885Sdim#define CVMX_DPI_INFO_REG CVMX_DPI_INFO_REG_FUNC()
251218885Sdimstatic inline uint64_t CVMX_DPI_INFO_REG_FUNC(void)
252218885Sdim{
253218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
254218885Sdim		cvmx_warn("CVMX_DPI_INFO_REG not supported on this chip\n");
255218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000980ull);
256218885Sdim}
257218885Sdim#else
258218885Sdim#define CVMX_DPI_INFO_REG (CVMX_ADD_IO_SEG(0x0001DF0000000980ull))
259218885Sdim#endif
260218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
261218885Sdim#define CVMX_DPI_INT_EN CVMX_DPI_INT_EN_FUNC()
262218885Sdimstatic inline uint64_t CVMX_DPI_INT_EN_FUNC(void)
263218885Sdim{
264218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
265218885Sdim		cvmx_warn("CVMX_DPI_INT_EN not supported on this chip\n");
266218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000010ull);
267218885Sdim}
268218885Sdim#else
269218885Sdim#define CVMX_DPI_INT_EN (CVMX_ADD_IO_SEG(0x0001DF0000000010ull))
270218885Sdim#endif
271218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
272218885Sdim#define CVMX_DPI_INT_REG CVMX_DPI_INT_REG_FUNC()
273218885Sdimstatic inline uint64_t CVMX_DPI_INT_REG_FUNC(void)
274218885Sdim{
275218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
276218885Sdim		cvmx_warn("CVMX_DPI_INT_REG not supported on this chip\n");
277218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000008ull);
278218885Sdim}
279218885Sdim#else
280218885Sdim#define CVMX_DPI_INT_REG (CVMX_ADD_IO_SEG(0x0001DF0000000008ull))
281218885Sdim#endif
282218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
283218885Sdimstatic inline uint64_t CVMX_DPI_NCBX_CFG(unsigned long block_id)
284218885Sdim{
285218885Sdim	if (!(
286218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
287218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
288218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
289218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
290218885Sdim		cvmx_warn("CVMX_DPI_NCBX_CFG(%lu) is invalid on this chip\n", block_id);
291218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000800ull);
292218885Sdim}
293218885Sdim#else
294218885Sdim#define CVMX_DPI_NCBX_CFG(block_id) (CVMX_ADD_IO_SEG(0x0001DF0000000800ull))
295218885Sdim#endif
296218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
297218885Sdim#define CVMX_DPI_PINT_INFO CVMX_DPI_PINT_INFO_FUNC()
298218885Sdimstatic inline uint64_t CVMX_DPI_PINT_INFO_FUNC(void)
299218885Sdim{
300218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
301218885Sdim		cvmx_warn("CVMX_DPI_PINT_INFO not supported on this chip\n");
302218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000830ull);
303218885Sdim}
304218885Sdim#else
305218885Sdim#define CVMX_DPI_PINT_INFO (CVMX_ADD_IO_SEG(0x0001DF0000000830ull))
306218885Sdim#endif
307218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
308218885Sdim#define CVMX_DPI_PKT_ERR_RSP CVMX_DPI_PKT_ERR_RSP_FUNC()
309218885Sdimstatic inline uint64_t CVMX_DPI_PKT_ERR_RSP_FUNC(void)
310218885Sdim{
311218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
312218885Sdim		cvmx_warn("CVMX_DPI_PKT_ERR_RSP not supported on this chip\n");
313218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000078ull);
314218885Sdim}
315218885Sdim#else
316218885Sdim#define CVMX_DPI_PKT_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000078ull))
317218885Sdim#endif
318218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
319218885Sdim#define CVMX_DPI_REQ_ERR_RSP CVMX_DPI_REQ_ERR_RSP_FUNC()
320218885Sdimstatic inline uint64_t CVMX_DPI_REQ_ERR_RSP_FUNC(void)
321218885Sdim{
322218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
323218885Sdim		cvmx_warn("CVMX_DPI_REQ_ERR_RSP not supported on this chip\n");
324218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000058ull);
325218885Sdim}
326218885Sdim#else
327218885Sdim#define CVMX_DPI_REQ_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000058ull))
328218885Sdim#endif
329218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
330218885Sdim#define CVMX_DPI_REQ_ERR_RSP_EN CVMX_DPI_REQ_ERR_RSP_EN_FUNC()
331218885Sdimstatic inline uint64_t CVMX_DPI_REQ_ERR_RSP_EN_FUNC(void)
332218885Sdim{
333218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
334218885Sdim		cvmx_warn("CVMX_DPI_REQ_ERR_RSP_EN not supported on this chip\n");
335218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000068ull);
336218885Sdim}
337218885Sdim#else
338218885Sdim#define CVMX_DPI_REQ_ERR_RSP_EN (CVMX_ADD_IO_SEG(0x0001DF0000000068ull))
339218885Sdim#endif
340218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
341218885Sdim#define CVMX_DPI_REQ_ERR_RST CVMX_DPI_REQ_ERR_RST_FUNC()
342218885Sdimstatic inline uint64_t CVMX_DPI_REQ_ERR_RST_FUNC(void)
343218885Sdim{
344218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
345218885Sdim		cvmx_warn("CVMX_DPI_REQ_ERR_RST not supported on this chip\n");
346218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000060ull);
347218885Sdim}
348218885Sdim#else
349218885Sdim#define CVMX_DPI_REQ_ERR_RST (CVMX_ADD_IO_SEG(0x0001DF0000000060ull))
350218885Sdim#endif
351218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
352218885Sdim#define CVMX_DPI_REQ_ERR_RST_EN CVMX_DPI_REQ_ERR_RST_EN_FUNC()
353218885Sdimstatic inline uint64_t CVMX_DPI_REQ_ERR_RST_EN_FUNC(void)
354218885Sdim{
355218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
356218885Sdim		cvmx_warn("CVMX_DPI_REQ_ERR_RST_EN not supported on this chip\n");
357218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000070ull);
358218885Sdim}
359218885Sdim#else
360218885Sdim#define CVMX_DPI_REQ_ERR_RST_EN (CVMX_ADD_IO_SEG(0x0001DF0000000070ull))
361218885Sdim#endif
362218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
363218885Sdim#define CVMX_DPI_REQ_ERR_SKIP_COMP CVMX_DPI_REQ_ERR_SKIP_COMP_FUNC()
364218885Sdimstatic inline uint64_t CVMX_DPI_REQ_ERR_SKIP_COMP_FUNC(void)
365218885Sdim{
366218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
367218885Sdim		cvmx_warn("CVMX_DPI_REQ_ERR_SKIP_COMP not supported on this chip\n");
368218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000838ull);
369218885Sdim}
370218885Sdim#else
371218885Sdim#define CVMX_DPI_REQ_ERR_SKIP_COMP (CVMX_ADD_IO_SEG(0x0001DF0000000838ull))
372218885Sdim#endif
373218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
374218885Sdim#define CVMX_DPI_REQ_GBL_EN CVMX_DPI_REQ_GBL_EN_FUNC()
375218885Sdimstatic inline uint64_t CVMX_DPI_REQ_GBL_EN_FUNC(void)
376218885Sdim{
377218885Sdim	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
378218885Sdim		cvmx_warn("CVMX_DPI_REQ_GBL_EN not supported on this chip\n");
379218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000050ull);
380218885Sdim}
381218885Sdim#else
382218885Sdim#define CVMX_DPI_REQ_GBL_EN (CVMX_ADD_IO_SEG(0x0001DF0000000050ull))
383218885Sdim#endif
384218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
385218885Sdimstatic inline uint64_t CVMX_DPI_SLI_PRTX_CFG(unsigned long offset)
386218885Sdim{
387218885Sdim	if (!(
388218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
389218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
390218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3))) ||
391218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
392218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
393218885Sdim		cvmx_warn("CVMX_DPI_SLI_PRTX_CFG(%lu) is invalid on this chip\n", offset);
394218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 3) * 8;
395218885Sdim}
396218885Sdim#else
397218885Sdim#define CVMX_DPI_SLI_PRTX_CFG(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 3) * 8)
398218885Sdim#endif
399218885Sdimstatic inline uint64_t CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)
400218885Sdim{
401218885Sdim	switch(cvmx_get_octeon_family()) {
402218885Sdim		case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
403218885Sdim			if ((offset <= 3))
404218885Sdim				return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 3) * 8;
405218885Sdim			break;
406218885Sdim		case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
407218885Sdim		case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
408218885Sdim		case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
409218885Sdim
410218885Sdim			if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS1))
411218885Sdim			if ((offset <= 1))
412218885Sdim				return CVMX_ADD_IO_SEG(0x0001DF0000000928ull) + ((offset) & 1) * 8;
413218885Sdim			if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS2))
414218885Sdim			if ((offset <= 1))
415218885Sdim				return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;			if ((offset <= 1))
416218885Sdim				return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;
417218885Sdim			break;
418218885Sdim		case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
419218885Sdim			if ((offset <= 1))
420218885Sdim				return CVMX_ADD_IO_SEG(0x0001DF0000000928ull) + ((offset) & 1) * 8;
421218885Sdim			break;
422218885Sdim	}
423218885Sdim	cvmx_warn("CVMX_DPI_SLI_PRTX_ERR (offset = %lu) not supported on this chip\n", offset);
424218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;
425218885Sdim}
426218885Sdim#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
427218885Sdimstatic inline uint64_t CVMX_DPI_SLI_PRTX_ERR_INFO(unsigned long offset)
428218885Sdim{
429218885Sdim	if (!(
430218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 1))) ||
431218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1))) ||
432218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3))) ||
433218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1))) ||
434218885Sdim	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 1)))))
435218885Sdim		cvmx_warn("CVMX_DPI_SLI_PRTX_ERR_INFO(%lu) is invalid on this chip\n", offset);
436218885Sdim	return CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 3) * 8;
437218885Sdim}
438218885Sdim#else
439218885Sdim#define CVMX_DPI_SLI_PRTX_ERR_INFO(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 3) * 8)
440218885Sdim#endif
441218885Sdim
442218885Sdim/**
443218885Sdim * cvmx_dpi_bist_status
444218885Sdim */
445218885Sdimunion cvmx_dpi_bist_status {
446218885Sdim	uint64_t u64;
447218885Sdim	struct cvmx_dpi_bist_status_s {
448218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
449218885Sdim	uint64_t reserved_47_63               : 17;
450218885Sdim	uint64_t bist                         : 47; /**< BIST Results.
451218885Sdim                                                         HW sets a bit in BIST for for memory that fails
452218885Sdim                                                         BIST. */
453218885Sdim#else
454218885Sdim	uint64_t bist                         : 47;
455218885Sdim	uint64_t reserved_47_63               : 17;
456218885Sdim#endif
457218885Sdim	} s;
458218885Sdim	struct cvmx_dpi_bist_status_s         cn61xx;
459218885Sdim	struct cvmx_dpi_bist_status_cn63xx {
460218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
461218885Sdim	uint64_t reserved_45_63               : 19;
462218885Sdim	uint64_t bist                         : 45; /**< BIST Results.
463218885Sdim                                                         HW sets a bit in BIST for for memory that fails
464218885Sdim                                                         BIST. */
465218885Sdim#else
466218885Sdim	uint64_t bist                         : 45;
467218885Sdim	uint64_t reserved_45_63               : 19;
468218885Sdim#endif
469218885Sdim	} cn63xx;
470218885Sdim	struct cvmx_dpi_bist_status_cn63xxp1 {
471218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
472218885Sdim	uint64_t reserved_37_63               : 27;
473218885Sdim	uint64_t bist                         : 37; /**< BIST Results.
474218885Sdim                                                         HW sets a bit in BIST for for memory that fails
475218885Sdim                                                         BIST. */
476218885Sdim#else
477218885Sdim	uint64_t bist                         : 37;
478218885Sdim	uint64_t reserved_37_63               : 27;
479218885Sdim#endif
480218885Sdim	} cn63xxp1;
481218885Sdim	struct cvmx_dpi_bist_status_s         cn66xx;
482218885Sdim	struct cvmx_dpi_bist_status_cn63xx    cn68xx;
483218885Sdim	struct cvmx_dpi_bist_status_cn63xx    cn68xxp1;
484218885Sdim	struct cvmx_dpi_bist_status_s         cnf71xx;
485218885Sdim};
486218885Sdimtypedef union cvmx_dpi_bist_status cvmx_dpi_bist_status_t;
487218885Sdim
488218885Sdim/**
489218885Sdim * cvmx_dpi_ctl
490218885Sdim */
491218885Sdimunion cvmx_dpi_ctl {
492218885Sdim	uint64_t u64;
493218885Sdim	struct cvmx_dpi_ctl_s {
494218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
495218885Sdim	uint64_t reserved_2_63                : 62;
496218885Sdim	uint64_t clk                          : 1;  /**< Status bit that indicates that the clks are running */
497218885Sdim	uint64_t en                           : 1;  /**< Turns on the DMA and Packet state machines */
498218885Sdim#else
499218885Sdim	uint64_t en                           : 1;
500218885Sdim	uint64_t clk                          : 1;
501218885Sdim	uint64_t reserved_2_63                : 62;
502218885Sdim#endif
503218885Sdim	} s;
504218885Sdim	struct cvmx_dpi_ctl_cn61xx {
505218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
506218885Sdim	uint64_t reserved_1_63                : 63;
507218885Sdim	uint64_t en                           : 1;  /**< Turns on the DMA and Packet state machines */
508218885Sdim#else
509218885Sdim	uint64_t en                           : 1;
510218885Sdim	uint64_t reserved_1_63                : 63;
511218885Sdim#endif
512218885Sdim	} cn61xx;
513218885Sdim	struct cvmx_dpi_ctl_s                 cn63xx;
514218885Sdim	struct cvmx_dpi_ctl_s                 cn63xxp1;
515218885Sdim	struct cvmx_dpi_ctl_s                 cn66xx;
516218885Sdim	struct cvmx_dpi_ctl_s                 cn68xx;
517218885Sdim	struct cvmx_dpi_ctl_s                 cn68xxp1;
518218885Sdim	struct cvmx_dpi_ctl_cn61xx            cnf71xx;
519218885Sdim};
520218885Sdimtypedef union cvmx_dpi_ctl cvmx_dpi_ctl_t;
521218885Sdim
522218885Sdim/**
523218885Sdim * cvmx_dpi_dma#_counts
524218885Sdim *
525218885Sdim * DPI_DMA[0..7]_COUNTS = DMA Instruction Counts
526218885Sdim *
527218885Sdim * Values for determing the number of instructions for DMA[0..7] in the DPI.
528218885Sdim */
529218885Sdimunion cvmx_dpi_dmax_counts {
530218885Sdim	uint64_t u64;
531218885Sdim	struct cvmx_dpi_dmax_counts_s {
532218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
533218885Sdim	uint64_t reserved_39_63               : 25;
534218885Sdim	uint64_t fcnt                         : 7;  /**< Number of words in the Instruction FIFO locally
535218885Sdim                                                         cached within DPI. */
536218885Sdim	uint64_t dbell                        : 32; /**< Number of available words of Instructions to read. */
537218885Sdim#else
538218885Sdim	uint64_t dbell                        : 32;
539218885Sdim	uint64_t fcnt                         : 7;
540218885Sdim	uint64_t reserved_39_63               : 25;
541218885Sdim#endif
542218885Sdim	} s;
543218885Sdim	struct cvmx_dpi_dmax_counts_s         cn61xx;
544218885Sdim	struct cvmx_dpi_dmax_counts_s         cn63xx;
545218885Sdim	struct cvmx_dpi_dmax_counts_s         cn63xxp1;
546218885Sdim	struct cvmx_dpi_dmax_counts_s         cn66xx;
547218885Sdim	struct cvmx_dpi_dmax_counts_s         cn68xx;
548218885Sdim	struct cvmx_dpi_dmax_counts_s         cn68xxp1;
549218885Sdim	struct cvmx_dpi_dmax_counts_s         cnf71xx;
550218885Sdim};
551218885Sdimtypedef union cvmx_dpi_dmax_counts cvmx_dpi_dmax_counts_t;
552218885Sdim
553218885Sdim/**
554218885Sdim * cvmx_dpi_dma#_dbell
555218885Sdim *
556218885Sdim * DPI_DMA_DBELL[0..7] = DMA Door Bell
557218885Sdim *
558218885Sdim * The door bell register for DMA[0..7] queue.
559218885Sdim */
560218885Sdimunion cvmx_dpi_dmax_dbell {
561218885Sdim	uint64_t u64;
562218885Sdim	struct cvmx_dpi_dmax_dbell_s {
563218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
564218885Sdim	uint64_t reserved_16_63               : 48;
565218885Sdim	uint64_t dbell                        : 16; /**< The value written to this register is added to the
566218885Sdim                                                         number of 8byte words to be read and processes for
567218885Sdim                                                         the low priority dma queue. */
568218885Sdim#else
569218885Sdim	uint64_t dbell                        : 16;
570218885Sdim	uint64_t reserved_16_63               : 48;
571218885Sdim#endif
572218885Sdim	} s;
573218885Sdim	struct cvmx_dpi_dmax_dbell_s          cn61xx;
574218885Sdim	struct cvmx_dpi_dmax_dbell_s          cn63xx;
575218885Sdim	struct cvmx_dpi_dmax_dbell_s          cn63xxp1;
576218885Sdim	struct cvmx_dpi_dmax_dbell_s          cn66xx;
577218885Sdim	struct cvmx_dpi_dmax_dbell_s          cn68xx;
578218885Sdim	struct cvmx_dpi_dmax_dbell_s          cn68xxp1;
579218885Sdim	struct cvmx_dpi_dmax_dbell_s          cnf71xx;
580218885Sdim};
581218885Sdimtypedef union cvmx_dpi_dmax_dbell cvmx_dpi_dmax_dbell_t;
582218885Sdim
583218885Sdim/**
584218885Sdim * cvmx_dpi_dma#_err_rsp_status
585218885Sdim */
586218885Sdimunion cvmx_dpi_dmax_err_rsp_status {
587218885Sdim	uint64_t u64;
588218885Sdim	struct cvmx_dpi_dmax_err_rsp_status_s {
589218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
590218885Sdim	uint64_t reserved_6_63                : 58;
591218885Sdim	uint64_t status                       : 6;  /**< QUE captures the ErrorResponse status of the last
592218885Sdim                                                         6 instructions for each instruction queue.
593218885Sdim                                                         STATUS<5> represents the status for first
594218885Sdim                                                         instruction in instruction order while STATUS<0>
595218885Sdim                                                         represents the last or most recent instruction.
596218885Sdim                                                         If STATUS<n> is set, then the nth instruction in
597218885Sdim                                                         the given queue experienced an ErrorResponse.
598218885Sdim                                                         Otherwise, it completed normally. */
599218885Sdim#else
600218885Sdim	uint64_t status                       : 6;
601218885Sdim	uint64_t reserved_6_63                : 58;
602218885Sdim#endif
603218885Sdim	} s;
604218885Sdim	struct cvmx_dpi_dmax_err_rsp_status_s cn61xx;
605218885Sdim	struct cvmx_dpi_dmax_err_rsp_status_s cn66xx;
606218885Sdim	struct cvmx_dpi_dmax_err_rsp_status_s cn68xx;
607218885Sdim	struct cvmx_dpi_dmax_err_rsp_status_s cn68xxp1;
608218885Sdim	struct cvmx_dpi_dmax_err_rsp_status_s cnf71xx;
609218885Sdim};
610218885Sdimtypedef union cvmx_dpi_dmax_err_rsp_status cvmx_dpi_dmax_err_rsp_status_t;
611218885Sdim
612218885Sdim/**
613218885Sdim * cvmx_dpi_dma#_ibuff_saddr
614218885Sdim *
615218885Sdim * DPI_DMA[0..7]_IBUFF_SADDR = DMA Instruction Buffer Starting Address
616218885Sdim *
617218885Sdim * The address to start reading Instructions from for DMA[0..7].
618218885Sdim */
619218885Sdimunion cvmx_dpi_dmax_ibuff_saddr {
620218885Sdim	uint64_t u64;
621218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_s {
622218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
623218885Sdim	uint64_t reserved_62_63               : 2;
624218885Sdim	uint64_t csize                        : 14; /**< The size in 8B words of the DMA Instruction Chunk.
625218885Sdim                                                         This value should only be written at known times
626218885Sdim                                                         in order to prevent corruption of the instruction
627218885Sdim                                                         queue.  The minimum CSIZE is 16 (one cacheblock). */
628218885Sdim	uint64_t reserved_41_47               : 7;
629218885Sdim	uint64_t idle                         : 1;  /**< DMA Request Queue is IDLE */
630218885Sdim	uint64_t saddr                        : 33; /**< The 128 byte aligned starting or chunk address.
631218885Sdim                                                         SADDR is address bit 35:7 of the starting
632218885Sdim                                                         instructions address. When new chunks are fetched
633218885Sdim                                                         by the HW, SADDR will be updated to reflect the
634243830Sdim                                                         address of the current chunk.
635243830Sdim                                                         A write to SADDR resets both the queue's doorbell
636218885Sdim                                                         (DPI_DMAx_COUNTS[DBELL) and its tail pointer
637218885Sdim                                                         (DPI_DMAx_NADDR[ADDR]). */
638218885Sdim	uint64_t reserved_0_6                 : 7;
639218885Sdim#else
640218885Sdim	uint64_t reserved_0_6                 : 7;
641218885Sdim	uint64_t saddr                        : 33;
642218885Sdim	uint64_t idle                         : 1;
643218885Sdim	uint64_t reserved_41_47               : 7;
644218885Sdim	uint64_t csize                        : 14;
645218885Sdim	uint64_t reserved_62_63               : 2;
646218885Sdim#endif
647218885Sdim	} s;
648218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx {
649218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
650218885Sdim	uint64_t reserved_62_63               : 2;
651218885Sdim	uint64_t csize                        : 14; /**< The size in 8B words of the DMA Instruction Chunk.
652218885Sdim                                                         This value should only be written at known times
653218885Sdim                                                         in order to prevent corruption of the instruction
654218885Sdim                                                         queue.  The minimum CSIZE is 16 (one cacheblock). */
655218885Sdim	uint64_t reserved_41_47               : 7;
656243830Sdim	uint64_t idle                         : 1;  /**< DMA Request Queue is IDLE */
657218885Sdim	uint64_t reserved_36_39               : 4;
658218885Sdim	uint64_t saddr                        : 29; /**< The 128 byte aligned starting or chunk address.
659218885Sdim                                                         SADDR is address bit 35:7 of the starting
660218885Sdim                                                         instructions address. When new chunks are fetched
661218885Sdim                                                         by the HW, SADDR will be updated to reflect the
662218885Sdim                                                         address of the current chunk.
663224145Sdim                                                         A write to SADDR resets both the queue's doorbell
664218885Sdim                                                         (DPI_DMAx_COUNTS[DBELL) and its tail pointer
665218885Sdim                                                         (DPI_DMAx_NADDR[ADDR]). */
666218885Sdim	uint64_t reserved_0_6                 : 7;
667218885Sdim#else
668218885Sdim	uint64_t reserved_0_6                 : 7;
669218885Sdim	uint64_t saddr                        : 29;
670218885Sdim	uint64_t reserved_36_39               : 4;
671218885Sdim	uint64_t idle                         : 1;
672218885Sdim	uint64_t reserved_41_47               : 7;
673218885Sdim	uint64_t csize                        : 14;
674218885Sdim	uint64_t reserved_62_63               : 2;
675218885Sdim#endif
676218885Sdim	} cn61xx;
677218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xx;
678218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xxp1;
679218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn66xx;
680218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_s    cn68xx;
681218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_s    cn68xxp1;
682218885Sdim	struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cnf71xx;
683218885Sdim};
684218885Sdimtypedef union cvmx_dpi_dmax_ibuff_saddr cvmx_dpi_dmax_ibuff_saddr_t;
685218885Sdim
686218885Sdim/**
687218885Sdim * cvmx_dpi_dma#_iflight
688218885Sdim */
689218885Sdimunion cvmx_dpi_dmax_iflight {
690218885Sdim	uint64_t u64;
691218885Sdim	struct cvmx_dpi_dmax_iflight_s {
692218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
693218885Sdim	uint64_t reserved_3_63                : 61;
694218885Sdim	uint64_t cnt                          : 3;  /**< The number of instructions from a given queue that
695218885Sdim                                                         can be inflight to the DMA engines at a time.
696218885Sdim                                                         Reset value matches the number of DMA engines. */
697218885Sdim#else
698218885Sdim	uint64_t cnt                          : 3;
699218885Sdim	uint64_t reserved_3_63                : 61;
700218885Sdim#endif
701218885Sdim	} s;
702218885Sdim	struct cvmx_dpi_dmax_iflight_s        cn61xx;
703218885Sdim	struct cvmx_dpi_dmax_iflight_s        cn66xx;
704218885Sdim	struct cvmx_dpi_dmax_iflight_s        cn68xx;
705218885Sdim	struct cvmx_dpi_dmax_iflight_s        cn68xxp1;
706218885Sdim	struct cvmx_dpi_dmax_iflight_s        cnf71xx;
707218885Sdim};
708218885Sdimtypedef union cvmx_dpi_dmax_iflight cvmx_dpi_dmax_iflight_t;
709218885Sdim
710218885Sdim/**
711218885Sdim * cvmx_dpi_dma#_naddr
712218885Sdim *
713218885Sdim * DPI_DMA[0..7]_NADDR = DMA Next Ichunk Address
714218885Sdim *
715218885Sdim * Place DPI will read the next Ichunk data from.
716218885Sdim */
717218885Sdimunion cvmx_dpi_dmax_naddr {
718218885Sdim	uint64_t u64;
719218885Sdim	struct cvmx_dpi_dmax_naddr_s {
720218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
721218885Sdim	uint64_t reserved_40_63               : 24;
722218885Sdim	uint64_t addr                         : 40; /**< The next L2C address to read DMA# instructions
723218885Sdim                                                         from. */
724218885Sdim#else
725218885Sdim	uint64_t addr                         : 40;
726218885Sdim	uint64_t reserved_40_63               : 24;
727218885Sdim#endif
728218885Sdim	} s;
729218885Sdim	struct cvmx_dpi_dmax_naddr_cn61xx {
730218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
731218885Sdim	uint64_t reserved_36_63               : 28;
732234353Sdim	uint64_t addr                         : 36; /**< The next L2C address to read DMA# instructions
733234353Sdim                                                         from. */
734234353Sdim#else
735234353Sdim	uint64_t addr                         : 36;
736218885Sdim	uint64_t reserved_36_63               : 28;
737218885Sdim#endif
738218885Sdim	} cn61xx;
739218885Sdim	struct cvmx_dpi_dmax_naddr_cn61xx     cn63xx;
740218885Sdim	struct cvmx_dpi_dmax_naddr_cn61xx     cn63xxp1;
741218885Sdim	struct cvmx_dpi_dmax_naddr_cn61xx     cn66xx;
742218885Sdim	struct cvmx_dpi_dmax_naddr_s          cn68xx;
743218885Sdim	struct cvmx_dpi_dmax_naddr_s          cn68xxp1;
744218885Sdim	struct cvmx_dpi_dmax_naddr_cn61xx     cnf71xx;
745218885Sdim};
746218885Sdimtypedef union cvmx_dpi_dmax_naddr cvmx_dpi_dmax_naddr_t;
747218885Sdim
748218885Sdim/**
749218885Sdim * cvmx_dpi_dma#_reqbnk0
750218885Sdim *
751218885Sdim * DPI_DMA[0..7]_REQBNK0 = DMA Request State Bank0
752218885Sdim *
753218885Sdim * Current contents of the request state machine - bank0
754218885Sdim */
755218885Sdimunion cvmx_dpi_dmax_reqbnk0 {
756218885Sdim	uint64_t u64;
757218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s {
758218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
759218885Sdim	uint64_t state                        : 64; /**< State */
760218885Sdim#else
761218885Sdim	uint64_t state                        : 64;
762218885Sdim#endif
763218885Sdim	} s;
764218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cn61xx;
765218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cn63xx;
766218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cn63xxp1;
767218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cn66xx;
768218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cn68xx;
769218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cn68xxp1;
770218885Sdim	struct cvmx_dpi_dmax_reqbnk0_s        cnf71xx;
771218885Sdim};
772218885Sdimtypedef union cvmx_dpi_dmax_reqbnk0 cvmx_dpi_dmax_reqbnk0_t;
773218885Sdim
774218885Sdim/**
775218885Sdim * cvmx_dpi_dma#_reqbnk1
776218885Sdim *
777218885Sdim * DPI_DMA[0..7]_REQBNK1 = DMA Request State Bank1
778218885Sdim *
779218885Sdim * Current contents of the request state machine - bank1
780218885Sdim */
781218885Sdimunion cvmx_dpi_dmax_reqbnk1 {
782218885Sdim	uint64_t u64;
783218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s {
784218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
785218885Sdim	uint64_t state                        : 64; /**< State */
786218885Sdim#else
787218885Sdim	uint64_t state                        : 64;
788218885Sdim#endif
789218885Sdim	} s;
790218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cn61xx;
791218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cn63xx;
792218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cn63xxp1;
793218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cn66xx;
794218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cn68xx;
795218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cn68xxp1;
796218885Sdim	struct cvmx_dpi_dmax_reqbnk1_s        cnf71xx;
797218885Sdim};
798218885Sdimtypedef union cvmx_dpi_dmax_reqbnk1 cvmx_dpi_dmax_reqbnk1_t;
799218885Sdim
800218885Sdim/**
801218885Sdim * cvmx_dpi_dma_control
802218885Sdim *
803218885Sdim * DPI_DMA_CONTROL = DMA Control Register
804218885Sdim *
805218885Sdim * Controls operation of the DMA IN/OUT.
806218885Sdim */
807218885Sdimunion cvmx_dpi_dma_control {
808218885Sdim	uint64_t u64;
809218885Sdim	struct cvmx_dpi_dma_control_s {
810218885Sdim#ifdef __BIG_ENDIAN_BITFIELD
811218885Sdim	uint64_t reserved_62_63               : 2;
812218885Sdim	uint64_t dici_mode                    : 1;  /**< DMA Instruction Completion Interrupt Mode
813218885Sdim                                                         turns on mode to increment DPI_DMA_PPx_CNT
814218885Sdim                                                         counters. */
815218885Sdim	uint64_t pkt_en1                      : 1;  /**< Enables the 2nd packet interface.
816218885Sdim                                                         When the packet interface is enabled, engine 4
817218885Sdim                                                         is used for packets and is not available for DMA.
818218885Sdim                                                         The packet interfaces must be enabled in order.
819218885Sdim                                                         When PKT_EN1=1, then PKT_EN=1.
820218885Sdim                                                         When PKT_EN1=1, then DMA_ENB<4>=0. */
821218885Sdim	uint64_t ffp_dis                      : 1;  /**< Force forward progress disable
822218885Sdim                                                         The DMA engines will compete for shared resources.
823218885Sdim                                                         If the HW detects that particular engines are not
824218885Sdim                                                         able to make requests to an interface, the HW
825218885Sdim                                                         will periodically trade-off throughput for
826218885Sdim                                                         fairness. */
827218885Sdim	uint64_t commit_mode                  : 1;  /**< DMA Engine Commit Mode
828218885Sdim
829218885Sdim                                                         When COMMIT_MODE=0, DPI considers an instruction
830218885Sdim                                                         complete when the HW internally generates the
831218885Sdim                                                         final write for the current instruction.
832218885Sdim
833218885Sdim                                                         When COMMIT_MODE=1, DPI additionally waits for
834218885Sdim                                                         the final write to reach the interface coherency
835218885Sdim                                                         point to declare the instructions complete.
836218885Sdim
837218885Sdim                                                         Please note: when COMMIT_MODE == 0, DPI may not
838218885Sdim                                                         follow the HRM ordering rules.
839218885Sdim
840218885Sdim                                                         DPI hardware performance may be better with
841218885Sdim                                                         COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
842218885Sdim                                                         to the relaxed ordering rules.
843218885Sdim
844218885Sdim                                                         If the HRM ordering rules are required, set
845218885Sdim                                                         COMMIT_MODE == 1. */
846218885Sdim	uint64_t pkt_hp                       : 1;  /**< High-Priority Mode for Packet Interface.
847218885Sdim                                                         This mode has been deprecated. */
848218885Sdim	uint64_t pkt_en                       : 1;  /**< Enables 1st the packet interface.
849218885Sdim                                                         When the packet interface is enabled, engine 5
850218885Sdim                                                         is used for packets and is not available for DMA.
851218885Sdim                                                         When PKT_EN=1, then DMA_ENB<5>=0.
852218885Sdim                                                         When PKT_EN1=1, then PKT_EN=1. */
853218885Sdim	uint64_t reserved_54_55               : 2;
854218885Sdim	uint64_t dma_enb                      : 6;  /**< DMA engine enable. Enables the operation of the
855218885Sdim                                                         DMA engine. After being enabled an engine should
856218885Sdim                                                         not be disabled while processing instructions.
857218885Sdim                                                         When PKT_EN=1,  then DMA_ENB<5>=0.
858218885Sdim                                                         When PKT_EN1=1, then DMA_ENB<4>=0. */
859218885Sdim	uint64_t reserved_34_47               : 14;
860218885Sdim	uint64_t b0_lend                      : 1;  /**< When set '1' and the DPI is in the mode to write
861218885Sdim                                                         0 to L2C memory when a DMA is done, the address
862218885Sdim                                                         to be written to will be treated as a Little
863218885Sdim                                                         Endian address. */
864218885Sdim	uint64_t dwb_denb                     : 1;  /**< When set '1', DPI will send a value in the DWB
865218885Sdim                                                         field for a free page operation for the memory
866218885Sdim                                                         that contained the data. */
867218885Sdim	uint64_t dwb_ichk                     : 9;  /**< When Instruction Chunks for DMA operations are
868218885Sdim                                                         freed this value is used for the DWB field of the
869218885Sdim                                                         operation. */
870218885Sdim	uint64_t fpa_que                      : 3;  /**< The FPA queue that the instruction-chunk page will
871218885Sdim                                                         be returned to when used. */
872218885Sdim	uint64_t o_add1                       : 1;  /**< When set '1' 1 will be added to the SLI_DMAX_CNT
873218885Sdim                                                         DMA counters, if '0' then the number of bytes
874218885Sdim                                                         in the dma transfer will be added to the
875218885Sdim                                                         SLI_DMAX_CNT count register. */
876218885Sdim	uint64_t o_ro                         : 1;  /**< Relaxed Ordering Mode for DMA. */
877218885Sdim	uint64_t o_ns                         : 1;  /**< Nosnoop For DMA. */
878218885Sdim	uint64_t o_es                         : 2;  /**< Endian Swap Mode for DMA. */
879218885Sdim	uint64_t o_mode                       : 1;  /**< Select PCI_POINTER MODE to be used.
880218885Sdim                                                         0=DPTR format 1 is used
881218885Sdim                                                           use register values for address and pointer
882218885Sdim                                                           values for ES, NS, RO
883218885Sdim                                                         1=DPTR format 0 is used
884218885Sdim                                                           use pointer values for address and register
885218885Sdim                                                           values for ES, NS, RO */
886218885Sdim	uint64_t reserved_0_13                : 14;
887218885Sdim#else
888218885Sdim	uint64_t reserved_0_13                : 14;
889218885Sdim	uint64_t o_mode                       : 1;
890218885Sdim	uint64_t o_es                         : 2;
891218885Sdim	uint64_t o_ns                         : 1;
892218885Sdim	uint64_t o_ro                         : 1;
893218885Sdim	uint64_t o_add1                       : 1;
894218885Sdim	uint64_t fpa_que                      : 3;
895218885Sdim	uint64_t dwb_ichk                     : 9;
896218885Sdim	uint64_t dwb_denb                     : 1;
897218885Sdim	uint64_t b0_lend                      : 1;
898218885Sdim	uint64_t reserved_34_47               : 14;
899218885Sdim	uint64_t dma_enb                      : 6;
900218885Sdim	uint64_t reserved_54_55               : 2;
901218885Sdim	uint64_t pkt_en                       : 1;
902218885Sdim	uint64_t pkt_hp                       : 1;
903218885Sdim	uint64_t commit_mode                  : 1;
904218885Sdim	uint64_t ffp_dis                      : 1;
905218885Sdim	uint64_t pkt_en1                      : 1;
906	uint64_t dici_mode                    : 1;
907	uint64_t reserved_62_63               : 2;
908#endif
909	} s;
910	struct cvmx_dpi_dma_control_s         cn61xx;
911	struct cvmx_dpi_dma_control_cn63xx {
912#ifdef __BIG_ENDIAN_BITFIELD
913	uint64_t reserved_61_63               : 3;
914	uint64_t pkt_en1                      : 1;  /**< Enables the 2nd packet interface.
915                                                         When the packet interface is enabled, engine 4
916                                                         is used for packets and is not available for DMA.
917                                                         The packet interfaces must be enabled in order.
918                                                         When PKT_EN1=1, then PKT_EN=1.
919                                                         When PKT_EN1=1, then DMA_ENB<4>=0. */
920	uint64_t ffp_dis                      : 1;  /**< Force forward progress disable
921                                                         The DMA engines will compete for shared resources.
922                                                         If the HW detects that particular engines are not
923                                                         able to make requests to an interface, the HW
924                                                         will periodically trade-off throughput for
925                                                         fairness. */
926	uint64_t commit_mode                  : 1;  /**< DMA Engine Commit Mode
927
928                                                         When COMMIT_MODE=0, DPI considers an instruction
929                                                         complete when the HW internally generates the
930                                                         final write for the current instruction.
931
932                                                         When COMMIT_MODE=1, DPI additionally waits for
933                                                         the final write to reach the interface coherency
934                                                         point to declare the instructions complete.
935
936                                                         Please note: when COMMIT_MODE == 0, DPI may not
937                                                         follow the HRM ordering rules.
938
939                                                         DPI hardware performance may be better with
940                                                         COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
941                                                         to the relaxed ordering rules.
942
943                                                         If the HRM ordering rules are required, set
944                                                         COMMIT_MODE == 1. */
945	uint64_t pkt_hp                       : 1;  /**< High-Priority Mode for Packet Interface.
946                                                         This mode has been deprecated. */
947	uint64_t pkt_en                       : 1;  /**< Enables 1st the packet interface.
948                                                         When the packet interface is enabled, engine 5
949                                                         is used for packets and is not available for DMA.
950                                                         When PKT_EN=1, then DMA_ENB<5>=0.
951                                                         When PKT_EN1=1, then PKT_EN=1. */
952	uint64_t reserved_54_55               : 2;
953	uint64_t dma_enb                      : 6;  /**< DMA engine enable. Enables the operation of the
954                                                         DMA engine. After being enabled an engine should
955                                                         not be disabled while processing instructions.
956                                                         When PKT_EN=1,  then DMA_ENB<5>=0.
957                                                         When PKT_EN1=1, then DMA_ENB<4>=0. */
958	uint64_t reserved_34_47               : 14;
959	uint64_t b0_lend                      : 1;  /**< When set '1' and the DPI is in the mode to write
960                                                         0 to L2C memory when a DMA is done, the address
961                                                         to be written to will be treated as a Little
962                                                         Endian address. */
963	uint64_t dwb_denb                     : 1;  /**< When set '1', DPI will send a value in the DWB
964                                                         field for a free page operation for the memory
965                                                         that contained the data. */
966	uint64_t dwb_ichk                     : 9;  /**< When Instruction Chunks for DMA operations are
967                                                         freed this value is used for the DWB field of the
968                                                         operation. */
969	uint64_t fpa_que                      : 3;  /**< The FPA queue that the instruction-chunk page will
970                                                         be returned to when used. */
971	uint64_t o_add1                       : 1;  /**< When set '1' 1 will be added to the DMA counters,
972                                                         if '0' then the number of bytes in the dma
973                                                         transfer will be added to the count register. */
974	uint64_t o_ro                         : 1;  /**< Relaxed Ordering Mode for DMA. */
975	uint64_t o_ns                         : 1;  /**< Nosnoop For DMA. */
976	uint64_t o_es                         : 2;  /**< Endian Swap Mode for DMA. */
977	uint64_t o_mode                       : 1;  /**< Select PCI_POINTER MODE to be used.
978                                                         0=DPTR format 1 is used
979                                                           use register values for address and pointer
980                                                           values for ES, NS, RO
981                                                         1=DPTR format 0 is used
982                                                           use pointer values for address and register
983                                                           values for ES, NS, RO */
984	uint64_t reserved_0_13                : 14;
985#else
986	uint64_t reserved_0_13                : 14;
987	uint64_t o_mode                       : 1;
988	uint64_t o_es                         : 2;
989	uint64_t o_ns                         : 1;
990	uint64_t o_ro                         : 1;
991	uint64_t o_add1                       : 1;
992	uint64_t fpa_que                      : 3;
993	uint64_t dwb_ichk                     : 9;
994	uint64_t dwb_denb                     : 1;
995	uint64_t b0_lend                      : 1;
996	uint64_t reserved_34_47               : 14;
997	uint64_t dma_enb                      : 6;
998	uint64_t reserved_54_55               : 2;
999	uint64_t pkt_en                       : 1;
1000	uint64_t pkt_hp                       : 1;
1001	uint64_t commit_mode                  : 1;
1002	uint64_t ffp_dis                      : 1;
1003	uint64_t pkt_en1                      : 1;
1004	uint64_t reserved_61_63               : 3;
1005#endif
1006	} cn63xx;
1007	struct cvmx_dpi_dma_control_cn63xxp1 {
1008#ifdef __BIG_ENDIAN_BITFIELD
1009	uint64_t reserved_59_63               : 5;
1010	uint64_t commit_mode                  : 1;  /**< DMA Engine Commit Mode
1011
1012                                                         When COMMIT_MODE=0, DPI considers an instruction
1013                                                         complete when the HW internally generates the
1014                                                         final write for the current instruction.
1015
1016                                                         When COMMIT_MODE=1, DPI additionally waits for
1017                                                         the final write to reach the interface coherency
1018                                                         point to declare the instructions complete.
1019
1020                                                         Please note: when COMMIT_MODE == 0, DPI may not
1021                                                         follow the HRM ordering rules.
1022
1023                                                         DPI hardware performance may be better with
1024                                                         COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
1025                                                         to the relaxed ordering rules.
1026
1027                                                         If the HRM ordering rules are required, set
1028                                                         COMMIT_MODE == 1. */
1029	uint64_t pkt_hp                       : 1;  /**< High-Priority Mode for Packet Interface.
1030                                                         Engine 5 will be serviced more frequently to
1031                                                         deliver more bandwidth to packet interface.
1032                                                         When PKT_EN=0, then PKT_HP=0. */
1033	uint64_t pkt_en                       : 1;  /**< Enables the packet interface.
1034                                                         When the packet interface is enabled, engine 5
1035                                                         is used for packets and is not available for DMA.
1036                                                         When PKT_EN=1, then DMA_ENB<5>=0.
1037                                                         When PKT_EN=0, then PKT_HP=0. */
1038	uint64_t reserved_54_55               : 2;
1039	uint64_t dma_enb                      : 6;  /**< DMA engine enable. Enables the operation of the
1040                                                         DMA engine. After being enabled an engine should
1041                                                         not be disabled while processing instructions.
1042                                                         When PKT_EN=1, then DMA_ENB<5>=0. */
1043	uint64_t reserved_34_47               : 14;
1044	uint64_t b0_lend                      : 1;  /**< When set '1' and the DPI is in the mode to write
1045                                                         0 to L2C memory when a DMA is done, the address
1046                                                         to be written to will be treated as a Little
1047                                                         Endian address. */
1048	uint64_t dwb_denb                     : 1;  /**< When set '1', DPI will send a value in the DWB
1049                                                         field for a free page operation for the memory
1050                                                         that contained the data. */
1051	uint64_t dwb_ichk                     : 9;  /**< When Instruction Chunks for DMA operations are
1052                                                         freed this value is used for the DWB field of the
1053                                                         operation. */
1054	uint64_t fpa_que                      : 3;  /**< The FPA queue that the instruction-chunk page will
1055                                                         be returned to when used. */
1056	uint64_t o_add1                       : 1;  /**< When set '1' 1 will be added to the DMA counters,
1057                                                         if '0' then the number of bytes in the dma
1058                                                         transfer will be added to the count register. */
1059	uint64_t o_ro                         : 1;  /**< Relaxed Ordering Mode for DMA. */
1060	uint64_t o_ns                         : 1;  /**< Nosnoop For DMA. */
1061	uint64_t o_es                         : 2;  /**< Endian Swap Mode for DMA. */
1062	uint64_t o_mode                       : 1;  /**< Select PCI_POINTER MODE to be used.
1063                                                         0=DPTR format 1 is used
1064                                                           use register values for address and pointer
1065                                                           values for ES, NS, RO
1066                                                         1=DPTR format 0 is used
1067                                                           use pointer values for address and register
1068                                                           values for ES, NS, RO */
1069	uint64_t reserved_0_13                : 14;
1070#else
1071	uint64_t reserved_0_13                : 14;
1072	uint64_t o_mode                       : 1;
1073	uint64_t o_es                         : 2;
1074	uint64_t o_ns                         : 1;
1075	uint64_t o_ro                         : 1;
1076	uint64_t o_add1                       : 1;
1077	uint64_t fpa_que                      : 3;
1078	uint64_t dwb_ichk                     : 9;
1079	uint64_t dwb_denb                     : 1;
1080	uint64_t b0_lend                      : 1;
1081	uint64_t reserved_34_47               : 14;
1082	uint64_t dma_enb                      : 6;
1083	uint64_t reserved_54_55               : 2;
1084	uint64_t pkt_en                       : 1;
1085	uint64_t pkt_hp                       : 1;
1086	uint64_t commit_mode                  : 1;
1087	uint64_t reserved_59_63               : 5;
1088#endif
1089	} cn63xxp1;
1090	struct cvmx_dpi_dma_control_cn63xx    cn66xx;
1091	struct cvmx_dpi_dma_control_s         cn68xx;
1092	struct cvmx_dpi_dma_control_cn63xx    cn68xxp1;
1093	struct cvmx_dpi_dma_control_s         cnf71xx;
1094};
1095typedef union cvmx_dpi_dma_control cvmx_dpi_dma_control_t;
1096
1097/**
1098 * cvmx_dpi_dma_eng#_en
1099 */
1100union cvmx_dpi_dma_engx_en {
1101	uint64_t u64;
1102	struct cvmx_dpi_dma_engx_en_s {
1103#ifdef __BIG_ENDIAN_BITFIELD
1104	uint64_t reserved_8_63                : 56;
1105	uint64_t qen                          : 8;  /**< Controls which logical instruction queues can be
1106                                                         serviced by the DMA engine. Setting QEN==0
1107                                                         effectively disables the engine.
1108                                                         When DPI_DMA_CONTROL[PKT_EN] = 1, then
1109                                                         DPI_DMA_ENG5_EN[QEN] must be zero.
1110                                                         When DPI_DMA_CONTROL[PKT_EN1] = 1, then
1111                                                         DPI_DMA_ENG4_EN[QEN] must be zero. */
1112#else
1113	uint64_t qen                          : 8;
1114	uint64_t reserved_8_63                : 56;
1115#endif
1116	} s;
1117	struct cvmx_dpi_dma_engx_en_s         cn61xx;
1118	struct cvmx_dpi_dma_engx_en_s         cn63xx;
1119	struct cvmx_dpi_dma_engx_en_s         cn63xxp1;
1120	struct cvmx_dpi_dma_engx_en_s         cn66xx;
1121	struct cvmx_dpi_dma_engx_en_s         cn68xx;
1122	struct cvmx_dpi_dma_engx_en_s         cn68xxp1;
1123	struct cvmx_dpi_dma_engx_en_s         cnf71xx;
1124};
1125typedef union cvmx_dpi_dma_engx_en cvmx_dpi_dma_engx_en_t;
1126
1127/**
1128 * cvmx_dpi_dma_pp#_cnt
1129 *
1130 * DPI_DMA_PP[0..3]_CNT  = DMA per PP Instr Done Counter
1131 *
1132 * When DMA Instruction Completion Interrupt Mode DPI_DMA_CONTROL.DICI_MODE is enabled, every dma instruction
1133 * that has the WQP=0 and a PTR value of 1..4 will incremrement DPI_DMA_PPx_CNT value-1 counter.
1134 * Instructions with WQP=0 and PTR values higher then 0x3F will still send a zero byte write.
1135 * Hardware reserves that values 5..63 for future use and will treat them as a PTR of 0 and do nothing.
1136 */
1137union cvmx_dpi_dma_ppx_cnt {
1138	uint64_t u64;
1139	struct cvmx_dpi_dma_ppx_cnt_s {
1140#ifdef __BIG_ENDIAN_BITFIELD
1141	uint64_t reserved_16_63               : 48;
1142	uint64_t cnt                          : 16; /**< Counter incremented according to conditions
1143                                                         described above and decremented by values written
1144                                                         to this field.  A CNT of non zero, will cause
1145                                                         an interrupt in the CIU_SUM1_PPX_IPX register */
1146#else
1147	uint64_t cnt                          : 16;
1148	uint64_t reserved_16_63               : 48;
1149#endif
1150	} s;
1151	struct cvmx_dpi_dma_ppx_cnt_s         cn61xx;
1152	struct cvmx_dpi_dma_ppx_cnt_s         cn68xx;
1153	struct cvmx_dpi_dma_ppx_cnt_s         cnf71xx;
1154};
1155typedef union cvmx_dpi_dma_ppx_cnt cvmx_dpi_dma_ppx_cnt_t;
1156
1157/**
1158 * cvmx_dpi_eng#_buf
1159 *
1160 * Notes:
1161 * The total amount of storage allocated to the 6 DPI DMA engines (via DPI_ENG*_BUF[BLKS]) must not exceed 8KB.
1162 *
1163 */
1164union cvmx_dpi_engx_buf {
1165	uint64_t u64;
1166	struct cvmx_dpi_engx_buf_s {
1167#ifdef __BIG_ENDIAN_BITFIELD
1168	uint64_t reserved_37_63               : 27;
1169	uint64_t compblks                     : 5;  /**< Computed engine block size */
1170	uint64_t reserved_9_31                : 23;
1171	uint64_t base                         : 5;  /**< The base address in 512B blocks of the engine fifo */
1172	uint64_t blks                         : 4;  /**< The size of the engine fifo
1173                                                         Legal values are 0-10.
1174                                                         0  = Engine is disabled
1175                                                         1  = 0.5KB buffer
1176                                                         2  = 1.0KB buffer
1177                                                         3  = 1.5KB buffer
1178                                                         4  = 2.0KB buffer
1179                                                         5  = 2.5KB buffer
1180                                                         6  = 3.0KB buffer
1181                                                         7  = 3.5KB buffer
1182                                                         8  = 4.0KB buffer
1183                                                         9  = 6.0KB buffer
1184                                                         10 = 8.0KB buffer */
1185#else
1186	uint64_t blks                         : 4;
1187	uint64_t base                         : 5;
1188	uint64_t reserved_9_31                : 23;
1189	uint64_t compblks                     : 5;
1190	uint64_t reserved_37_63               : 27;
1191#endif
1192	} s;
1193	struct cvmx_dpi_engx_buf_s            cn61xx;
1194	struct cvmx_dpi_engx_buf_cn63xx {
1195#ifdef __BIG_ENDIAN_BITFIELD
1196	uint64_t reserved_8_63                : 56;
1197	uint64_t base                         : 4;  /**< The base address in 512B blocks of the engine fifo */
1198	uint64_t blks                         : 4;  /**< The size in 512B blocks of the engine fifo
1199                                                         Legal values are 0-8.
1200                                                         0 = Engine is disabled
1201                                                         1 = 0.5KB buffer
1202                                                         2 = 1.0KB buffer
1203                                                         3 = 1.5KB buffer
1204                                                         4 = 2.0KB buffer
1205                                                         5 = 2.5KB buffer
1206                                                         6 = 3.0KB buffer
1207                                                         7 = 3.5KB buffer
1208                                                         8 = 4.0KB buffer */
1209#else
1210	uint64_t blks                         : 4;
1211	uint64_t base                         : 4;
1212	uint64_t reserved_8_63                : 56;
1213#endif
1214	} cn63xx;
1215	struct cvmx_dpi_engx_buf_cn63xx       cn63xxp1;
1216	struct cvmx_dpi_engx_buf_s            cn66xx;
1217	struct cvmx_dpi_engx_buf_s            cn68xx;
1218	struct cvmx_dpi_engx_buf_s            cn68xxp1;
1219	struct cvmx_dpi_engx_buf_s            cnf71xx;
1220};
1221typedef union cvmx_dpi_engx_buf cvmx_dpi_engx_buf_t;
1222
1223/**
1224 * cvmx_dpi_info_reg
1225 */
1226union cvmx_dpi_info_reg {
1227	uint64_t u64;
1228	struct cvmx_dpi_info_reg_s {
1229#ifdef __BIG_ENDIAN_BITFIELD
1230	uint64_t reserved_8_63                : 56;
1231	uint64_t ffp                          : 4;  /**< Force Forward Progress Indicator */
1232	uint64_t reserved_2_3                 : 2;
1233	uint64_t ncb                          : 1;  /**< NCB Register Access
1234                                                         This interrupt will fire in normal operation
1235                                                         when SW reads a DPI register through the NCB
1236                                                         interface. */
1237	uint64_t rsl                          : 1;  /**< RSL Register Access
1238                                                         This interrupt will fire in normal operation
1239                                                         when SW reads a DPI register through the RSL
1240                                                         interface. */
1241#else
1242	uint64_t rsl                          : 1;
1243	uint64_t ncb                          : 1;
1244	uint64_t reserved_2_3                 : 2;
1245	uint64_t ffp                          : 4;
1246	uint64_t reserved_8_63                : 56;
1247#endif
1248	} s;
1249	struct cvmx_dpi_info_reg_s            cn61xx;
1250	struct cvmx_dpi_info_reg_s            cn63xx;
1251	struct cvmx_dpi_info_reg_cn63xxp1 {
1252#ifdef __BIG_ENDIAN_BITFIELD
1253	uint64_t reserved_2_63                : 62;
1254	uint64_t ncb                          : 1;  /**< NCB Register Access
1255                                                         This interrupt will fire in normal operation
1256                                                         when SW reads a DPI register through the NCB
1257                                                         interface. */
1258	uint64_t rsl                          : 1;  /**< RSL Register Access
1259                                                         This interrupt will fire in normal operation
1260                                                         when SW reads a DPI register through the RSL
1261                                                         interface. */
1262#else
1263	uint64_t rsl                          : 1;
1264	uint64_t ncb                          : 1;
1265	uint64_t reserved_2_63                : 62;
1266#endif
1267	} cn63xxp1;
1268	struct cvmx_dpi_info_reg_s            cn66xx;
1269	struct cvmx_dpi_info_reg_s            cn68xx;
1270	struct cvmx_dpi_info_reg_s            cn68xxp1;
1271	struct cvmx_dpi_info_reg_s            cnf71xx;
1272};
1273typedef union cvmx_dpi_info_reg cvmx_dpi_info_reg_t;
1274
1275/**
1276 * cvmx_dpi_int_en
1277 */
1278union cvmx_dpi_int_en {
1279	uint64_t u64;
1280	struct cvmx_dpi_int_en_s {
1281#ifdef __BIG_ENDIAN_BITFIELD
1282	uint64_t reserved_28_63               : 36;
1283	uint64_t sprt3_rst                    : 1;  /**< DMA instruction was dropped because the source or
1284                                                          destination port was in reset.
1285                                                         this bit is set. */
1286	uint64_t sprt2_rst                    : 1;  /**< DMA instruction was dropped because the source or
1287                                                          destination port was in reset.
1288                                                         this bit is set. */
1289	uint64_t sprt1_rst                    : 1;  /**< DMA instruction was dropped because the source or
1290                                                          destination port was in reset.
1291                                                         this bit is set. */
1292	uint64_t sprt0_rst                    : 1;  /**< DMA instruction was dropped because the source or
1293                                                          destination port was in reset.
1294                                                         this bit is set. */
1295	uint64_t reserved_23_23               : 1;
1296	uint64_t req_badfil                   : 1;  /**< DMA instruction unexpected fill */
1297	uint64_t req_inull                    : 1;  /**< DMA instruction filled with NULL pointer */
1298	uint64_t req_anull                    : 1;  /**< DMA instruction filled with bad instruction */
1299	uint64_t req_undflw                   : 1;  /**< DMA instruction FIFO underflow */
1300	uint64_t req_ovrflw                   : 1;  /**< DMA instruction FIFO overflow */
1301	uint64_t req_badlen                   : 1;  /**< DMA instruction fetch with length */
1302	uint64_t req_badadr                   : 1;  /**< DMA instruction fetch with bad pointer */
1303	uint64_t dmadbo                       : 8;  /**< DMAx doorbell overflow. */
1304	uint64_t reserved_2_7                 : 6;
1305	uint64_t nfovr                        : 1;  /**< CSR Fifo Overflow */
1306	uint64_t nderr                        : 1;  /**< NCB Decode Error */
1307#else
1308	uint64_t nderr                        : 1;
1309	uint64_t nfovr                        : 1;
1310	uint64_t reserved_2_7                 : 6;
1311	uint64_t dmadbo                       : 8;
1312	uint64_t req_badadr                   : 1;
1313	uint64_t req_badlen                   : 1;
1314	uint64_t req_ovrflw                   : 1;
1315	uint64_t req_undflw                   : 1;
1316	uint64_t req_anull                    : 1;
1317	uint64_t req_inull                    : 1;
1318	uint64_t req_badfil                   : 1;
1319	uint64_t reserved_23_23               : 1;
1320	uint64_t sprt0_rst                    : 1;
1321	uint64_t sprt1_rst                    : 1;
1322	uint64_t sprt2_rst                    : 1;
1323	uint64_t sprt3_rst                    : 1;
1324	uint64_t reserved_28_63               : 36;
1325#endif
1326	} s;
1327	struct cvmx_dpi_int_en_s              cn61xx;
1328	struct cvmx_dpi_int_en_cn63xx {
1329#ifdef __BIG_ENDIAN_BITFIELD
1330	uint64_t reserved_26_63               : 38;
1331	uint64_t sprt1_rst                    : 1;  /**< DMA instruction was dropped because the source or
1332                                                          destination port was in reset.
1333                                                         this bit is set. */
1334	uint64_t sprt0_rst                    : 1;  /**< DMA instruction was dropped because the source or
1335                                                          destination port was in reset.
1336                                                         this bit is set. */
1337	uint64_t reserved_23_23               : 1;
1338	uint64_t req_badfil                   : 1;  /**< DMA instruction unexpected fill */
1339	uint64_t req_inull                    : 1;  /**< DMA instruction filled with NULL pointer */
1340	uint64_t req_anull                    : 1;  /**< DMA instruction filled with bad instruction */
1341	uint64_t req_undflw                   : 1;  /**< DMA instruction FIFO underflow */
1342	uint64_t req_ovrflw                   : 1;  /**< DMA instruction FIFO overflow */
1343	uint64_t req_badlen                   : 1;  /**< DMA instruction fetch with length */
1344	uint64_t req_badadr                   : 1;  /**< DMA instruction fetch with bad pointer */
1345	uint64_t dmadbo                       : 8;  /**< DMAx doorbell overflow. */
1346	uint64_t reserved_2_7                 : 6;
1347	uint64_t nfovr                        : 1;  /**< CSR Fifo Overflow */
1348	uint64_t nderr                        : 1;  /**< NCB Decode Error */
1349#else
1350	uint64_t nderr                        : 1;
1351	uint64_t nfovr                        : 1;
1352	uint64_t reserved_2_7                 : 6;
1353	uint64_t dmadbo                       : 8;
1354	uint64_t req_badadr                   : 1;
1355	uint64_t req_badlen                   : 1;
1356	uint64_t req_ovrflw                   : 1;
1357	uint64_t req_undflw                   : 1;
1358	uint64_t req_anull                    : 1;
1359	uint64_t req_inull                    : 1;
1360	uint64_t req_badfil                   : 1;
1361	uint64_t reserved_23_23               : 1;
1362	uint64_t sprt0_rst                    : 1;
1363	uint64_t sprt1_rst                    : 1;
1364	uint64_t reserved_26_63               : 38;
1365#endif
1366	} cn63xx;
1367	struct cvmx_dpi_int_en_cn63xx         cn63xxp1;
1368	struct cvmx_dpi_int_en_s              cn66xx;
1369	struct cvmx_dpi_int_en_cn63xx         cn68xx;
1370	struct cvmx_dpi_int_en_cn63xx         cn68xxp1;
1371	struct cvmx_dpi_int_en_s              cnf71xx;
1372};
1373typedef union cvmx_dpi_int_en cvmx_dpi_int_en_t;
1374
1375/**
1376 * cvmx_dpi_int_reg
1377 */
1378union cvmx_dpi_int_reg {
1379	uint64_t u64;
1380	struct cvmx_dpi_int_reg_s {
1381#ifdef __BIG_ENDIAN_BITFIELD
1382	uint64_t reserved_28_63               : 36;
1383	uint64_t sprt3_rst                    : 1;  /**< DMA instruction was dropped because the source or
1384                                                          destination port was in reset.
1385                                                         this bit is set. */
1386	uint64_t sprt2_rst                    : 1;  /**< DMA instruction was dropped because the source or
1387                                                          destination port was in reset.
1388                                                         this bit is set. */
1389	uint64_t sprt1_rst                    : 1;  /**< DMA instruction was dropped because the source or
1390                                                          destination port was in reset.
1391                                                         this bit is set. */
1392	uint64_t sprt0_rst                    : 1;  /**< DMA instruction was dropped because the source or
1393                                                          destination port was in reset.
1394                                                         this bit is set. */
1395	uint64_t reserved_23_23               : 1;
1396	uint64_t req_badfil                   : 1;  /**< DMA instruction unexpected fill
1397                                                         Instruction fill when none outstanding. */
1398	uint64_t req_inull                    : 1;  /**< DMA instruction filled with NULL pointer
1399                                                         Next pointer was NULL. */
1400	uint64_t req_anull                    : 1;  /**< DMA instruction filled with bad instruction
1401                                                         Fetched instruction word was 0. */
1402	uint64_t req_undflw                   : 1;  /**< DMA instruction FIFO underflow
1403                                                         DPI tracks outstanding instructions fetches.
1404                                                         Interrupt will fire when FIFO underflows. */
1405	uint64_t req_ovrflw                   : 1;  /**< DMA instruction FIFO overflow
1406                                                         DPI tracks outstanding instructions fetches.
1407                                                         Interrupt will fire when FIFO overflows. */
1408	uint64_t req_badlen                   : 1;  /**< DMA instruction fetch with length
1409                                                         Interrupt will fire if DPI forms an instruction
1410                                                         fetch with length of zero. */
1411	uint64_t req_badadr                   : 1;  /**< DMA instruction fetch with bad pointer
1412                                                         Interrupt will fire if DPI forms an instruction
1413                                                         fetch to the NULL pointer. */
1414	uint64_t dmadbo                       : 8;  /**< DMAx doorbell overflow.
1415                                                         DPI has a 32-bit counter for each request's queue
1416                                                         outstanding doorbell counts. Interrupt will fire
1417                                                         if the count overflows. */
1418	uint64_t reserved_2_7                 : 6;
1419	uint64_t nfovr                        : 1;  /**< CSR Fifo Overflow
1420                                                         DPI can store upto 16 CSR request.  The FIFO will
1421                                                         overflow if that number is exceeded. */
1422	uint64_t nderr                        : 1;  /**< NCB Decode Error
1423                                                         DPI received a NCB transaction on the outbound
1424                                                         bus to the DPI deviceID, but the command was not
1425                                                         recognized. */
1426#else
1427	uint64_t nderr                        : 1;
1428	uint64_t nfovr                        : 1;
1429	uint64_t reserved_2_7                 : 6;
1430	uint64_t dmadbo                       : 8;
1431	uint64_t req_badadr                   : 1;
1432	uint64_t req_badlen                   : 1;
1433	uint64_t req_ovrflw                   : 1;
1434	uint64_t req_undflw                   : 1;
1435	uint64_t req_anull                    : 1;
1436	uint64_t req_inull                    : 1;
1437	uint64_t req_badfil                   : 1;
1438	uint64_t reserved_23_23               : 1;
1439	uint64_t sprt0_rst                    : 1;
1440	uint64_t sprt1_rst                    : 1;
1441	uint64_t sprt2_rst                    : 1;
1442	uint64_t sprt3_rst                    : 1;
1443	uint64_t reserved_28_63               : 36;
1444#endif
1445	} s;
1446	struct cvmx_dpi_int_reg_s             cn61xx;
1447	struct cvmx_dpi_int_reg_cn63xx {
1448#ifdef __BIG_ENDIAN_BITFIELD
1449	uint64_t reserved_26_63               : 38;
1450	uint64_t sprt1_rst                    : 1;  /**< DMA instruction was dropped because the source or
1451                                                          destination port was in reset.
1452                                                         this bit is set. */
1453	uint64_t sprt0_rst                    : 1;  /**< DMA instruction was dropped because the source or
1454                                                          destination port was in reset.
1455                                                         this bit is set. */
1456	uint64_t reserved_23_23               : 1;
1457	uint64_t req_badfil                   : 1;  /**< DMA instruction unexpected fill
1458                                                         Instruction fill when none outstanding. */
1459	uint64_t req_inull                    : 1;  /**< DMA instruction filled with NULL pointer
1460                                                         Next pointer was NULL. */
1461	uint64_t req_anull                    : 1;  /**< DMA instruction filled with bad instruction
1462                                                         Fetched instruction word was 0. */
1463	uint64_t req_undflw                   : 1;  /**< DMA instruction FIFO underflow
1464                                                         DPI tracks outstanding instructions fetches.
1465                                                         Interrupt will fire when FIFO underflows. */
1466	uint64_t req_ovrflw                   : 1;  /**< DMA instruction FIFO overflow
1467                                                         DPI tracks outstanding instructions fetches.
1468                                                         Interrupt will fire when FIFO overflows. */
1469	uint64_t req_badlen                   : 1;  /**< DMA instruction fetch with length
1470                                                         Interrupt will fire if DPI forms an instruction
1471                                                         fetch with length of zero. */
1472	uint64_t req_badadr                   : 1;  /**< DMA instruction fetch with bad pointer
1473                                                         Interrupt will fire if DPI forms an instruction
1474                                                         fetch to the NULL pointer. */
1475	uint64_t dmadbo                       : 8;  /**< DMAx doorbell overflow.
1476                                                         DPI has a 32-bit counter for each request's queue
1477                                                         outstanding doorbell counts. Interrupt will fire
1478                                                         if the count overflows. */
1479	uint64_t reserved_2_7                 : 6;
1480	uint64_t nfovr                        : 1;  /**< CSR Fifo Overflow
1481                                                         DPI can store upto 16 CSR request.  The FIFO will
1482                                                         overflow if that number is exceeded. */
1483	uint64_t nderr                        : 1;  /**< NCB Decode Error
1484                                                         DPI received a NCB transaction on the outbound
1485                                                         bus to the DPI deviceID, but the command was not
1486                                                         recognized. */
1487#else
1488	uint64_t nderr                        : 1;
1489	uint64_t nfovr                        : 1;
1490	uint64_t reserved_2_7                 : 6;
1491	uint64_t dmadbo                       : 8;
1492	uint64_t req_badadr                   : 1;
1493	uint64_t req_badlen                   : 1;
1494	uint64_t req_ovrflw                   : 1;
1495	uint64_t req_undflw                   : 1;
1496	uint64_t req_anull                    : 1;
1497	uint64_t req_inull                    : 1;
1498	uint64_t req_badfil                   : 1;
1499	uint64_t reserved_23_23               : 1;
1500	uint64_t sprt0_rst                    : 1;
1501	uint64_t sprt1_rst                    : 1;
1502	uint64_t reserved_26_63               : 38;
1503#endif
1504	} cn63xx;
1505	struct cvmx_dpi_int_reg_cn63xx        cn63xxp1;
1506	struct cvmx_dpi_int_reg_s             cn66xx;
1507	struct cvmx_dpi_int_reg_cn63xx        cn68xx;
1508	struct cvmx_dpi_int_reg_cn63xx        cn68xxp1;
1509	struct cvmx_dpi_int_reg_s             cnf71xx;
1510};
1511typedef union cvmx_dpi_int_reg cvmx_dpi_int_reg_t;
1512
1513/**
1514 * cvmx_dpi_ncb#_cfg
1515 */
1516union cvmx_dpi_ncbx_cfg {
1517	uint64_t u64;
1518	struct cvmx_dpi_ncbx_cfg_s {
1519#ifdef __BIG_ENDIAN_BITFIELD
1520	uint64_t reserved_6_63                : 58;
1521	uint64_t molr                         : 6;  /**< Max Outstanding Load Requests
1522                                                         Limits the number of oustanding load requests on
1523                                                         the NCB interface.  This value can range from 1
1524                                                         to 32. Setting a value of 0 will halt all read
1525                                                         traffic to the NCB interface.  There are no
1526                                                         restrictions on when this value can be changed. */
1527#else
1528	uint64_t molr                         : 6;
1529	uint64_t reserved_6_63                : 58;
1530#endif
1531	} s;
1532	struct cvmx_dpi_ncbx_cfg_s            cn61xx;
1533	struct cvmx_dpi_ncbx_cfg_s            cn66xx;
1534	struct cvmx_dpi_ncbx_cfg_s            cn68xx;
1535	struct cvmx_dpi_ncbx_cfg_s            cnf71xx;
1536};
1537typedef union cvmx_dpi_ncbx_cfg cvmx_dpi_ncbx_cfg_t;
1538
1539/**
1540 * cvmx_dpi_pint_info
1541 *
1542 * DPI_PINT_INFO = DPI Packet Interrupt Info
1543 *
1544 * DPI Packet Interrupt Info.
1545 */
1546union cvmx_dpi_pint_info {
1547	uint64_t u64;
1548	struct cvmx_dpi_pint_info_s {
1549#ifdef __BIG_ENDIAN_BITFIELD
1550	uint64_t reserved_14_63               : 50;
1551	uint64_t iinfo                        : 6;  /**< Packet Instruction Doorbell count overflow info */
1552	uint64_t reserved_6_7                 : 2;
1553	uint64_t sinfo                        : 6;  /**< Packet Scatterlist Doorbell count overflow info */
1554#else
1555	uint64_t sinfo                        : 6;
1556	uint64_t reserved_6_7                 : 2;
1557	uint64_t iinfo                        : 6;
1558	uint64_t reserved_14_63               : 50;
1559#endif
1560	} s;
1561	struct cvmx_dpi_pint_info_s           cn61xx;
1562	struct cvmx_dpi_pint_info_s           cn63xx;
1563	struct cvmx_dpi_pint_info_s           cn63xxp1;
1564	struct cvmx_dpi_pint_info_s           cn66xx;
1565	struct cvmx_dpi_pint_info_s           cn68xx;
1566	struct cvmx_dpi_pint_info_s           cn68xxp1;
1567	struct cvmx_dpi_pint_info_s           cnf71xx;
1568};
1569typedef union cvmx_dpi_pint_info cvmx_dpi_pint_info_t;
1570
1571/**
1572 * cvmx_dpi_pkt_err_rsp
1573 */
1574union cvmx_dpi_pkt_err_rsp {
1575	uint64_t u64;
1576	struct cvmx_dpi_pkt_err_rsp_s {
1577#ifdef __BIG_ENDIAN_BITFIELD
1578	uint64_t reserved_1_63                : 63;
1579	uint64_t pkterr                       : 1;  /**< Indicates that an ErrorResponse was received from
1580                                                         the I/O subsystem. */
1581#else
1582	uint64_t pkterr                       : 1;
1583	uint64_t reserved_1_63                : 63;
1584#endif
1585	} s;
1586	struct cvmx_dpi_pkt_err_rsp_s         cn61xx;
1587	struct cvmx_dpi_pkt_err_rsp_s         cn63xx;
1588	struct cvmx_dpi_pkt_err_rsp_s         cn63xxp1;
1589	struct cvmx_dpi_pkt_err_rsp_s         cn66xx;
1590	struct cvmx_dpi_pkt_err_rsp_s         cn68xx;
1591	struct cvmx_dpi_pkt_err_rsp_s         cn68xxp1;
1592	struct cvmx_dpi_pkt_err_rsp_s         cnf71xx;
1593};
1594typedef union cvmx_dpi_pkt_err_rsp cvmx_dpi_pkt_err_rsp_t;
1595
1596/**
1597 * cvmx_dpi_req_err_rsp
1598 */
1599union cvmx_dpi_req_err_rsp {
1600	uint64_t u64;
1601	struct cvmx_dpi_req_err_rsp_s {
1602#ifdef __BIG_ENDIAN_BITFIELD
1603	uint64_t reserved_8_63                : 56;
1604	uint64_t qerr                         : 8;  /**< Indicates which instruction queue received an
1605                                                         ErrorResponse from the I/O subsystem.
1606                                                         SW must clear the bit before the the cooresponding
1607                                                         instruction queue will continue processing
1608                                                         instructions if DPI_REQ_ERR_RSP_EN[EN] is set. */
1609#else
1610	uint64_t qerr                         : 8;
1611	uint64_t reserved_8_63                : 56;
1612#endif
1613	} s;
1614	struct cvmx_dpi_req_err_rsp_s         cn61xx;
1615	struct cvmx_dpi_req_err_rsp_s         cn63xx;
1616	struct cvmx_dpi_req_err_rsp_s         cn63xxp1;
1617	struct cvmx_dpi_req_err_rsp_s         cn66xx;
1618	struct cvmx_dpi_req_err_rsp_s         cn68xx;
1619	struct cvmx_dpi_req_err_rsp_s         cn68xxp1;
1620	struct cvmx_dpi_req_err_rsp_s         cnf71xx;
1621};
1622typedef union cvmx_dpi_req_err_rsp cvmx_dpi_req_err_rsp_t;
1623
1624/**
1625 * cvmx_dpi_req_err_rsp_en
1626 */
1627union cvmx_dpi_req_err_rsp_en {
1628	uint64_t u64;
1629	struct cvmx_dpi_req_err_rsp_en_s {
1630#ifdef __BIG_ENDIAN_BITFIELD
1631	uint64_t reserved_8_63                : 56;
1632	uint64_t en                           : 8;  /**< Indicates which instruction queues should stop
1633                                                         dispatching instructions when an  ErrorResponse
1634                                                         is received from the I/O subsystem. */
1635#else
1636	uint64_t en                           : 8;
1637	uint64_t reserved_8_63                : 56;
1638#endif
1639	} s;
1640	struct cvmx_dpi_req_err_rsp_en_s      cn61xx;
1641	struct cvmx_dpi_req_err_rsp_en_s      cn63xx;
1642	struct cvmx_dpi_req_err_rsp_en_s      cn63xxp1;
1643	struct cvmx_dpi_req_err_rsp_en_s      cn66xx;
1644	struct cvmx_dpi_req_err_rsp_en_s      cn68xx;
1645	struct cvmx_dpi_req_err_rsp_en_s      cn68xxp1;
1646	struct cvmx_dpi_req_err_rsp_en_s      cnf71xx;
1647};
1648typedef union cvmx_dpi_req_err_rsp_en cvmx_dpi_req_err_rsp_en_t;
1649
1650/**
1651 * cvmx_dpi_req_err_rst
1652 */
1653union cvmx_dpi_req_err_rst {
1654	uint64_t u64;
1655	struct cvmx_dpi_req_err_rst_s {
1656#ifdef __BIG_ENDIAN_BITFIELD
1657	uint64_t reserved_8_63                : 56;
1658	uint64_t qerr                         : 8;  /**< Indicates which instruction queue dropped an
1659                                                         instruction because the source or destination
1660                                                         was in reset.
1661                                                         SW must clear the bit before the the cooresponding
1662                                                         instruction queue will continue processing
1663                                                         instructions if DPI_REQ_ERR_RST_EN[EN] is set. */
1664#else
1665	uint64_t qerr                         : 8;
1666	uint64_t reserved_8_63                : 56;
1667#endif
1668	} s;
1669	struct cvmx_dpi_req_err_rst_s         cn61xx;
1670	struct cvmx_dpi_req_err_rst_s         cn63xx;
1671	struct cvmx_dpi_req_err_rst_s         cn63xxp1;
1672	struct cvmx_dpi_req_err_rst_s         cn66xx;
1673	struct cvmx_dpi_req_err_rst_s         cn68xx;
1674	struct cvmx_dpi_req_err_rst_s         cn68xxp1;
1675	struct cvmx_dpi_req_err_rst_s         cnf71xx;
1676};
1677typedef union cvmx_dpi_req_err_rst cvmx_dpi_req_err_rst_t;
1678
1679/**
1680 * cvmx_dpi_req_err_rst_en
1681 */
1682union cvmx_dpi_req_err_rst_en {
1683	uint64_t u64;
1684	struct cvmx_dpi_req_err_rst_en_s {
1685#ifdef __BIG_ENDIAN_BITFIELD
1686	uint64_t reserved_8_63                : 56;
1687	uint64_t en                           : 8;  /**< Indicates which instruction queues should stop
1688                                                         dispatching instructions when an instruction
1689                                                         is dropped because the source or destination port
1690                                                         is in reset. */
1691#else
1692	uint64_t en                           : 8;
1693	uint64_t reserved_8_63                : 56;
1694#endif
1695	} s;
1696	struct cvmx_dpi_req_err_rst_en_s      cn61xx;
1697	struct cvmx_dpi_req_err_rst_en_s      cn63xx;
1698	struct cvmx_dpi_req_err_rst_en_s      cn63xxp1;
1699	struct cvmx_dpi_req_err_rst_en_s      cn66xx;
1700	struct cvmx_dpi_req_err_rst_en_s      cn68xx;
1701	struct cvmx_dpi_req_err_rst_en_s      cn68xxp1;
1702	struct cvmx_dpi_req_err_rst_en_s      cnf71xx;
1703};
1704typedef union cvmx_dpi_req_err_rst_en cvmx_dpi_req_err_rst_en_t;
1705
1706/**
1707 * cvmx_dpi_req_err_skip_comp
1708 */
1709union cvmx_dpi_req_err_skip_comp {
1710	uint64_t u64;
1711	struct cvmx_dpi_req_err_skip_comp_s {
1712#ifdef __BIG_ENDIAN_BITFIELD
1713	uint64_t reserved_24_63               : 40;
1714	uint64_t en_rst                       : 8;  /**< Indicates which instruction queue should skip the
1715                                                         completion  phase once an port reset is
1716                                                         detected as indicated by DPI_REQ_ERR_RST.  All
1717                                                         completions to the effected instruction queue
1718                                                         will be skipped as long as
1719                                                         DPI_REQ_ERR_RSP[QERR<ique>] & EN_RSP<ique> or
1720                                                         DPI_REQ_ERR_RST[QERR<ique>] & EN_RST<ique> are
1721                                                         set. */
1722	uint64_t reserved_8_15                : 8;
1723	uint64_t en_rsp                       : 8;  /**< Indicates which instruction queue should skip the
1724                                                         completion  phase once an ErrorResponse is
1725                                                         detected as indicated by DPI_REQ_ERR_RSP.  All
1726                                                         completions to the effected instruction queue
1727                                                         will be skipped as long as
1728                                                         DPI_REQ_ERR_RSP[QERR<ique>] & EN_RSP<ique> or
1729                                                         DPI_REQ_ERR_RST[QERR<ique>] & EN_RST<ique> are
1730                                                         set. */
1731#else
1732	uint64_t en_rsp                       : 8;
1733	uint64_t reserved_8_15                : 8;
1734	uint64_t en_rst                       : 8;
1735	uint64_t reserved_24_63               : 40;
1736#endif
1737	} s;
1738	struct cvmx_dpi_req_err_skip_comp_s   cn61xx;
1739	struct cvmx_dpi_req_err_skip_comp_s   cn66xx;
1740	struct cvmx_dpi_req_err_skip_comp_s   cn68xx;
1741	struct cvmx_dpi_req_err_skip_comp_s   cn68xxp1;
1742	struct cvmx_dpi_req_err_skip_comp_s   cnf71xx;
1743};
1744typedef union cvmx_dpi_req_err_skip_comp cvmx_dpi_req_err_skip_comp_t;
1745
1746/**
1747 * cvmx_dpi_req_gbl_en
1748 */
1749union cvmx_dpi_req_gbl_en {
1750	uint64_t u64;
1751	struct cvmx_dpi_req_gbl_en_s {
1752#ifdef __BIG_ENDIAN_BITFIELD
1753	uint64_t reserved_8_63                : 56;
1754	uint64_t qen                          : 8;  /**< Indicates which instruction queues are enabled and
1755                                                         can dispatch instructions to a requesting engine. */
1756#else
1757	uint64_t qen                          : 8;
1758	uint64_t reserved_8_63                : 56;
1759#endif
1760	} s;
1761	struct cvmx_dpi_req_gbl_en_s          cn61xx;
1762	struct cvmx_dpi_req_gbl_en_s          cn63xx;
1763	struct cvmx_dpi_req_gbl_en_s          cn63xxp1;
1764	struct cvmx_dpi_req_gbl_en_s          cn66xx;
1765	struct cvmx_dpi_req_gbl_en_s          cn68xx;
1766	struct cvmx_dpi_req_gbl_en_s          cn68xxp1;
1767	struct cvmx_dpi_req_gbl_en_s          cnf71xx;
1768};
1769typedef union cvmx_dpi_req_gbl_en cvmx_dpi_req_gbl_en_t;
1770
1771/**
1772 * cvmx_dpi_sli_prt#_cfg
1773 *
1774 * DPI_SLI_PRTx_CFG = DPI SLI Port Configuration
1775 *
1776 * Configures the Max Read Request Size, Max Paylod Size, and Max Number of SLI Tags in use
1777 */
1778union cvmx_dpi_sli_prtx_cfg {
1779	uint64_t u64;
1780	struct cvmx_dpi_sli_prtx_cfg_s {
1781#ifdef __BIG_ENDIAN_BITFIELD
1782	uint64_t reserved_25_63               : 39;
1783	uint64_t halt                         : 1;  /**< When set, HALT indicates that the MAC has detected
1784                                                         a reset condition. No further instructions that
1785                                                         reference the MAC from any instruction Q will be
1786                                                         issued until the MAC comes out of reset and HALT
1787                                                         is cleared in SLI_CTL_PORTx[DIS_PORT]. */
1788	uint64_t qlm_cfg                      : 4;  /**< QLM_CFG is a function of MIO_QLMx_CFG[QLM_CFG]
1789                                                         QLM_CFG may contain values that are not normally
1790                                                         used for DMA and/or packet operations.
1791                                                         QLM_CFG does not indicate if a port is disabled.
1792                                                         MIO_QLMx_CFG can be used for more complete QLM
1793                                                         configuration information.
1794                                                         0000 = MAC is PCIe 1x4 (QLM) or 1x2 (DLM)
1795                                                         0001 = MAC is PCIe 2x1 (DLM only)
1796                                                         0010 = MAC is SGMII
1797                                                         0011 = MAC is XAUI
1798                                                         all other encodings are RESERVED */
1799	uint64_t reserved_17_19               : 3;
1800	uint64_t rd_mode                      : 1;  /**< Read Mode
1801                                                         0=Exact Read Mode
1802                                                           If the port is a PCIe port, the HW reads on a
1803                                                           4B granularity.  In this mode, the HW may break
1804                                                           a given read into 3 operations to satisify
1805                                                           PCIe rules.
1806                                                           If the port is a SRIO port, the HW follows the
1807                                                           SRIO read rules from the SRIO specification and
1808                                                            only issues 32*n, 16, and 8 byte  operations
1809                                                            on the SRIO bus.
1810                                                         1=Block Mode
1811                                                           The HW will read more data than requested in
1812                                                           order to minimize the number of operations
1813                                                           necessary to complete the operation.
1814                                                           The memory region must be memory like. */
1815	uint64_t reserved_14_15               : 2;
1816	uint64_t molr                         : 6;  /**< Max Outstanding Load Requests
1817                                                         Limits the number of oustanding load requests on
1818                                                         the port by restricting the number of tags
1819                                                         used by the SLI to track load responses.  This
1820                                                         value can range from 1 to 32 depending on the MAC
1821                                                         type and number of lanes.
1822                                                         MAC == PCIe:           Max is 32
1823                                                         MAC == sRio / 4 lanes: Max is 32
1824                                                         MAC == sRio / 2 lanes: Max is 16
1825                                                         MAC == sRio / 1 lane:  Max is  8
1826                                                         Reset value is computed based on the MAC config.
1827                                                         Setting MOLR to a value of 0 will halt all read
1828                                                         traffic to the port.  There are no restrictions
1829                                                         on when this value can be changed. */
1830	uint64_t mps_lim                      : 1;  /**< MAC memory space write requests cannot cross the
1831                                                         (naturally-aligned) MPS boundary.
1832                                                         When clear, DPI is allowed to issue a MAC memory
1833                                                         space read that crosses the naturally-aligned
1834                                                         boundary of size defined by MPS. (DPI will still
1835                                                         only cross the boundary when it would eliminate a
1836                                                         write by doing so.)
1837                                                         When set, DPI will never issue a MAC memory space
1838                                                         write that crosses the naturally-aligned boundary
1839                                                         of size defined by MPS. */
1840	uint64_t reserved_5_6                 : 2;
1841	uint64_t mps                          : 1;  /**< Max Payload Size
1842                                                                 0 = 128B
1843                                                                 1 = 256B
1844                                                         For PCIe MACs, this MPS size must not exceed
1845                                                               the size selected by PCIE*_CFG030[MPS].
1846                                                         For sRIO MACs, all MPS values are allowed. */
1847	uint64_t mrrs_lim                     : 1;  /**< MAC memory space read requests cannot cross the
1848                                                         (naturally-aligned) MRRS boundary.
1849                                                         When clear, DPI is allowed to issue a MAC memory
1850                                                         space read that crosses the naturally-aligned
1851                                                         boundary of size defined by MRRS. (DPI will still
1852                                                         only cross the boundary when it would eliminate a
1853                                                         read by doing so.)
1854                                                         When set, DPI will never issue a MAC memory space
1855                                                         read that crosses the naturally-aligned boundary
1856                                                         of size defined by MRRS. */
1857	uint64_t reserved_2_2                 : 1;
1858	uint64_t mrrs                         : 2;  /**< Max Read Request Size
1859                                                                 0 = 128B
1860                                                                 1 = 256B
1861                                                                 2 = 512B
1862                                                                 3 = 1024B
1863                                                         For PCIe MACs, this MRRS size must not exceed
1864                                                               the size selected by PCIE*_CFG030[MRRS].
1865                                                         For sRIO MACs, this MRRS size must be <= 256B. */
1866#else
1867	uint64_t mrrs                         : 2;
1868	uint64_t reserved_2_2                 : 1;
1869	uint64_t mrrs_lim                     : 1;
1870	uint64_t mps                          : 1;
1871	uint64_t reserved_5_6                 : 2;
1872	uint64_t mps_lim                      : 1;
1873	uint64_t molr                         : 6;
1874	uint64_t reserved_14_15               : 2;
1875	uint64_t rd_mode                      : 1;
1876	uint64_t reserved_17_19               : 3;
1877	uint64_t qlm_cfg                      : 4;
1878	uint64_t halt                         : 1;
1879	uint64_t reserved_25_63               : 39;
1880#endif
1881	} s;
1882	struct cvmx_dpi_sli_prtx_cfg_s        cn61xx;
1883	struct cvmx_dpi_sli_prtx_cfg_cn63xx {
1884#ifdef __BIG_ENDIAN_BITFIELD
1885	uint64_t reserved_25_63               : 39;
1886	uint64_t halt                         : 1;  /**< When set, HALT indicates that the MAC has detected
1887                                                         a reset condition. No further instructions that
1888                                                         reference the MAC from any instruction Q will be
1889                                                         issued until the MAC comes out of reset and HALT
1890                                                         is cleared in SLI_CTL_PORTx[DIS_PORT]. */
1891	uint64_t reserved_21_23               : 3;
1892	uint64_t qlm_cfg                      : 1;  /**< Read only copy of the QLM CFG pin
1893                                                         Since QLM_CFG is simply a copy of the QLM CFG
1894                                                         pins, it may reflect values that are not normal
1895                                                         for DMA or packet operations. QLM_CFG does not
1896                                                         indicate if a port is disabled.
1897                                                         0= MAC is PCIe
1898                                                         1= MAC is SRIO */
1899	uint64_t reserved_17_19               : 3;
1900	uint64_t rd_mode                      : 1;  /**< Read Mode
1901                                                         0=Exact Read Mode
1902                                                           If the port is a PCIe port, the HW reads on a
1903                                                           4B granularity.  In this mode, the HW may break
1904                                                           a given read into 3 operations to satisify
1905                                                           PCIe rules.
1906                                                           If the port is a SRIO port, the HW follows the
1907                                                           SRIO read rules from the SRIO specification and
1908                                                            only issues 32*n, 16, and 8 byte  operations
1909                                                            on the SRIO bus.
1910                                                         1=Block Mode
1911                                                           The HW will read more data than requested in
1912                                                           order to minimize the number of operations
1913                                                           necessary to complete the operation.
1914                                                           The memory region must be memory like. */
1915	uint64_t reserved_14_15               : 2;
1916	uint64_t molr                         : 6;  /**< Max Outstanding Load Requests
1917                                                         Limits the number of oustanding load requests on
1918                                                         the port by restricting the number of tags
1919                                                         used by the SLI to track load responses.  This
1920                                                         value can range from 1 to 32. Setting a value of
1921                                                         0 will halt all read traffic to the port.  There
1922                                                         are no restrictions on when this value
1923                                                         can be changed. */
1924	uint64_t mps_lim                      : 1;  /**< MAC memory space write requests cannot cross the
1925                                                         (naturally-aligned) MPS boundary.
1926                                                         When clear, DPI is allowed to issue a MAC memory
1927                                                         space read that crosses the naturally-aligned
1928                                                         boundary of size defined by MPS. (DPI will still
1929                                                         only cross the boundary when it would eliminate a
1930                                                         write by doing so.)
1931                                                         When set, DPI will never issue a MAC memory space
1932                                                         write that crosses the naturally-aligned boundary
1933                                                         of size defined by MPS. */
1934	uint64_t reserved_5_6                 : 2;
1935	uint64_t mps                          : 1;  /**< Max Payload Size
1936                                                                 0 = 128B
1937                                                                 1 = 256B
1938                                                         For PCIe MACs, this MPS size must not exceed
1939                                                               the size selected by PCIE*_CFG030[MPS].
1940                                                         For sRIO MACs, all MPS values are allowed. */
1941	uint64_t mrrs_lim                     : 1;  /**< MAC memory space read requests cannot cross the
1942                                                         (naturally-aligned) MRRS boundary.
1943                                                         When clear, DPI is allowed to issue a MAC memory
1944                                                         space read that crosses the naturally-aligned
1945                                                         boundary of size defined by MRRS. (DPI will still
1946                                                         only cross the boundary when it would eliminate a
1947                                                         read by doing so.)
1948                                                         When set, DPI will never issue a MAC memory space
1949                                                         read that crosses the naturally-aligned boundary
1950                                                         of size defined by MRRS. */
1951	uint64_t reserved_2_2                 : 1;
1952	uint64_t mrrs                         : 2;  /**< Max Read Request Size
1953                                                                 0 = 128B
1954                                                                 1 = 256B
1955                                                                 2 = 512B
1956                                                                 3 = 1024B
1957                                                         For PCIe MACs, this MRRS size must not exceed
1958                                                               the size selected by PCIE*_CFG030[MRRS].
1959                                                         For sRIO MACs, this MRRS size must be <= 256B. */
1960#else
1961	uint64_t mrrs                         : 2;
1962	uint64_t reserved_2_2                 : 1;
1963	uint64_t mrrs_lim                     : 1;
1964	uint64_t mps                          : 1;
1965	uint64_t reserved_5_6                 : 2;
1966	uint64_t mps_lim                      : 1;
1967	uint64_t molr                         : 6;
1968	uint64_t reserved_14_15               : 2;
1969	uint64_t rd_mode                      : 1;
1970	uint64_t reserved_17_19               : 3;
1971	uint64_t qlm_cfg                      : 1;
1972	uint64_t reserved_21_23               : 3;
1973	uint64_t halt                         : 1;
1974	uint64_t reserved_25_63               : 39;
1975#endif
1976	} cn63xx;
1977	struct cvmx_dpi_sli_prtx_cfg_cn63xx   cn63xxp1;
1978	struct cvmx_dpi_sli_prtx_cfg_s        cn66xx;
1979	struct cvmx_dpi_sli_prtx_cfg_cn63xx   cn68xx;
1980	struct cvmx_dpi_sli_prtx_cfg_cn63xx   cn68xxp1;
1981	struct cvmx_dpi_sli_prtx_cfg_s        cnf71xx;
1982};
1983typedef union cvmx_dpi_sli_prtx_cfg cvmx_dpi_sli_prtx_cfg_t;
1984
1985/**
1986 * cvmx_dpi_sli_prt#_err
1987 *
1988 * DPI_SLI_PRTx_ERR = DPI SLI Port Error Info
1989 *
1990 * Logs the Address and Request Queue associated with the reported SLI error response
1991 */
1992union cvmx_dpi_sli_prtx_err {
1993	uint64_t u64;
1994	struct cvmx_dpi_sli_prtx_err_s {
1995#ifdef __BIG_ENDIAN_BITFIELD
1996	uint64_t addr                         : 61; /**< Address of the failed load request.
1997                                                         Address is locked along with the
1998                                                         DPI_SLI_PRTx_ERR_INFO register.
1999                                                         See the DPI_SLI_PRTx_ERR_INFO[LOCK] description
2000                                                         for further information. */
2001	uint64_t reserved_0_2                 : 3;
2002#else
2003	uint64_t reserved_0_2                 : 3;
2004	uint64_t addr                         : 61;
2005#endif
2006	} s;
2007	struct cvmx_dpi_sli_prtx_err_s        cn61xx;
2008	struct cvmx_dpi_sli_prtx_err_s        cn63xx;
2009	struct cvmx_dpi_sli_prtx_err_s        cn63xxp1;
2010	struct cvmx_dpi_sli_prtx_err_s        cn66xx;
2011	struct cvmx_dpi_sli_prtx_err_s        cn68xx;
2012	struct cvmx_dpi_sli_prtx_err_s        cn68xxp1;
2013	struct cvmx_dpi_sli_prtx_err_s        cnf71xx;
2014};
2015typedef union cvmx_dpi_sli_prtx_err cvmx_dpi_sli_prtx_err_t;
2016
2017/**
2018 * cvmx_dpi_sli_prt#_err_info
2019 *
2020 * DPI_SLI_PRTx_ERR_INFO = DPI SLI Port Error Info
2021 *
2022 * Logs the Address and Request Queue associated with the reported SLI error response
2023 */
2024union cvmx_dpi_sli_prtx_err_info {
2025	uint64_t u64;
2026	struct cvmx_dpi_sli_prtx_err_info_s {
2027#ifdef __BIG_ENDIAN_BITFIELD
2028	uint64_t reserved_9_63                : 55;
2029	uint64_t lock                         : 1;  /**< DPI_SLI_PRTx_ERR and DPI_SLI_PRTx_ERR_INFO have
2030                                                         captured and locked contents.
2031                                                         When Octeon first detects an ErrorResponse, the
2032                                                         TYPE, REQQ, and ADDR of the error is saved and an
2033                                                         internal lock state is set so the data associated
2034                                                         with the initial error is perserved.
2035                                                         Subsequent ErrorResponses will optionally raise
2036                                                         an interrupt, but will not modify the TYPE, REQQ,
2037                                                         or ADDR fields until the internal lock state is
2038                                                         cleared.
2039                                                         SW can clear the internal lock state by writting
2040                                                         a '1' to the appropriate bit in either
2041                                                         DPI_REQ_ERR_RSP or DPI_PKT_ERR_RSP depending on
2042                                                         the TYPE field.
2043                                                         Once the internal lock state is cleared,
2044                                                         the next ErrorResponse will set the TYPE, REQQ,
2045                                                         and ADDR for the new transaction. */
2046	uint64_t reserved_5_7                 : 3;
2047	uint64_t type                         : 1;  /**< Type of transaction that caused the ErrorResponse.
2048                                                         0=DMA Instruction
2049                                                         1=PKT Instruction */
2050	uint64_t reserved_3_3                 : 1;
2051	uint64_t reqq                         : 3;  /**< Request queue that made the failed load request. */
2052#else
2053	uint64_t reqq                         : 3;
2054	uint64_t reserved_3_3                 : 1;
2055	uint64_t type                         : 1;
2056	uint64_t reserved_5_7                 : 3;
2057	uint64_t lock                         : 1;
2058	uint64_t reserved_9_63                : 55;
2059#endif
2060	} s;
2061	struct cvmx_dpi_sli_prtx_err_info_s   cn61xx;
2062	struct cvmx_dpi_sli_prtx_err_info_s   cn63xx;
2063	struct cvmx_dpi_sli_prtx_err_info_s   cn63xxp1;
2064	struct cvmx_dpi_sli_prtx_err_info_s   cn66xx;
2065	struct cvmx_dpi_sli_prtx_err_info_s   cn68xx;
2066	struct cvmx_dpi_sli_prtx_err_info_s   cn68xxp1;
2067	struct cvmx_dpi_sli_prtx_err_info_s   cnf71xx;
2068};
2069typedef union cvmx_dpi_sli_prtx_err_info cvmx_dpi_sli_prtx_err_info_t;
2070
2071#endif
2072