1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020 Marvell International Ltd.
4 *
5 * Configuration and status register (CSR) type definitions for
6 * Octeon ipd.
7 */
8
9#ifndef __CVMX_IPD_DEFS_H__
10#define __CVMX_IPD_DEFS_H__
11
12#define CVMX_IPD_1ST_MBUFF_SKIP		    (0x00014F0000000000ull)
13#define CVMX_IPD_1st_NEXT_PTR_BACK	    (0x00014F0000000150ull)
14#define CVMX_IPD_2nd_NEXT_PTR_BACK	    (0x00014F0000000158ull)
15#define CVMX_IPD_BIST_STATUS		    (0x00014F00000007F8ull)
16#define CVMX_IPD_BPIDX_MBUF_TH(offset)	    (0x00014F0000002000ull + ((offset) & 63) * 8)
17#define CVMX_IPD_BPID_BP_COUNTERX(offset)   (0x00014F0000003000ull + ((offset) & 63) * 8)
18#define CVMX_IPD_BP_PRT_RED_END		    (0x00014F0000000328ull)
19#define CVMX_IPD_CLK_COUNT		    (0x00014F0000000338ull)
20#define CVMX_IPD_CREDITS		    (0x00014F0000004410ull)
21#define CVMX_IPD_CTL_STATUS		    (0x00014F0000000018ull)
22#define CVMX_IPD_ECC_CTL		    (0x00014F0000004408ull)
23#define CVMX_IPD_FREE_PTR_FIFO_CTL	    (0x00014F0000000780ull)
24#define CVMX_IPD_FREE_PTR_VALUE		    (0x00014F0000000788ull)
25#define CVMX_IPD_HOLD_PTR_FIFO_CTL	    (0x00014F0000000790ull)
26#define CVMX_IPD_INT_ENB		    (0x00014F0000000160ull)
27#define CVMX_IPD_INT_SUM		    (0x00014F0000000168ull)
28#define CVMX_IPD_NEXT_PKT_PTR		    (0x00014F00000007A0ull)
29#define CVMX_IPD_NEXT_WQE_PTR		    (0x00014F00000007A8ull)
30#define CVMX_IPD_NOT_1ST_MBUFF_SKIP	    (0x00014F0000000008ull)
31#define CVMX_IPD_ON_BP_DROP_PKTX(offset)    (0x00014F0000004100ull)
32#define CVMX_IPD_PACKET_MBUFF_SIZE	    (0x00014F0000000010ull)
33#define CVMX_IPD_PKT_ERR		    (0x00014F00000003F0ull)
34#define CVMX_IPD_PKT_PTR_VALID		    (0x00014F0000000358ull)
35#define CVMX_IPD_PORTX_BP_PAGE_CNT(offset)  (0x00014F0000000028ull + ((offset) & 63) * 8)
36#define CVMX_IPD_PORTX_BP_PAGE_CNT2(offset) (0x00014F0000000368ull + ((offset) & 63) * 8 - 8 * 36)
37#define CVMX_IPD_PORTX_BP_PAGE_CNT3(offset) (0x00014F00000003D0ull + ((offset) & 63) * 8 - 8 * 40)
38#define CVMX_IPD_PORT_BP_COUNTERS2_PAIRX(offset)                                                   \
39	(0x00014F0000000388ull + ((offset) & 63) * 8 - 8 * 36)
40#define CVMX_IPD_PORT_BP_COUNTERS3_PAIRX(offset)                                                   \
41	(0x00014F00000003B0ull + ((offset) & 63) * 8 - 8 * 40)
42#define CVMX_IPD_PORT_BP_COUNTERS4_PAIRX(offset)                                                   \
43	(0x00014F0000000410ull + ((offset) & 63) * 8 - 8 * 44)
44#define CVMX_IPD_PORT_BP_COUNTERS_PAIRX(offset) (0x00014F00000001B8ull + ((offset) & 63) * 8)
45#define CVMX_IPD_PORT_PTR_FIFO_CTL		(0x00014F0000000798ull)
46#define CVMX_IPD_PORT_QOS_INTX(offset)		(0x00014F0000000808ull + ((offset) & 7) * 8)
47#define CVMX_IPD_PORT_QOS_INT_ENBX(offset)	(0x00014F0000000848ull + ((offset) & 7) * 8)
48#define CVMX_IPD_PORT_QOS_X_CNT(offset)		(0x00014F0000000888ull + ((offset) & 511) * 8)
49#define CVMX_IPD_PORT_SOPX(offset)		(0x00014F0000004400ull)
50#define CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL		(0x00014F0000000348ull)
51#define CVMX_IPD_PRC_PORT_PTR_FIFO_CTL		(0x00014F0000000350ull)
52#define CVMX_IPD_PTR_COUNT			(0x00014F0000000320ull)
53#define CVMX_IPD_PWP_PTR_FIFO_CTL		(0x00014F0000000340ull)
54#define CVMX_IPD_QOS0_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(0)
55#define CVMX_IPD_QOS1_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(1)
56#define CVMX_IPD_QOS2_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(2)
57#define CVMX_IPD_QOS3_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(3)
58#define CVMX_IPD_QOS4_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(4)
59#define CVMX_IPD_QOS5_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(5)
60#define CVMX_IPD_QOS6_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(6)
61#define CVMX_IPD_QOS7_RED_MARKS			CVMX_IPD_QOSX_RED_MARKS(7)
62#define CVMX_IPD_QOSX_RED_MARKS(offset)		(0x00014F0000000178ull + ((offset) & 7) * 8)
63#define CVMX_IPD_QUE0_FREE_PAGE_CNT		(0x00014F0000000330ull)
64#define CVMX_IPD_RED_BPID_ENABLEX(offset)	(0x00014F0000004200ull)
65#define CVMX_IPD_RED_DELAY			(0x00014F0000004300ull)
66#define CVMX_IPD_RED_PORT_ENABLE		(0x00014F00000002D8ull)
67#define CVMX_IPD_RED_PORT_ENABLE2		(0x00014F00000003A8ull)
68#define CVMX_IPD_RED_QUE0_PARAM			CVMX_IPD_RED_QUEX_PARAM(0)
69#define CVMX_IPD_RED_QUE1_PARAM			CVMX_IPD_RED_QUEX_PARAM(1)
70#define CVMX_IPD_RED_QUE2_PARAM			CVMX_IPD_RED_QUEX_PARAM(2)
71#define CVMX_IPD_RED_QUE3_PARAM			CVMX_IPD_RED_QUEX_PARAM(3)
72#define CVMX_IPD_RED_QUE4_PARAM			CVMX_IPD_RED_QUEX_PARAM(4)
73#define CVMX_IPD_RED_QUE5_PARAM			CVMX_IPD_RED_QUEX_PARAM(5)
74#define CVMX_IPD_RED_QUE6_PARAM			CVMX_IPD_RED_QUEX_PARAM(6)
75#define CVMX_IPD_RED_QUE7_PARAM			CVMX_IPD_RED_QUEX_PARAM(7)
76#define CVMX_IPD_RED_QUEX_PARAM(offset)		(0x00014F00000002E0ull + ((offset) & 7) * 8)
77#define CVMX_IPD_REQ_WGT			(0x00014F0000004418ull)
78#define CVMX_IPD_SUB_PORT_BP_PAGE_CNT		(0x00014F0000000148ull)
79#define CVMX_IPD_SUB_PORT_FCS			(0x00014F0000000170ull)
80#define CVMX_IPD_SUB_PORT_QOS_CNT		(0x00014F0000000800ull)
81#define CVMX_IPD_WQE_FPA_QUEUE			(0x00014F0000000020ull)
82#define CVMX_IPD_WQE_PTR_VALID			(0x00014F0000000360ull)
83
84/**
85 * cvmx_ipd_1st_mbuff_skip
86 *
87 * The number of words that the IPD will skip when writing the first MBUFF.
88 *
89 */
90union cvmx_ipd_1st_mbuff_skip {
91	u64 u64;
92	struct cvmx_ipd_1st_mbuff_skip_s {
93		u64 reserved_6_63 : 58;
94		u64 skip_sz : 6;
95	} s;
96	struct cvmx_ipd_1st_mbuff_skip_s cn30xx;
97	struct cvmx_ipd_1st_mbuff_skip_s cn31xx;
98	struct cvmx_ipd_1st_mbuff_skip_s cn38xx;
99	struct cvmx_ipd_1st_mbuff_skip_s cn38xxp2;
100	struct cvmx_ipd_1st_mbuff_skip_s cn50xx;
101	struct cvmx_ipd_1st_mbuff_skip_s cn52xx;
102	struct cvmx_ipd_1st_mbuff_skip_s cn52xxp1;
103	struct cvmx_ipd_1st_mbuff_skip_s cn56xx;
104	struct cvmx_ipd_1st_mbuff_skip_s cn56xxp1;
105	struct cvmx_ipd_1st_mbuff_skip_s cn58xx;
106	struct cvmx_ipd_1st_mbuff_skip_s cn58xxp1;
107	struct cvmx_ipd_1st_mbuff_skip_s cn61xx;
108	struct cvmx_ipd_1st_mbuff_skip_s cn63xx;
109	struct cvmx_ipd_1st_mbuff_skip_s cn63xxp1;
110	struct cvmx_ipd_1st_mbuff_skip_s cn66xx;
111	struct cvmx_ipd_1st_mbuff_skip_s cn68xx;
112	struct cvmx_ipd_1st_mbuff_skip_s cn68xxp1;
113	struct cvmx_ipd_1st_mbuff_skip_s cn70xx;
114	struct cvmx_ipd_1st_mbuff_skip_s cn70xxp1;
115	struct cvmx_ipd_1st_mbuff_skip_s cnf71xx;
116};
117
118typedef union cvmx_ipd_1st_mbuff_skip cvmx_ipd_1st_mbuff_skip_t;
119
120/**
121 * cvmx_ipd_1st_next_ptr_back
122 *
123 * IPD_1st_NEXT_PTR_BACK = IPD First Next Pointer Back Values
124 * Contains the Back Field for use in creating the Next Pointer Header for the First MBUF
125 */
126union cvmx_ipd_1st_next_ptr_back {
127	u64 u64;
128	struct cvmx_ipd_1st_next_ptr_back_s {
129		u64 reserved_4_63 : 60;
130		u64 back : 4;
131	} s;
132	struct cvmx_ipd_1st_next_ptr_back_s cn30xx;
133	struct cvmx_ipd_1st_next_ptr_back_s cn31xx;
134	struct cvmx_ipd_1st_next_ptr_back_s cn38xx;
135	struct cvmx_ipd_1st_next_ptr_back_s cn38xxp2;
136	struct cvmx_ipd_1st_next_ptr_back_s cn50xx;
137	struct cvmx_ipd_1st_next_ptr_back_s cn52xx;
138	struct cvmx_ipd_1st_next_ptr_back_s cn52xxp1;
139	struct cvmx_ipd_1st_next_ptr_back_s cn56xx;
140	struct cvmx_ipd_1st_next_ptr_back_s cn56xxp1;
141	struct cvmx_ipd_1st_next_ptr_back_s cn58xx;
142	struct cvmx_ipd_1st_next_ptr_back_s cn58xxp1;
143	struct cvmx_ipd_1st_next_ptr_back_s cn61xx;
144	struct cvmx_ipd_1st_next_ptr_back_s cn63xx;
145	struct cvmx_ipd_1st_next_ptr_back_s cn63xxp1;
146	struct cvmx_ipd_1st_next_ptr_back_s cn66xx;
147	struct cvmx_ipd_1st_next_ptr_back_s cn68xx;
148	struct cvmx_ipd_1st_next_ptr_back_s cn68xxp1;
149	struct cvmx_ipd_1st_next_ptr_back_s cn70xx;
150	struct cvmx_ipd_1st_next_ptr_back_s cn70xxp1;
151	struct cvmx_ipd_1st_next_ptr_back_s cnf71xx;
152};
153
154typedef union cvmx_ipd_1st_next_ptr_back cvmx_ipd_1st_next_ptr_back_t;
155
156/**
157 * cvmx_ipd_2nd_next_ptr_back
158 *
159 * Contains the Back Field for use in creating the Next Pointer Header for the First MBUF
160 *
161 */
162union cvmx_ipd_2nd_next_ptr_back {
163	u64 u64;
164	struct cvmx_ipd_2nd_next_ptr_back_s {
165		u64 reserved_4_63 : 60;
166		u64 back : 4;
167	} s;
168	struct cvmx_ipd_2nd_next_ptr_back_s cn30xx;
169	struct cvmx_ipd_2nd_next_ptr_back_s cn31xx;
170	struct cvmx_ipd_2nd_next_ptr_back_s cn38xx;
171	struct cvmx_ipd_2nd_next_ptr_back_s cn38xxp2;
172	struct cvmx_ipd_2nd_next_ptr_back_s cn50xx;
173	struct cvmx_ipd_2nd_next_ptr_back_s cn52xx;
174	struct cvmx_ipd_2nd_next_ptr_back_s cn52xxp1;
175	struct cvmx_ipd_2nd_next_ptr_back_s cn56xx;
176	struct cvmx_ipd_2nd_next_ptr_back_s cn56xxp1;
177	struct cvmx_ipd_2nd_next_ptr_back_s cn58xx;
178	struct cvmx_ipd_2nd_next_ptr_back_s cn58xxp1;
179	struct cvmx_ipd_2nd_next_ptr_back_s cn61xx;
180	struct cvmx_ipd_2nd_next_ptr_back_s cn63xx;
181	struct cvmx_ipd_2nd_next_ptr_back_s cn63xxp1;
182	struct cvmx_ipd_2nd_next_ptr_back_s cn66xx;
183	struct cvmx_ipd_2nd_next_ptr_back_s cn68xx;
184	struct cvmx_ipd_2nd_next_ptr_back_s cn68xxp1;
185	struct cvmx_ipd_2nd_next_ptr_back_s cn70xx;
186	struct cvmx_ipd_2nd_next_ptr_back_s cn70xxp1;
187	struct cvmx_ipd_2nd_next_ptr_back_s cnf71xx;
188};
189
190typedef union cvmx_ipd_2nd_next_ptr_back cvmx_ipd_2nd_next_ptr_back_t;
191
192/**
193 * cvmx_ipd_bist_status
194 *
195 * BIST Status for IPD's Memories.
196 *
197 */
198union cvmx_ipd_bist_status {
199	u64 u64;
200	struct cvmx_ipd_bist_status_s {
201		u64 reserved_23_63 : 41;
202		u64 iiwo1 : 1;
203		u64 iiwo0 : 1;
204		u64 iio1 : 1;
205		u64 iio0 : 1;
206		u64 pbm4 : 1;
207		u64 csr_mem : 1;
208		u64 csr_ncmd : 1;
209		u64 pwq_wqed : 1;
210		u64 pwq_wp1 : 1;
211		u64 pwq_pow : 1;
212		u64 ipq_pbe1 : 1;
213		u64 ipq_pbe0 : 1;
214		u64 pbm3 : 1;
215		u64 pbm2 : 1;
216		u64 pbm1 : 1;
217		u64 pbm0 : 1;
218		u64 pbm_word : 1;
219		u64 pwq1 : 1;
220		u64 pwq0 : 1;
221		u64 prc_off : 1;
222		u64 ipd_old : 1;
223		u64 ipd_new : 1;
224		u64 pwp : 1;
225	} s;
226	struct cvmx_ipd_bist_status_cn30xx {
227		u64 reserved_16_63 : 48;
228		u64 pwq_wqed : 1;
229		u64 pwq_wp1 : 1;
230		u64 pwq_pow : 1;
231		u64 ipq_pbe1 : 1;
232		u64 ipq_pbe0 : 1;
233		u64 pbm3 : 1;
234		u64 pbm2 : 1;
235		u64 pbm1 : 1;
236		u64 pbm0 : 1;
237		u64 pbm_word : 1;
238		u64 pwq1 : 1;
239		u64 pwq0 : 1;
240		u64 prc_off : 1;
241		u64 ipd_old : 1;
242		u64 ipd_new : 1;
243		u64 pwp : 1;
244	} cn30xx;
245	struct cvmx_ipd_bist_status_cn30xx cn31xx;
246	struct cvmx_ipd_bist_status_cn30xx cn38xx;
247	struct cvmx_ipd_bist_status_cn30xx cn38xxp2;
248	struct cvmx_ipd_bist_status_cn30xx cn50xx;
249	struct cvmx_ipd_bist_status_cn52xx {
250		u64 reserved_18_63 : 46;
251		u64 csr_mem : 1;
252		u64 csr_ncmd : 1;
253		u64 pwq_wqed : 1;
254		u64 pwq_wp1 : 1;
255		u64 pwq_pow : 1;
256		u64 ipq_pbe1 : 1;
257		u64 ipq_pbe0 : 1;
258		u64 pbm3 : 1;
259		u64 pbm2 : 1;
260		u64 pbm1 : 1;
261		u64 pbm0 : 1;
262		u64 pbm_word : 1;
263		u64 pwq1 : 1;
264		u64 pwq0 : 1;
265		u64 prc_off : 1;
266		u64 ipd_old : 1;
267		u64 ipd_new : 1;
268		u64 pwp : 1;
269	} cn52xx;
270	struct cvmx_ipd_bist_status_cn52xx cn52xxp1;
271	struct cvmx_ipd_bist_status_cn52xx cn56xx;
272	struct cvmx_ipd_bist_status_cn52xx cn56xxp1;
273	struct cvmx_ipd_bist_status_cn30xx cn58xx;
274	struct cvmx_ipd_bist_status_cn30xx cn58xxp1;
275	struct cvmx_ipd_bist_status_cn52xx cn61xx;
276	struct cvmx_ipd_bist_status_cn52xx cn63xx;
277	struct cvmx_ipd_bist_status_cn52xx cn63xxp1;
278	struct cvmx_ipd_bist_status_cn52xx cn66xx;
279	struct cvmx_ipd_bist_status_s cn68xx;
280	struct cvmx_ipd_bist_status_s cn68xxp1;
281	struct cvmx_ipd_bist_status_cn52xx cn70xx;
282	struct cvmx_ipd_bist_status_cn52xx cn70xxp1;
283	struct cvmx_ipd_bist_status_cn52xx cnf71xx;
284};
285
286typedef union cvmx_ipd_bist_status cvmx_ipd_bist_status_t;
287
288/**
289 * cvmx_ipd_bp_prt_red_end
290 *
291 * When IPD applies backpressure to a PORT and the corresponding bit in this register is set,
292 * the RED Unit will drop packets for that port.
293 */
294union cvmx_ipd_bp_prt_red_end {
295	u64 u64;
296	struct cvmx_ipd_bp_prt_red_end_s {
297		u64 reserved_48_63 : 16;
298		u64 prt_enb : 48;
299	} s;
300	struct cvmx_ipd_bp_prt_red_end_cn30xx {
301		u64 reserved_36_63 : 28;
302		u64 prt_enb : 36;
303	} cn30xx;
304	struct cvmx_ipd_bp_prt_red_end_cn30xx cn31xx;
305	struct cvmx_ipd_bp_prt_red_end_cn30xx cn38xx;
306	struct cvmx_ipd_bp_prt_red_end_cn30xx cn38xxp2;
307	struct cvmx_ipd_bp_prt_red_end_cn30xx cn50xx;
308	struct cvmx_ipd_bp_prt_red_end_cn52xx {
309		u64 reserved_40_63 : 24;
310		u64 prt_enb : 40;
311	} cn52xx;
312	struct cvmx_ipd_bp_prt_red_end_cn52xx cn52xxp1;
313	struct cvmx_ipd_bp_prt_red_end_cn52xx cn56xx;
314	struct cvmx_ipd_bp_prt_red_end_cn52xx cn56xxp1;
315	struct cvmx_ipd_bp_prt_red_end_cn30xx cn58xx;
316	struct cvmx_ipd_bp_prt_red_end_cn30xx cn58xxp1;
317	struct cvmx_ipd_bp_prt_red_end_s cn61xx;
318	struct cvmx_ipd_bp_prt_red_end_cn63xx {
319		u64 reserved_44_63 : 20;
320		u64 prt_enb : 44;
321	} cn63xx;
322	struct cvmx_ipd_bp_prt_red_end_cn63xx cn63xxp1;
323	struct cvmx_ipd_bp_prt_red_end_s cn66xx;
324	struct cvmx_ipd_bp_prt_red_end_s cn70xx;
325	struct cvmx_ipd_bp_prt_red_end_s cn70xxp1;
326	struct cvmx_ipd_bp_prt_red_end_s cnf71xx;
327};
328
329typedef union cvmx_ipd_bp_prt_red_end cvmx_ipd_bp_prt_red_end_t;
330
331/**
332 * cvmx_ipd_bpid#_mbuf_th
333 *
334 * 0x2000 2FFF
335 *
336 *                  IPD_BPIDX_MBUF_TH = IPD BPID  MBUFF Threshold
337 *
338 * The number of MBUFFs in use by the BPID, that when exceeded, backpressure will be applied to the BPID.
339 */
340union cvmx_ipd_bpidx_mbuf_th {
341	u64 u64;
342	struct cvmx_ipd_bpidx_mbuf_th_s {
343		u64 reserved_18_63 : 46;
344		u64 bp_enb : 1;
345		u64 page_cnt : 17;
346	} s;
347	struct cvmx_ipd_bpidx_mbuf_th_s cn68xx;
348	struct cvmx_ipd_bpidx_mbuf_th_s cn68xxp1;
349};
350
351typedef union cvmx_ipd_bpidx_mbuf_th cvmx_ipd_bpidx_mbuf_th_t;
352
353/**
354 * cvmx_ipd_bpid_bp_counter#
355 *
356 * RESERVE SPACE UPTO 0x2FFF
357 *
358 * 0x3000 0x3ffff
359 *
360 * IPD_BPID_BP_COUNTERX = MBUF BPID Counters used to generate Back Pressure Per BPID.
361 */
362union cvmx_ipd_bpid_bp_counterx {
363	u64 u64;
364	struct cvmx_ipd_bpid_bp_counterx_s {
365		u64 reserved_25_63 : 39;
366		u64 cnt_val : 25;
367	} s;
368	struct cvmx_ipd_bpid_bp_counterx_s cn68xx;
369	struct cvmx_ipd_bpid_bp_counterx_s cn68xxp1;
370};
371
372typedef union cvmx_ipd_bpid_bp_counterx cvmx_ipd_bpid_bp_counterx_t;
373
374/**
375 * cvmx_ipd_clk_count
376 *
377 * Counts the number of core clocks periods since the de-asserition of reset.
378 *
379 */
380union cvmx_ipd_clk_count {
381	u64 u64;
382	struct cvmx_ipd_clk_count_s {
383		u64 clk_cnt : 64;
384	} s;
385	struct cvmx_ipd_clk_count_s cn30xx;
386	struct cvmx_ipd_clk_count_s cn31xx;
387	struct cvmx_ipd_clk_count_s cn38xx;
388	struct cvmx_ipd_clk_count_s cn38xxp2;
389	struct cvmx_ipd_clk_count_s cn50xx;
390	struct cvmx_ipd_clk_count_s cn52xx;
391	struct cvmx_ipd_clk_count_s cn52xxp1;
392	struct cvmx_ipd_clk_count_s cn56xx;
393	struct cvmx_ipd_clk_count_s cn56xxp1;
394	struct cvmx_ipd_clk_count_s cn58xx;
395	struct cvmx_ipd_clk_count_s cn58xxp1;
396	struct cvmx_ipd_clk_count_s cn61xx;
397	struct cvmx_ipd_clk_count_s cn63xx;
398	struct cvmx_ipd_clk_count_s cn63xxp1;
399	struct cvmx_ipd_clk_count_s cn66xx;
400	struct cvmx_ipd_clk_count_s cn68xx;
401	struct cvmx_ipd_clk_count_s cn68xxp1;
402	struct cvmx_ipd_clk_count_s cn70xx;
403	struct cvmx_ipd_clk_count_s cn70xxp1;
404	struct cvmx_ipd_clk_count_s cnf71xx;
405};
406
407typedef union cvmx_ipd_clk_count cvmx_ipd_clk_count_t;
408
409/**
410 * cvmx_ipd_credits
411 *
412 * IPD_CREDITS = IPD Credits
413 *
414 * The credits allowed for IPD.
415 */
416union cvmx_ipd_credits {
417	u64 u64;
418	struct cvmx_ipd_credits_s {
419		u64 reserved_16_63 : 48;
420		u64 iob_wrc : 8;
421		u64 iob_wr : 8;
422	} s;
423	struct cvmx_ipd_credits_s cn68xx;
424	struct cvmx_ipd_credits_s cn68xxp1;
425};
426
427typedef union cvmx_ipd_credits cvmx_ipd_credits_t;
428
429/**
430 * cvmx_ipd_ctl_status
431 *
432 * The number of words in a MBUFF used for packet data store.
433 *
434 */
435union cvmx_ipd_ctl_status {
436	u64 u64;
437	struct cvmx_ipd_ctl_status_s {
438		u64 reserved_18_63 : 46;
439		u64 use_sop : 1;
440		u64 rst_done : 1;
441		u64 clken : 1;
442		u64 no_wptr : 1;
443		u64 pq_apkt : 1;
444		u64 pq_nabuf : 1;
445		u64 ipd_full : 1;
446		u64 pkt_off : 1;
447		u64 len_m8 : 1;
448		u64 reset : 1;
449		u64 addpkt : 1;
450		u64 naddbuf : 1;
451		u64 pkt_lend : 1;
452		u64 wqe_lend : 1;
453		u64 pbp_en : 1;
454		cvmx_ipd_mode_t opc_mode : 2;
455		u64 ipd_en : 1;
456	} s;
457	struct cvmx_ipd_ctl_status_cn30xx {
458		u64 reserved_10_63 : 54;
459		u64 len_m8 : 1;
460		u64 reset : 1;
461		u64 addpkt : 1;
462		u64 naddbuf : 1;
463		u64 pkt_lend : 1;
464		u64 wqe_lend : 1;
465		u64 pbp_en : 1;
466		cvmx_ipd_mode_t opc_mode : 2;
467		u64 ipd_en : 1;
468	} cn30xx;
469	struct cvmx_ipd_ctl_status_cn30xx cn31xx;
470	struct cvmx_ipd_ctl_status_cn30xx cn38xx;
471	struct cvmx_ipd_ctl_status_cn38xxp2 {
472		u64 reserved_9_63 : 55;
473		u64 reset : 1;
474		u64 addpkt : 1;
475		u64 naddbuf : 1;
476		u64 pkt_lend : 1;
477		u64 wqe_lend : 1;
478		u64 pbp_en : 1;
479		cvmx_ipd_mode_t opc_mode : 2;
480		u64 ipd_en : 1;
481	} cn38xxp2;
482	struct cvmx_ipd_ctl_status_cn50xx {
483		u64 reserved_15_63 : 49;
484		u64 no_wptr : 1;
485		u64 pq_apkt : 1;
486		u64 pq_nabuf : 1;
487		u64 ipd_full : 1;
488		u64 pkt_off : 1;
489		u64 len_m8 : 1;
490		u64 reset : 1;
491		u64 addpkt : 1;
492		u64 naddbuf : 1;
493		u64 pkt_lend : 1;
494		u64 wqe_lend : 1;
495		u64 pbp_en : 1;
496		cvmx_ipd_mode_t opc_mode : 2;
497		u64 ipd_en : 1;
498	} cn50xx;
499	struct cvmx_ipd_ctl_status_cn50xx cn52xx;
500	struct cvmx_ipd_ctl_status_cn50xx cn52xxp1;
501	struct cvmx_ipd_ctl_status_cn50xx cn56xx;
502	struct cvmx_ipd_ctl_status_cn50xx cn56xxp1;
503	struct cvmx_ipd_ctl_status_cn58xx {
504		u64 reserved_12_63 : 52;
505		u64 ipd_full : 1;
506		u64 pkt_off : 1;
507		u64 len_m8 : 1;
508		u64 reset : 1;
509		u64 addpkt : 1;
510		u64 naddbuf : 1;
511		u64 pkt_lend : 1;
512		u64 wqe_lend : 1;
513		u64 pbp_en : 1;
514		cvmx_ipd_mode_t opc_mode : 2;
515		u64 ipd_en : 1;
516	} cn58xx;
517	struct cvmx_ipd_ctl_status_cn58xx cn58xxp1;
518	struct cvmx_ipd_ctl_status_s cn61xx;
519	struct cvmx_ipd_ctl_status_s cn63xx;
520	struct cvmx_ipd_ctl_status_cn63xxp1 {
521		u64 reserved_16_63 : 48;
522		u64 clken : 1;
523		u64 no_wptr : 1;
524		u64 pq_apkt : 1;
525		u64 pq_nabuf : 1;
526		u64 ipd_full : 1;
527		u64 pkt_off : 1;
528		u64 len_m8 : 1;
529		u64 reset : 1;
530		u64 addpkt : 1;
531		u64 naddbuf : 1;
532		u64 pkt_lend : 1;
533		u64 wqe_lend : 1;
534		u64 pbp_en : 1;
535		cvmx_ipd_mode_t opc_mode : 2;
536		u64 ipd_en : 1;
537	} cn63xxp1;
538	struct cvmx_ipd_ctl_status_s cn66xx;
539	struct cvmx_ipd_ctl_status_s cn68xx;
540	struct cvmx_ipd_ctl_status_s cn68xxp1;
541	struct cvmx_ipd_ctl_status_s cn70xx;
542	struct cvmx_ipd_ctl_status_s cn70xxp1;
543	struct cvmx_ipd_ctl_status_s cnf71xx;
544};
545
546typedef union cvmx_ipd_ctl_status cvmx_ipd_ctl_status_t;
547
548/**
549 * cvmx_ipd_ecc_ctl
550 *
551 * IPD_ECC_CTL = IPD ECC Control
552 *
553 * Allows inserting ECC errors for testing.
554 */
555union cvmx_ipd_ecc_ctl {
556	u64 u64;
557	struct cvmx_ipd_ecc_ctl_s {
558		u64 reserved_8_63 : 56;
559		u64 pm3_syn : 2;
560		u64 pm2_syn : 2;
561		u64 pm1_syn : 2;
562		u64 pm0_syn : 2;
563	} s;
564	struct cvmx_ipd_ecc_ctl_s cn68xx;
565	struct cvmx_ipd_ecc_ctl_s cn68xxp1;
566};
567
568typedef union cvmx_ipd_ecc_ctl cvmx_ipd_ecc_ctl_t;
569
570/**
571 * cvmx_ipd_free_ptr_fifo_ctl
572 *
573 * IPD_FREE_PTR_FIFO_CTL = IPD's FREE Pointer FIFO Control
574 *
575 * Allows reading of the Page-Pointers stored in the IPD's FREE Fifo.
576 * See also the IPD_FREE_PTR_VALUE
577 */
578union cvmx_ipd_free_ptr_fifo_ctl {
579	u64 u64;
580	struct cvmx_ipd_free_ptr_fifo_ctl_s {
581		u64 reserved_32_63 : 32;
582		u64 max_cnts : 7;
583		u64 wraddr : 8;
584		u64 praddr : 8;
585		u64 cena : 1;
586		u64 raddr : 8;
587	} s;
588	struct cvmx_ipd_free_ptr_fifo_ctl_s cn68xx;
589	struct cvmx_ipd_free_ptr_fifo_ctl_s cn68xxp1;
590};
591
592typedef union cvmx_ipd_free_ptr_fifo_ctl cvmx_ipd_free_ptr_fifo_ctl_t;
593
594/**
595 * cvmx_ipd_free_ptr_value
596 *
597 * IPD_FREE_PTR_VALUE = IPD's FREE Pointer Value
598 *
599 * The value of the pointer selected through the IPD_FREE_PTR_FIFO_CTL
600 */
601union cvmx_ipd_free_ptr_value {
602	u64 u64;
603	struct cvmx_ipd_free_ptr_value_s {
604		u64 reserved_33_63 : 31;
605		u64 ptr : 33;
606	} s;
607	struct cvmx_ipd_free_ptr_value_s cn68xx;
608	struct cvmx_ipd_free_ptr_value_s cn68xxp1;
609};
610
611typedef union cvmx_ipd_free_ptr_value cvmx_ipd_free_ptr_value_t;
612
613/**
614 * cvmx_ipd_hold_ptr_fifo_ctl
615 *
616 * IPD_HOLD_PTR_FIFO_CTL = IPD's Holding Pointer FIFO Control
617 *
618 * Allows reading of the Page-Pointers stored in the IPD's Holding Fifo.
619 */
620union cvmx_ipd_hold_ptr_fifo_ctl {
621	u64 u64;
622	struct cvmx_ipd_hold_ptr_fifo_ctl_s {
623		u64 reserved_43_63 : 21;
624		u64 ptr : 33;
625		u64 max_pkt : 3;
626		u64 praddr : 3;
627		u64 cena : 1;
628		u64 raddr : 3;
629	} s;
630	struct cvmx_ipd_hold_ptr_fifo_ctl_s cn68xx;
631	struct cvmx_ipd_hold_ptr_fifo_ctl_s cn68xxp1;
632};
633
634typedef union cvmx_ipd_hold_ptr_fifo_ctl cvmx_ipd_hold_ptr_fifo_ctl_t;
635
636/**
637 * cvmx_ipd_int_enb
638 *
639 * IPD_INTERRUPT_ENB = IPD Interrupt Enable Register
640 * Used to enable the various interrupting conditions of IPD
641 */
642union cvmx_ipd_int_enb {
643	u64 u64;
644	struct cvmx_ipd_int_enb_s {
645		u64 reserved_23_63 : 41;
646		u64 pw3_dbe : 1;
647		u64 pw3_sbe : 1;
648		u64 pw2_dbe : 1;
649		u64 pw2_sbe : 1;
650		u64 pw1_dbe : 1;
651		u64 pw1_sbe : 1;
652		u64 pw0_dbe : 1;
653		u64 pw0_sbe : 1;
654		u64 dat : 1;
655		u64 eop : 1;
656		u64 sop : 1;
657		u64 pq_sub : 1;
658		u64 pq_add : 1;
659		u64 bc_ovr : 1;
660		u64 d_coll : 1;
661		u64 c_coll : 1;
662		u64 cc_ovr : 1;
663		u64 dc_ovr : 1;
664		u64 bp_sub : 1;
665		u64 prc_par3 : 1;
666		u64 prc_par2 : 1;
667		u64 prc_par1 : 1;
668		u64 prc_par0 : 1;
669	} s;
670	struct cvmx_ipd_int_enb_cn30xx {
671		u64 reserved_5_63 : 59;
672		u64 bp_sub : 1;
673		u64 prc_par3 : 1;
674		u64 prc_par2 : 1;
675		u64 prc_par1 : 1;
676		u64 prc_par0 : 1;
677	} cn30xx;
678	struct cvmx_ipd_int_enb_cn30xx cn31xx;
679	struct cvmx_ipd_int_enb_cn38xx {
680		u64 reserved_10_63 : 54;
681		u64 bc_ovr : 1;
682		u64 d_coll : 1;
683		u64 c_coll : 1;
684		u64 cc_ovr : 1;
685		u64 dc_ovr : 1;
686		u64 bp_sub : 1;
687		u64 prc_par3 : 1;
688		u64 prc_par2 : 1;
689		u64 prc_par1 : 1;
690		u64 prc_par0 : 1;
691	} cn38xx;
692	struct cvmx_ipd_int_enb_cn30xx cn38xxp2;
693	struct cvmx_ipd_int_enb_cn38xx cn50xx;
694	struct cvmx_ipd_int_enb_cn52xx {
695		u64 reserved_12_63 : 52;
696		u64 pq_sub : 1;
697		u64 pq_add : 1;
698		u64 bc_ovr : 1;
699		u64 d_coll : 1;
700		u64 c_coll : 1;
701		u64 cc_ovr : 1;
702		u64 dc_ovr : 1;
703		u64 bp_sub : 1;
704		u64 prc_par3 : 1;
705		u64 prc_par2 : 1;
706		u64 prc_par1 : 1;
707		u64 prc_par0 : 1;
708	} cn52xx;
709	struct cvmx_ipd_int_enb_cn52xx cn52xxp1;
710	struct cvmx_ipd_int_enb_cn52xx cn56xx;
711	struct cvmx_ipd_int_enb_cn52xx cn56xxp1;
712	struct cvmx_ipd_int_enb_cn38xx cn58xx;
713	struct cvmx_ipd_int_enb_cn38xx cn58xxp1;
714	struct cvmx_ipd_int_enb_cn52xx cn61xx;
715	struct cvmx_ipd_int_enb_cn52xx cn63xx;
716	struct cvmx_ipd_int_enb_cn52xx cn63xxp1;
717	struct cvmx_ipd_int_enb_cn52xx cn66xx;
718	struct cvmx_ipd_int_enb_s cn68xx;
719	struct cvmx_ipd_int_enb_s cn68xxp1;
720	struct cvmx_ipd_int_enb_cn52xx cn70xx;
721	struct cvmx_ipd_int_enb_cn52xx cn70xxp1;
722	struct cvmx_ipd_int_enb_cn52xx cnf71xx;
723};
724
725typedef union cvmx_ipd_int_enb cvmx_ipd_int_enb_t;
726
727/**
728 * cvmx_ipd_int_sum
729 *
730 * IPD_INTERRUPT_SUM = IPD Interrupt Summary Register
731 * Set when an interrupt condition occurs, write '1' to clear.
732 */
733union cvmx_ipd_int_sum {
734	u64 u64;
735	struct cvmx_ipd_int_sum_s {
736		u64 reserved_23_63 : 41;
737		u64 pw3_dbe : 1;
738		u64 pw3_sbe : 1;
739		u64 pw2_dbe : 1;
740		u64 pw2_sbe : 1;
741		u64 pw1_dbe : 1;
742		u64 pw1_sbe : 1;
743		u64 pw0_dbe : 1;
744		u64 pw0_sbe : 1;
745		u64 dat : 1;
746		u64 eop : 1;
747		u64 sop : 1;
748		u64 pq_sub : 1;
749		u64 pq_add : 1;
750		u64 bc_ovr : 1;
751		u64 d_coll : 1;
752		u64 c_coll : 1;
753		u64 cc_ovr : 1;
754		u64 dc_ovr : 1;
755		u64 bp_sub : 1;
756		u64 prc_par3 : 1;
757		u64 prc_par2 : 1;
758		u64 prc_par1 : 1;
759		u64 prc_par0 : 1;
760	} s;
761	struct cvmx_ipd_int_sum_cn30xx {
762		u64 reserved_5_63 : 59;
763		u64 bp_sub : 1;
764		u64 prc_par3 : 1;
765		u64 prc_par2 : 1;
766		u64 prc_par1 : 1;
767		u64 prc_par0 : 1;
768	} cn30xx;
769	struct cvmx_ipd_int_sum_cn30xx cn31xx;
770	struct cvmx_ipd_int_sum_cn38xx {
771		u64 reserved_10_63 : 54;
772		u64 bc_ovr : 1;
773		u64 d_coll : 1;
774		u64 c_coll : 1;
775		u64 cc_ovr : 1;
776		u64 dc_ovr : 1;
777		u64 bp_sub : 1;
778		u64 prc_par3 : 1;
779		u64 prc_par2 : 1;
780		u64 prc_par1 : 1;
781		u64 prc_par0 : 1;
782	} cn38xx;
783	struct cvmx_ipd_int_sum_cn30xx cn38xxp2;
784	struct cvmx_ipd_int_sum_cn38xx cn50xx;
785	struct cvmx_ipd_int_sum_cn52xx {
786		u64 reserved_12_63 : 52;
787		u64 pq_sub : 1;
788		u64 pq_add : 1;
789		u64 bc_ovr : 1;
790		u64 d_coll : 1;
791		u64 c_coll : 1;
792		u64 cc_ovr : 1;
793		u64 dc_ovr : 1;
794		u64 bp_sub : 1;
795		u64 prc_par3 : 1;
796		u64 prc_par2 : 1;
797		u64 prc_par1 : 1;
798		u64 prc_par0 : 1;
799	} cn52xx;
800	struct cvmx_ipd_int_sum_cn52xx cn52xxp1;
801	struct cvmx_ipd_int_sum_cn52xx cn56xx;
802	struct cvmx_ipd_int_sum_cn52xx cn56xxp1;
803	struct cvmx_ipd_int_sum_cn38xx cn58xx;
804	struct cvmx_ipd_int_sum_cn38xx cn58xxp1;
805	struct cvmx_ipd_int_sum_cn52xx cn61xx;
806	struct cvmx_ipd_int_sum_cn52xx cn63xx;
807	struct cvmx_ipd_int_sum_cn52xx cn63xxp1;
808	struct cvmx_ipd_int_sum_cn52xx cn66xx;
809	struct cvmx_ipd_int_sum_s cn68xx;
810	struct cvmx_ipd_int_sum_s cn68xxp1;
811	struct cvmx_ipd_int_sum_cn52xx cn70xx;
812	struct cvmx_ipd_int_sum_cn52xx cn70xxp1;
813	struct cvmx_ipd_int_sum_cn52xx cnf71xx;
814};
815
816typedef union cvmx_ipd_int_sum cvmx_ipd_int_sum_t;
817
818/**
819 * cvmx_ipd_next_pkt_ptr
820 *
821 * IPD_NEXT_PKT_PTR = IPD's Next Packet Pointer
822 *
823 * The value of the packet-pointer fetched and in the valid register.
824 */
825union cvmx_ipd_next_pkt_ptr {
826	u64 u64;
827	struct cvmx_ipd_next_pkt_ptr_s {
828		u64 reserved_33_63 : 31;
829		u64 ptr : 33;
830	} s;
831	struct cvmx_ipd_next_pkt_ptr_s cn68xx;
832	struct cvmx_ipd_next_pkt_ptr_s cn68xxp1;
833};
834
835typedef union cvmx_ipd_next_pkt_ptr cvmx_ipd_next_pkt_ptr_t;
836
837/**
838 * cvmx_ipd_next_wqe_ptr
839 *
840 * IPD_NEXT_WQE_PTR = IPD's NEXT_WQE Pointer
841 *
842 * The value of the WQE-pointer fetched and in the valid register.
843 */
844union cvmx_ipd_next_wqe_ptr {
845	u64 u64;
846	struct cvmx_ipd_next_wqe_ptr_s {
847		u64 reserved_33_63 : 31;
848		u64 ptr : 33;
849	} s;
850	struct cvmx_ipd_next_wqe_ptr_s cn68xx;
851	struct cvmx_ipd_next_wqe_ptr_s cn68xxp1;
852};
853
854typedef union cvmx_ipd_next_wqe_ptr cvmx_ipd_next_wqe_ptr_t;
855
856/**
857 * cvmx_ipd_not_1st_mbuff_skip
858 *
859 * The number of words that the IPD will skip when writing any MBUFF that is not the first.
860 *
861 */
862union cvmx_ipd_not_1st_mbuff_skip {
863	u64 u64;
864	struct cvmx_ipd_not_1st_mbuff_skip_s {
865		u64 reserved_6_63 : 58;
866		u64 skip_sz : 6;
867	} s;
868	struct cvmx_ipd_not_1st_mbuff_skip_s cn30xx;
869	struct cvmx_ipd_not_1st_mbuff_skip_s cn31xx;
870	struct cvmx_ipd_not_1st_mbuff_skip_s cn38xx;
871	struct cvmx_ipd_not_1st_mbuff_skip_s cn38xxp2;
872	struct cvmx_ipd_not_1st_mbuff_skip_s cn50xx;
873	struct cvmx_ipd_not_1st_mbuff_skip_s cn52xx;
874	struct cvmx_ipd_not_1st_mbuff_skip_s cn52xxp1;
875	struct cvmx_ipd_not_1st_mbuff_skip_s cn56xx;
876	struct cvmx_ipd_not_1st_mbuff_skip_s cn56xxp1;
877	struct cvmx_ipd_not_1st_mbuff_skip_s cn58xx;
878	struct cvmx_ipd_not_1st_mbuff_skip_s cn58xxp1;
879	struct cvmx_ipd_not_1st_mbuff_skip_s cn61xx;
880	struct cvmx_ipd_not_1st_mbuff_skip_s cn63xx;
881	struct cvmx_ipd_not_1st_mbuff_skip_s cn63xxp1;
882	struct cvmx_ipd_not_1st_mbuff_skip_s cn66xx;
883	struct cvmx_ipd_not_1st_mbuff_skip_s cn68xx;
884	struct cvmx_ipd_not_1st_mbuff_skip_s cn68xxp1;
885	struct cvmx_ipd_not_1st_mbuff_skip_s cn70xx;
886	struct cvmx_ipd_not_1st_mbuff_skip_s cn70xxp1;
887	struct cvmx_ipd_not_1st_mbuff_skip_s cnf71xx;
888};
889
890typedef union cvmx_ipd_not_1st_mbuff_skip cvmx_ipd_not_1st_mbuff_skip_t;
891
892/**
893 * cvmx_ipd_on_bp_drop_pkt#
894 *
895 * RESERVE SPACE UPTO 0x3FFF
896 *
897 *
898 * RESERVED FOR FORMER IPD_SUB_PKIND_FCS - MOVED TO PIP
899 *
900 * RESERVE 4008 - 40FF
901 *
902 *
903 *                  IPD_ON_BP_DROP_PKT = IPD On Backpressure Drop Packet
904 *
905 * When IPD applies backpressure to a BPID and the corresponding bit in this register is set,
906 * then previously received packets will be dropped when processed.
907 */
908union cvmx_ipd_on_bp_drop_pktx {
909	u64 u64;
910	struct cvmx_ipd_on_bp_drop_pktx_s {
911		u64 prt_enb : 64;
912	} s;
913	struct cvmx_ipd_on_bp_drop_pktx_s cn68xx;
914	struct cvmx_ipd_on_bp_drop_pktx_s cn68xxp1;
915};
916
917typedef union cvmx_ipd_on_bp_drop_pktx cvmx_ipd_on_bp_drop_pktx_t;
918
919/**
920 * cvmx_ipd_packet_mbuff_size
921 *
922 * The number of words in a MBUFF used for packet data store.
923 *
924 */
925union cvmx_ipd_packet_mbuff_size {
926	u64 u64;
927	struct cvmx_ipd_packet_mbuff_size_s {
928		u64 reserved_12_63 : 52;
929		u64 mb_size : 12;
930	} s;
931	struct cvmx_ipd_packet_mbuff_size_s cn30xx;
932	struct cvmx_ipd_packet_mbuff_size_s cn31xx;
933	struct cvmx_ipd_packet_mbuff_size_s cn38xx;
934	struct cvmx_ipd_packet_mbuff_size_s cn38xxp2;
935	struct cvmx_ipd_packet_mbuff_size_s cn50xx;
936	struct cvmx_ipd_packet_mbuff_size_s cn52xx;
937	struct cvmx_ipd_packet_mbuff_size_s cn52xxp1;
938	struct cvmx_ipd_packet_mbuff_size_s cn56xx;
939	struct cvmx_ipd_packet_mbuff_size_s cn56xxp1;
940	struct cvmx_ipd_packet_mbuff_size_s cn58xx;
941	struct cvmx_ipd_packet_mbuff_size_s cn58xxp1;
942	struct cvmx_ipd_packet_mbuff_size_s cn61xx;
943	struct cvmx_ipd_packet_mbuff_size_s cn63xx;
944	struct cvmx_ipd_packet_mbuff_size_s cn63xxp1;
945	struct cvmx_ipd_packet_mbuff_size_s cn66xx;
946	struct cvmx_ipd_packet_mbuff_size_s cn68xx;
947	struct cvmx_ipd_packet_mbuff_size_s cn68xxp1;
948	struct cvmx_ipd_packet_mbuff_size_s cn70xx;
949	struct cvmx_ipd_packet_mbuff_size_s cn70xxp1;
950	struct cvmx_ipd_packet_mbuff_size_s cnf71xx;
951};
952
953typedef union cvmx_ipd_packet_mbuff_size cvmx_ipd_packet_mbuff_size_t;
954
955/**
956 * cvmx_ipd_pkt_err
957 *
958 * IPD_PKT_ERR = IPD Packet Error Register
959 *
960 * Provides status about the failing packet recevie error.
961 */
962union cvmx_ipd_pkt_err {
963	u64 u64;
964	struct cvmx_ipd_pkt_err_s {
965		u64 reserved_6_63 : 58;
966		u64 reasm : 6;
967	} s;
968	struct cvmx_ipd_pkt_err_s cn68xx;
969	struct cvmx_ipd_pkt_err_s cn68xxp1;
970};
971
972typedef union cvmx_ipd_pkt_err cvmx_ipd_pkt_err_t;
973
974/**
975 * cvmx_ipd_pkt_ptr_valid
976 *
977 * The value of the packet-pointer fetched and in the valid register.
978 *
979 */
980union cvmx_ipd_pkt_ptr_valid {
981	u64 u64;
982	struct cvmx_ipd_pkt_ptr_valid_s {
983		u64 reserved_29_63 : 35;
984		u64 ptr : 29;
985	} s;
986	struct cvmx_ipd_pkt_ptr_valid_s cn30xx;
987	struct cvmx_ipd_pkt_ptr_valid_s cn31xx;
988	struct cvmx_ipd_pkt_ptr_valid_s cn38xx;
989	struct cvmx_ipd_pkt_ptr_valid_s cn50xx;
990	struct cvmx_ipd_pkt_ptr_valid_s cn52xx;
991	struct cvmx_ipd_pkt_ptr_valid_s cn52xxp1;
992	struct cvmx_ipd_pkt_ptr_valid_s cn56xx;
993	struct cvmx_ipd_pkt_ptr_valid_s cn56xxp1;
994	struct cvmx_ipd_pkt_ptr_valid_s cn58xx;
995	struct cvmx_ipd_pkt_ptr_valid_s cn58xxp1;
996	struct cvmx_ipd_pkt_ptr_valid_s cn61xx;
997	struct cvmx_ipd_pkt_ptr_valid_s cn63xx;
998	struct cvmx_ipd_pkt_ptr_valid_s cn63xxp1;
999	struct cvmx_ipd_pkt_ptr_valid_s cn66xx;
1000	struct cvmx_ipd_pkt_ptr_valid_s cn70xx;
1001	struct cvmx_ipd_pkt_ptr_valid_s cn70xxp1;
1002	struct cvmx_ipd_pkt_ptr_valid_s cnf71xx;
1003};
1004
1005typedef union cvmx_ipd_pkt_ptr_valid cvmx_ipd_pkt_ptr_valid_t;
1006
1007/**
1008 * cvmx_ipd_port#_bp_page_cnt
1009 *
1010 * IPD_PORTX_BP_PAGE_CNT = IPD Port Backpressure Page Count
1011 * The number of pages in use by the port that when exceeded, backpressure will be applied to the
1012 * port.
1013 * See also IPD_PORTX_BP_PAGE_CNT2
1014 * See also IPD_PORTX_BP_PAGE_CNT3
1015 */
1016union cvmx_ipd_portx_bp_page_cnt {
1017	u64 u64;
1018	struct cvmx_ipd_portx_bp_page_cnt_s {
1019		u64 reserved_18_63 : 46;
1020		u64 bp_enb : 1;
1021		u64 page_cnt : 17;
1022	} s;
1023	struct cvmx_ipd_portx_bp_page_cnt_s cn30xx;
1024	struct cvmx_ipd_portx_bp_page_cnt_s cn31xx;
1025	struct cvmx_ipd_portx_bp_page_cnt_s cn38xx;
1026	struct cvmx_ipd_portx_bp_page_cnt_s cn38xxp2;
1027	struct cvmx_ipd_portx_bp_page_cnt_s cn50xx;
1028	struct cvmx_ipd_portx_bp_page_cnt_s cn52xx;
1029	struct cvmx_ipd_portx_bp_page_cnt_s cn52xxp1;
1030	struct cvmx_ipd_portx_bp_page_cnt_s cn56xx;
1031	struct cvmx_ipd_portx_bp_page_cnt_s cn56xxp1;
1032	struct cvmx_ipd_portx_bp_page_cnt_s cn58xx;
1033	struct cvmx_ipd_portx_bp_page_cnt_s cn58xxp1;
1034	struct cvmx_ipd_portx_bp_page_cnt_s cn61xx;
1035	struct cvmx_ipd_portx_bp_page_cnt_s cn63xx;
1036	struct cvmx_ipd_portx_bp_page_cnt_s cn63xxp1;
1037	struct cvmx_ipd_portx_bp_page_cnt_s cn66xx;
1038	struct cvmx_ipd_portx_bp_page_cnt_s cn70xx;
1039	struct cvmx_ipd_portx_bp_page_cnt_s cn70xxp1;
1040	struct cvmx_ipd_portx_bp_page_cnt_s cnf71xx;
1041};
1042
1043typedef union cvmx_ipd_portx_bp_page_cnt cvmx_ipd_portx_bp_page_cnt_t;
1044
1045/**
1046 * cvmx_ipd_port#_bp_page_cnt2
1047 *
1048 * IPD_PORTX_BP_PAGE_CNT2 = IPD Port Backpressure Page Count
1049 * The number of pages in use by the port that when exceeded, backpressure will be applied to the
1050 * port.
1051 * See also IPD_PORTX_BP_PAGE_CNT
1052 * See also IPD_PORTX_BP_PAGE_CNT3
1053 * 0x368-0x380
1054 */
1055union cvmx_ipd_portx_bp_page_cnt2 {
1056	u64 u64;
1057	struct cvmx_ipd_portx_bp_page_cnt2_s {
1058		u64 reserved_18_63 : 46;
1059		u64 bp_enb : 1;
1060		u64 page_cnt : 17;
1061	} s;
1062	struct cvmx_ipd_portx_bp_page_cnt2_s cn52xx;
1063	struct cvmx_ipd_portx_bp_page_cnt2_s cn52xxp1;
1064	struct cvmx_ipd_portx_bp_page_cnt2_s cn56xx;
1065	struct cvmx_ipd_portx_bp_page_cnt2_s cn56xxp1;
1066	struct cvmx_ipd_portx_bp_page_cnt2_s cn61xx;
1067	struct cvmx_ipd_portx_bp_page_cnt2_s cn63xx;
1068	struct cvmx_ipd_portx_bp_page_cnt2_s cn63xxp1;
1069	struct cvmx_ipd_portx_bp_page_cnt2_s cn66xx;
1070	struct cvmx_ipd_portx_bp_page_cnt2_s cn70xx;
1071	struct cvmx_ipd_portx_bp_page_cnt2_s cn70xxp1;
1072	struct cvmx_ipd_portx_bp_page_cnt2_s cnf71xx;
1073};
1074
1075typedef union cvmx_ipd_portx_bp_page_cnt2 cvmx_ipd_portx_bp_page_cnt2_t;
1076
1077/**
1078 * cvmx_ipd_port#_bp_page_cnt3
1079 *
1080 * IPD_PORTX_BP_PAGE_CNT3 = IPD Port Backpressure Page Count
1081 * The number of pages in use by the port that when exceeded, backpressure will be applied to the
1082 * port.
1083 * See also IPD_PORTX_BP_PAGE_CNT
1084 * See also IPD_PORTX_BP_PAGE_CNT2
1085 * 0x3d0-408
1086 */
1087union cvmx_ipd_portx_bp_page_cnt3 {
1088	u64 u64;
1089	struct cvmx_ipd_portx_bp_page_cnt3_s {
1090		u64 reserved_18_63 : 46;
1091		u64 bp_enb : 1;
1092		u64 page_cnt : 17;
1093	} s;
1094	struct cvmx_ipd_portx_bp_page_cnt3_s cn61xx;
1095	struct cvmx_ipd_portx_bp_page_cnt3_s cn63xx;
1096	struct cvmx_ipd_portx_bp_page_cnt3_s cn63xxp1;
1097	struct cvmx_ipd_portx_bp_page_cnt3_s cn66xx;
1098	struct cvmx_ipd_portx_bp_page_cnt3_s cn70xx;
1099	struct cvmx_ipd_portx_bp_page_cnt3_s cn70xxp1;
1100	struct cvmx_ipd_portx_bp_page_cnt3_s cnf71xx;
1101};
1102
1103typedef union cvmx_ipd_portx_bp_page_cnt3 cvmx_ipd_portx_bp_page_cnt3_t;
1104
1105/**
1106 * cvmx_ipd_port_bp_counters2_pair#
1107 *
1108 * See also IPD_PORT_BP_COUNTERS_PAIRX
1109 * See also IPD_PORT_BP_COUNTERS3_PAIRX
1110 * 0x388-0x3a0
1111 */
1112union cvmx_ipd_port_bp_counters2_pairx {
1113	u64 u64;
1114	struct cvmx_ipd_port_bp_counters2_pairx_s {
1115		u64 reserved_25_63 : 39;
1116		u64 cnt_val : 25;
1117	} s;
1118	struct cvmx_ipd_port_bp_counters2_pairx_s cn52xx;
1119	struct cvmx_ipd_port_bp_counters2_pairx_s cn52xxp1;
1120	struct cvmx_ipd_port_bp_counters2_pairx_s cn56xx;
1121	struct cvmx_ipd_port_bp_counters2_pairx_s cn56xxp1;
1122	struct cvmx_ipd_port_bp_counters2_pairx_s cn61xx;
1123	struct cvmx_ipd_port_bp_counters2_pairx_s cn63xx;
1124	struct cvmx_ipd_port_bp_counters2_pairx_s cn63xxp1;
1125	struct cvmx_ipd_port_bp_counters2_pairx_s cn66xx;
1126	struct cvmx_ipd_port_bp_counters2_pairx_s cn70xx;
1127	struct cvmx_ipd_port_bp_counters2_pairx_s cn70xxp1;
1128	struct cvmx_ipd_port_bp_counters2_pairx_s cnf71xx;
1129};
1130
1131typedef union cvmx_ipd_port_bp_counters2_pairx cvmx_ipd_port_bp_counters2_pairx_t;
1132
1133/**
1134 * cvmx_ipd_port_bp_counters3_pair#
1135 *
1136 * See also IPD_PORT_BP_COUNTERS_PAIRX
1137 * See also IPD_PORT_BP_COUNTERS2_PAIRX
1138 * 0x3b0-0x3c8
1139 */
1140union cvmx_ipd_port_bp_counters3_pairx {
1141	u64 u64;
1142	struct cvmx_ipd_port_bp_counters3_pairx_s {
1143		u64 reserved_25_63 : 39;
1144		u64 cnt_val : 25;
1145	} s;
1146	struct cvmx_ipd_port_bp_counters3_pairx_s cn61xx;
1147	struct cvmx_ipd_port_bp_counters3_pairx_s cn63xx;
1148	struct cvmx_ipd_port_bp_counters3_pairx_s cn63xxp1;
1149	struct cvmx_ipd_port_bp_counters3_pairx_s cn66xx;
1150	struct cvmx_ipd_port_bp_counters3_pairx_s cn70xx;
1151	struct cvmx_ipd_port_bp_counters3_pairx_s cn70xxp1;
1152	struct cvmx_ipd_port_bp_counters3_pairx_s cnf71xx;
1153};
1154
1155typedef union cvmx_ipd_port_bp_counters3_pairx cvmx_ipd_port_bp_counters3_pairx_t;
1156
1157/**
1158 * cvmx_ipd_port_bp_counters4_pair#
1159 *
1160 * See also IPD_PORT_BP_COUNTERS_PAIRX
1161 * See also IPD_PORT_BP_COUNTERS2_PAIRX
1162 * 0x410-0x3c8
1163 */
1164union cvmx_ipd_port_bp_counters4_pairx {
1165	u64 u64;
1166	struct cvmx_ipd_port_bp_counters4_pairx_s {
1167		u64 reserved_25_63 : 39;
1168		u64 cnt_val : 25;
1169	} s;
1170	struct cvmx_ipd_port_bp_counters4_pairx_s cn61xx;
1171	struct cvmx_ipd_port_bp_counters4_pairx_s cn66xx;
1172	struct cvmx_ipd_port_bp_counters4_pairx_s cn70xx;
1173	struct cvmx_ipd_port_bp_counters4_pairx_s cn70xxp1;
1174	struct cvmx_ipd_port_bp_counters4_pairx_s cnf71xx;
1175};
1176
1177typedef union cvmx_ipd_port_bp_counters4_pairx cvmx_ipd_port_bp_counters4_pairx_t;
1178
1179/**
1180 * cvmx_ipd_port_bp_counters_pair#
1181 *
1182 * See also IPD_PORT_BP_COUNTERS2_PAIRX
1183 * See also IPD_PORT_BP_COUNTERS3_PAIRX
1184 * 0x1b8-0x2d0
1185 */
1186union cvmx_ipd_port_bp_counters_pairx {
1187	u64 u64;
1188	struct cvmx_ipd_port_bp_counters_pairx_s {
1189		u64 reserved_25_63 : 39;
1190		u64 cnt_val : 25;
1191	} s;
1192	struct cvmx_ipd_port_bp_counters_pairx_s cn30xx;
1193	struct cvmx_ipd_port_bp_counters_pairx_s cn31xx;
1194	struct cvmx_ipd_port_bp_counters_pairx_s cn38xx;
1195	struct cvmx_ipd_port_bp_counters_pairx_s cn38xxp2;
1196	struct cvmx_ipd_port_bp_counters_pairx_s cn50xx;
1197	struct cvmx_ipd_port_bp_counters_pairx_s cn52xx;
1198	struct cvmx_ipd_port_bp_counters_pairx_s cn52xxp1;
1199	struct cvmx_ipd_port_bp_counters_pairx_s cn56xx;
1200	struct cvmx_ipd_port_bp_counters_pairx_s cn56xxp1;
1201	struct cvmx_ipd_port_bp_counters_pairx_s cn58xx;
1202	struct cvmx_ipd_port_bp_counters_pairx_s cn58xxp1;
1203	struct cvmx_ipd_port_bp_counters_pairx_s cn61xx;
1204	struct cvmx_ipd_port_bp_counters_pairx_s cn63xx;
1205	struct cvmx_ipd_port_bp_counters_pairx_s cn63xxp1;
1206	struct cvmx_ipd_port_bp_counters_pairx_s cn66xx;
1207	struct cvmx_ipd_port_bp_counters_pairx_s cn70xx;
1208	struct cvmx_ipd_port_bp_counters_pairx_s cn70xxp1;
1209	struct cvmx_ipd_port_bp_counters_pairx_s cnf71xx;
1210};
1211
1212typedef union cvmx_ipd_port_bp_counters_pairx cvmx_ipd_port_bp_counters_pairx_t;
1213
1214/**
1215 * cvmx_ipd_port_ptr_fifo_ctl
1216 *
1217 * IPD_PORT_PTR_FIFO_CTL = IPD's Reasm-Id Pointer FIFO Control
1218 *
1219 * Allows reading of the Page-Pointers stored in the IPD's Reasm-Id Fifo.
1220 */
1221union cvmx_ipd_port_ptr_fifo_ctl {
1222	u64 u64;
1223	struct cvmx_ipd_port_ptr_fifo_ctl_s {
1224		u64 reserved_48_63 : 16;
1225		u64 ptr : 33;
1226		u64 max_pkt : 7;
1227		u64 cena : 1;
1228		u64 raddr : 7;
1229	} s;
1230	struct cvmx_ipd_port_ptr_fifo_ctl_s cn68xx;
1231	struct cvmx_ipd_port_ptr_fifo_ctl_s cn68xxp1;
1232};
1233
1234typedef union cvmx_ipd_port_ptr_fifo_ctl cvmx_ipd_port_ptr_fifo_ctl_t;
1235
1236/**
1237 * cvmx_ipd_port_qos_#_cnt
1238 *
1239 * IPD_PORT_QOS_X_CNT = IPD PortX QOS-0 Count
1240 * A counter per port/qos. Counter are originzed in sequence where the first 8 counter (0-7)
1241 * belong to Port-0
1242 * QOS 0-7 respectively followed by port 1 at (8-15), etc
1243 * Ports 0-3, 32-43
1244 */
1245union cvmx_ipd_port_qos_x_cnt {
1246	u64 u64;
1247	struct cvmx_ipd_port_qos_x_cnt_s {
1248		u64 wmark : 32;
1249		u64 cnt : 32;
1250	} s;
1251	struct cvmx_ipd_port_qos_x_cnt_s cn52xx;
1252	struct cvmx_ipd_port_qos_x_cnt_s cn52xxp1;
1253	struct cvmx_ipd_port_qos_x_cnt_s cn56xx;
1254	struct cvmx_ipd_port_qos_x_cnt_s cn56xxp1;
1255	struct cvmx_ipd_port_qos_x_cnt_s cn61xx;
1256	struct cvmx_ipd_port_qos_x_cnt_s cn63xx;
1257	struct cvmx_ipd_port_qos_x_cnt_s cn63xxp1;
1258	struct cvmx_ipd_port_qos_x_cnt_s cn66xx;
1259	struct cvmx_ipd_port_qos_x_cnt_s cn68xx;
1260	struct cvmx_ipd_port_qos_x_cnt_s cn68xxp1;
1261	struct cvmx_ipd_port_qos_x_cnt_s cn70xx;
1262	struct cvmx_ipd_port_qos_x_cnt_s cn70xxp1;
1263	struct cvmx_ipd_port_qos_x_cnt_s cnf71xx;
1264};
1265
1266typedef union cvmx_ipd_port_qos_x_cnt cvmx_ipd_port_qos_x_cnt_t;
1267
1268/**
1269 * cvmx_ipd_port_qos_int#
1270 *
1271 * See the description for IPD_PORT_QOS_X_CNT
1272 * 0=P0-7; 1=P8-15; 2=P16-23; 3=P24-31; 4=P32-39; 5=P40-47; 6=P48-55; 7=P56-63
1273 * Only ports used are: P0-3, p16-19, P24, P32-39. Therefore only IPD_PORT_QOS_INT0 ([63:32] ==
1274 * Reserved), IPD_PORT_QOS_INT2 ([63:32] == Reserved), IPD_PORT_QOS_INT3 ([63:8] == Reserved),
1275 * IPD_PORT_QOS_INT4
1276 */
1277union cvmx_ipd_port_qos_intx {
1278	u64 u64;
1279	struct cvmx_ipd_port_qos_intx_s {
1280		u64 intr : 64;
1281	} s;
1282	struct cvmx_ipd_port_qos_intx_s cn52xx;
1283	struct cvmx_ipd_port_qos_intx_s cn52xxp1;
1284	struct cvmx_ipd_port_qos_intx_s cn56xx;
1285	struct cvmx_ipd_port_qos_intx_s cn56xxp1;
1286	struct cvmx_ipd_port_qos_intx_s cn61xx;
1287	struct cvmx_ipd_port_qos_intx_s cn63xx;
1288	struct cvmx_ipd_port_qos_intx_s cn63xxp1;
1289	struct cvmx_ipd_port_qos_intx_s cn66xx;
1290	struct cvmx_ipd_port_qos_intx_s cn68xx;
1291	struct cvmx_ipd_port_qos_intx_s cn68xxp1;
1292	struct cvmx_ipd_port_qos_intx_s cn70xx;
1293	struct cvmx_ipd_port_qos_intx_s cn70xxp1;
1294	struct cvmx_ipd_port_qos_intx_s cnf71xx;
1295};
1296
1297typedef union cvmx_ipd_port_qos_intx cvmx_ipd_port_qos_intx_t;
1298
1299/**
1300 * cvmx_ipd_port_qos_int_enb#
1301 *
1302 * "When the IPD_PORT_QOS_INTX[\#] is '1' and IPD_PORT_QOS_INT_ENBX[\#] is '1' a interrupt will be
1303 * generated."
1304 */
1305union cvmx_ipd_port_qos_int_enbx {
1306	u64 u64;
1307	struct cvmx_ipd_port_qos_int_enbx_s {
1308		u64 enb : 64;
1309	} s;
1310	struct cvmx_ipd_port_qos_int_enbx_s cn52xx;
1311	struct cvmx_ipd_port_qos_int_enbx_s cn52xxp1;
1312	struct cvmx_ipd_port_qos_int_enbx_s cn56xx;
1313	struct cvmx_ipd_port_qos_int_enbx_s cn56xxp1;
1314	struct cvmx_ipd_port_qos_int_enbx_s cn61xx;
1315	struct cvmx_ipd_port_qos_int_enbx_s cn63xx;
1316	struct cvmx_ipd_port_qos_int_enbx_s cn63xxp1;
1317	struct cvmx_ipd_port_qos_int_enbx_s cn66xx;
1318	struct cvmx_ipd_port_qos_int_enbx_s cn68xx;
1319	struct cvmx_ipd_port_qos_int_enbx_s cn68xxp1;
1320	struct cvmx_ipd_port_qos_int_enbx_s cn70xx;
1321	struct cvmx_ipd_port_qos_int_enbx_s cn70xxp1;
1322	struct cvmx_ipd_port_qos_int_enbx_s cnf71xx;
1323};
1324
1325typedef union cvmx_ipd_port_qos_int_enbx cvmx_ipd_port_qos_int_enbx_t;
1326
1327/**
1328 * cvmx_ipd_port_sop#
1329 *
1330 * IPD_PORT_SOP = IPD Reasm-Id SOP
1331 *
1332 * Set when a SOP is detected on a reasm-num. Where the reasm-num value set the bit vector of this register.
1333 */
1334union cvmx_ipd_port_sopx {
1335	u64 u64;
1336	struct cvmx_ipd_port_sopx_s {
1337		u64 sop : 64;
1338	} s;
1339	struct cvmx_ipd_port_sopx_s cn68xx;
1340	struct cvmx_ipd_port_sopx_s cn68xxp1;
1341};
1342
1343typedef union cvmx_ipd_port_sopx cvmx_ipd_port_sopx_t;
1344
1345/**
1346 * cvmx_ipd_prc_hold_ptr_fifo_ctl
1347 *
1348 * Allows reading of the Page-Pointers stored in the IPD's PRC Holding Fifo.
1349 *
1350 */
1351union cvmx_ipd_prc_hold_ptr_fifo_ctl {
1352	u64 u64;
1353	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s {
1354		u64 reserved_39_63 : 25;
1355		u64 max_pkt : 3;
1356		u64 praddr : 3;
1357		u64 ptr : 29;
1358		u64 cena : 1;
1359		u64 raddr : 3;
1360	} s;
1361	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn30xx;
1362	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn31xx;
1363	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn38xx;
1364	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn50xx;
1365	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn52xx;
1366	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn52xxp1;
1367	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn56xx;
1368	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn56xxp1;
1369	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn58xx;
1370	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn58xxp1;
1371	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn61xx;
1372	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn63xx;
1373	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn63xxp1;
1374	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn66xx;
1375	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn70xx;
1376	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn70xxp1;
1377	struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cnf71xx;
1378};
1379
1380typedef union cvmx_ipd_prc_hold_ptr_fifo_ctl cvmx_ipd_prc_hold_ptr_fifo_ctl_t;
1381
1382/**
1383 * cvmx_ipd_prc_port_ptr_fifo_ctl
1384 *
1385 * Allows reading of the Page-Pointers stored in the IPD's PRC PORT Fifo.
1386 *
1387 */
1388union cvmx_ipd_prc_port_ptr_fifo_ctl {
1389	u64 u64;
1390	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s {
1391		u64 reserved_44_63 : 20;
1392		u64 max_pkt : 7;
1393		u64 ptr : 29;
1394		u64 cena : 1;
1395		u64 raddr : 7;
1396	} s;
1397	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn30xx;
1398	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn31xx;
1399	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn38xx;
1400	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn50xx;
1401	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn52xx;
1402	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn52xxp1;
1403	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn56xx;
1404	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn56xxp1;
1405	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn58xx;
1406	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn58xxp1;
1407	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn61xx;
1408	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn63xx;
1409	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn63xxp1;
1410	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn66xx;
1411	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn70xx;
1412	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn70xxp1;
1413	struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cnf71xx;
1414};
1415
1416typedef union cvmx_ipd_prc_port_ptr_fifo_ctl cvmx_ipd_prc_port_ptr_fifo_ctl_t;
1417
1418/**
1419 * cvmx_ipd_ptr_count
1420 *
1421 * Shows the number of WQE and Packet Page Pointers stored in the IPD.
1422 *
1423 */
1424union cvmx_ipd_ptr_count {
1425	u64 u64;
1426	struct cvmx_ipd_ptr_count_s {
1427		u64 reserved_19_63 : 45;
1428		u64 pktv_cnt : 1;
1429		u64 wqev_cnt : 1;
1430		u64 pfif_cnt : 3;
1431		u64 pkt_pcnt : 7;
1432		u64 wqe_pcnt : 7;
1433	} s;
1434	struct cvmx_ipd_ptr_count_s cn30xx;
1435	struct cvmx_ipd_ptr_count_s cn31xx;
1436	struct cvmx_ipd_ptr_count_s cn38xx;
1437	struct cvmx_ipd_ptr_count_s cn38xxp2;
1438	struct cvmx_ipd_ptr_count_s cn50xx;
1439	struct cvmx_ipd_ptr_count_s cn52xx;
1440	struct cvmx_ipd_ptr_count_s cn52xxp1;
1441	struct cvmx_ipd_ptr_count_s cn56xx;
1442	struct cvmx_ipd_ptr_count_s cn56xxp1;
1443	struct cvmx_ipd_ptr_count_s cn58xx;
1444	struct cvmx_ipd_ptr_count_s cn58xxp1;
1445	struct cvmx_ipd_ptr_count_s cn61xx;
1446	struct cvmx_ipd_ptr_count_s cn63xx;
1447	struct cvmx_ipd_ptr_count_s cn63xxp1;
1448	struct cvmx_ipd_ptr_count_s cn66xx;
1449	struct cvmx_ipd_ptr_count_s cn68xx;
1450	struct cvmx_ipd_ptr_count_s cn68xxp1;
1451	struct cvmx_ipd_ptr_count_s cn70xx;
1452	struct cvmx_ipd_ptr_count_s cn70xxp1;
1453	struct cvmx_ipd_ptr_count_s cnf71xx;
1454};
1455
1456typedef union cvmx_ipd_ptr_count cvmx_ipd_ptr_count_t;
1457
1458/**
1459 * cvmx_ipd_pwp_ptr_fifo_ctl
1460 *
1461 * Allows reading of the Page-Pointers stored in the IPD's PWP Fifo.
1462 *
1463 */
1464union cvmx_ipd_pwp_ptr_fifo_ctl {
1465	u64 u64;
1466	struct cvmx_ipd_pwp_ptr_fifo_ctl_s {
1467		u64 reserved_61_63 : 3;
1468		u64 max_cnts : 7;
1469		u64 wraddr : 8;
1470		u64 praddr : 8;
1471		u64 ptr : 29;
1472		u64 cena : 1;
1473		u64 raddr : 8;
1474	} s;
1475	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn30xx;
1476	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn31xx;
1477	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn38xx;
1478	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn50xx;
1479	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn52xx;
1480	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn52xxp1;
1481	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn56xx;
1482	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn56xxp1;
1483	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn58xx;
1484	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn58xxp1;
1485	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn61xx;
1486	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn63xx;
1487	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn63xxp1;
1488	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn66xx;
1489	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn70xx;
1490	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn70xxp1;
1491	struct cvmx_ipd_pwp_ptr_fifo_ctl_s cnf71xx;
1492};
1493
1494typedef union cvmx_ipd_pwp_ptr_fifo_ctl cvmx_ipd_pwp_ptr_fifo_ctl_t;
1495
1496/**
1497 * cvmx_ipd_qos#_red_marks
1498 *
1499 * Set the pass-drop marks for qos level.
1500 *
1501 */
1502union cvmx_ipd_qosx_red_marks {
1503	u64 u64;
1504	struct cvmx_ipd_qosx_red_marks_s {
1505		u64 drop : 32;
1506		u64 pass : 32;
1507	} s;
1508	struct cvmx_ipd_qosx_red_marks_s cn30xx;
1509	struct cvmx_ipd_qosx_red_marks_s cn31xx;
1510	struct cvmx_ipd_qosx_red_marks_s cn38xx;
1511	struct cvmx_ipd_qosx_red_marks_s cn38xxp2;
1512	struct cvmx_ipd_qosx_red_marks_s cn50xx;
1513	struct cvmx_ipd_qosx_red_marks_s cn52xx;
1514	struct cvmx_ipd_qosx_red_marks_s cn52xxp1;
1515	struct cvmx_ipd_qosx_red_marks_s cn56xx;
1516	struct cvmx_ipd_qosx_red_marks_s cn56xxp1;
1517	struct cvmx_ipd_qosx_red_marks_s cn58xx;
1518	struct cvmx_ipd_qosx_red_marks_s cn58xxp1;
1519	struct cvmx_ipd_qosx_red_marks_s cn61xx;
1520	struct cvmx_ipd_qosx_red_marks_s cn63xx;
1521	struct cvmx_ipd_qosx_red_marks_s cn63xxp1;
1522	struct cvmx_ipd_qosx_red_marks_s cn66xx;
1523	struct cvmx_ipd_qosx_red_marks_s cn68xx;
1524	struct cvmx_ipd_qosx_red_marks_s cn68xxp1;
1525	struct cvmx_ipd_qosx_red_marks_s cn70xx;
1526	struct cvmx_ipd_qosx_red_marks_s cn70xxp1;
1527	struct cvmx_ipd_qosx_red_marks_s cnf71xx;
1528};
1529
1530typedef union cvmx_ipd_qosx_red_marks cvmx_ipd_qosx_red_marks_t;
1531
1532/**
1533 * cvmx_ipd_que0_free_page_cnt
1534 *
1535 * Number of Free-Page Pointer that are available for use in the FPA for Queue-0.
1536 *
1537 */
1538union cvmx_ipd_que0_free_page_cnt {
1539	u64 u64;
1540	struct cvmx_ipd_que0_free_page_cnt_s {
1541		u64 reserved_32_63 : 32;
1542		u64 q0_pcnt : 32;
1543	} s;
1544	struct cvmx_ipd_que0_free_page_cnt_s cn30xx;
1545	struct cvmx_ipd_que0_free_page_cnt_s cn31xx;
1546	struct cvmx_ipd_que0_free_page_cnt_s cn38xx;
1547	struct cvmx_ipd_que0_free_page_cnt_s cn38xxp2;
1548	struct cvmx_ipd_que0_free_page_cnt_s cn50xx;
1549	struct cvmx_ipd_que0_free_page_cnt_s cn52xx;
1550	struct cvmx_ipd_que0_free_page_cnt_s cn52xxp1;
1551	struct cvmx_ipd_que0_free_page_cnt_s cn56xx;
1552	struct cvmx_ipd_que0_free_page_cnt_s cn56xxp1;
1553	struct cvmx_ipd_que0_free_page_cnt_s cn58xx;
1554	struct cvmx_ipd_que0_free_page_cnt_s cn58xxp1;
1555	struct cvmx_ipd_que0_free_page_cnt_s cn61xx;
1556	struct cvmx_ipd_que0_free_page_cnt_s cn63xx;
1557	struct cvmx_ipd_que0_free_page_cnt_s cn63xxp1;
1558	struct cvmx_ipd_que0_free_page_cnt_s cn66xx;
1559	struct cvmx_ipd_que0_free_page_cnt_s cn68xx;
1560	struct cvmx_ipd_que0_free_page_cnt_s cn68xxp1;
1561	struct cvmx_ipd_que0_free_page_cnt_s cn70xx;
1562	struct cvmx_ipd_que0_free_page_cnt_s cn70xxp1;
1563	struct cvmx_ipd_que0_free_page_cnt_s cnf71xx;
1564};
1565
1566typedef union cvmx_ipd_que0_free_page_cnt cvmx_ipd_que0_free_page_cnt_t;
1567
1568/**
1569 * cvmx_ipd_red_bpid_enable#
1570 *
1571 * IPD_RED_BPID_ENABLE = IPD RED BPID Enable
1572 *
1573 * Set the pass-drop marks for qos level.
1574 */
1575union cvmx_ipd_red_bpid_enablex {
1576	u64 u64;
1577	struct cvmx_ipd_red_bpid_enablex_s {
1578		u64 prt_enb : 64;
1579	} s;
1580	struct cvmx_ipd_red_bpid_enablex_s cn68xx;
1581	struct cvmx_ipd_red_bpid_enablex_s cn68xxp1;
1582};
1583
1584typedef union cvmx_ipd_red_bpid_enablex cvmx_ipd_red_bpid_enablex_t;
1585
1586/**
1587 * cvmx_ipd_red_delay
1588 *
1589 * IPD_RED_DELAY = IPD RED BPID Enable
1590 *
1591 * Set the pass-drop marks for qos level.
1592 */
1593union cvmx_ipd_red_delay {
1594	u64 u64;
1595	struct cvmx_ipd_red_delay_s {
1596		u64 reserved_28_63 : 36;
1597		u64 prb_dly : 14;
1598		u64 avg_dly : 14;
1599	} s;
1600	struct cvmx_ipd_red_delay_s cn68xx;
1601	struct cvmx_ipd_red_delay_s cn68xxp1;
1602};
1603
1604typedef union cvmx_ipd_red_delay cvmx_ipd_red_delay_t;
1605
1606/**
1607 * cvmx_ipd_red_port_enable
1608 *
1609 * Set the pass-drop marks for qos level.
1610 *
1611 */
1612union cvmx_ipd_red_port_enable {
1613	u64 u64;
1614	struct cvmx_ipd_red_port_enable_s {
1615		u64 prb_dly : 14;
1616		u64 avg_dly : 14;
1617		u64 prt_enb : 36;
1618	} s;
1619	struct cvmx_ipd_red_port_enable_s cn30xx;
1620	struct cvmx_ipd_red_port_enable_s cn31xx;
1621	struct cvmx_ipd_red_port_enable_s cn38xx;
1622	struct cvmx_ipd_red_port_enable_s cn38xxp2;
1623	struct cvmx_ipd_red_port_enable_s cn50xx;
1624	struct cvmx_ipd_red_port_enable_s cn52xx;
1625	struct cvmx_ipd_red_port_enable_s cn52xxp1;
1626	struct cvmx_ipd_red_port_enable_s cn56xx;
1627	struct cvmx_ipd_red_port_enable_s cn56xxp1;
1628	struct cvmx_ipd_red_port_enable_s cn58xx;
1629	struct cvmx_ipd_red_port_enable_s cn58xxp1;
1630	struct cvmx_ipd_red_port_enable_s cn61xx;
1631	struct cvmx_ipd_red_port_enable_s cn63xx;
1632	struct cvmx_ipd_red_port_enable_s cn63xxp1;
1633	struct cvmx_ipd_red_port_enable_s cn66xx;
1634	struct cvmx_ipd_red_port_enable_s cn70xx;
1635	struct cvmx_ipd_red_port_enable_s cn70xxp1;
1636	struct cvmx_ipd_red_port_enable_s cnf71xx;
1637};
1638
1639typedef union cvmx_ipd_red_port_enable cvmx_ipd_red_port_enable_t;
1640
1641/**
1642 * cvmx_ipd_red_port_enable2
1643 *
1644 * Set the pass-drop marks for qos level.
1645 *
1646 */
1647union cvmx_ipd_red_port_enable2 {
1648	u64 u64;
1649	struct cvmx_ipd_red_port_enable2_s {
1650		u64 reserved_12_63 : 52;
1651		u64 prt_enb : 12;
1652	} s;
1653	struct cvmx_ipd_red_port_enable2_cn52xx {
1654		u64 reserved_4_63 : 60;
1655		u64 prt_enb : 4;
1656	} cn52xx;
1657	struct cvmx_ipd_red_port_enable2_cn52xx cn52xxp1;
1658	struct cvmx_ipd_red_port_enable2_cn52xx cn56xx;
1659	struct cvmx_ipd_red_port_enable2_cn52xx cn56xxp1;
1660	struct cvmx_ipd_red_port_enable2_s cn61xx;
1661	struct cvmx_ipd_red_port_enable2_cn63xx {
1662		u64 reserved_8_63 : 56;
1663		u64 prt_enb : 8;
1664	} cn63xx;
1665	struct cvmx_ipd_red_port_enable2_cn63xx cn63xxp1;
1666	struct cvmx_ipd_red_port_enable2_s cn66xx;
1667	struct cvmx_ipd_red_port_enable2_s cn70xx;
1668	struct cvmx_ipd_red_port_enable2_s cn70xxp1;
1669	struct cvmx_ipd_red_port_enable2_s cnf71xx;
1670};
1671
1672typedef union cvmx_ipd_red_port_enable2 cvmx_ipd_red_port_enable2_t;
1673
1674/**
1675 * cvmx_ipd_red_que#_param
1676 *
1677 * Value control the Passing and Dropping of packets by the red engine for QOS Level-0.
1678 *
1679 */
1680union cvmx_ipd_red_quex_param {
1681	u64 u64;
1682	struct cvmx_ipd_red_quex_param_s {
1683		u64 reserved_49_63 : 15;
1684		u64 use_pcnt : 1;
1685		u64 new_con : 8;
1686		u64 avg_con : 8;
1687		u64 prb_con : 32;
1688	} s;
1689	struct cvmx_ipd_red_quex_param_s cn30xx;
1690	struct cvmx_ipd_red_quex_param_s cn31xx;
1691	struct cvmx_ipd_red_quex_param_s cn38xx;
1692	struct cvmx_ipd_red_quex_param_s cn38xxp2;
1693	struct cvmx_ipd_red_quex_param_s cn50xx;
1694	struct cvmx_ipd_red_quex_param_s cn52xx;
1695	struct cvmx_ipd_red_quex_param_s cn52xxp1;
1696	struct cvmx_ipd_red_quex_param_s cn56xx;
1697	struct cvmx_ipd_red_quex_param_s cn56xxp1;
1698	struct cvmx_ipd_red_quex_param_s cn58xx;
1699	struct cvmx_ipd_red_quex_param_s cn58xxp1;
1700	struct cvmx_ipd_red_quex_param_s cn61xx;
1701	struct cvmx_ipd_red_quex_param_s cn63xx;
1702	struct cvmx_ipd_red_quex_param_s cn63xxp1;
1703	struct cvmx_ipd_red_quex_param_s cn66xx;
1704	struct cvmx_ipd_red_quex_param_s cn68xx;
1705	struct cvmx_ipd_red_quex_param_s cn68xxp1;
1706	struct cvmx_ipd_red_quex_param_s cn70xx;
1707	struct cvmx_ipd_red_quex_param_s cn70xxp1;
1708	struct cvmx_ipd_red_quex_param_s cnf71xx;
1709};
1710
1711typedef union cvmx_ipd_red_quex_param cvmx_ipd_red_quex_param_t;
1712
1713/**
1714 * cvmx_ipd_req_wgt
1715 *
1716 * IPD_REQ_WGT = IPD REQ weights
1717 *
1718 * There are 8 devices that can request to send packet traffic to the IPD. These weights are used for the Weighted Round Robin
1719 * grant generated by the IPD to requestors.
1720 */
1721union cvmx_ipd_req_wgt {
1722	u64 u64;
1723	struct cvmx_ipd_req_wgt_s {
1724		u64 wgt7 : 8;
1725		u64 wgt6 : 8;
1726		u64 wgt5 : 8;
1727		u64 wgt4 : 8;
1728		u64 wgt3 : 8;
1729		u64 wgt2 : 8;
1730		u64 wgt1 : 8;
1731		u64 wgt0 : 8;
1732	} s;
1733	struct cvmx_ipd_req_wgt_s cn68xx;
1734};
1735
1736typedef union cvmx_ipd_req_wgt cvmx_ipd_req_wgt_t;
1737
1738/**
1739 * cvmx_ipd_sub_port_bp_page_cnt
1740 *
1741 * Will add the value to the indicated port count register, the number of pages supplied. The
1742 * value added should
1743 * be the 2's complement of the value that needs to be subtracted. Users add 2's complement
1744 * values to the
1745 * port-mbuf-count register to return (lower the count) mbufs to the counter in order to avoid
1746 * port-level
1747 * backpressure being applied to the port. Backpressure is applied when the MBUF used count of a
1748 * port exceeds the
1749 * value in the IPD_PORTX_BP_PAGE_CNT, IPD_PORTX_BP_PAGE_CNT2, and IPD_PORTX_BP_PAGE_CNT3.
1750 * This register can't be written from the PCI via a window write.
1751 */
1752union cvmx_ipd_sub_port_bp_page_cnt {
1753	u64 u64;
1754	struct cvmx_ipd_sub_port_bp_page_cnt_s {
1755		u64 reserved_31_63 : 33;
1756		u64 port : 6;
1757		u64 page_cnt : 25;
1758	} s;
1759	struct cvmx_ipd_sub_port_bp_page_cnt_s cn30xx;
1760	struct cvmx_ipd_sub_port_bp_page_cnt_s cn31xx;
1761	struct cvmx_ipd_sub_port_bp_page_cnt_s cn38xx;
1762	struct cvmx_ipd_sub_port_bp_page_cnt_s cn38xxp2;
1763	struct cvmx_ipd_sub_port_bp_page_cnt_s cn50xx;
1764	struct cvmx_ipd_sub_port_bp_page_cnt_s cn52xx;
1765	struct cvmx_ipd_sub_port_bp_page_cnt_s cn52xxp1;
1766	struct cvmx_ipd_sub_port_bp_page_cnt_s cn56xx;
1767	struct cvmx_ipd_sub_port_bp_page_cnt_s cn56xxp1;
1768	struct cvmx_ipd_sub_port_bp_page_cnt_s cn58xx;
1769	struct cvmx_ipd_sub_port_bp_page_cnt_s cn58xxp1;
1770	struct cvmx_ipd_sub_port_bp_page_cnt_s cn61xx;
1771	struct cvmx_ipd_sub_port_bp_page_cnt_s cn63xx;
1772	struct cvmx_ipd_sub_port_bp_page_cnt_s cn63xxp1;
1773	struct cvmx_ipd_sub_port_bp_page_cnt_s cn66xx;
1774	struct cvmx_ipd_sub_port_bp_page_cnt_s cn68xx;
1775	struct cvmx_ipd_sub_port_bp_page_cnt_s cn68xxp1;
1776	struct cvmx_ipd_sub_port_bp_page_cnt_s cn70xx;
1777	struct cvmx_ipd_sub_port_bp_page_cnt_s cn70xxp1;
1778	struct cvmx_ipd_sub_port_bp_page_cnt_s cnf71xx;
1779};
1780
1781typedef union cvmx_ipd_sub_port_bp_page_cnt cvmx_ipd_sub_port_bp_page_cnt_t;
1782
1783/**
1784 * cvmx_ipd_sub_port_fcs
1785 *
1786 * When set '1' the port corresponding to the bit set will subtract 4 bytes from the end of
1787 * the packet.
1788 */
1789union cvmx_ipd_sub_port_fcs {
1790	u64 u64;
1791	struct cvmx_ipd_sub_port_fcs_s {
1792		u64 reserved_40_63 : 24;
1793		u64 port_bit2 : 4;
1794		u64 reserved_32_35 : 4;
1795		u64 port_bit : 32;
1796	} s;
1797	struct cvmx_ipd_sub_port_fcs_cn30xx {
1798		u64 reserved_3_63 : 61;
1799		u64 port_bit : 3;
1800	} cn30xx;
1801	struct cvmx_ipd_sub_port_fcs_cn30xx cn31xx;
1802	struct cvmx_ipd_sub_port_fcs_cn38xx {
1803		u64 reserved_32_63 : 32;
1804		u64 port_bit : 32;
1805	} cn38xx;
1806	struct cvmx_ipd_sub_port_fcs_cn38xx cn38xxp2;
1807	struct cvmx_ipd_sub_port_fcs_cn30xx cn50xx;
1808	struct cvmx_ipd_sub_port_fcs_s cn52xx;
1809	struct cvmx_ipd_sub_port_fcs_s cn52xxp1;
1810	struct cvmx_ipd_sub_port_fcs_s cn56xx;
1811	struct cvmx_ipd_sub_port_fcs_s cn56xxp1;
1812	struct cvmx_ipd_sub_port_fcs_cn38xx cn58xx;
1813	struct cvmx_ipd_sub_port_fcs_cn38xx cn58xxp1;
1814	struct cvmx_ipd_sub_port_fcs_s cn61xx;
1815	struct cvmx_ipd_sub_port_fcs_s cn63xx;
1816	struct cvmx_ipd_sub_port_fcs_s cn63xxp1;
1817	struct cvmx_ipd_sub_port_fcs_s cn66xx;
1818	struct cvmx_ipd_sub_port_fcs_s cn70xx;
1819	struct cvmx_ipd_sub_port_fcs_s cn70xxp1;
1820	struct cvmx_ipd_sub_port_fcs_s cnf71xx;
1821};
1822
1823typedef union cvmx_ipd_sub_port_fcs cvmx_ipd_sub_port_fcs_t;
1824
1825/**
1826 * cvmx_ipd_sub_port_qos_cnt
1827 *
1828 * Will add the value (CNT) to the indicated Port-QOS register (PORT_QOS). The value added must
1829 * be
1830 * be the 2's complement of the value that needs to be subtracted.
1831 */
1832union cvmx_ipd_sub_port_qos_cnt {
1833	u64 u64;
1834	struct cvmx_ipd_sub_port_qos_cnt_s {
1835		u64 reserved_41_63 : 23;
1836		u64 port_qos : 9;
1837		u64 cnt : 32;
1838	} s;
1839	struct cvmx_ipd_sub_port_qos_cnt_s cn52xx;
1840	struct cvmx_ipd_sub_port_qos_cnt_s cn52xxp1;
1841	struct cvmx_ipd_sub_port_qos_cnt_s cn56xx;
1842	struct cvmx_ipd_sub_port_qos_cnt_s cn56xxp1;
1843	struct cvmx_ipd_sub_port_qos_cnt_s cn61xx;
1844	struct cvmx_ipd_sub_port_qos_cnt_s cn63xx;
1845	struct cvmx_ipd_sub_port_qos_cnt_s cn63xxp1;
1846	struct cvmx_ipd_sub_port_qos_cnt_s cn66xx;
1847	struct cvmx_ipd_sub_port_qos_cnt_s cn68xx;
1848	struct cvmx_ipd_sub_port_qos_cnt_s cn68xxp1;
1849	struct cvmx_ipd_sub_port_qos_cnt_s cn70xx;
1850	struct cvmx_ipd_sub_port_qos_cnt_s cn70xxp1;
1851	struct cvmx_ipd_sub_port_qos_cnt_s cnf71xx;
1852};
1853
1854typedef union cvmx_ipd_sub_port_qos_cnt cvmx_ipd_sub_port_qos_cnt_t;
1855
1856/**
1857 * cvmx_ipd_wqe_fpa_queue
1858 *
1859 * Which FPA Queue (0-7) to fetch page-pointers from for WQE's
1860 *
1861 */
1862union cvmx_ipd_wqe_fpa_queue {
1863	u64 u64;
1864	struct cvmx_ipd_wqe_fpa_queue_s {
1865		u64 reserved_3_63 : 61;
1866		u64 wqe_pool : 3;
1867	} s;
1868	struct cvmx_ipd_wqe_fpa_queue_s cn30xx;
1869	struct cvmx_ipd_wqe_fpa_queue_s cn31xx;
1870	struct cvmx_ipd_wqe_fpa_queue_s cn38xx;
1871	struct cvmx_ipd_wqe_fpa_queue_s cn38xxp2;
1872	struct cvmx_ipd_wqe_fpa_queue_s cn50xx;
1873	struct cvmx_ipd_wqe_fpa_queue_s cn52xx;
1874	struct cvmx_ipd_wqe_fpa_queue_s cn52xxp1;
1875	struct cvmx_ipd_wqe_fpa_queue_s cn56xx;
1876	struct cvmx_ipd_wqe_fpa_queue_s cn56xxp1;
1877	struct cvmx_ipd_wqe_fpa_queue_s cn58xx;
1878	struct cvmx_ipd_wqe_fpa_queue_s cn58xxp1;
1879	struct cvmx_ipd_wqe_fpa_queue_s cn61xx;
1880	struct cvmx_ipd_wqe_fpa_queue_s cn63xx;
1881	struct cvmx_ipd_wqe_fpa_queue_s cn63xxp1;
1882	struct cvmx_ipd_wqe_fpa_queue_s cn66xx;
1883	struct cvmx_ipd_wqe_fpa_queue_s cn68xx;
1884	struct cvmx_ipd_wqe_fpa_queue_s cn68xxp1;
1885	struct cvmx_ipd_wqe_fpa_queue_s cn70xx;
1886	struct cvmx_ipd_wqe_fpa_queue_s cn70xxp1;
1887	struct cvmx_ipd_wqe_fpa_queue_s cnf71xx;
1888};
1889
1890typedef union cvmx_ipd_wqe_fpa_queue cvmx_ipd_wqe_fpa_queue_t;
1891
1892/**
1893 * cvmx_ipd_wqe_ptr_valid
1894 *
1895 * The value of the WQE-pointer fetched and in the valid register.
1896 *
1897 */
1898union cvmx_ipd_wqe_ptr_valid {
1899	u64 u64;
1900	struct cvmx_ipd_wqe_ptr_valid_s {
1901		u64 reserved_29_63 : 35;
1902		u64 ptr : 29;
1903	} s;
1904	struct cvmx_ipd_wqe_ptr_valid_s cn30xx;
1905	struct cvmx_ipd_wqe_ptr_valid_s cn31xx;
1906	struct cvmx_ipd_wqe_ptr_valid_s cn38xx;
1907	struct cvmx_ipd_wqe_ptr_valid_s cn50xx;
1908	struct cvmx_ipd_wqe_ptr_valid_s cn52xx;
1909	struct cvmx_ipd_wqe_ptr_valid_s cn52xxp1;
1910	struct cvmx_ipd_wqe_ptr_valid_s cn56xx;
1911	struct cvmx_ipd_wqe_ptr_valid_s cn56xxp1;
1912	struct cvmx_ipd_wqe_ptr_valid_s cn58xx;
1913	struct cvmx_ipd_wqe_ptr_valid_s cn58xxp1;
1914	struct cvmx_ipd_wqe_ptr_valid_s cn61xx;
1915	struct cvmx_ipd_wqe_ptr_valid_s cn63xx;
1916	struct cvmx_ipd_wqe_ptr_valid_s cn63xxp1;
1917	struct cvmx_ipd_wqe_ptr_valid_s cn66xx;
1918	struct cvmx_ipd_wqe_ptr_valid_s cn70xx;
1919	struct cvmx_ipd_wqe_ptr_valid_s cn70xxp1;
1920	struct cvmx_ipd_wqe_ptr_valid_s cnf71xx;
1921};
1922
1923typedef union cvmx_ipd_wqe_ptr_valid cvmx_ipd_wqe_ptr_valid_t;
1924
1925#endif
1926