Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[linux-2.6] / drivers / staging / octeon / cvmx-pip-defs.h
1 /***********************license start***************
2  * Author: Cavium Networks
3  *
4  * Contact: support@caviumnetworks.com
5  * This file is part of the OCTEON SDK
6  *
7  * Copyright (c) 2003-2008 Cavium Networks
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License, Version 2, as
11  * published by the Free Software Foundation.
12  *
13  * This file is distributed in the hope that it will be useful, but
14  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16  * NONINFRINGEMENT.  See the GNU General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this file; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22  * or visit http://www.gnu.org/licenses/.
23  *
24  * This file may also be available under a different license from Cavium.
25  * Contact Cavium Networks for more information
26  ***********************license end**************************************/
27
28 #ifndef __CVMX_PIP_DEFS_H__
29 #define __CVMX_PIP_DEFS_H__
30
31 /*
32  * Enumeration representing the amount of packet processing
33  * and validation performed by the input hardware.
34  */
35 enum cvmx_pip_port_parse_mode {
36         /*
37          * Packet input doesn't perform any processing of the input
38          * packet.
39          */
40         CVMX_PIP_PORT_CFG_MODE_NONE = 0ull,
41         /*
42          * Full packet processing is performed with pointer starting
43          * at the L2 (ethernet MAC) header.
44          */
45         CVMX_PIP_PORT_CFG_MODE_SKIPL2 = 1ull,
46         /*
47          * Input packets are assumed to be IP.  Results from non IP
48          * packets is undefined. Pointers reference the beginning of
49          * the IP header.
50          */
51         CVMX_PIP_PORT_CFG_MODE_SKIPIP = 2ull
52 };
53
54 #define CVMX_PIP_BCK_PRS \
55          CVMX_ADD_IO_SEG(0x00011800A0000038ull)
56 #define CVMX_PIP_BIST_STATUS \
57          CVMX_ADD_IO_SEG(0x00011800A0000000ull)
58 #define CVMX_PIP_CRC_CTLX(offset) \
59          CVMX_ADD_IO_SEG(0x00011800A0000040ull + (((offset) & 1) * 8))
60 #define CVMX_PIP_CRC_IVX(offset) \
61          CVMX_ADD_IO_SEG(0x00011800A0000050ull + (((offset) & 1) * 8))
62 #define CVMX_PIP_DEC_IPSECX(offset) \
63          CVMX_ADD_IO_SEG(0x00011800A0000080ull + (((offset) & 3) * 8))
64 #define CVMX_PIP_DSA_SRC_GRP \
65          CVMX_ADD_IO_SEG(0x00011800A0000190ull)
66 #define CVMX_PIP_DSA_VID_GRP \
67          CVMX_ADD_IO_SEG(0x00011800A0000198ull)
68 #define CVMX_PIP_FRM_LEN_CHKX(offset) \
69          CVMX_ADD_IO_SEG(0x00011800A0000180ull + (((offset) & 1) * 8))
70 #define CVMX_PIP_GBL_CFG \
71          CVMX_ADD_IO_SEG(0x00011800A0000028ull)
72 #define CVMX_PIP_GBL_CTL \
73          CVMX_ADD_IO_SEG(0x00011800A0000020ull)
74 #define CVMX_PIP_HG_PRI_QOS \
75          CVMX_ADD_IO_SEG(0x00011800A00001A0ull)
76 #define CVMX_PIP_INT_EN \
77          CVMX_ADD_IO_SEG(0x00011800A0000010ull)
78 #define CVMX_PIP_INT_REG \
79          CVMX_ADD_IO_SEG(0x00011800A0000008ull)
80 #define CVMX_PIP_IP_OFFSET \
81          CVMX_ADD_IO_SEG(0x00011800A0000060ull)
82 #define CVMX_PIP_PRT_CFGX(offset) \
83          CVMX_ADD_IO_SEG(0x00011800A0000200ull + (((offset) & 63) * 8))
84 #define CVMX_PIP_PRT_TAGX(offset) \
85          CVMX_ADD_IO_SEG(0x00011800A0000400ull + (((offset) & 63) * 8))
86 #define CVMX_PIP_QOS_DIFFX(offset) \
87          CVMX_ADD_IO_SEG(0x00011800A0000600ull + (((offset) & 63) * 8))
88 #define CVMX_PIP_QOS_VLANX(offset) \
89          CVMX_ADD_IO_SEG(0x00011800A00000C0ull + (((offset) & 7) * 8))
90 #define CVMX_PIP_QOS_WATCHX(offset) \
91          CVMX_ADD_IO_SEG(0x00011800A0000100ull + (((offset) & 7) * 8))
92 #define CVMX_PIP_RAW_WORD \
93          CVMX_ADD_IO_SEG(0x00011800A00000B0ull)
94 #define CVMX_PIP_SFT_RST \
95          CVMX_ADD_IO_SEG(0x00011800A0000030ull)
96 #define CVMX_PIP_STAT0_PRTX(offset) \
97          CVMX_ADD_IO_SEG(0x00011800A0000800ull + (((offset) & 63) * 80))
98 #define CVMX_PIP_STAT1_PRTX(offset) \
99          CVMX_ADD_IO_SEG(0x00011800A0000808ull + (((offset) & 63) * 80))
100 #define CVMX_PIP_STAT2_PRTX(offset) \
101          CVMX_ADD_IO_SEG(0x00011800A0000810ull + (((offset) & 63) * 80))
102 #define CVMX_PIP_STAT3_PRTX(offset) \
103          CVMX_ADD_IO_SEG(0x00011800A0000818ull + (((offset) & 63) * 80))
104 #define CVMX_PIP_STAT4_PRTX(offset) \
105          CVMX_ADD_IO_SEG(0x00011800A0000820ull + (((offset) & 63) * 80))
106 #define CVMX_PIP_STAT5_PRTX(offset) \
107          CVMX_ADD_IO_SEG(0x00011800A0000828ull + (((offset) & 63) * 80))
108 #define CVMX_PIP_STAT6_PRTX(offset) \
109          CVMX_ADD_IO_SEG(0x00011800A0000830ull + (((offset) & 63) * 80))
110 #define CVMX_PIP_STAT7_PRTX(offset) \
111          CVMX_ADD_IO_SEG(0x00011800A0000838ull + (((offset) & 63) * 80))
112 #define CVMX_PIP_STAT8_PRTX(offset) \
113          CVMX_ADD_IO_SEG(0x00011800A0000840ull + (((offset) & 63) * 80))
114 #define CVMX_PIP_STAT9_PRTX(offset) \
115          CVMX_ADD_IO_SEG(0x00011800A0000848ull + (((offset) & 63) * 80))
116 #define CVMX_PIP_STAT_CTL \
117          CVMX_ADD_IO_SEG(0x00011800A0000018ull)
118 #define CVMX_PIP_STAT_INB_ERRSX(offset) \
119          CVMX_ADD_IO_SEG(0x00011800A0001A10ull + (((offset) & 63) * 32))
120 #define CVMX_PIP_STAT_INB_OCTSX(offset) \
121          CVMX_ADD_IO_SEG(0x00011800A0001A08ull + (((offset) & 63) * 32))
122 #define CVMX_PIP_STAT_INB_PKTSX(offset) \
123          CVMX_ADD_IO_SEG(0x00011800A0001A00ull + (((offset) & 63) * 32))
124 #define CVMX_PIP_TAG_INCX(offset) \
125          CVMX_ADD_IO_SEG(0x00011800A0001800ull + (((offset) & 63) * 8))
126 #define CVMX_PIP_TAG_MASK \
127          CVMX_ADD_IO_SEG(0x00011800A0000070ull)
128 #define CVMX_PIP_TAG_SECRET \
129          CVMX_ADD_IO_SEG(0x00011800A0000068ull)
130 #define CVMX_PIP_TODO_ENTRY \
131          CVMX_ADD_IO_SEG(0x00011800A0000078ull)
132
133 union cvmx_pip_bck_prs {
134         uint64_t u64;
135         struct cvmx_pip_bck_prs_s {
136                 uint64_t bckprs:1;
137                 uint64_t reserved_13_62:50;
138                 uint64_t hiwater:5;
139                 uint64_t reserved_5_7:3;
140                 uint64_t lowater:5;
141         } s;
142         struct cvmx_pip_bck_prs_s cn38xx;
143         struct cvmx_pip_bck_prs_s cn38xxp2;
144         struct cvmx_pip_bck_prs_s cn56xx;
145         struct cvmx_pip_bck_prs_s cn56xxp1;
146         struct cvmx_pip_bck_prs_s cn58xx;
147         struct cvmx_pip_bck_prs_s cn58xxp1;
148 };
149
150 union cvmx_pip_bist_status {
151         uint64_t u64;
152         struct cvmx_pip_bist_status_s {
153                 uint64_t reserved_18_63:46;
154                 uint64_t bist:18;
155         } s;
156         struct cvmx_pip_bist_status_s cn30xx;
157         struct cvmx_pip_bist_status_s cn31xx;
158         struct cvmx_pip_bist_status_s cn38xx;
159         struct cvmx_pip_bist_status_s cn38xxp2;
160         struct cvmx_pip_bist_status_cn50xx {
161                 uint64_t reserved_17_63:47;
162                 uint64_t bist:17;
163         } cn50xx;
164         struct cvmx_pip_bist_status_s cn52xx;
165         struct cvmx_pip_bist_status_s cn52xxp1;
166         struct cvmx_pip_bist_status_s cn56xx;
167         struct cvmx_pip_bist_status_s cn56xxp1;
168         struct cvmx_pip_bist_status_s cn58xx;
169         struct cvmx_pip_bist_status_s cn58xxp1;
170 };
171
172 union cvmx_pip_crc_ctlx {
173         uint64_t u64;
174         struct cvmx_pip_crc_ctlx_s {
175                 uint64_t reserved_2_63:62;
176                 uint64_t invres:1;
177                 uint64_t reflect:1;
178         } s;
179         struct cvmx_pip_crc_ctlx_s cn38xx;
180         struct cvmx_pip_crc_ctlx_s cn38xxp2;
181         struct cvmx_pip_crc_ctlx_s cn58xx;
182         struct cvmx_pip_crc_ctlx_s cn58xxp1;
183 };
184
185 union cvmx_pip_crc_ivx {
186         uint64_t u64;
187         struct cvmx_pip_crc_ivx_s {
188                 uint64_t reserved_32_63:32;
189                 uint64_t iv:32;
190         } s;
191         struct cvmx_pip_crc_ivx_s cn38xx;
192         struct cvmx_pip_crc_ivx_s cn38xxp2;
193         struct cvmx_pip_crc_ivx_s cn58xx;
194         struct cvmx_pip_crc_ivx_s cn58xxp1;
195 };
196
197 union cvmx_pip_dec_ipsecx {
198         uint64_t u64;
199         struct cvmx_pip_dec_ipsecx_s {
200                 uint64_t reserved_18_63:46;
201                 uint64_t tcp:1;
202                 uint64_t udp:1;
203                 uint64_t dprt:16;
204         } s;
205         struct cvmx_pip_dec_ipsecx_s cn30xx;
206         struct cvmx_pip_dec_ipsecx_s cn31xx;
207         struct cvmx_pip_dec_ipsecx_s cn38xx;
208         struct cvmx_pip_dec_ipsecx_s cn38xxp2;
209         struct cvmx_pip_dec_ipsecx_s cn50xx;
210         struct cvmx_pip_dec_ipsecx_s cn52xx;
211         struct cvmx_pip_dec_ipsecx_s cn52xxp1;
212         struct cvmx_pip_dec_ipsecx_s cn56xx;
213         struct cvmx_pip_dec_ipsecx_s cn56xxp1;
214         struct cvmx_pip_dec_ipsecx_s cn58xx;
215         struct cvmx_pip_dec_ipsecx_s cn58xxp1;
216 };
217
218 union cvmx_pip_dsa_src_grp {
219         uint64_t u64;
220         struct cvmx_pip_dsa_src_grp_s {
221                 uint64_t map15:4;
222                 uint64_t map14:4;
223                 uint64_t map13:4;
224                 uint64_t map12:4;
225                 uint64_t map11:4;
226                 uint64_t map10:4;
227                 uint64_t map9:4;
228                 uint64_t map8:4;
229                 uint64_t map7:4;
230                 uint64_t map6:4;
231                 uint64_t map5:4;
232                 uint64_t map4:4;
233                 uint64_t map3:4;
234                 uint64_t map2:4;
235                 uint64_t map1:4;
236                 uint64_t map0:4;
237         } s;
238         struct cvmx_pip_dsa_src_grp_s cn52xx;
239         struct cvmx_pip_dsa_src_grp_s cn52xxp1;
240         struct cvmx_pip_dsa_src_grp_s cn56xx;
241 };
242
243 union cvmx_pip_dsa_vid_grp {
244         uint64_t u64;
245         struct cvmx_pip_dsa_vid_grp_s {
246                 uint64_t map15:4;
247                 uint64_t map14:4;
248                 uint64_t map13:4;
249                 uint64_t map12:4;
250                 uint64_t map11:4;
251                 uint64_t map10:4;
252                 uint64_t map9:4;
253                 uint64_t map8:4;
254                 uint64_t map7:4;
255                 uint64_t map6:4;
256                 uint64_t map5:4;
257                 uint64_t map4:4;
258                 uint64_t map3:4;
259                 uint64_t map2:4;
260                 uint64_t map1:4;
261                 uint64_t map0:4;
262         } s;
263         struct cvmx_pip_dsa_vid_grp_s cn52xx;
264         struct cvmx_pip_dsa_vid_grp_s cn52xxp1;
265         struct cvmx_pip_dsa_vid_grp_s cn56xx;
266 };
267
268 union cvmx_pip_frm_len_chkx {
269         uint64_t u64;
270         struct cvmx_pip_frm_len_chkx_s {
271                 uint64_t reserved_32_63:32;
272                 uint64_t maxlen:16;
273                 uint64_t minlen:16;
274         } s;
275         struct cvmx_pip_frm_len_chkx_s cn50xx;
276         struct cvmx_pip_frm_len_chkx_s cn52xx;
277         struct cvmx_pip_frm_len_chkx_s cn52xxp1;
278         struct cvmx_pip_frm_len_chkx_s cn56xx;
279         struct cvmx_pip_frm_len_chkx_s cn56xxp1;
280 };
281
282 union cvmx_pip_gbl_cfg {
283         uint64_t u64;
284         struct cvmx_pip_gbl_cfg_s {
285                 uint64_t reserved_19_63:45;
286                 uint64_t tag_syn:1;
287                 uint64_t ip6_udp:1;
288                 uint64_t max_l2:1;
289                 uint64_t reserved_11_15:5;
290                 uint64_t raw_shf:3;
291                 uint64_t reserved_3_7:5;
292                 uint64_t nip_shf:3;
293         } s;
294         struct cvmx_pip_gbl_cfg_s cn30xx;
295         struct cvmx_pip_gbl_cfg_s cn31xx;
296         struct cvmx_pip_gbl_cfg_s cn38xx;
297         struct cvmx_pip_gbl_cfg_s cn38xxp2;
298         struct cvmx_pip_gbl_cfg_s cn50xx;
299         struct cvmx_pip_gbl_cfg_s cn52xx;
300         struct cvmx_pip_gbl_cfg_s cn52xxp1;
301         struct cvmx_pip_gbl_cfg_s cn56xx;
302         struct cvmx_pip_gbl_cfg_s cn56xxp1;
303         struct cvmx_pip_gbl_cfg_s cn58xx;
304         struct cvmx_pip_gbl_cfg_s cn58xxp1;
305 };
306
307 union cvmx_pip_gbl_ctl {
308         uint64_t u64;
309         struct cvmx_pip_gbl_ctl_s {
310                 uint64_t reserved_27_63:37;
311                 uint64_t dsa_grp_tvid:1;
312                 uint64_t dsa_grp_scmd:1;
313                 uint64_t dsa_grp_sid:1;
314                 uint64_t reserved_21_23:3;
315                 uint64_t ring_en:1;
316                 uint64_t reserved_17_19:3;
317                 uint64_t ignrs:1;
318                 uint64_t vs_wqe:1;
319                 uint64_t vs_qos:1;
320                 uint64_t l2_mal:1;
321                 uint64_t tcp_flag:1;
322                 uint64_t l4_len:1;
323                 uint64_t l4_chk:1;
324                 uint64_t l4_prt:1;
325                 uint64_t l4_mal:1;
326                 uint64_t reserved_6_7:2;
327                 uint64_t ip6_eext:2;
328                 uint64_t ip4_opts:1;
329                 uint64_t ip_hop:1;
330                 uint64_t ip_mal:1;
331                 uint64_t ip_chk:1;
332         } s;
333         struct cvmx_pip_gbl_ctl_cn30xx {
334                 uint64_t reserved_17_63:47;
335                 uint64_t ignrs:1;
336                 uint64_t vs_wqe:1;
337                 uint64_t vs_qos:1;
338                 uint64_t l2_mal:1;
339                 uint64_t tcp_flag:1;
340                 uint64_t l4_len:1;
341                 uint64_t l4_chk:1;
342                 uint64_t l4_prt:1;
343                 uint64_t l4_mal:1;
344                 uint64_t reserved_6_7:2;
345                 uint64_t ip6_eext:2;
346                 uint64_t ip4_opts:1;
347                 uint64_t ip_hop:1;
348                 uint64_t ip_mal:1;
349                 uint64_t ip_chk:1;
350         } cn30xx;
351         struct cvmx_pip_gbl_ctl_cn30xx cn31xx;
352         struct cvmx_pip_gbl_ctl_cn30xx cn38xx;
353         struct cvmx_pip_gbl_ctl_cn30xx cn38xxp2;
354         struct cvmx_pip_gbl_ctl_cn30xx cn50xx;
355         struct cvmx_pip_gbl_ctl_s cn52xx;
356         struct cvmx_pip_gbl_ctl_s cn52xxp1;
357         struct cvmx_pip_gbl_ctl_s cn56xx;
358         struct cvmx_pip_gbl_ctl_cn56xxp1 {
359                 uint64_t reserved_21_63:43;
360                 uint64_t ring_en:1;
361                 uint64_t reserved_17_19:3;
362                 uint64_t ignrs:1;
363                 uint64_t vs_wqe:1;
364                 uint64_t vs_qos:1;
365                 uint64_t l2_mal:1;
366                 uint64_t tcp_flag:1;
367                 uint64_t l4_len:1;
368                 uint64_t l4_chk:1;
369                 uint64_t l4_prt:1;
370                 uint64_t l4_mal:1;
371                 uint64_t reserved_6_7:2;
372                 uint64_t ip6_eext:2;
373                 uint64_t ip4_opts:1;
374                 uint64_t ip_hop:1;
375                 uint64_t ip_mal:1;
376                 uint64_t ip_chk:1;
377         } cn56xxp1;
378         struct cvmx_pip_gbl_ctl_cn30xx cn58xx;
379         struct cvmx_pip_gbl_ctl_cn30xx cn58xxp1;
380 };
381
382 union cvmx_pip_hg_pri_qos {
383         uint64_t u64;
384         struct cvmx_pip_hg_pri_qos_s {
385                 uint64_t reserved_11_63:53;
386                 uint64_t qos:3;
387                 uint64_t reserved_6_7:2;
388                 uint64_t pri:6;
389         } s;
390         struct cvmx_pip_hg_pri_qos_s cn52xx;
391         struct cvmx_pip_hg_pri_qos_s cn52xxp1;
392         struct cvmx_pip_hg_pri_qos_s cn56xx;
393 };
394
395 union cvmx_pip_int_en {
396         uint64_t u64;
397         struct cvmx_pip_int_en_s {
398                 uint64_t reserved_13_63:51;
399                 uint64_t punyerr:1;
400                 uint64_t lenerr:1;
401                 uint64_t maxerr:1;
402                 uint64_t minerr:1;
403                 uint64_t beperr:1;
404                 uint64_t feperr:1;
405                 uint64_t todoovr:1;
406                 uint64_t skprunt:1;
407                 uint64_t badtag:1;
408                 uint64_t prtnxa:1;
409                 uint64_t bckprs:1;
410                 uint64_t crcerr:1;
411                 uint64_t pktdrp:1;
412         } s;
413         struct cvmx_pip_int_en_cn30xx {
414                 uint64_t reserved_9_63:55;
415                 uint64_t beperr:1;
416                 uint64_t feperr:1;
417                 uint64_t todoovr:1;
418                 uint64_t skprunt:1;
419                 uint64_t badtag:1;
420                 uint64_t prtnxa:1;
421                 uint64_t bckprs:1;
422                 uint64_t crcerr:1;
423                 uint64_t pktdrp:1;
424         } cn30xx;
425         struct cvmx_pip_int_en_cn30xx cn31xx;
426         struct cvmx_pip_int_en_cn30xx cn38xx;
427         struct cvmx_pip_int_en_cn30xx cn38xxp2;
428         struct cvmx_pip_int_en_cn50xx {
429                 uint64_t reserved_12_63:52;
430                 uint64_t lenerr:1;
431                 uint64_t maxerr:1;
432                 uint64_t minerr:1;
433                 uint64_t beperr:1;
434                 uint64_t feperr:1;
435                 uint64_t todoovr:1;
436                 uint64_t skprunt:1;
437                 uint64_t badtag:1;
438                 uint64_t prtnxa:1;
439                 uint64_t bckprs:1;
440                 uint64_t reserved_1_1:1;
441                 uint64_t pktdrp:1;
442         } cn50xx;
443         struct cvmx_pip_int_en_cn52xx {
444                 uint64_t reserved_13_63:51;
445                 uint64_t punyerr:1;
446                 uint64_t lenerr:1;
447                 uint64_t maxerr:1;
448                 uint64_t minerr:1;
449                 uint64_t beperr:1;
450                 uint64_t feperr:1;
451                 uint64_t todoovr:1;
452                 uint64_t skprunt:1;
453                 uint64_t badtag:1;
454                 uint64_t prtnxa:1;
455                 uint64_t bckprs:1;
456                 uint64_t reserved_1_1:1;
457                 uint64_t pktdrp:1;
458         } cn52xx;
459         struct cvmx_pip_int_en_cn52xx cn52xxp1;
460         struct cvmx_pip_int_en_s cn56xx;
461         struct cvmx_pip_int_en_cn56xxp1 {
462                 uint64_t reserved_12_63:52;
463                 uint64_t lenerr:1;
464                 uint64_t maxerr:1;
465                 uint64_t minerr:1;
466                 uint64_t beperr:1;
467                 uint64_t feperr:1;
468                 uint64_t todoovr:1;
469                 uint64_t skprunt:1;
470                 uint64_t badtag:1;
471                 uint64_t prtnxa:1;
472                 uint64_t bckprs:1;
473                 uint64_t crcerr:1;
474                 uint64_t pktdrp:1;
475         } cn56xxp1;
476         struct cvmx_pip_int_en_cn58xx {
477                 uint64_t reserved_13_63:51;
478                 uint64_t punyerr:1;
479                 uint64_t reserved_9_11:3;
480                 uint64_t beperr:1;
481                 uint64_t feperr:1;
482                 uint64_t todoovr:1;
483                 uint64_t skprunt:1;
484                 uint64_t badtag:1;
485                 uint64_t prtnxa:1;
486                 uint64_t bckprs:1;
487                 uint64_t crcerr:1;
488                 uint64_t pktdrp:1;
489         } cn58xx;
490         struct cvmx_pip_int_en_cn30xx cn58xxp1;
491 };
492
493 union cvmx_pip_int_reg {
494         uint64_t u64;
495         struct cvmx_pip_int_reg_s {
496                 uint64_t reserved_13_63:51;
497                 uint64_t punyerr:1;
498                 uint64_t lenerr:1;
499                 uint64_t maxerr:1;
500                 uint64_t minerr:1;
501                 uint64_t beperr:1;
502                 uint64_t feperr:1;
503                 uint64_t todoovr:1;
504                 uint64_t skprunt:1;
505                 uint64_t badtag:1;
506                 uint64_t prtnxa:1;
507                 uint64_t bckprs:1;
508                 uint64_t crcerr:1;
509                 uint64_t pktdrp:1;
510         } s;
511         struct cvmx_pip_int_reg_cn30xx {
512                 uint64_t reserved_9_63:55;
513                 uint64_t beperr:1;
514                 uint64_t feperr:1;
515                 uint64_t todoovr:1;
516                 uint64_t skprunt:1;
517                 uint64_t badtag:1;
518                 uint64_t prtnxa:1;
519                 uint64_t bckprs:1;
520                 uint64_t crcerr:1;
521                 uint64_t pktdrp:1;
522         } cn30xx;
523         struct cvmx_pip_int_reg_cn30xx cn31xx;
524         struct cvmx_pip_int_reg_cn30xx cn38xx;
525         struct cvmx_pip_int_reg_cn30xx cn38xxp2;
526         struct cvmx_pip_int_reg_cn50xx {
527                 uint64_t reserved_12_63:52;
528                 uint64_t lenerr:1;
529                 uint64_t maxerr:1;
530                 uint64_t minerr:1;
531                 uint64_t beperr:1;
532                 uint64_t feperr:1;
533                 uint64_t todoovr:1;
534                 uint64_t skprunt:1;
535                 uint64_t badtag:1;
536                 uint64_t prtnxa:1;
537                 uint64_t bckprs:1;
538                 uint64_t reserved_1_1:1;
539                 uint64_t pktdrp:1;
540         } cn50xx;
541         struct cvmx_pip_int_reg_cn52xx {
542                 uint64_t reserved_13_63:51;
543                 uint64_t punyerr:1;
544                 uint64_t lenerr:1;
545                 uint64_t maxerr:1;
546                 uint64_t minerr:1;
547                 uint64_t beperr:1;
548                 uint64_t feperr:1;
549                 uint64_t todoovr:1;
550                 uint64_t skprunt:1;
551                 uint64_t badtag:1;
552                 uint64_t prtnxa:1;
553                 uint64_t bckprs:1;
554                 uint64_t reserved_1_1:1;
555                 uint64_t pktdrp:1;
556         } cn52xx;
557         struct cvmx_pip_int_reg_cn52xx cn52xxp1;
558         struct cvmx_pip_int_reg_s cn56xx;
559         struct cvmx_pip_int_reg_cn56xxp1 {
560                 uint64_t reserved_12_63:52;
561                 uint64_t lenerr:1;
562                 uint64_t maxerr:1;
563                 uint64_t minerr:1;
564                 uint64_t beperr:1;
565                 uint64_t feperr:1;
566                 uint64_t todoovr:1;
567                 uint64_t skprunt:1;
568                 uint64_t badtag:1;
569                 uint64_t prtnxa:1;
570                 uint64_t bckprs:1;
571                 uint64_t crcerr:1;
572                 uint64_t pktdrp:1;
573         } cn56xxp1;
574         struct cvmx_pip_int_reg_cn58xx {
575                 uint64_t reserved_13_63:51;
576                 uint64_t punyerr:1;
577                 uint64_t reserved_9_11:3;
578                 uint64_t beperr:1;
579                 uint64_t feperr:1;
580                 uint64_t todoovr:1;
581                 uint64_t skprunt:1;
582                 uint64_t badtag:1;
583                 uint64_t prtnxa:1;
584                 uint64_t bckprs:1;
585                 uint64_t crcerr:1;
586                 uint64_t pktdrp:1;
587         } cn58xx;
588         struct cvmx_pip_int_reg_cn30xx cn58xxp1;
589 };
590
591 union cvmx_pip_ip_offset {
592         uint64_t u64;
593         struct cvmx_pip_ip_offset_s {
594                 uint64_t reserved_3_63:61;
595                 uint64_t offset:3;
596         } s;
597         struct cvmx_pip_ip_offset_s cn30xx;
598         struct cvmx_pip_ip_offset_s cn31xx;
599         struct cvmx_pip_ip_offset_s cn38xx;
600         struct cvmx_pip_ip_offset_s cn38xxp2;
601         struct cvmx_pip_ip_offset_s cn50xx;
602         struct cvmx_pip_ip_offset_s cn52xx;
603         struct cvmx_pip_ip_offset_s cn52xxp1;
604         struct cvmx_pip_ip_offset_s cn56xx;
605         struct cvmx_pip_ip_offset_s cn56xxp1;
606         struct cvmx_pip_ip_offset_s cn58xx;
607         struct cvmx_pip_ip_offset_s cn58xxp1;
608 };
609
610 union cvmx_pip_prt_cfgx {
611         uint64_t u64;
612         struct cvmx_pip_prt_cfgx_s {
613                 uint64_t reserved_53_63:11;
614                 uint64_t pad_len:1;
615                 uint64_t vlan_len:1;
616                 uint64_t lenerr_en:1;
617                 uint64_t maxerr_en:1;
618                 uint64_t minerr_en:1;
619                 uint64_t grp_wat_47:4;
620                 uint64_t qos_wat_47:4;
621                 uint64_t reserved_37_39:3;
622                 uint64_t rawdrp:1;
623                 uint64_t tag_inc:2;
624                 uint64_t dyn_rs:1;
625                 uint64_t inst_hdr:1;
626                 uint64_t grp_wat:4;
627                 uint64_t hg_qos:1;
628                 uint64_t qos:3;
629                 uint64_t qos_wat:4;
630                 uint64_t qos_vsel:1;
631                 uint64_t qos_vod:1;
632                 uint64_t qos_diff:1;
633                 uint64_t qos_vlan:1;
634                 uint64_t reserved_13_15:3;
635                 uint64_t crc_en:1;
636                 uint64_t higig_en:1;
637                 uint64_t dsa_en:1;
638                 uint64_t mode:2;
639                 uint64_t reserved_7_7:1;
640                 uint64_t skip:7;
641         } s;
642         struct cvmx_pip_prt_cfgx_cn30xx {
643                 uint64_t reserved_37_63:27;
644                 uint64_t rawdrp:1;
645                 uint64_t tag_inc:2;
646                 uint64_t dyn_rs:1;
647                 uint64_t inst_hdr:1;
648                 uint64_t grp_wat:4;
649                 uint64_t reserved_27_27:1;
650                 uint64_t qos:3;
651                 uint64_t qos_wat:4;
652                 uint64_t reserved_18_19:2;
653                 uint64_t qos_diff:1;
654                 uint64_t qos_vlan:1;
655                 uint64_t reserved_10_15:6;
656                 uint64_t mode:2;
657                 uint64_t reserved_7_7:1;
658                 uint64_t skip:7;
659         } cn30xx;
660         struct cvmx_pip_prt_cfgx_cn30xx cn31xx;
661         struct cvmx_pip_prt_cfgx_cn38xx {
662                 uint64_t reserved_37_63:27;
663                 uint64_t rawdrp:1;
664                 uint64_t tag_inc:2;
665                 uint64_t dyn_rs:1;
666                 uint64_t inst_hdr:1;
667                 uint64_t grp_wat:4;
668                 uint64_t reserved_27_27:1;
669                 uint64_t qos:3;
670                 uint64_t qos_wat:4;
671                 uint64_t reserved_18_19:2;
672                 uint64_t qos_diff:1;
673                 uint64_t qos_vlan:1;
674                 uint64_t reserved_13_15:3;
675                 uint64_t crc_en:1;
676                 uint64_t reserved_10_11:2;
677                 uint64_t mode:2;
678                 uint64_t reserved_7_7:1;
679                 uint64_t skip:7;
680         } cn38xx;
681         struct cvmx_pip_prt_cfgx_cn38xx cn38xxp2;
682         struct cvmx_pip_prt_cfgx_cn50xx {
683                 uint64_t reserved_53_63:11;
684                 uint64_t pad_len:1;
685                 uint64_t vlan_len:1;
686                 uint64_t lenerr_en:1;
687                 uint64_t maxerr_en:1;
688                 uint64_t minerr_en:1;
689                 uint64_t grp_wat_47:4;
690                 uint64_t qos_wat_47:4;
691                 uint64_t reserved_37_39:3;
692                 uint64_t rawdrp:1;
693                 uint64_t tag_inc:2;
694                 uint64_t dyn_rs:1;
695                 uint64_t inst_hdr:1;
696                 uint64_t grp_wat:4;
697                 uint64_t reserved_27_27:1;
698                 uint64_t qos:3;
699                 uint64_t qos_wat:4;
700                 uint64_t reserved_19_19:1;
701                 uint64_t qos_vod:1;
702                 uint64_t qos_diff:1;
703                 uint64_t qos_vlan:1;
704                 uint64_t reserved_13_15:3;
705                 uint64_t crc_en:1;
706                 uint64_t reserved_10_11:2;
707                 uint64_t mode:2;
708                 uint64_t reserved_7_7:1;
709                 uint64_t skip:7;
710         } cn50xx;
711         struct cvmx_pip_prt_cfgx_s cn52xx;
712         struct cvmx_pip_prt_cfgx_s cn52xxp1;
713         struct cvmx_pip_prt_cfgx_s cn56xx;
714         struct cvmx_pip_prt_cfgx_cn50xx cn56xxp1;
715         struct cvmx_pip_prt_cfgx_cn58xx {
716                 uint64_t reserved_37_63:27;
717                 uint64_t rawdrp:1;
718                 uint64_t tag_inc:2;
719                 uint64_t dyn_rs:1;
720                 uint64_t inst_hdr:1;
721                 uint64_t grp_wat:4;
722                 uint64_t reserved_27_27:1;
723                 uint64_t qos:3;
724                 uint64_t qos_wat:4;
725                 uint64_t reserved_19_19:1;
726                 uint64_t qos_vod:1;
727                 uint64_t qos_diff:1;
728                 uint64_t qos_vlan:1;
729                 uint64_t reserved_13_15:3;
730                 uint64_t crc_en:1;
731                 uint64_t reserved_10_11:2;
732                 uint64_t mode:2;
733                 uint64_t reserved_7_7:1;
734                 uint64_t skip:7;
735         } cn58xx;
736         struct cvmx_pip_prt_cfgx_cn58xx cn58xxp1;
737 };
738
739 union cvmx_pip_prt_tagx {
740         uint64_t u64;
741         struct cvmx_pip_prt_tagx_s {
742                 uint64_t reserved_40_63:24;
743                 uint64_t grptagbase:4;
744                 uint64_t grptagmask:4;
745                 uint64_t grptag:1;
746                 uint64_t grptag_mskip:1;
747                 uint64_t tag_mode:2;
748                 uint64_t inc_vs:2;
749                 uint64_t inc_vlan:1;
750                 uint64_t inc_prt_flag:1;
751                 uint64_t ip6_dprt_flag:1;
752                 uint64_t ip4_dprt_flag:1;
753                 uint64_t ip6_sprt_flag:1;
754                 uint64_t ip4_sprt_flag:1;
755                 uint64_t ip6_nxth_flag:1;
756                 uint64_t ip4_pctl_flag:1;
757                 uint64_t ip6_dst_flag:1;
758                 uint64_t ip4_dst_flag:1;
759                 uint64_t ip6_src_flag:1;
760                 uint64_t ip4_src_flag:1;
761                 uint64_t tcp6_tag_type:2;
762                 uint64_t tcp4_tag_type:2;
763                 uint64_t ip6_tag_type:2;
764                 uint64_t ip4_tag_type:2;
765                 uint64_t non_tag_type:2;
766                 uint64_t grp:4;
767         } s;
768         struct cvmx_pip_prt_tagx_cn30xx {
769                 uint64_t reserved_40_63:24;
770                 uint64_t grptagbase:4;
771                 uint64_t grptagmask:4;
772                 uint64_t grptag:1;
773                 uint64_t reserved_30_30:1;
774                 uint64_t tag_mode:2;
775                 uint64_t inc_vs:2;
776                 uint64_t inc_vlan:1;
777                 uint64_t inc_prt_flag:1;
778                 uint64_t ip6_dprt_flag:1;
779                 uint64_t ip4_dprt_flag:1;
780                 uint64_t ip6_sprt_flag:1;
781                 uint64_t ip4_sprt_flag:1;
782                 uint64_t ip6_nxth_flag:1;
783                 uint64_t ip4_pctl_flag:1;
784                 uint64_t ip6_dst_flag:1;
785                 uint64_t ip4_dst_flag:1;
786                 uint64_t ip6_src_flag:1;
787                 uint64_t ip4_src_flag:1;
788                 uint64_t tcp6_tag_type:2;
789                 uint64_t tcp4_tag_type:2;
790                 uint64_t ip6_tag_type:2;
791                 uint64_t ip4_tag_type:2;
792                 uint64_t non_tag_type:2;
793                 uint64_t grp:4;
794         } cn30xx;
795         struct cvmx_pip_prt_tagx_cn30xx cn31xx;
796         struct cvmx_pip_prt_tagx_cn30xx cn38xx;
797         struct cvmx_pip_prt_tagx_cn30xx cn38xxp2;
798         struct cvmx_pip_prt_tagx_s cn50xx;
799         struct cvmx_pip_prt_tagx_s cn52xx;
800         struct cvmx_pip_prt_tagx_s cn52xxp1;
801         struct cvmx_pip_prt_tagx_s cn56xx;
802         struct cvmx_pip_prt_tagx_s cn56xxp1;
803         struct cvmx_pip_prt_tagx_cn30xx cn58xx;
804         struct cvmx_pip_prt_tagx_cn30xx cn58xxp1;
805 };
806
807 union cvmx_pip_qos_diffx {
808         uint64_t u64;
809         struct cvmx_pip_qos_diffx_s {
810                 uint64_t reserved_3_63:61;
811                 uint64_t qos:3;
812         } s;
813         struct cvmx_pip_qos_diffx_s cn30xx;
814         struct cvmx_pip_qos_diffx_s cn31xx;
815         struct cvmx_pip_qos_diffx_s cn38xx;
816         struct cvmx_pip_qos_diffx_s cn38xxp2;
817         struct cvmx_pip_qos_diffx_s cn50xx;
818         struct cvmx_pip_qos_diffx_s cn52xx;
819         struct cvmx_pip_qos_diffx_s cn52xxp1;
820         struct cvmx_pip_qos_diffx_s cn56xx;
821         struct cvmx_pip_qos_diffx_s cn56xxp1;
822         struct cvmx_pip_qos_diffx_s cn58xx;
823         struct cvmx_pip_qos_diffx_s cn58xxp1;
824 };
825
826 union cvmx_pip_qos_vlanx {
827         uint64_t u64;
828         struct cvmx_pip_qos_vlanx_s {
829                 uint64_t reserved_7_63:57;
830                 uint64_t qos1:3;
831                 uint64_t reserved_3_3:1;
832                 uint64_t qos:3;
833         } s;
834         struct cvmx_pip_qos_vlanx_cn30xx {
835                 uint64_t reserved_3_63:61;
836                 uint64_t qos:3;
837         } cn30xx;
838         struct cvmx_pip_qos_vlanx_cn30xx cn31xx;
839         struct cvmx_pip_qos_vlanx_cn30xx cn38xx;
840         struct cvmx_pip_qos_vlanx_cn30xx cn38xxp2;
841         struct cvmx_pip_qos_vlanx_cn30xx cn50xx;
842         struct cvmx_pip_qos_vlanx_s cn52xx;
843         struct cvmx_pip_qos_vlanx_s cn52xxp1;
844         struct cvmx_pip_qos_vlanx_s cn56xx;
845         struct cvmx_pip_qos_vlanx_cn30xx cn56xxp1;
846         struct cvmx_pip_qos_vlanx_cn30xx cn58xx;
847         struct cvmx_pip_qos_vlanx_cn30xx cn58xxp1;
848 };
849
850 union cvmx_pip_qos_watchx {
851         uint64_t u64;
852         struct cvmx_pip_qos_watchx_s {
853                 uint64_t reserved_48_63:16;
854                 uint64_t mask:16;
855                 uint64_t reserved_28_31:4;
856                 uint64_t grp:4;
857                 uint64_t reserved_23_23:1;
858                 uint64_t qos:3;
859                 uint64_t reserved_19_19:1;
860                 uint64_t match_type:3;
861                 uint64_t match_value:16;
862         } s;
863         struct cvmx_pip_qos_watchx_cn30xx {
864                 uint64_t reserved_48_63:16;
865                 uint64_t mask:16;
866                 uint64_t reserved_28_31:4;
867                 uint64_t grp:4;
868                 uint64_t reserved_23_23:1;
869                 uint64_t qos:3;
870                 uint64_t reserved_18_19:2;
871                 uint64_t match_type:2;
872                 uint64_t match_value:16;
873         } cn30xx;
874         struct cvmx_pip_qos_watchx_cn30xx cn31xx;
875         struct cvmx_pip_qos_watchx_cn30xx cn38xx;
876         struct cvmx_pip_qos_watchx_cn30xx cn38xxp2;
877         struct cvmx_pip_qos_watchx_s cn50xx;
878         struct cvmx_pip_qos_watchx_s cn52xx;
879         struct cvmx_pip_qos_watchx_s cn52xxp1;
880         struct cvmx_pip_qos_watchx_s cn56xx;
881         struct cvmx_pip_qos_watchx_s cn56xxp1;
882         struct cvmx_pip_qos_watchx_cn30xx cn58xx;
883         struct cvmx_pip_qos_watchx_cn30xx cn58xxp1;
884 };
885
886 union cvmx_pip_raw_word {
887         uint64_t u64;
888         struct cvmx_pip_raw_word_s {
889                 uint64_t reserved_56_63:8;
890                 uint64_t word:56;
891         } s;
892         struct cvmx_pip_raw_word_s cn30xx;
893         struct cvmx_pip_raw_word_s cn31xx;
894         struct cvmx_pip_raw_word_s cn38xx;
895         struct cvmx_pip_raw_word_s cn38xxp2;
896         struct cvmx_pip_raw_word_s cn50xx;
897         struct cvmx_pip_raw_word_s cn52xx;
898         struct cvmx_pip_raw_word_s cn52xxp1;
899         struct cvmx_pip_raw_word_s cn56xx;
900         struct cvmx_pip_raw_word_s cn56xxp1;
901         struct cvmx_pip_raw_word_s cn58xx;
902         struct cvmx_pip_raw_word_s cn58xxp1;
903 };
904
905 union cvmx_pip_sft_rst {
906         uint64_t u64;
907         struct cvmx_pip_sft_rst_s {
908                 uint64_t reserved_1_63:63;
909                 uint64_t rst:1;
910         } s;
911         struct cvmx_pip_sft_rst_s cn30xx;
912         struct cvmx_pip_sft_rst_s cn31xx;
913         struct cvmx_pip_sft_rst_s cn38xx;
914         struct cvmx_pip_sft_rst_s cn50xx;
915         struct cvmx_pip_sft_rst_s cn52xx;
916         struct cvmx_pip_sft_rst_s cn52xxp1;
917         struct cvmx_pip_sft_rst_s cn56xx;
918         struct cvmx_pip_sft_rst_s cn56xxp1;
919         struct cvmx_pip_sft_rst_s cn58xx;
920         struct cvmx_pip_sft_rst_s cn58xxp1;
921 };
922
923 union cvmx_pip_stat0_prtx {
924         uint64_t u64;
925         struct cvmx_pip_stat0_prtx_s {
926                 uint64_t drp_pkts:32;
927                 uint64_t drp_octs:32;
928         } s;
929         struct cvmx_pip_stat0_prtx_s cn30xx;
930         struct cvmx_pip_stat0_prtx_s cn31xx;
931         struct cvmx_pip_stat0_prtx_s cn38xx;
932         struct cvmx_pip_stat0_prtx_s cn38xxp2;
933         struct cvmx_pip_stat0_prtx_s cn50xx;
934         struct cvmx_pip_stat0_prtx_s cn52xx;
935         struct cvmx_pip_stat0_prtx_s cn52xxp1;
936         struct cvmx_pip_stat0_prtx_s cn56xx;
937         struct cvmx_pip_stat0_prtx_s cn56xxp1;
938         struct cvmx_pip_stat0_prtx_s cn58xx;
939         struct cvmx_pip_stat0_prtx_s cn58xxp1;
940 };
941
942 union cvmx_pip_stat1_prtx {
943         uint64_t u64;
944         struct cvmx_pip_stat1_prtx_s {
945                 uint64_t reserved_48_63:16;
946                 uint64_t octs:48;
947         } s;
948         struct cvmx_pip_stat1_prtx_s cn30xx;
949         struct cvmx_pip_stat1_prtx_s cn31xx;
950         struct cvmx_pip_stat1_prtx_s cn38xx;
951         struct cvmx_pip_stat1_prtx_s cn38xxp2;
952         struct cvmx_pip_stat1_prtx_s cn50xx;
953         struct cvmx_pip_stat1_prtx_s cn52xx;
954         struct cvmx_pip_stat1_prtx_s cn52xxp1;
955         struct cvmx_pip_stat1_prtx_s cn56xx;
956         struct cvmx_pip_stat1_prtx_s cn56xxp1;
957         struct cvmx_pip_stat1_prtx_s cn58xx;
958         struct cvmx_pip_stat1_prtx_s cn58xxp1;
959 };
960
961 union cvmx_pip_stat2_prtx {
962         uint64_t u64;
963         struct cvmx_pip_stat2_prtx_s {
964                 uint64_t pkts:32;
965                 uint64_t raw:32;
966         } s;
967         struct cvmx_pip_stat2_prtx_s cn30xx;
968         struct cvmx_pip_stat2_prtx_s cn31xx;
969         struct cvmx_pip_stat2_prtx_s cn38xx;
970         struct cvmx_pip_stat2_prtx_s cn38xxp2;
971         struct cvmx_pip_stat2_prtx_s cn50xx;
972         struct cvmx_pip_stat2_prtx_s cn52xx;
973         struct cvmx_pip_stat2_prtx_s cn52xxp1;
974         struct cvmx_pip_stat2_prtx_s cn56xx;
975         struct cvmx_pip_stat2_prtx_s cn56xxp1;
976         struct cvmx_pip_stat2_prtx_s cn58xx;
977         struct cvmx_pip_stat2_prtx_s cn58xxp1;
978 };
979
980 union cvmx_pip_stat3_prtx {
981         uint64_t u64;
982         struct cvmx_pip_stat3_prtx_s {
983                 uint64_t bcst:32;
984                 uint64_t mcst:32;
985         } s;
986         struct cvmx_pip_stat3_prtx_s cn30xx;
987         struct cvmx_pip_stat3_prtx_s cn31xx;
988         struct cvmx_pip_stat3_prtx_s cn38xx;
989         struct cvmx_pip_stat3_prtx_s cn38xxp2;
990         struct cvmx_pip_stat3_prtx_s cn50xx;
991         struct cvmx_pip_stat3_prtx_s cn52xx;
992         struct cvmx_pip_stat3_prtx_s cn52xxp1;
993         struct cvmx_pip_stat3_prtx_s cn56xx;
994         struct cvmx_pip_stat3_prtx_s cn56xxp1;
995         struct cvmx_pip_stat3_prtx_s cn58xx;
996         struct cvmx_pip_stat3_prtx_s cn58xxp1;
997 };
998
999 union cvmx_pip_stat4_prtx {
1000         uint64_t u64;
1001         struct cvmx_pip_stat4_prtx_s {
1002                 uint64_t h65to127:32;
1003                 uint64_t h64:32;
1004         } s;
1005         struct cvmx_pip_stat4_prtx_s cn30xx;
1006         struct cvmx_pip_stat4_prtx_s cn31xx;
1007         struct cvmx_pip_stat4_prtx_s cn38xx;
1008         struct cvmx_pip_stat4_prtx_s cn38xxp2;
1009         struct cvmx_pip_stat4_prtx_s cn50xx;
1010         struct cvmx_pip_stat4_prtx_s cn52xx;
1011         struct cvmx_pip_stat4_prtx_s cn52xxp1;
1012         struct cvmx_pip_stat4_prtx_s cn56xx;
1013         struct cvmx_pip_stat4_prtx_s cn56xxp1;
1014         struct cvmx_pip_stat4_prtx_s cn58xx;
1015         struct cvmx_pip_stat4_prtx_s cn58xxp1;
1016 };
1017
1018 union cvmx_pip_stat5_prtx {
1019         uint64_t u64;
1020         struct cvmx_pip_stat5_prtx_s {
1021                 uint64_t h256to511:32;
1022                 uint64_t h128to255:32;
1023         } s;
1024         struct cvmx_pip_stat5_prtx_s cn30xx;
1025         struct cvmx_pip_stat5_prtx_s cn31xx;
1026         struct cvmx_pip_stat5_prtx_s cn38xx;
1027         struct cvmx_pip_stat5_prtx_s cn38xxp2;
1028         struct cvmx_pip_stat5_prtx_s cn50xx;
1029         struct cvmx_pip_stat5_prtx_s cn52xx;
1030         struct cvmx_pip_stat5_prtx_s cn52xxp1;
1031         struct cvmx_pip_stat5_prtx_s cn56xx;
1032         struct cvmx_pip_stat5_prtx_s cn56xxp1;
1033         struct cvmx_pip_stat5_prtx_s cn58xx;
1034         struct cvmx_pip_stat5_prtx_s cn58xxp1;
1035 };
1036
1037 union cvmx_pip_stat6_prtx {
1038         uint64_t u64;
1039         struct cvmx_pip_stat6_prtx_s {
1040                 uint64_t h1024to1518:32;
1041                 uint64_t h512to1023:32;
1042         } s;
1043         struct cvmx_pip_stat6_prtx_s cn30xx;
1044         struct cvmx_pip_stat6_prtx_s cn31xx;
1045         struct cvmx_pip_stat6_prtx_s cn38xx;
1046         struct cvmx_pip_stat6_prtx_s cn38xxp2;
1047         struct cvmx_pip_stat6_prtx_s cn50xx;
1048         struct cvmx_pip_stat6_prtx_s cn52xx;
1049         struct cvmx_pip_stat6_prtx_s cn52xxp1;
1050         struct cvmx_pip_stat6_prtx_s cn56xx;
1051         struct cvmx_pip_stat6_prtx_s cn56xxp1;
1052         struct cvmx_pip_stat6_prtx_s cn58xx;
1053         struct cvmx_pip_stat6_prtx_s cn58xxp1;
1054 };
1055
1056 union cvmx_pip_stat7_prtx {
1057         uint64_t u64;
1058         struct cvmx_pip_stat7_prtx_s {
1059                 uint64_t fcs:32;
1060                 uint64_t h1519:32;
1061         } s;
1062         struct cvmx_pip_stat7_prtx_s cn30xx;
1063         struct cvmx_pip_stat7_prtx_s cn31xx;
1064         struct cvmx_pip_stat7_prtx_s cn38xx;
1065         struct cvmx_pip_stat7_prtx_s cn38xxp2;
1066         struct cvmx_pip_stat7_prtx_s cn50xx;
1067         struct cvmx_pip_stat7_prtx_s cn52xx;
1068         struct cvmx_pip_stat7_prtx_s cn52xxp1;
1069         struct cvmx_pip_stat7_prtx_s cn56xx;
1070         struct cvmx_pip_stat7_prtx_s cn56xxp1;
1071         struct cvmx_pip_stat7_prtx_s cn58xx;
1072         struct cvmx_pip_stat7_prtx_s cn58xxp1;
1073 };
1074
1075 union cvmx_pip_stat8_prtx {
1076         uint64_t u64;
1077         struct cvmx_pip_stat8_prtx_s {
1078                 uint64_t frag:32;
1079                 uint64_t undersz:32;
1080         } s;
1081         struct cvmx_pip_stat8_prtx_s cn30xx;
1082         struct cvmx_pip_stat8_prtx_s cn31xx;
1083         struct cvmx_pip_stat8_prtx_s cn38xx;
1084         struct cvmx_pip_stat8_prtx_s cn38xxp2;
1085         struct cvmx_pip_stat8_prtx_s cn50xx;
1086         struct cvmx_pip_stat8_prtx_s cn52xx;
1087         struct cvmx_pip_stat8_prtx_s cn52xxp1;
1088         struct cvmx_pip_stat8_prtx_s cn56xx;
1089         struct cvmx_pip_stat8_prtx_s cn56xxp1;
1090         struct cvmx_pip_stat8_prtx_s cn58xx;
1091         struct cvmx_pip_stat8_prtx_s cn58xxp1;
1092 };
1093
1094 union cvmx_pip_stat9_prtx {
1095         uint64_t u64;
1096         struct cvmx_pip_stat9_prtx_s {
1097                 uint64_t jabber:32;
1098                 uint64_t oversz:32;
1099         } s;
1100         struct cvmx_pip_stat9_prtx_s cn30xx;
1101         struct cvmx_pip_stat9_prtx_s cn31xx;
1102         struct cvmx_pip_stat9_prtx_s cn38xx;
1103         struct cvmx_pip_stat9_prtx_s cn38xxp2;
1104         struct cvmx_pip_stat9_prtx_s cn50xx;
1105         struct cvmx_pip_stat9_prtx_s cn52xx;
1106         struct cvmx_pip_stat9_prtx_s cn52xxp1;
1107         struct cvmx_pip_stat9_prtx_s cn56xx;
1108         struct cvmx_pip_stat9_prtx_s cn56xxp1;
1109         struct cvmx_pip_stat9_prtx_s cn58xx;
1110         struct cvmx_pip_stat9_prtx_s cn58xxp1;
1111 };
1112
1113 union cvmx_pip_stat_ctl {
1114         uint64_t u64;
1115         struct cvmx_pip_stat_ctl_s {
1116                 uint64_t reserved_1_63:63;
1117                 uint64_t rdclr:1;
1118         } s;
1119         struct cvmx_pip_stat_ctl_s cn30xx;
1120         struct cvmx_pip_stat_ctl_s cn31xx;
1121         struct cvmx_pip_stat_ctl_s cn38xx;
1122         struct cvmx_pip_stat_ctl_s cn38xxp2;
1123         struct cvmx_pip_stat_ctl_s cn50xx;
1124         struct cvmx_pip_stat_ctl_s cn52xx;
1125         struct cvmx_pip_stat_ctl_s cn52xxp1;
1126         struct cvmx_pip_stat_ctl_s cn56xx;
1127         struct cvmx_pip_stat_ctl_s cn56xxp1;
1128         struct cvmx_pip_stat_ctl_s cn58xx;
1129         struct cvmx_pip_stat_ctl_s cn58xxp1;
1130 };
1131
1132 union cvmx_pip_stat_inb_errsx {
1133         uint64_t u64;
1134         struct cvmx_pip_stat_inb_errsx_s {
1135                 uint64_t reserved_16_63:48;
1136                 uint64_t errs:16;
1137         } s;
1138         struct cvmx_pip_stat_inb_errsx_s cn30xx;
1139         struct cvmx_pip_stat_inb_errsx_s cn31xx;
1140         struct cvmx_pip_stat_inb_errsx_s cn38xx;
1141         struct cvmx_pip_stat_inb_errsx_s cn38xxp2;
1142         struct cvmx_pip_stat_inb_errsx_s cn50xx;
1143         struct cvmx_pip_stat_inb_errsx_s cn52xx;
1144         struct cvmx_pip_stat_inb_errsx_s cn52xxp1;
1145         struct cvmx_pip_stat_inb_errsx_s cn56xx;
1146         struct cvmx_pip_stat_inb_errsx_s cn56xxp1;
1147         struct cvmx_pip_stat_inb_errsx_s cn58xx;
1148         struct cvmx_pip_stat_inb_errsx_s cn58xxp1;
1149 };
1150
1151 union cvmx_pip_stat_inb_octsx {
1152         uint64_t u64;
1153         struct cvmx_pip_stat_inb_octsx_s {
1154                 uint64_t reserved_48_63:16;
1155                 uint64_t octs:48;
1156         } s;
1157         struct cvmx_pip_stat_inb_octsx_s cn30xx;
1158         struct cvmx_pip_stat_inb_octsx_s cn31xx;
1159         struct cvmx_pip_stat_inb_octsx_s cn38xx;
1160         struct cvmx_pip_stat_inb_octsx_s cn38xxp2;
1161         struct cvmx_pip_stat_inb_octsx_s cn50xx;
1162         struct cvmx_pip_stat_inb_octsx_s cn52xx;
1163         struct cvmx_pip_stat_inb_octsx_s cn52xxp1;
1164         struct cvmx_pip_stat_inb_octsx_s cn56xx;
1165         struct cvmx_pip_stat_inb_octsx_s cn56xxp1;
1166         struct cvmx_pip_stat_inb_octsx_s cn58xx;
1167         struct cvmx_pip_stat_inb_octsx_s cn58xxp1;
1168 };
1169
1170 union cvmx_pip_stat_inb_pktsx {
1171         uint64_t u64;
1172         struct cvmx_pip_stat_inb_pktsx_s {
1173                 uint64_t reserved_32_63:32;
1174                 uint64_t pkts:32;
1175         } s;
1176         struct cvmx_pip_stat_inb_pktsx_s cn30xx;
1177         struct cvmx_pip_stat_inb_pktsx_s cn31xx;
1178         struct cvmx_pip_stat_inb_pktsx_s cn38xx;
1179         struct cvmx_pip_stat_inb_pktsx_s cn38xxp2;
1180         struct cvmx_pip_stat_inb_pktsx_s cn50xx;
1181         struct cvmx_pip_stat_inb_pktsx_s cn52xx;
1182         struct cvmx_pip_stat_inb_pktsx_s cn52xxp1;
1183         struct cvmx_pip_stat_inb_pktsx_s cn56xx;
1184         struct cvmx_pip_stat_inb_pktsx_s cn56xxp1;
1185         struct cvmx_pip_stat_inb_pktsx_s cn58xx;
1186         struct cvmx_pip_stat_inb_pktsx_s cn58xxp1;
1187 };
1188
1189 union cvmx_pip_tag_incx {
1190         uint64_t u64;
1191         struct cvmx_pip_tag_incx_s {
1192                 uint64_t reserved_8_63:56;
1193                 uint64_t en:8;
1194         } s;
1195         struct cvmx_pip_tag_incx_s cn30xx;
1196         struct cvmx_pip_tag_incx_s cn31xx;
1197         struct cvmx_pip_tag_incx_s cn38xx;
1198         struct cvmx_pip_tag_incx_s cn38xxp2;
1199         struct cvmx_pip_tag_incx_s cn50xx;
1200         struct cvmx_pip_tag_incx_s cn52xx;
1201         struct cvmx_pip_tag_incx_s cn52xxp1;
1202         struct cvmx_pip_tag_incx_s cn56xx;
1203         struct cvmx_pip_tag_incx_s cn56xxp1;
1204         struct cvmx_pip_tag_incx_s cn58xx;
1205         struct cvmx_pip_tag_incx_s cn58xxp1;
1206 };
1207
1208 union cvmx_pip_tag_mask {
1209         uint64_t u64;
1210         struct cvmx_pip_tag_mask_s {
1211                 uint64_t reserved_16_63:48;
1212                 uint64_t mask:16;
1213         } s;
1214         struct cvmx_pip_tag_mask_s cn30xx;
1215         struct cvmx_pip_tag_mask_s cn31xx;
1216         struct cvmx_pip_tag_mask_s cn38xx;
1217         struct cvmx_pip_tag_mask_s cn38xxp2;
1218         struct cvmx_pip_tag_mask_s cn50xx;
1219         struct cvmx_pip_tag_mask_s cn52xx;
1220         struct cvmx_pip_tag_mask_s cn52xxp1;
1221         struct cvmx_pip_tag_mask_s cn56xx;
1222         struct cvmx_pip_tag_mask_s cn56xxp1;
1223         struct cvmx_pip_tag_mask_s cn58xx;
1224         struct cvmx_pip_tag_mask_s cn58xxp1;
1225 };
1226
1227 union cvmx_pip_tag_secret {
1228         uint64_t u64;
1229         struct cvmx_pip_tag_secret_s {
1230                 uint64_t reserved_32_63:32;
1231                 uint64_t dst:16;
1232                 uint64_t src:16;
1233         } s;
1234         struct cvmx_pip_tag_secret_s cn30xx;
1235         struct cvmx_pip_tag_secret_s cn31xx;
1236         struct cvmx_pip_tag_secret_s cn38xx;
1237         struct cvmx_pip_tag_secret_s cn38xxp2;
1238         struct cvmx_pip_tag_secret_s cn50xx;
1239         struct cvmx_pip_tag_secret_s cn52xx;
1240         struct cvmx_pip_tag_secret_s cn52xxp1;
1241         struct cvmx_pip_tag_secret_s cn56xx;
1242         struct cvmx_pip_tag_secret_s cn56xxp1;
1243         struct cvmx_pip_tag_secret_s cn58xx;
1244         struct cvmx_pip_tag_secret_s cn58xxp1;
1245 };
1246
1247 union cvmx_pip_todo_entry {
1248         uint64_t u64;
1249         struct cvmx_pip_todo_entry_s {
1250                 uint64_t val:1;
1251                 uint64_t reserved_62_62:1;
1252                 uint64_t entry:62;
1253         } s;
1254         struct cvmx_pip_todo_entry_s cn30xx;
1255         struct cvmx_pip_todo_entry_s cn31xx;
1256         struct cvmx_pip_todo_entry_s cn38xx;
1257         struct cvmx_pip_todo_entry_s cn38xxp2;
1258         struct cvmx_pip_todo_entry_s cn50xx;
1259         struct cvmx_pip_todo_entry_s cn52xx;
1260         struct cvmx_pip_todo_entry_s cn52xxp1;
1261         struct cvmx_pip_todo_entry_s cn56xx;
1262         struct cvmx_pip_todo_entry_s cn56xxp1;
1263         struct cvmx_pip_todo_entry_s cn58xx;
1264         struct cvmx_pip_todo_entry_s cn58xxp1;
1265 };
1266
1267 #endif