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 pki.
7  */
8 
9 #ifndef __CVMX_PKI_DEFS_H__
10 #define __CVMX_PKI_DEFS_H__
11 
12 #define CVMX_PKI_ACTIVE0	     (0x0001180044000220ull)
13 #define CVMX_PKI_ACTIVE1	     (0x0001180044000230ull)
14 #define CVMX_PKI_ACTIVE2	     (0x0001180044000240ull)
15 #define CVMX_PKI_AURAX_CFG(offset)   (0x0001180044900000ull + ((offset) & 1023) * 8)
16 #define CVMX_PKI_BIST_STATUS0	     (0x0001180044000080ull)
17 #define CVMX_PKI_BIST_STATUS1	     (0x0001180044000088ull)
18 #define CVMX_PKI_BIST_STATUS2	     (0x0001180044000090ull)
19 #define CVMX_PKI_BPIDX_STATE(offset) (0x0001180044B00000ull + ((offset) & 1023) * 8)
20 #define CVMX_PKI_BUF_CTL	     (0x0001180044000100ull)
21 #define CVMX_PKI_CHANX_CFG(offset)   (0x0001180044A00000ull + ((offset) & 4095) * 8)
22 #define CVMX_PKI_CLKEN		     (0x0001180044000410ull)
23 #define CVMX_PKI_CLX_ECC_CTL(offset) (0x000118004400C020ull + ((offset) & 3) * 0x10000ull)
24 #define CVMX_PKI_CLX_ECC_INT(offset) (0x000118004400C010ull + ((offset) & 3) * 0x10000ull)
25 #define CVMX_PKI_CLX_INT(offset)     (0x000118004400C000ull + ((offset) & 3) * 0x10000ull)
26 #define CVMX_PKI_CLX_PCAMX_ACTIONX(a, b, c)                                                        \
27 	(0x0001180044708000ull + ((a) << 16) + ((b) << 12) + ((c) << 3))
28 #define CVMX_PKI_CLX_PCAMX_MATCHX(a, b, c)                                                         \
29 	(0x0001180044704000ull + ((a) << 16) + ((b) << 12) + ((c) << 3))
30 #define CVMX_PKI_CLX_PCAMX_TERMX(a, b, c)                                                          \
31 	(0x0001180044700000ull + ((a) << 16) + ((b) << 12) + ((c) << 3))
32 #define CVMX_PKI_CLX_PKINDX_CFG(offset, block_id)                                                  \
33 	(0x0001180044300040ull + (((offset) & 63) + ((block_id) & 3) * 0x100ull) * 256)
34 #define CVMX_PKI_CLX_PKINDX_KMEMX(a, b, c)                                                         \
35 	(0x0001180044200000ull + ((a) << 16) + ((b) << 8) + ((c) << 3))
36 #define CVMX_PKI_CLX_PKINDX_L2_CUSTOM(offset, block_id)                                            \
37 	(0x0001180044300058ull + (((offset) & 63) + ((block_id) & 3) * 0x100ull) * 256)
38 #define CVMX_PKI_CLX_PKINDX_LG_CUSTOM(offset, block_id)                                            \
39 	(0x0001180044300060ull + (((offset) & 63) + ((block_id) & 3) * 0x100ull) * 256)
40 #define CVMX_PKI_CLX_PKINDX_SKIP(offset, block_id)                                                 \
41 	(0x0001180044300050ull + (((offset) & 63) + ((block_id) & 3) * 0x100ull) * 256)
42 #define CVMX_PKI_CLX_PKINDX_STYLE(offset, block_id)                                                \
43 	(0x0001180044300048ull + (((offset) & 63) + ((block_id) & 3) * 0x100ull) * 256)
44 #define CVMX_PKI_CLX_SMEMX(offset, block_id)                                                       \
45 	(0x0001180044400000ull + (((offset) & 2047) + ((block_id) & 3) * 0x2000ull) * 8)
46 #define CVMX_PKI_CLX_START(offset) (0x000118004400C030ull + ((offset) & 3) * 0x10000ull)
47 #define CVMX_PKI_CLX_STYLEX_ALG(offset, block_id)                                                  \
48 	(0x0001180044501000ull + (((offset) & 63) + ((block_id) & 3) * 0x2000ull) * 8)
49 #define CVMX_PKI_CLX_STYLEX_CFG(offset, block_id)                                                  \
50 	(0x0001180044500000ull + (((offset) & 63) + ((block_id) & 3) * 0x2000ull) * 8)
51 #define CVMX_PKI_CLX_STYLEX_CFG2(offset, block_id)                                                 \
52 	(0x0001180044500800ull + (((offset) & 63) + ((block_id) & 3) * 0x2000ull) * 8)
53 #define CVMX_PKI_DSTATX_STAT0(offset)	 (0x0001180044C00000ull + ((offset) & 1023) * 64)
54 #define CVMX_PKI_DSTATX_STAT1(offset)	 (0x0001180044C00008ull + ((offset) & 1023) * 64)
55 #define CVMX_PKI_DSTATX_STAT2(offset)	 (0x0001180044C00010ull + ((offset) & 1023) * 64)
56 #define CVMX_PKI_DSTATX_STAT3(offset)	 (0x0001180044C00018ull + ((offset) & 1023) * 64)
57 #define CVMX_PKI_DSTATX_STAT4(offset)	 (0x0001180044C00020ull + ((offset) & 1023) * 64)
58 #define CVMX_PKI_ECC_CTL0		 (0x0001180044000060ull)
59 #define CVMX_PKI_ECC_CTL1		 (0x0001180044000068ull)
60 #define CVMX_PKI_ECC_CTL2		 (0x0001180044000070ull)
61 #define CVMX_PKI_ECC_INT0		 (0x0001180044000040ull)
62 #define CVMX_PKI_ECC_INT1		 (0x0001180044000048ull)
63 #define CVMX_PKI_ECC_INT2		 (0x0001180044000050ull)
64 #define CVMX_PKI_FRM_LEN_CHKX(offset)	 (0x0001180044004000ull + ((offset) & 1) * 8)
65 #define CVMX_PKI_GBL_PEN		 (0x0001180044000200ull)
66 #define CVMX_PKI_GEN_INT		 (0x0001180044000020ull)
67 #define CVMX_PKI_ICGX_CFG(offset)	 (0x000118004400A000ull)
68 #define CVMX_PKI_IMEMX(offset)		 (0x0001180044100000ull + ((offset) & 2047) * 8)
69 #define CVMX_PKI_LTYPEX_MAP(offset)	 (0x0001180044005000ull + ((offset) & 31) * 8)
70 #define CVMX_PKI_PBE_ECO		 (0x0001180044000710ull)
71 #define CVMX_PKI_PCAM_LOOKUP		 (0x0001180044000500ull)
72 #define CVMX_PKI_PCAM_RESULT		 (0x0001180044000510ull)
73 #define CVMX_PKI_PFE_DIAG		 (0x0001180044000560ull)
74 #define CVMX_PKI_PFE_ECO		 (0x0001180044000720ull)
75 #define CVMX_PKI_PIX_CLKEN		 (0x0001180044000600ull)
76 #define CVMX_PKI_PIX_DIAG		 (0x0001180044000580ull)
77 #define CVMX_PKI_PIX_ECO		 (0x0001180044000700ull)
78 #define CVMX_PKI_PKINDX_ICGSEL(offset)	 (0x0001180044010000ull + ((offset) & 63) * 8)
79 #define CVMX_PKI_PKNDX_INB_STAT0(offset) (0x0001180044F00000ull + ((offset) & 63) * 256)
80 #define CVMX_PKI_PKNDX_INB_STAT1(offset) (0x0001180044F00008ull + ((offset) & 63) * 256)
81 #define CVMX_PKI_PKNDX_INB_STAT2(offset) (0x0001180044F00010ull + ((offset) & 63) * 256)
82 #define CVMX_PKI_PKT_ERR		 (0x0001180044000030ull)
83 #define CVMX_PKI_PTAG_AVAIL		 (0x0001180044000130ull)
84 #define CVMX_PKI_QPG_TBLBX(offset)	 (0x0001180044820000ull + ((offset) & 2047) * 8)
85 #define CVMX_PKI_QPG_TBLX(offset)	 (0x0001180044800000ull + ((offset) & 2047) * 8)
86 #define CVMX_PKI_REASM_SOPX(offset)	 (0x0001180044006000ull + ((offset) & 1) * 8)
87 #define CVMX_PKI_REQ_WGT		 (0x0001180044000120ull)
88 #define CVMX_PKI_SFT_RST		 (0x0001180044000010ull)
89 #define CVMX_PKI_STATX_HIST0(offset)	 (0x0001180044E00000ull + ((offset) & 63) * 256)
90 #define CVMX_PKI_STATX_HIST1(offset)	 (0x0001180044E00008ull + ((offset) & 63) * 256)
91 #define CVMX_PKI_STATX_HIST2(offset)	 (0x0001180044E00010ull + ((offset) & 63) * 256)
92 #define CVMX_PKI_STATX_HIST3(offset)	 (0x0001180044E00018ull + ((offset) & 63) * 256)
93 #define CVMX_PKI_STATX_HIST4(offset)	 (0x0001180044E00020ull + ((offset) & 63) * 256)
94 #define CVMX_PKI_STATX_HIST5(offset)	 (0x0001180044E00028ull + ((offset) & 63) * 256)
95 #define CVMX_PKI_STATX_HIST6(offset)	 (0x0001180044E00030ull + ((offset) & 63) * 256)
96 #define CVMX_PKI_STATX_STAT0(offset)	 (0x0001180044E00038ull + ((offset) & 63) * 256)
97 #define CVMX_PKI_STATX_STAT1(offset)	 (0x0001180044E00040ull + ((offset) & 63) * 256)
98 #define CVMX_PKI_STATX_STAT10(offset)	 (0x0001180044E00088ull + ((offset) & 63) * 256)
99 #define CVMX_PKI_STATX_STAT11(offset)	 (0x0001180044E00090ull + ((offset) & 63) * 256)
100 #define CVMX_PKI_STATX_STAT12(offset)	 (0x0001180044E00098ull + ((offset) & 63) * 256)
101 #define CVMX_PKI_STATX_STAT13(offset)	 (0x0001180044E000A0ull + ((offset) & 63) * 256)
102 #define CVMX_PKI_STATX_STAT14(offset)	 (0x0001180044E000A8ull + ((offset) & 63) * 256)
103 #define CVMX_PKI_STATX_STAT15(offset)	 (0x0001180044E000B0ull + ((offset) & 63) * 256)
104 #define CVMX_PKI_STATX_STAT16(offset)	 (0x0001180044E000B8ull + ((offset) & 63) * 256)
105 #define CVMX_PKI_STATX_STAT17(offset)	 (0x0001180044E000C0ull + ((offset) & 63) * 256)
106 #define CVMX_PKI_STATX_STAT18(offset)	 (0x0001180044E000C8ull + ((offset) & 63) * 256)
107 #define CVMX_PKI_STATX_STAT2(offset)	 (0x0001180044E00048ull + ((offset) & 63) * 256)
108 #define CVMX_PKI_STATX_STAT3(offset)	 (0x0001180044E00050ull + ((offset) & 63) * 256)
109 #define CVMX_PKI_STATX_STAT4(offset)	 (0x0001180044E00058ull + ((offset) & 63) * 256)
110 #define CVMX_PKI_STATX_STAT5(offset)	 (0x0001180044E00060ull + ((offset) & 63) * 256)
111 #define CVMX_PKI_STATX_STAT6(offset)	 (0x0001180044E00068ull + ((offset) & 63) * 256)
112 #define CVMX_PKI_STATX_STAT7(offset)	 (0x0001180044E00070ull + ((offset) & 63) * 256)
113 #define CVMX_PKI_STATX_STAT8(offset)	 (0x0001180044E00078ull + ((offset) & 63) * 256)
114 #define CVMX_PKI_STATX_STAT9(offset)	 (0x0001180044E00080ull + ((offset) & 63) * 256)
115 #define CVMX_PKI_STAT_CTL		 (0x0001180044000110ull)
116 #define CVMX_PKI_STYLEX_BUF(offset)	 (0x0001180044024000ull + ((offset) & 63) * 8)
117 #define CVMX_PKI_STYLEX_TAG_MASK(offset) (0x0001180044021000ull + ((offset) & 63) * 8)
118 #define CVMX_PKI_STYLEX_TAG_SEL(offset)	 (0x0001180044020000ull + ((offset) & 63) * 8)
119 #define CVMX_PKI_STYLEX_WQ2(offset)	 (0x0001180044022000ull + ((offset) & 63) * 8)
120 #define CVMX_PKI_STYLEX_WQ4(offset)	 (0x0001180044023000ull + ((offset) & 63) * 8)
121 #define CVMX_PKI_TAG_INCX_CTL(offset)	 (0x0001180044007000ull + ((offset) & 31) * 8)
122 #define CVMX_PKI_TAG_INCX_MASK(offset)	 (0x0001180044008000ull + ((offset) & 31) * 8)
123 #define CVMX_PKI_TAG_SECRET		 (0x0001180044000430ull)
124 #define CVMX_PKI_X2P_REQ_OFL		 (0x0001180044000038ull)
125 
126 /**
127  * cvmx_pki_active0
128  */
129 union cvmx_pki_active0 {
130 	u64 u64;
131 	struct cvmx_pki_active0_s {
132 		u64 reserved_1_63 : 63;
133 		u64 pfe_active : 1;
134 	} s;
135 	struct cvmx_pki_active0_s cn73xx;
136 	struct cvmx_pki_active0_s cn78xx;
137 	struct cvmx_pki_active0_s cn78xxp1;
138 	struct cvmx_pki_active0_s cnf75xx;
139 };
140 
141 typedef union cvmx_pki_active0 cvmx_pki_active0_t;
142 
143 /**
144  * cvmx_pki_active1
145  */
146 union cvmx_pki_active1 {
147 	u64 u64;
148 	struct cvmx_pki_active1_s {
149 		u64 reserved_4_63 : 60;
150 		u64 fpc_active : 1;
151 		u64 iobp_active : 1;
152 		u64 sws_active : 1;
153 		u64 pbtag_active : 1;
154 	} s;
155 	struct cvmx_pki_active1_s cn73xx;
156 	struct cvmx_pki_active1_s cn78xx;
157 	struct cvmx_pki_active1_s cn78xxp1;
158 	struct cvmx_pki_active1_s cnf75xx;
159 };
160 
161 typedef union cvmx_pki_active1 cvmx_pki_active1_t;
162 
163 /**
164  * cvmx_pki_active2
165  */
166 union cvmx_pki_active2 {
167 	u64 u64;
168 	struct cvmx_pki_active2_s {
169 		u64 reserved_5_63 : 59;
170 		u64 pix_active : 5;
171 	} s;
172 	struct cvmx_pki_active2_s cn73xx;
173 	struct cvmx_pki_active2_s cn78xx;
174 	struct cvmx_pki_active2_s cn78xxp1;
175 	struct cvmx_pki_active2_s cnf75xx;
176 };
177 
178 typedef union cvmx_pki_active2 cvmx_pki_active2_t;
179 
180 /**
181  * cvmx_pki_aura#_cfg
182  *
183  * This register configures aura backpressure, etc.
184  *
185  */
186 union cvmx_pki_aurax_cfg {
187 	u64 u64;
188 	struct cvmx_pki_aurax_cfg_s {
189 		u64 reserved_32_63 : 32;
190 		u64 pkt_add : 2;
191 		u64 reserved_19_29 : 11;
192 		u64 ena_red : 1;
193 		u64 ena_drop : 1;
194 		u64 ena_bp : 1;
195 		u64 reserved_10_15 : 6;
196 		u64 bpid : 10;
197 	} s;
198 	struct cvmx_pki_aurax_cfg_s cn73xx;
199 	struct cvmx_pki_aurax_cfg_s cn78xx;
200 	struct cvmx_pki_aurax_cfg_s cn78xxp1;
201 	struct cvmx_pki_aurax_cfg_s cnf75xx;
202 };
203 
204 typedef union cvmx_pki_aurax_cfg cvmx_pki_aurax_cfg_t;
205 
206 /**
207  * cvmx_pki_bist_status0
208  *
209  * This register indicates BIST status.
210  *
211  */
212 union cvmx_pki_bist_status0 {
213 	u64 u64;
214 	struct cvmx_pki_bist_status0_s {
215 		u64 reserved_31_63 : 33;
216 		u64 bist : 31;
217 	} s;
218 	struct cvmx_pki_bist_status0_s cn73xx;
219 	struct cvmx_pki_bist_status0_s cn78xx;
220 	struct cvmx_pki_bist_status0_s cn78xxp1;
221 	struct cvmx_pki_bist_status0_s cnf75xx;
222 };
223 
224 typedef union cvmx_pki_bist_status0 cvmx_pki_bist_status0_t;
225 
226 /**
227  * cvmx_pki_bist_status1
228  *
229  * This register indicates BIST status.
230  *
231  */
232 union cvmx_pki_bist_status1 {
233 	u64 u64;
234 	struct cvmx_pki_bist_status1_s {
235 		u64 reserved_26_63 : 38;
236 		u64 bist : 26;
237 	} s;
238 	struct cvmx_pki_bist_status1_s cn73xx;
239 	struct cvmx_pki_bist_status1_s cn78xx;
240 	struct cvmx_pki_bist_status1_cn78xxp1 {
241 		u64 reserved_21_63 : 43;
242 		u64 bist : 21;
243 	} cn78xxp1;
244 	struct cvmx_pki_bist_status1_s cnf75xx;
245 };
246 
247 typedef union cvmx_pki_bist_status1 cvmx_pki_bist_status1_t;
248 
249 /**
250  * cvmx_pki_bist_status2
251  *
252  * This register indicates BIST status.
253  *
254  */
255 union cvmx_pki_bist_status2 {
256 	u64 u64;
257 	struct cvmx_pki_bist_status2_s {
258 		u64 reserved_25_63 : 39;
259 		u64 bist : 25;
260 	} s;
261 	struct cvmx_pki_bist_status2_s cn73xx;
262 	struct cvmx_pki_bist_status2_s cn78xx;
263 	struct cvmx_pki_bist_status2_s cn78xxp1;
264 	struct cvmx_pki_bist_status2_s cnf75xx;
265 };
266 
267 typedef union cvmx_pki_bist_status2 cvmx_pki_bist_status2_t;
268 
269 /**
270  * cvmx_pki_bpid#_state
271  *
272  * This register shows the current bpid state for diagnostics.
273  *
274  */
275 union cvmx_pki_bpidx_state {
276 	u64 u64;
277 	struct cvmx_pki_bpidx_state_s {
278 		u64 reserved_1_63 : 63;
279 		u64 xoff : 1;
280 	} s;
281 	struct cvmx_pki_bpidx_state_s cn73xx;
282 	struct cvmx_pki_bpidx_state_s cn78xx;
283 	struct cvmx_pki_bpidx_state_s cn78xxp1;
284 	struct cvmx_pki_bpidx_state_s cnf75xx;
285 };
286 
287 typedef union cvmx_pki_bpidx_state cvmx_pki_bpidx_state_t;
288 
289 /**
290  * cvmx_pki_buf_ctl
291  */
292 union cvmx_pki_buf_ctl {
293 	u64 u64;
294 	struct cvmx_pki_buf_ctl_s {
295 		u64 reserved_11_63 : 53;
296 		u64 fpa_wait : 1;
297 		u64 fpa_cac_dis : 1;
298 		u64 reserved_6_8 : 3;
299 		u64 pkt_off : 1;
300 		u64 reserved_3_4 : 2;
301 		u64 pbp_en : 1;
302 		u64 reserved_1_1 : 1;
303 		u64 pki_en : 1;
304 	} s;
305 	struct cvmx_pki_buf_ctl_s cn73xx;
306 	struct cvmx_pki_buf_ctl_s cn78xx;
307 	struct cvmx_pki_buf_ctl_s cn78xxp1;
308 	struct cvmx_pki_buf_ctl_s cnf75xx;
309 };
310 
311 typedef union cvmx_pki_buf_ctl cvmx_pki_buf_ctl_t;
312 
313 /**
314  * cvmx_pki_chan#_cfg
315  *
316  * This register configures each channel.
317  *
318  */
319 union cvmx_pki_chanx_cfg {
320 	u64 u64;
321 	struct cvmx_pki_chanx_cfg_s {
322 		u64 reserved_17_63 : 47;
323 		u64 imp : 1;
324 		u64 reserved_10_15 : 6;
325 		u64 bpid : 10;
326 	} s;
327 	struct cvmx_pki_chanx_cfg_s cn73xx;
328 	struct cvmx_pki_chanx_cfg_s cn78xx;
329 	struct cvmx_pki_chanx_cfg_s cn78xxp1;
330 	struct cvmx_pki_chanx_cfg_s cnf75xx;
331 };
332 
333 typedef union cvmx_pki_chanx_cfg cvmx_pki_chanx_cfg_t;
334 
335 /**
336  * cvmx_pki_cl#_ecc_ctl
337  *
338  * This register configures ECC. All of PKI_CL()_ECC_CTL must be configured identically.
339  *
340  */
341 union cvmx_pki_clx_ecc_ctl {
342 	u64 u64;
343 	struct cvmx_pki_clx_ecc_ctl_s {
344 		u64 pcam_en : 1;
345 		u64 reserved_24_62 : 39;
346 		u64 pcam1_flip : 2;
347 		u64 pcam0_flip : 2;
348 		u64 smem_flip : 2;
349 		u64 dmem_flip : 1;
350 		u64 rf_flip : 1;
351 		u64 reserved_5_15 : 11;
352 		u64 pcam1_cdis : 1;
353 		u64 pcam0_cdis : 1;
354 		u64 smem_cdis : 1;
355 		u64 dmem_cdis : 1;
356 		u64 rf_cdis : 1;
357 	} s;
358 	struct cvmx_pki_clx_ecc_ctl_s cn73xx;
359 	struct cvmx_pki_clx_ecc_ctl_s cn78xx;
360 	struct cvmx_pki_clx_ecc_ctl_s cn78xxp1;
361 	struct cvmx_pki_clx_ecc_ctl_s cnf75xx;
362 };
363 
364 typedef union cvmx_pki_clx_ecc_ctl cvmx_pki_clx_ecc_ctl_t;
365 
366 /**
367  * cvmx_pki_cl#_ecc_int
368  */
369 union cvmx_pki_clx_ecc_int {
370 	u64 u64;
371 	struct cvmx_pki_clx_ecc_int_s {
372 		u64 reserved_8_63 : 56;
373 		u64 pcam1_dbe : 1;
374 		u64 pcam1_sbe : 1;
375 		u64 pcam0_dbe : 1;
376 		u64 pcam0_sbe : 1;
377 		u64 smem_dbe : 1;
378 		u64 smem_sbe : 1;
379 		u64 dmem_perr : 1;
380 		u64 rf_perr : 1;
381 	} s;
382 	struct cvmx_pki_clx_ecc_int_s cn73xx;
383 	struct cvmx_pki_clx_ecc_int_s cn78xx;
384 	struct cvmx_pki_clx_ecc_int_s cn78xxp1;
385 	struct cvmx_pki_clx_ecc_int_s cnf75xx;
386 };
387 
388 typedef union cvmx_pki_clx_ecc_int cvmx_pki_clx_ecc_int_t;
389 
390 /**
391  * cvmx_pki_cl#_int
392  */
393 union cvmx_pki_clx_int {
394 	u64 u64;
395 	struct cvmx_pki_clx_int_s {
396 		u64 reserved_4_63 : 60;
397 		u64 iptint : 1;
398 		u64 sched_conf : 1;
399 		u64 pcam_conf : 2;
400 	} s;
401 	struct cvmx_pki_clx_int_s cn73xx;
402 	struct cvmx_pki_clx_int_s cn78xx;
403 	struct cvmx_pki_clx_int_s cn78xxp1;
404 	struct cvmx_pki_clx_int_s cnf75xx;
405 };
406 
407 typedef union cvmx_pki_clx_int cvmx_pki_clx_int_t;
408 
409 /**
410  * cvmx_pki_cl#_pcam#_action#
411  *
412  * This register configures the result side of the PCAM. PKI hardware is opaque as to the use
413  * of the 32 bits of CAM result.
414  *
415  * For each legal j and k, PKI_CL(i)_PCAM(j)_ACTION(k) must be configured identically for i=0..1.
416  *
417  * With the current parse engine code:
418  *
419  * Action performed based on PCAM lookup using the PKI_CL()_PCAM()_TERM() and
420  * PKI_CL()_PCAM()_MATCH() registers.
421  *
422  * If lookup data matches no PCAM entries, then no action takes place. No matches indicates
423  * normal parsing will continue.
424  *
425  * If data matches multiple PCAM entries, PKI_WQE_S[ERRLEV,OPCODE] of the processed packet may
426  * be set to PKI_ERRLEV_E::RE,PKI_OPCODE_E::RE_PKIPCAM and the PKI_CL()_INT[PCAM_CONF] error
427  * interrupt is signaled.  Once a conflict is detected, the PCAM state is unpredictable and is
428  * required to be fully reconfigured before further valid processing can take place.
429  */
430 union cvmx_pki_clx_pcamx_actionx {
431 	u64 u64;
432 	struct cvmx_pki_clx_pcamx_actionx_s {
433 		u64 reserved_31_63 : 33;
434 		u64 pmc : 7;
435 		u64 style_add : 8;
436 		u64 pf : 3;
437 		u64 setty : 5;
438 		u64 advance : 8;
439 	} s;
440 	struct cvmx_pki_clx_pcamx_actionx_s cn73xx;
441 	struct cvmx_pki_clx_pcamx_actionx_s cn78xx;
442 	struct cvmx_pki_clx_pcamx_actionx_s cn78xxp1;
443 	struct cvmx_pki_clx_pcamx_actionx_s cnf75xx;
444 };
445 
446 typedef union cvmx_pki_clx_pcamx_actionx cvmx_pki_clx_pcamx_actionx_t;
447 
448 /**
449  * cvmx_pki_cl#_pcam#_match#
450  *
451  * This register configures the match side of the PCAM. PKI hardware is opaque as to the use
452  * of the 32 bits of CAM data.
453  *
454  * For each legal j and k, PKI_CL(i)_PCAM(j)_MATCH(k) must be configured identically for i=0..1.
455  */
456 union cvmx_pki_clx_pcamx_matchx {
457 	u64 u64;
458 	struct cvmx_pki_clx_pcamx_matchx_s {
459 		u64 data1 : 32;
460 		u64 data0 : 32;
461 	} s;
462 	struct cvmx_pki_clx_pcamx_matchx_s cn73xx;
463 	struct cvmx_pki_clx_pcamx_matchx_s cn78xx;
464 	struct cvmx_pki_clx_pcamx_matchx_s cn78xxp1;
465 	struct cvmx_pki_clx_pcamx_matchx_s cnf75xx;
466 };
467 
468 typedef union cvmx_pki_clx_pcamx_matchx cvmx_pki_clx_pcamx_matchx_t;
469 
470 /**
471  * cvmx_pki_cl#_pcam#_term#
472  *
473  * This register configures the match side of the PCAM. PKI hardware is opaque as to the use
474  * of the 16 bits of CAM data; the split between TERM and STYLE is defined by the
475  * parse engine.
476  *
477  * For each legal j and k, PKI_CL(i)_PCAM(j)_TERM(k) must be configured identically for i=0..1.
478  */
479 union cvmx_pki_clx_pcamx_termx {
480 	u64 u64;
481 	struct cvmx_pki_clx_pcamx_termx_s {
482 		u64 valid : 1;
483 		u64 reserved_48_62 : 15;
484 		u64 term1 : 8;
485 		u64 style1 : 8;
486 		u64 reserved_16_31 : 16;
487 		u64 term0 : 8;
488 		u64 style0 : 8;
489 	} s;
490 	struct cvmx_pki_clx_pcamx_termx_s cn73xx;
491 	struct cvmx_pki_clx_pcamx_termx_s cn78xx;
492 	struct cvmx_pki_clx_pcamx_termx_s cn78xxp1;
493 	struct cvmx_pki_clx_pcamx_termx_s cnf75xx;
494 };
495 
496 typedef union cvmx_pki_clx_pcamx_termx cvmx_pki_clx_pcamx_termx_t;
497 
498 /**
499  * cvmx_pki_cl#_pkind#_cfg
500  *
501  * This register is inside PKI_CL()_PKIND()_KMEM(). These CSRs are used only by
502  * the PKI parse engine.
503  *
504  * For each legal j, PKI_CL(i)_PKIND(j)_CFG must be configured identically for i=0..1.
505  */
506 union cvmx_pki_clx_pkindx_cfg {
507 	u64 u64;
508 	struct cvmx_pki_clx_pkindx_cfg_s {
509 		u64 reserved_11_63 : 53;
510 		u64 lg_custom_layer : 3;
511 		u64 fcs_pres : 1;
512 		u64 mpls_en : 1;
513 		u64 inst_hdr : 1;
514 		u64 lg_custom : 1;
515 		u64 fulc_en : 1;
516 		u64 dsa_en : 1;
517 		u64 hg2_en : 1;
518 		u64 hg_en : 1;
519 	} s;
520 	struct cvmx_pki_clx_pkindx_cfg_s cn73xx;
521 	struct cvmx_pki_clx_pkindx_cfg_s cn78xx;
522 	struct cvmx_pki_clx_pkindx_cfg_s cn78xxp1;
523 	struct cvmx_pki_clx_pkindx_cfg_s cnf75xx;
524 };
525 
526 typedef union cvmx_pki_clx_pkindx_cfg cvmx_pki_clx_pkindx_cfg_t;
527 
528 /**
529  * cvmx_pki_cl#_pkind#_kmem#
530  *
531  * This register initializes the KMEM, which initializes the parse engine state for each
532  * pkind. These CSRs are used only by the PKI parse engine.
533  *
534  * Inside the KMEM are the following parse engine registers. These registers are the
535  * preferred access method for software:
536  * * PKI_CL()_PKIND()_CFG.
537  * * PKI_CL()_PKIND()_STYLE.
538  * * PKI_CL()_PKIND()_SKIP.
539  * * PKI_CL()_PKIND()_L2_CUSTOM.
540  * * PKI_CL()_PKIND()_LG_CUSTOM.
541  *
542  * To avoid overlapping addresses, these aliases have address bit 20 set in contrast to
543  * this register; the PKI address decoder ignores bit 20 when accessing
544  * PKI_CL()_PKIND()_KMEM().
545  *
546  * Software must reload the PKI_CL()_PKIND()_KMEM() registers upon the detection of
547  * PKI_ECC_INT0[KMEM_SBE] or PKI_ECC_INT0[KMEM_DBE].
548  *
549  * For each legal j and k value, PKI_CL(i)_PKIND(j)_KMEM(k) must be configured
550  * identically for i=0..1.
551  */
552 union cvmx_pki_clx_pkindx_kmemx {
553 	u64 u64;
554 	struct cvmx_pki_clx_pkindx_kmemx_s {
555 		u64 reserved_16_63 : 48;
556 		u64 data : 16;
557 	} s;
558 	struct cvmx_pki_clx_pkindx_kmemx_s cn73xx;
559 	struct cvmx_pki_clx_pkindx_kmemx_s cn78xx;
560 	struct cvmx_pki_clx_pkindx_kmemx_s cn78xxp1;
561 	struct cvmx_pki_clx_pkindx_kmemx_s cnf75xx;
562 };
563 
564 typedef union cvmx_pki_clx_pkindx_kmemx cvmx_pki_clx_pkindx_kmemx_t;
565 
566 /**
567  * cvmx_pki_cl#_pkind#_l2_custom
568  *
569  * This register is inside PKI_CL()_PKIND()_KMEM(). These CSRs are used only by
570  * the PKI parse engine.
571  *
572  * For each legal j, PKI_CL(i)_PKIND(j)_L2_CUSTOM must be configured identically for i=0..1.
573  */
574 union cvmx_pki_clx_pkindx_l2_custom {
575 	u64 u64;
576 	struct cvmx_pki_clx_pkindx_l2_custom_s {
577 		u64 reserved_16_63 : 48;
578 		u64 valid : 1;
579 		u64 reserved_8_14 : 7;
580 		u64 offset : 8;
581 	} s;
582 	struct cvmx_pki_clx_pkindx_l2_custom_s cn73xx;
583 	struct cvmx_pki_clx_pkindx_l2_custom_s cn78xx;
584 	struct cvmx_pki_clx_pkindx_l2_custom_s cn78xxp1;
585 	struct cvmx_pki_clx_pkindx_l2_custom_s cnf75xx;
586 };
587 
588 typedef union cvmx_pki_clx_pkindx_l2_custom cvmx_pki_clx_pkindx_l2_custom_t;
589 
590 /**
591  * cvmx_pki_cl#_pkind#_lg_custom
592  *
593  * This register is inside PKI_CL()_PKIND()_KMEM(). These CSRs are used only by
594  * the PKI parse engine.
595  *
596  * For each legal j, PKI_CL(i)_PKIND(j)_LG_CUSTOM must be configured identically for i=0..1.
597  */
598 union cvmx_pki_clx_pkindx_lg_custom {
599 	u64 u64;
600 	struct cvmx_pki_clx_pkindx_lg_custom_s {
601 		u64 reserved_8_63 : 56;
602 		u64 offset : 8;
603 	} s;
604 	struct cvmx_pki_clx_pkindx_lg_custom_s cn73xx;
605 	struct cvmx_pki_clx_pkindx_lg_custom_s cn78xx;
606 	struct cvmx_pki_clx_pkindx_lg_custom_s cn78xxp1;
607 	struct cvmx_pki_clx_pkindx_lg_custom_s cnf75xx;
608 };
609 
610 typedef union cvmx_pki_clx_pkindx_lg_custom cvmx_pki_clx_pkindx_lg_custom_t;
611 
612 /**
613  * cvmx_pki_cl#_pkind#_skip
614  *
615  * This register is inside PKI_CL()_PKIND()_KMEM(). These CSRs are used only by
616  * the PKI parse engine.
617  *
618  * For each legal j, PKI_CL(i)_PKIND(j)_SKIP must be configured identically for i=0..1.
619  */
620 union cvmx_pki_clx_pkindx_skip {
621 	u64 u64;
622 	struct cvmx_pki_clx_pkindx_skip_s {
623 		u64 reserved_16_63 : 48;
624 		u64 fcs_skip : 8;
625 		u64 inst_skip : 8;
626 	} s;
627 	struct cvmx_pki_clx_pkindx_skip_s cn73xx;
628 	struct cvmx_pki_clx_pkindx_skip_s cn78xx;
629 	struct cvmx_pki_clx_pkindx_skip_s cn78xxp1;
630 	struct cvmx_pki_clx_pkindx_skip_s cnf75xx;
631 };
632 
633 typedef union cvmx_pki_clx_pkindx_skip cvmx_pki_clx_pkindx_skip_t;
634 
635 /**
636  * cvmx_pki_cl#_pkind#_style
637  *
638  * This register is inside PKI_CL()_PKIND()_KMEM(). These CSRs are used only by
639  * the PKI parse engine.
640  *
641  * For each legal j, PKI_CL(i)_PKIND(j)_STYLE must be configured identically for i=0..1.
642  */
643 union cvmx_pki_clx_pkindx_style {
644 	u64 u64;
645 	struct cvmx_pki_clx_pkindx_style_s {
646 		u64 reserved_15_63 : 49;
647 		u64 pm : 7;
648 		u64 style : 8;
649 	} s;
650 	struct cvmx_pki_clx_pkindx_style_s cn73xx;
651 	struct cvmx_pki_clx_pkindx_style_s cn78xx;
652 	struct cvmx_pki_clx_pkindx_style_s cn78xxp1;
653 	struct cvmx_pki_clx_pkindx_style_s cnf75xx;
654 };
655 
656 typedef union cvmx_pki_clx_pkindx_style cvmx_pki_clx_pkindx_style_t;
657 
658 /**
659  * cvmx_pki_cl#_smem#
660  *
661  * This register initializes the SMEM, which configures the parse engine. These CSRs
662  * are used by the PKI parse engine and other PKI hardware.
663  *
664  * Inside the SMEM are the following parse engine registers. These registers are the
665  * preferred access method for software:
666  * * PKI_CL()_STYLE()_CFG
667  * * PKI_CL()_STYLE()_CFG2
668  * * PKI_CL()_STYLE()_ALG
669  *
670  * To avoid overlapping addresses, these aliases have address bit 20 set in contrast to
671  * this register; the PKI address decoder ignores bit 20 when accessing
672  * PKI_CL()_SMEM().
673  *
674  * Software must reload the PKI_CL()_SMEM() registers upon the detection of
675  * PKI_CL()_ECC_INT[SMEM_SBE] or PKI_CL()_ECC_INT[SMEM_DBE].
676  *
677  * For each legal j, PKI_CL(i)_SMEM(j) must be configured identically for i=0..1.
678  */
679 union cvmx_pki_clx_smemx {
680 	u64 u64;
681 	struct cvmx_pki_clx_smemx_s {
682 		u64 reserved_32_63 : 32;
683 		u64 data : 32;
684 	} s;
685 	struct cvmx_pki_clx_smemx_s cn73xx;
686 	struct cvmx_pki_clx_smemx_s cn78xx;
687 	struct cvmx_pki_clx_smemx_s cn78xxp1;
688 	struct cvmx_pki_clx_smemx_s cnf75xx;
689 };
690 
691 typedef union cvmx_pki_clx_smemx cvmx_pki_clx_smemx_t;
692 
693 /**
694  * cvmx_pki_cl#_start
695  *
696  * This register configures a cluster. All of PKI_CL()_START must be programmed identically.
697  *
698  */
699 union cvmx_pki_clx_start {
700 	u64 u64;
701 	struct cvmx_pki_clx_start_s {
702 		u64 reserved_11_63 : 53;
703 		u64 start : 11;
704 	} s;
705 	struct cvmx_pki_clx_start_s cn73xx;
706 	struct cvmx_pki_clx_start_s cn78xx;
707 	struct cvmx_pki_clx_start_s cn78xxp1;
708 	struct cvmx_pki_clx_start_s cnf75xx;
709 };
710 
711 typedef union cvmx_pki_clx_start cvmx_pki_clx_start_t;
712 
713 /**
714  * cvmx_pki_cl#_style#_alg
715  *
716  * This register is inside PKI_CL()_SMEM(). These CSRs are used only by
717  * the PKI parse engine.
718  *
719  * For each legal j, PKI_CL(i)_STYLE(j)_ALG must be configured identically for i=0..1.
720  */
721 union cvmx_pki_clx_stylex_alg {
722 	u64 u64;
723 	struct cvmx_pki_clx_stylex_alg_s {
724 		u64 reserved_32_63 : 32;
725 		u64 tt : 2;
726 		u64 apad_nip : 3;
727 		u64 qpg_qos : 3;
728 		u64 qpg_port_sh : 3;
729 		u64 qpg_port_msb : 4;
730 		u64 reserved_11_16 : 6;
731 		u64 tag_vni : 1;
732 		u64 tag_gtp : 1;
733 		u64 tag_spi : 1;
734 		u64 tag_syn : 1;
735 		u64 tag_pctl : 1;
736 		u64 tag_vs1 : 1;
737 		u64 tag_vs0 : 1;
738 		u64 tag_vlan : 1;
739 		u64 tag_mpls0 : 1;
740 		u64 tag_prt : 1;
741 		u64 wqe_vs : 1;
742 	} s;
743 	struct cvmx_pki_clx_stylex_alg_s cn73xx;
744 	struct cvmx_pki_clx_stylex_alg_s cn78xx;
745 	struct cvmx_pki_clx_stylex_alg_s cn78xxp1;
746 	struct cvmx_pki_clx_stylex_alg_s cnf75xx;
747 };
748 
749 typedef union cvmx_pki_clx_stylex_alg cvmx_pki_clx_stylex_alg_t;
750 
751 /**
752  * cvmx_pki_cl#_style#_cfg
753  *
754  * This register is inside PKI_CL()_SMEM(). These CSRs are used by
755  * the PKI parse engine and other PKI hardware.
756  *
757  * For each legal j, PKI_CL(i)_STYLE(j)_CFG must be configured identically for i=0..1.
758  */
759 union cvmx_pki_clx_stylex_cfg {
760 	u64 u64;
761 	struct cvmx_pki_clx_stylex_cfg_s {
762 		u64 reserved_31_63 : 33;
763 		u64 ip6_udp_opt : 1;
764 		u64 lenerr_en : 1;
765 		u64 lenerr_eqpad : 1;
766 		u64 minmax_sel : 1;
767 		u64 maxerr_en : 1;
768 		u64 minerr_en : 1;
769 		u64 qpg_dis_grptag : 1;
770 		u64 fcs_strip : 1;
771 		u64 fcs_chk : 1;
772 		u64 rawdrp : 1;
773 		u64 drop : 1;
774 		u64 nodrop : 1;
775 		u64 qpg_dis_padd : 1;
776 		u64 qpg_dis_grp : 1;
777 		u64 qpg_dis_aura : 1;
778 		u64 reserved_11_15 : 5;
779 		u64 qpg_base : 11;
780 	} s;
781 	struct cvmx_pki_clx_stylex_cfg_s cn73xx;
782 	struct cvmx_pki_clx_stylex_cfg_s cn78xx;
783 	struct cvmx_pki_clx_stylex_cfg_s cn78xxp1;
784 	struct cvmx_pki_clx_stylex_cfg_s cnf75xx;
785 };
786 
787 typedef union cvmx_pki_clx_stylex_cfg cvmx_pki_clx_stylex_cfg_t;
788 
789 /**
790  * cvmx_pki_cl#_style#_cfg2
791  *
792  * This register is inside PKI_CL()_SMEM(). These CSRs are used by
793  * the PKI parse engine and other PKI hardware.
794  *
795  * For each legal j, PKI_CL(i)_STYLE(j)_CFG2 must be configured identically for i=0..1.
796  */
797 union cvmx_pki_clx_stylex_cfg2 {
798 	u64 u64;
799 	struct cvmx_pki_clx_stylex_cfg2_s {
800 		u64 reserved_32_63 : 32;
801 		u64 tag_inc : 4;
802 		u64 reserved_25_27 : 3;
803 		u64 tag_masken : 1;
804 		u64 tag_src_lg : 1;
805 		u64 tag_src_lf : 1;
806 		u64 tag_src_le : 1;
807 		u64 tag_src_ld : 1;
808 		u64 tag_src_lc : 1;
809 		u64 tag_src_lb : 1;
810 		u64 tag_dst_lg : 1;
811 		u64 tag_dst_lf : 1;
812 		u64 tag_dst_le : 1;
813 		u64 tag_dst_ld : 1;
814 		u64 tag_dst_lc : 1;
815 		u64 tag_dst_lb : 1;
816 		u64 len_lg : 1;
817 		u64 len_lf : 1;
818 		u64 len_le : 1;
819 		u64 len_ld : 1;
820 		u64 len_lc : 1;
821 		u64 len_lb : 1;
822 		u64 csum_lg : 1;
823 		u64 csum_lf : 1;
824 		u64 csum_le : 1;
825 		u64 csum_ld : 1;
826 		u64 csum_lc : 1;
827 		u64 csum_lb : 1;
828 	} s;
829 	struct cvmx_pki_clx_stylex_cfg2_s cn73xx;
830 	struct cvmx_pki_clx_stylex_cfg2_s cn78xx;
831 	struct cvmx_pki_clx_stylex_cfg2_s cn78xxp1;
832 	struct cvmx_pki_clx_stylex_cfg2_s cnf75xx;
833 };
834 
835 typedef union cvmx_pki_clx_stylex_cfg2 cvmx_pki_clx_stylex_cfg2_t;
836 
837 /**
838  * cvmx_pki_clken
839  */
840 union cvmx_pki_clken {
841 	u64 u64;
842 	struct cvmx_pki_clken_s {
843 		u64 reserved_1_63 : 63;
844 		u64 clken : 1;
845 	} s;
846 	struct cvmx_pki_clken_s cn73xx;
847 	struct cvmx_pki_clken_s cn78xx;
848 	struct cvmx_pki_clken_s cn78xxp1;
849 	struct cvmx_pki_clken_s cnf75xx;
850 };
851 
852 typedef union cvmx_pki_clken cvmx_pki_clken_t;
853 
854 /**
855  * cvmx_pki_dstat#_stat0
856  *
857  * This register contains statistics indexed by PKI_QPG_TBLB()[DSTAT_ID].
858  *
859  */
860 union cvmx_pki_dstatx_stat0 {
861 	u64 u64;
862 	struct cvmx_pki_dstatx_stat0_s {
863 		u64 reserved_32_63 : 32;
864 		u64 pkts : 32;
865 	} s;
866 	struct cvmx_pki_dstatx_stat0_s cn73xx;
867 	struct cvmx_pki_dstatx_stat0_s cn78xx;
868 	struct cvmx_pki_dstatx_stat0_s cnf75xx;
869 };
870 
871 typedef union cvmx_pki_dstatx_stat0 cvmx_pki_dstatx_stat0_t;
872 
873 /**
874  * cvmx_pki_dstat#_stat1
875  *
876  * This register contains statistics indexed by PKI_QPG_TBLB()[DSTAT_ID].
877  *
878  */
879 union cvmx_pki_dstatx_stat1 {
880 	u64 u64;
881 	struct cvmx_pki_dstatx_stat1_s {
882 		u64 reserved_40_63 : 24;
883 		u64 octs : 40;
884 	} s;
885 	struct cvmx_pki_dstatx_stat1_s cn73xx;
886 	struct cvmx_pki_dstatx_stat1_s cn78xx;
887 	struct cvmx_pki_dstatx_stat1_s cnf75xx;
888 };
889 
890 typedef union cvmx_pki_dstatx_stat1 cvmx_pki_dstatx_stat1_t;
891 
892 /**
893  * cvmx_pki_dstat#_stat2
894  *
895  * This register contains statistics indexed by PKI_QPG_TBLB()[DSTAT_ID].
896  *
897  */
898 union cvmx_pki_dstatx_stat2 {
899 	u64 u64;
900 	struct cvmx_pki_dstatx_stat2_s {
901 		u64 reserved_32_63 : 32;
902 		u64 err_pkts : 32;
903 	} s;
904 	struct cvmx_pki_dstatx_stat2_s cn73xx;
905 	struct cvmx_pki_dstatx_stat2_s cn78xx;
906 	struct cvmx_pki_dstatx_stat2_s cnf75xx;
907 };
908 
909 typedef union cvmx_pki_dstatx_stat2 cvmx_pki_dstatx_stat2_t;
910 
911 /**
912  * cvmx_pki_dstat#_stat3
913  *
914  * This register contains statistics indexed by PKI_QPG_TBLB()[DSTAT_ID].
915  *
916  */
917 union cvmx_pki_dstatx_stat3 {
918 	u64 u64;
919 	struct cvmx_pki_dstatx_stat3_s {
920 		u64 reserved_32_63 : 32;
921 		u64 drp_pkts : 32;
922 	} s;
923 	struct cvmx_pki_dstatx_stat3_s cn73xx;
924 	struct cvmx_pki_dstatx_stat3_s cn78xx;
925 	struct cvmx_pki_dstatx_stat3_s cnf75xx;
926 };
927 
928 typedef union cvmx_pki_dstatx_stat3 cvmx_pki_dstatx_stat3_t;
929 
930 /**
931  * cvmx_pki_dstat#_stat4
932  *
933  * This register contains statistics indexed by PKI_QPG_TBLB()[DSTAT_ID].
934  *
935  */
936 union cvmx_pki_dstatx_stat4 {
937 	u64 u64;
938 	struct cvmx_pki_dstatx_stat4_s {
939 		u64 reserved_40_63 : 24;
940 		u64 drp_octs : 40;
941 	} s;
942 	struct cvmx_pki_dstatx_stat4_s cn73xx;
943 	struct cvmx_pki_dstatx_stat4_s cn78xx;
944 	struct cvmx_pki_dstatx_stat4_s cnf75xx;
945 };
946 
947 typedef union cvmx_pki_dstatx_stat4 cvmx_pki_dstatx_stat4_t;
948 
949 /**
950  * cvmx_pki_ecc_ctl0
951  *
952  * This register allows inserting ECC errors for testing.
953  *
954  */
955 union cvmx_pki_ecc_ctl0 {
956 	u64 u64;
957 	struct cvmx_pki_ecc_ctl0_s {
958 		u64 reserved_24_63 : 40;
959 		u64 ldfif_flip : 2;
960 		u64 ldfif_cdis : 1;
961 		u64 pbe_flip : 2;
962 		u64 pbe_cdis : 1;
963 		u64 wadr_flip : 2;
964 		u64 wadr_cdis : 1;
965 		u64 nxtptag_flip : 2;
966 		u64 nxtptag_cdis : 1;
967 		u64 curptag_flip : 2;
968 		u64 curptag_cdis : 1;
969 		u64 nxtblk_flip : 2;
970 		u64 nxtblk_cdis : 1;
971 		u64 kmem_flip : 2;
972 		u64 kmem_cdis : 1;
973 		u64 asm_flip : 2;
974 		u64 asm_cdis : 1;
975 	} s;
976 	struct cvmx_pki_ecc_ctl0_s cn73xx;
977 	struct cvmx_pki_ecc_ctl0_s cn78xx;
978 	struct cvmx_pki_ecc_ctl0_s cn78xxp1;
979 	struct cvmx_pki_ecc_ctl0_s cnf75xx;
980 };
981 
982 typedef union cvmx_pki_ecc_ctl0 cvmx_pki_ecc_ctl0_t;
983 
984 /**
985  * cvmx_pki_ecc_ctl1
986  *
987  * This register allows inserting ECC errors for testing.
988  *
989  */
990 union cvmx_pki_ecc_ctl1 {
991 	u64 u64;
992 	struct cvmx_pki_ecc_ctl1_s {
993 		u64 reserved_51_63 : 13;
994 		u64 sws_flip : 2;
995 		u64 sws_cdis : 1;
996 		u64 wqeout_flip : 2;
997 		u64 wqeout_cdis : 1;
998 		u64 doa_flip : 2;
999 		u64 doa_cdis : 1;
1000 		u64 bpid_flip : 2;
1001 		u64 bpid_cdis : 1;
1002 		u64 reserved_30_38 : 9;
1003 		u64 plc_flip : 2;
1004 		u64 plc_cdis : 1;
1005 		u64 pktwq_flip : 2;
1006 		u64 pktwq_cdis : 1;
1007 		u64 reserved_21_23 : 3;
1008 		u64 stylewq2_flip : 2;
1009 		u64 stylewq2_cdis : 1;
1010 		u64 tag_flip : 2;
1011 		u64 tag_cdis : 1;
1012 		u64 aura_flip : 2;
1013 		u64 aura_cdis : 1;
1014 		u64 chan_flip : 2;
1015 		u64 chan_cdis : 1;
1016 		u64 pbtag_flip : 2;
1017 		u64 pbtag_cdis : 1;
1018 		u64 stylewq_flip : 2;
1019 		u64 stylewq_cdis : 1;
1020 		u64 qpg_flip : 2;
1021 		u64 qpg_cdis : 1;
1022 	} s;
1023 	struct cvmx_pki_ecc_ctl1_s cn73xx;
1024 	struct cvmx_pki_ecc_ctl1_s cn78xx;
1025 	struct cvmx_pki_ecc_ctl1_cn78xxp1 {
1026 		u64 reserved_51_63 : 13;
1027 		u64 sws_flip : 2;
1028 		u64 sws_cdis : 1;
1029 		u64 wqeout_flip : 2;
1030 		u64 wqeout_cdis : 1;
1031 		u64 doa_flip : 2;
1032 		u64 doa_cdis : 1;
1033 		u64 bpid_flip : 2;
1034 		u64 bpid_cdis : 1;
1035 		u64 reserved_30_38 : 9;
1036 		u64 plc_flip : 2;
1037 		u64 plc_cdis : 1;
1038 		u64 pktwq_flip : 2;
1039 		u64 pktwq_cdis : 1;
1040 		u64 reserved_18_23 : 6;
1041 		u64 tag_flip : 2;
1042 		u64 tag_cdis : 1;
1043 		u64 aura_flip : 2;
1044 		u64 aura_cdis : 1;
1045 		u64 chan_flip : 2;
1046 		u64 chan_cdis : 1;
1047 		u64 pbtag_flip : 2;
1048 		u64 pbtag_cdis : 1;
1049 		u64 stylewq_flip : 2;
1050 		u64 stylewq_cdis : 1;
1051 		u64 qpg_flip : 2;
1052 		u64 qpg_cdis : 1;
1053 	} cn78xxp1;
1054 	struct cvmx_pki_ecc_ctl1_s cnf75xx;
1055 };
1056 
1057 typedef union cvmx_pki_ecc_ctl1 cvmx_pki_ecc_ctl1_t;
1058 
1059 /**
1060  * cvmx_pki_ecc_ctl2
1061  *
1062  * This register allows inserting ECC errors for testing.
1063  *
1064  */
1065 union cvmx_pki_ecc_ctl2 {
1066 	u64 u64;
1067 	struct cvmx_pki_ecc_ctl2_s {
1068 		u64 reserved_3_63 : 61;
1069 		u64 imem_flip : 2;
1070 		u64 imem_cdis : 1;
1071 	} s;
1072 	struct cvmx_pki_ecc_ctl2_s cn73xx;
1073 	struct cvmx_pki_ecc_ctl2_s cn78xx;
1074 	struct cvmx_pki_ecc_ctl2_s cn78xxp1;
1075 	struct cvmx_pki_ecc_ctl2_s cnf75xx;
1076 };
1077 
1078 typedef union cvmx_pki_ecc_ctl2 cvmx_pki_ecc_ctl2_t;
1079 
1080 /**
1081  * cvmx_pki_ecc_int0
1082  */
1083 union cvmx_pki_ecc_int0 {
1084 	u64 u64;
1085 	struct cvmx_pki_ecc_int0_s {
1086 		u64 reserved_16_63 : 48;
1087 		u64 ldfif_dbe : 1;
1088 		u64 ldfif_sbe : 1;
1089 		u64 pbe_dbe : 1;
1090 		u64 pbe_sbe : 1;
1091 		u64 wadr_dbe : 1;
1092 		u64 wadr_sbe : 1;
1093 		u64 nxtptag_dbe : 1;
1094 		u64 nxtptag_sbe : 1;
1095 		u64 curptag_dbe : 1;
1096 		u64 curptag_sbe : 1;
1097 		u64 nxtblk_dbe : 1;
1098 		u64 nxtblk_sbe : 1;
1099 		u64 kmem_dbe : 1;
1100 		u64 kmem_sbe : 1;
1101 		u64 asm_dbe : 1;
1102 		u64 asm_sbe : 1;
1103 	} s;
1104 	struct cvmx_pki_ecc_int0_s cn73xx;
1105 	struct cvmx_pki_ecc_int0_s cn78xx;
1106 	struct cvmx_pki_ecc_int0_s cn78xxp1;
1107 	struct cvmx_pki_ecc_int0_s cnf75xx;
1108 };
1109 
1110 typedef union cvmx_pki_ecc_int0 cvmx_pki_ecc_int0_t;
1111 
1112 /**
1113  * cvmx_pki_ecc_int1
1114  */
1115 union cvmx_pki_ecc_int1 {
1116 	u64 u64;
1117 	struct cvmx_pki_ecc_int1_s {
1118 		u64 reserved_34_63 : 30;
1119 		u64 sws_dbe : 1;
1120 		u64 sws_sbe : 1;
1121 		u64 wqeout_dbe : 1;
1122 		u64 wqeout_sbe : 1;
1123 		u64 doa_dbe : 1;
1124 		u64 doa_sbe : 1;
1125 		u64 bpid_dbe : 1;
1126 		u64 bpid_sbe : 1;
1127 		u64 reserved_20_25 : 6;
1128 		u64 plc_dbe : 1;
1129 		u64 plc_sbe : 1;
1130 		u64 pktwq_dbe : 1;
1131 		u64 pktwq_sbe : 1;
1132 		u64 reserved_12_15 : 4;
1133 		u64 tag_dbe : 1;
1134 		u64 tag_sbe : 1;
1135 		u64 aura_dbe : 1;
1136 		u64 aura_sbe : 1;
1137 		u64 chan_dbe : 1;
1138 		u64 chan_sbe : 1;
1139 		u64 pbtag_dbe : 1;
1140 		u64 pbtag_sbe : 1;
1141 		u64 stylewq_dbe : 1;
1142 		u64 stylewq_sbe : 1;
1143 		u64 qpg_dbe : 1;
1144 		u64 qpg_sbe : 1;
1145 	} s;
1146 	struct cvmx_pki_ecc_int1_s cn73xx;
1147 	struct cvmx_pki_ecc_int1_s cn78xx;
1148 	struct cvmx_pki_ecc_int1_s cn78xxp1;
1149 	struct cvmx_pki_ecc_int1_s cnf75xx;
1150 };
1151 
1152 typedef union cvmx_pki_ecc_int1 cvmx_pki_ecc_int1_t;
1153 
1154 /**
1155  * cvmx_pki_ecc_int2
1156  */
1157 union cvmx_pki_ecc_int2 {
1158 	u64 u64;
1159 	struct cvmx_pki_ecc_int2_s {
1160 		u64 reserved_2_63 : 62;
1161 		u64 imem_dbe : 1;
1162 		u64 imem_sbe : 1;
1163 	} s;
1164 	struct cvmx_pki_ecc_int2_s cn73xx;
1165 	struct cvmx_pki_ecc_int2_s cn78xx;
1166 	struct cvmx_pki_ecc_int2_s cn78xxp1;
1167 	struct cvmx_pki_ecc_int2_s cnf75xx;
1168 };
1169 
1170 typedef union cvmx_pki_ecc_int2 cvmx_pki_ecc_int2_t;
1171 
1172 /**
1173  * cvmx_pki_frm_len_chk#
1174  */
1175 union cvmx_pki_frm_len_chkx {
1176 	u64 u64;
1177 	struct cvmx_pki_frm_len_chkx_s {
1178 		u64 reserved_32_63 : 32;
1179 		u64 maxlen : 16;
1180 		u64 minlen : 16;
1181 	} s;
1182 	struct cvmx_pki_frm_len_chkx_s cn73xx;
1183 	struct cvmx_pki_frm_len_chkx_s cn78xx;
1184 	struct cvmx_pki_frm_len_chkx_s cn78xxp1;
1185 	struct cvmx_pki_frm_len_chkx_s cnf75xx;
1186 };
1187 
1188 typedef union cvmx_pki_frm_len_chkx cvmx_pki_frm_len_chkx_t;
1189 
1190 /**
1191  * cvmx_pki_gbl_pen
1192  *
1193  * This register contains global configuration information that applies to all
1194  * pkinds. The values are opaque to PKI HW.
1195  *
1196  * This is intended for communication between the higher-level software SDK, and the
1197  * SDK code that loads PKI_IMEM() with the parse engine code. This allows the loader to
1198  * appropriately select the parse engine code with only those features required, so that
1199  * performance will be optimized.
1200  */
1201 union cvmx_pki_gbl_pen {
1202 	u64 u64;
1203 	struct cvmx_pki_gbl_pen_s {
1204 		u64 reserved_10_63 : 54;
1205 		u64 virt_pen : 1;
1206 		u64 clg_pen : 1;
1207 		u64 cl2_pen : 1;
1208 		u64 l4_pen : 1;
1209 		u64 il3_pen : 1;
1210 		u64 l3_pen : 1;
1211 		u64 mpls_pen : 1;
1212 		u64 fulc_pen : 1;
1213 		u64 dsa_pen : 1;
1214 		u64 hg_pen : 1;
1215 	} s;
1216 	struct cvmx_pki_gbl_pen_s cn73xx;
1217 	struct cvmx_pki_gbl_pen_s cn78xx;
1218 	struct cvmx_pki_gbl_pen_s cn78xxp1;
1219 	struct cvmx_pki_gbl_pen_s cnf75xx;
1220 };
1221 
1222 typedef union cvmx_pki_gbl_pen cvmx_pki_gbl_pen_t;
1223 
1224 /**
1225  * cvmx_pki_gen_int
1226  */
1227 union cvmx_pki_gen_int {
1228 	u64 u64;
1229 	struct cvmx_pki_gen_int_s {
1230 		u64 reserved_10_63 : 54;
1231 		u64 bufs_oflow : 1;
1232 		u64 pkt_size_oflow : 1;
1233 		u64 x2p_req_ofl : 1;
1234 		u64 drp_noavail : 1;
1235 		u64 dat : 1;
1236 		u64 eop : 1;
1237 		u64 sop : 1;
1238 		u64 bckprs : 1;
1239 		u64 crcerr : 1;
1240 		u64 pktdrp : 1;
1241 	} s;
1242 	struct cvmx_pki_gen_int_s cn73xx;
1243 	struct cvmx_pki_gen_int_s cn78xx;
1244 	struct cvmx_pki_gen_int_cn78xxp1 {
1245 		u64 reserved_8_63 : 56;
1246 		u64 x2p_req_ofl : 1;
1247 		u64 drp_noavail : 1;
1248 		u64 dat : 1;
1249 		u64 eop : 1;
1250 		u64 sop : 1;
1251 		u64 bckprs : 1;
1252 		u64 crcerr : 1;
1253 		u64 pktdrp : 1;
1254 	} cn78xxp1;
1255 	struct cvmx_pki_gen_int_s cnf75xx;
1256 };
1257 
1258 typedef union cvmx_pki_gen_int cvmx_pki_gen_int_t;
1259 
1260 /**
1261  * cvmx_pki_icg#_cfg
1262  *
1263  * This register configures the cluster group.
1264  *
1265  */
1266 union cvmx_pki_icgx_cfg {
1267 	u64 u64;
1268 	struct cvmx_pki_icgx_cfg_s {
1269 		u64 reserved_53_63 : 11;
1270 		u64 maxipe_use : 5;
1271 		u64 reserved_36_47 : 12;
1272 		u64 clusters : 4;
1273 		u64 reserved_27_31 : 5;
1274 		u64 release_rqd : 1;
1275 		u64 mlo : 1;
1276 		u64 pena : 1;
1277 		u64 timer : 12;
1278 		u64 delay : 12;
1279 	} s;
1280 	struct cvmx_pki_icgx_cfg_s cn73xx;
1281 	struct cvmx_pki_icgx_cfg_s cn78xx;
1282 	struct cvmx_pki_icgx_cfg_s cn78xxp1;
1283 	struct cvmx_pki_icgx_cfg_s cnf75xx;
1284 };
1285 
1286 typedef union cvmx_pki_icgx_cfg cvmx_pki_icgx_cfg_t;
1287 
1288 /**
1289  * cvmx_pki_imem#
1290  */
1291 union cvmx_pki_imemx {
1292 	u64 u64;
1293 	struct cvmx_pki_imemx_s {
1294 		u64 data : 64;
1295 	} s;
1296 	struct cvmx_pki_imemx_s cn73xx;
1297 	struct cvmx_pki_imemx_s cn78xx;
1298 	struct cvmx_pki_imemx_s cn78xxp1;
1299 	struct cvmx_pki_imemx_s cnf75xx;
1300 };
1301 
1302 typedef union cvmx_pki_imemx cvmx_pki_imemx_t;
1303 
1304 /**
1305  * cvmx_pki_ltype#_map
1306  *
1307  * This register is the layer type map, indexed by PKI_LTYPE_E.
1308  *
1309  */
1310 union cvmx_pki_ltypex_map {
1311 	u64 u64;
1312 	struct cvmx_pki_ltypex_map_s {
1313 		u64 reserved_3_63 : 61;
1314 		u64 beltype : 3;
1315 	} s;
1316 	struct cvmx_pki_ltypex_map_s cn73xx;
1317 	struct cvmx_pki_ltypex_map_s cn78xx;
1318 	struct cvmx_pki_ltypex_map_s cn78xxp1;
1319 	struct cvmx_pki_ltypex_map_s cnf75xx;
1320 };
1321 
1322 typedef union cvmx_pki_ltypex_map cvmx_pki_ltypex_map_t;
1323 
1324 /**
1325  * cvmx_pki_pbe_eco
1326  */
1327 union cvmx_pki_pbe_eco {
1328 	u64 u64;
1329 	struct cvmx_pki_pbe_eco_s {
1330 		u64 reserved_32_63 : 32;
1331 		u64 eco_rw : 32;
1332 	} s;
1333 	struct cvmx_pki_pbe_eco_s cn73xx;
1334 	struct cvmx_pki_pbe_eco_s cn78xx;
1335 	struct cvmx_pki_pbe_eco_s cnf75xx;
1336 };
1337 
1338 typedef union cvmx_pki_pbe_eco cvmx_pki_pbe_eco_t;
1339 
1340 /**
1341  * cvmx_pki_pcam_lookup
1342  *
1343  * For diagnostic use only, this register performs a PCAM lookup against the provided
1344  * cluster and PCAM instance and loads results into PKI_PCAM_RESULT.
1345  */
1346 union cvmx_pki_pcam_lookup {
1347 	u64 u64;
1348 	struct cvmx_pki_pcam_lookup_s {
1349 		u64 reserved_54_63 : 10;
1350 		u64 cl : 2;
1351 		u64 reserved_49_51 : 3;
1352 		u64 pcam : 1;
1353 		u64 term : 8;
1354 		u64 style : 8;
1355 		u64 data : 32;
1356 	} s;
1357 	struct cvmx_pki_pcam_lookup_s cn73xx;
1358 	struct cvmx_pki_pcam_lookup_s cn78xx;
1359 	struct cvmx_pki_pcam_lookup_s cn78xxp1;
1360 	struct cvmx_pki_pcam_lookup_s cnf75xx;
1361 };
1362 
1363 typedef union cvmx_pki_pcam_lookup cvmx_pki_pcam_lookup_t;
1364 
1365 /**
1366  * cvmx_pki_pcam_result
1367  *
1368  * For diagnostic use only, this register returns PCAM results for the most recent write to
1369  * PKI_PCAM_LOOKUP. The read will stall until the lookup is completed.
1370  * PKI_CL()_ECC_CTL[PCAM_EN] must be clear before accessing this register. Read stall
1371  * is implemented by delaying the PKI_PCAM_LOOKUP write acknowledge until the PCAM is
1372  * free and the lookup can be issued.
1373  */
1374 union cvmx_pki_pcam_result {
1375 	u64 u64;
1376 	struct cvmx_pki_pcam_result_s {
1377 		u64 reserved_41_63 : 23;
1378 		u64 match : 1;
1379 		u64 entry : 8;
1380 		u64 result : 32;
1381 	} s;
1382 	struct cvmx_pki_pcam_result_cn73xx {
1383 		u64 conflict : 1;
1384 		u64 reserved_41_62 : 22;
1385 		u64 match : 1;
1386 		u64 entry : 8;
1387 		u64 result : 32;
1388 	} cn73xx;
1389 	struct cvmx_pki_pcam_result_cn73xx cn78xx;
1390 	struct cvmx_pki_pcam_result_cn73xx cn78xxp1;
1391 	struct cvmx_pki_pcam_result_cn73xx cnf75xx;
1392 };
1393 
1394 typedef union cvmx_pki_pcam_result cvmx_pki_pcam_result_t;
1395 
1396 /**
1397  * cvmx_pki_pfe_diag
1398  */
1399 union cvmx_pki_pfe_diag {
1400 	u64 u64;
1401 	struct cvmx_pki_pfe_diag_s {
1402 		u64 reserved_1_63 : 63;
1403 		u64 bad_rid : 1;
1404 	} s;
1405 	struct cvmx_pki_pfe_diag_s cn73xx;
1406 	struct cvmx_pki_pfe_diag_s cn78xx;
1407 	struct cvmx_pki_pfe_diag_s cn78xxp1;
1408 	struct cvmx_pki_pfe_diag_s cnf75xx;
1409 };
1410 
1411 typedef union cvmx_pki_pfe_diag cvmx_pki_pfe_diag_t;
1412 
1413 /**
1414  * cvmx_pki_pfe_eco
1415  */
1416 union cvmx_pki_pfe_eco {
1417 	u64 u64;
1418 	struct cvmx_pki_pfe_eco_s {
1419 		u64 reserved_32_63 : 32;
1420 		u64 eco_rw : 32;
1421 	} s;
1422 	struct cvmx_pki_pfe_eco_s cn73xx;
1423 	struct cvmx_pki_pfe_eco_s cn78xx;
1424 	struct cvmx_pki_pfe_eco_s cnf75xx;
1425 };
1426 
1427 typedef union cvmx_pki_pfe_eco cvmx_pki_pfe_eco_t;
1428 
1429 /**
1430  * cvmx_pki_pix_clken
1431  */
1432 union cvmx_pki_pix_clken {
1433 	u64 u64;
1434 	struct cvmx_pki_pix_clken_s {
1435 		u64 reserved_17_63 : 47;
1436 		u64 mech : 1;
1437 		u64 reserved_4_15 : 12;
1438 		u64 cls : 4;
1439 	} s;
1440 	struct cvmx_pki_pix_clken_s cn73xx;
1441 	struct cvmx_pki_pix_clken_s cn78xx;
1442 	struct cvmx_pki_pix_clken_s cn78xxp1;
1443 	struct cvmx_pki_pix_clken_s cnf75xx;
1444 };
1445 
1446 typedef union cvmx_pki_pix_clken cvmx_pki_pix_clken_t;
1447 
1448 /**
1449  * cvmx_pki_pix_diag
1450  */
1451 union cvmx_pki_pix_diag {
1452 	u64 u64;
1453 	struct cvmx_pki_pix_diag_s {
1454 		u64 reserved_4_63 : 60;
1455 		u64 nosched : 4;
1456 	} s;
1457 	struct cvmx_pki_pix_diag_s cn73xx;
1458 	struct cvmx_pki_pix_diag_s cn78xx;
1459 	struct cvmx_pki_pix_diag_s cn78xxp1;
1460 	struct cvmx_pki_pix_diag_s cnf75xx;
1461 };
1462 
1463 typedef union cvmx_pki_pix_diag cvmx_pki_pix_diag_t;
1464 
1465 /**
1466  * cvmx_pki_pix_eco
1467  */
1468 union cvmx_pki_pix_eco {
1469 	u64 u64;
1470 	struct cvmx_pki_pix_eco_s {
1471 		u64 reserved_32_63 : 32;
1472 		u64 eco_rw : 32;
1473 	} s;
1474 	struct cvmx_pki_pix_eco_s cn73xx;
1475 	struct cvmx_pki_pix_eco_s cn78xx;
1476 	struct cvmx_pki_pix_eco_s cnf75xx;
1477 };
1478 
1479 typedef union cvmx_pki_pix_eco cvmx_pki_pix_eco_t;
1480 
1481 /**
1482  * cvmx_pki_pkind#_icgsel
1483  */
1484 union cvmx_pki_pkindx_icgsel {
1485 	u64 u64;
1486 	struct cvmx_pki_pkindx_icgsel_s {
1487 		u64 reserved_2_63 : 62;
1488 		u64 icg : 2;
1489 	} s;
1490 	struct cvmx_pki_pkindx_icgsel_s cn73xx;
1491 	struct cvmx_pki_pkindx_icgsel_s cn78xx;
1492 	struct cvmx_pki_pkindx_icgsel_s cn78xxp1;
1493 	struct cvmx_pki_pkindx_icgsel_s cnf75xx;
1494 };
1495 
1496 typedef union cvmx_pki_pkindx_icgsel cvmx_pki_pkindx_icgsel_t;
1497 
1498 /**
1499  * cvmx_pki_pknd#_inb_stat0
1500  *
1501  * This register counts inbound statistics, indexed by pkind.
1502  *
1503  */
1504 union cvmx_pki_pkndx_inb_stat0 {
1505 	u64 u64;
1506 	struct cvmx_pki_pkndx_inb_stat0_s {
1507 		u64 reserved_48_63 : 16;
1508 		u64 pkts : 48;
1509 	} s;
1510 	struct cvmx_pki_pkndx_inb_stat0_s cn73xx;
1511 	struct cvmx_pki_pkndx_inb_stat0_s cn78xx;
1512 	struct cvmx_pki_pkndx_inb_stat0_s cn78xxp1;
1513 	struct cvmx_pki_pkndx_inb_stat0_s cnf75xx;
1514 };
1515 
1516 typedef union cvmx_pki_pkndx_inb_stat0 cvmx_pki_pkndx_inb_stat0_t;
1517 
1518 /**
1519  * cvmx_pki_pknd#_inb_stat1
1520  *
1521  * This register counts inbound statistics, indexed by pkind.
1522  *
1523  */
1524 union cvmx_pki_pkndx_inb_stat1 {
1525 	u64 u64;
1526 	struct cvmx_pki_pkndx_inb_stat1_s {
1527 		u64 reserved_48_63 : 16;
1528 		u64 octs : 48;
1529 	} s;
1530 	struct cvmx_pki_pkndx_inb_stat1_s cn73xx;
1531 	struct cvmx_pki_pkndx_inb_stat1_s cn78xx;
1532 	struct cvmx_pki_pkndx_inb_stat1_s cn78xxp1;
1533 	struct cvmx_pki_pkndx_inb_stat1_s cnf75xx;
1534 };
1535 
1536 typedef union cvmx_pki_pkndx_inb_stat1 cvmx_pki_pkndx_inb_stat1_t;
1537 
1538 /**
1539  * cvmx_pki_pknd#_inb_stat2
1540  *
1541  * This register counts inbound statistics, indexed by pkind.
1542  *
1543  */
1544 union cvmx_pki_pkndx_inb_stat2 {
1545 	u64 u64;
1546 	struct cvmx_pki_pkndx_inb_stat2_s {
1547 		u64 reserved_48_63 : 16;
1548 		u64 errs : 48;
1549 	} s;
1550 	struct cvmx_pki_pkndx_inb_stat2_s cn73xx;
1551 	struct cvmx_pki_pkndx_inb_stat2_s cn78xx;
1552 	struct cvmx_pki_pkndx_inb_stat2_s cn78xxp1;
1553 	struct cvmx_pki_pkndx_inb_stat2_s cnf75xx;
1554 };
1555 
1556 typedef union cvmx_pki_pkndx_inb_stat2 cvmx_pki_pkndx_inb_stat2_t;
1557 
1558 /**
1559  * cvmx_pki_pkt_err
1560  */
1561 union cvmx_pki_pkt_err {
1562 	u64 u64;
1563 	struct cvmx_pki_pkt_err_s {
1564 		u64 reserved_7_63 : 57;
1565 		u64 reasm : 7;
1566 	} s;
1567 	struct cvmx_pki_pkt_err_s cn73xx;
1568 	struct cvmx_pki_pkt_err_s cn78xx;
1569 	struct cvmx_pki_pkt_err_s cn78xxp1;
1570 	struct cvmx_pki_pkt_err_s cnf75xx;
1571 };
1572 
1573 typedef union cvmx_pki_pkt_err cvmx_pki_pkt_err_t;
1574 
1575 /**
1576  * cvmx_pki_ptag_avail
1577  *
1578  * For diagnostic use only.
1579  *
1580  */
1581 union cvmx_pki_ptag_avail {
1582 	u64 u64;
1583 	struct cvmx_pki_ptag_avail_s {
1584 		u64 reserved_8_63 : 56;
1585 		u64 avail : 8;
1586 	} s;
1587 	struct cvmx_pki_ptag_avail_s cn73xx;
1588 	struct cvmx_pki_ptag_avail_s cn78xx;
1589 	struct cvmx_pki_ptag_avail_s cnf75xx;
1590 };
1591 
1592 typedef union cvmx_pki_ptag_avail cvmx_pki_ptag_avail_t;
1593 
1594 /**
1595  * cvmx_pki_qpg_tbl#
1596  *
1597  * These registers are used by PKI BE to indirectly calculate the Portadd/Aura/Group
1598  * from the Diffsrv, HiGig or VLAN information as described in QPG. See also
1599  * PKI_QPG_TBLB().
1600  */
1601 union cvmx_pki_qpg_tblx {
1602 	u64 u64;
1603 	struct cvmx_pki_qpg_tblx_s {
1604 		u64 reserved_60_63 : 4;
1605 		u64 padd : 12;
1606 		u64 grptag_ok : 3;
1607 		u64 reserved_42_44 : 3;
1608 		u64 grp_ok : 10;
1609 		u64 grptag_bad : 3;
1610 		u64 reserved_26_28 : 3;
1611 		u64 grp_bad : 10;
1612 		u64 reserved_12_15 : 4;
1613 		u64 aura_node : 2;
1614 		u64 laura : 10;
1615 	} s;
1616 	struct cvmx_pki_qpg_tblx_s cn73xx;
1617 	struct cvmx_pki_qpg_tblx_s cn78xx;
1618 	struct cvmx_pki_qpg_tblx_s cn78xxp1;
1619 	struct cvmx_pki_qpg_tblx_s cnf75xx;
1620 };
1621 
1622 typedef union cvmx_pki_qpg_tblx cvmx_pki_qpg_tblx_t;
1623 
1624 /**
1625  * cvmx_pki_qpg_tblb#
1626  *
1627  * This register configures the QPG table. See also PKI_QPG_TBL().
1628  *
1629  */
1630 union cvmx_pki_qpg_tblbx {
1631 	u64 u64;
1632 	struct cvmx_pki_qpg_tblbx_s {
1633 		u64 reserved_10_63 : 54;
1634 		u64 dstat_id : 10;
1635 	} s;
1636 	struct cvmx_pki_qpg_tblbx_s cn73xx;
1637 	struct cvmx_pki_qpg_tblbx_s cn78xx;
1638 	struct cvmx_pki_qpg_tblbx_s cnf75xx;
1639 };
1640 
1641 typedef union cvmx_pki_qpg_tblbx cvmx_pki_qpg_tblbx_t;
1642 
1643 /**
1644  * cvmx_pki_reasm_sop#
1645  */
1646 union cvmx_pki_reasm_sopx {
1647 	u64 u64;
1648 	struct cvmx_pki_reasm_sopx_s {
1649 		u64 sop : 64;
1650 	} s;
1651 	struct cvmx_pki_reasm_sopx_s cn73xx;
1652 	struct cvmx_pki_reasm_sopx_s cn78xx;
1653 	struct cvmx_pki_reasm_sopx_s cn78xxp1;
1654 	struct cvmx_pki_reasm_sopx_s cnf75xx;
1655 };
1656 
1657 typedef union cvmx_pki_reasm_sopx cvmx_pki_reasm_sopx_t;
1658 
1659 /**
1660  * cvmx_pki_req_wgt
1661  *
1662  * This register controls the round-robin weights between each PKI requestor. For diagnostic
1663  * tuning only.
1664  */
1665 union cvmx_pki_req_wgt {
1666 	u64 u64;
1667 	struct cvmx_pki_req_wgt_s {
1668 		u64 reserved_36_63 : 28;
1669 		u64 wgt8 : 4;
1670 		u64 wgt7 : 4;
1671 		u64 wgt6 : 4;
1672 		u64 wgt5 : 4;
1673 		u64 wgt4 : 4;
1674 		u64 wgt3 : 4;
1675 		u64 wgt2 : 4;
1676 		u64 wgt1 : 4;
1677 		u64 wgt0 : 4;
1678 	} s;
1679 	struct cvmx_pki_req_wgt_s cn73xx;
1680 	struct cvmx_pki_req_wgt_s cn78xx;
1681 	struct cvmx_pki_req_wgt_s cn78xxp1;
1682 	struct cvmx_pki_req_wgt_s cnf75xx;
1683 };
1684 
1685 typedef union cvmx_pki_req_wgt cvmx_pki_req_wgt_t;
1686 
1687 /**
1688  * cvmx_pki_sft_rst
1689  */
1690 union cvmx_pki_sft_rst {
1691 	u64 u64;
1692 	struct cvmx_pki_sft_rst_s {
1693 		u64 busy : 1;
1694 		u64 reserved_33_62 : 30;
1695 		u64 active : 1;
1696 		u64 reserved_1_31 : 31;
1697 		u64 rst : 1;
1698 	} s;
1699 	struct cvmx_pki_sft_rst_s cn73xx;
1700 	struct cvmx_pki_sft_rst_s cn78xx;
1701 	struct cvmx_pki_sft_rst_s cn78xxp1;
1702 	struct cvmx_pki_sft_rst_s cnf75xx;
1703 };
1704 
1705 typedef union cvmx_pki_sft_rst cvmx_pki_sft_rst_t;
1706 
1707 /**
1708  * cvmx_pki_stat#_hist0
1709  */
1710 union cvmx_pki_statx_hist0 {
1711 	u64 u64;
1712 	struct cvmx_pki_statx_hist0_s {
1713 		u64 reserved_48_63 : 16;
1714 		u64 h1to63 : 48;
1715 	} s;
1716 	struct cvmx_pki_statx_hist0_s cn73xx;
1717 	struct cvmx_pki_statx_hist0_s cn78xx;
1718 	struct cvmx_pki_statx_hist0_s cn78xxp1;
1719 	struct cvmx_pki_statx_hist0_s cnf75xx;
1720 };
1721 
1722 typedef union cvmx_pki_statx_hist0 cvmx_pki_statx_hist0_t;
1723 
1724 /**
1725  * cvmx_pki_stat#_hist1
1726  */
1727 union cvmx_pki_statx_hist1 {
1728 	u64 u64;
1729 	struct cvmx_pki_statx_hist1_s {
1730 		u64 reserved_48_63 : 16;
1731 		u64 h64to127 : 48;
1732 	} s;
1733 	struct cvmx_pki_statx_hist1_s cn73xx;
1734 	struct cvmx_pki_statx_hist1_s cn78xx;
1735 	struct cvmx_pki_statx_hist1_s cn78xxp1;
1736 	struct cvmx_pki_statx_hist1_s cnf75xx;
1737 };
1738 
1739 typedef union cvmx_pki_statx_hist1 cvmx_pki_statx_hist1_t;
1740 
1741 /**
1742  * cvmx_pki_stat#_hist2
1743  */
1744 union cvmx_pki_statx_hist2 {
1745 	u64 u64;
1746 	struct cvmx_pki_statx_hist2_s {
1747 		u64 reserved_48_63 : 16;
1748 		u64 h128to255 : 48;
1749 	} s;
1750 	struct cvmx_pki_statx_hist2_s cn73xx;
1751 	struct cvmx_pki_statx_hist2_s cn78xx;
1752 	struct cvmx_pki_statx_hist2_s cn78xxp1;
1753 	struct cvmx_pki_statx_hist2_s cnf75xx;
1754 };
1755 
1756 typedef union cvmx_pki_statx_hist2 cvmx_pki_statx_hist2_t;
1757 
1758 /**
1759  * cvmx_pki_stat#_hist3
1760  */
1761 union cvmx_pki_statx_hist3 {
1762 	u64 u64;
1763 	struct cvmx_pki_statx_hist3_s {
1764 		u64 reserved_48_63 : 16;
1765 		u64 h256to511 : 48;
1766 	} s;
1767 	struct cvmx_pki_statx_hist3_s cn73xx;
1768 	struct cvmx_pki_statx_hist3_s cn78xx;
1769 	struct cvmx_pki_statx_hist3_s cn78xxp1;
1770 	struct cvmx_pki_statx_hist3_s cnf75xx;
1771 };
1772 
1773 typedef union cvmx_pki_statx_hist3 cvmx_pki_statx_hist3_t;
1774 
1775 /**
1776  * cvmx_pki_stat#_hist4
1777  */
1778 union cvmx_pki_statx_hist4 {
1779 	u64 u64;
1780 	struct cvmx_pki_statx_hist4_s {
1781 		u64 reserved_48_63 : 16;
1782 		u64 h512to1023 : 48;
1783 	} s;
1784 	struct cvmx_pki_statx_hist4_s cn73xx;
1785 	struct cvmx_pki_statx_hist4_s cn78xx;
1786 	struct cvmx_pki_statx_hist4_s cn78xxp1;
1787 	struct cvmx_pki_statx_hist4_s cnf75xx;
1788 };
1789 
1790 typedef union cvmx_pki_statx_hist4 cvmx_pki_statx_hist4_t;
1791 
1792 /**
1793  * cvmx_pki_stat#_hist5
1794  */
1795 union cvmx_pki_statx_hist5 {
1796 	u64 u64;
1797 	struct cvmx_pki_statx_hist5_s {
1798 		u64 reserved_48_63 : 16;
1799 		u64 h1024to1518 : 48;
1800 	} s;
1801 	struct cvmx_pki_statx_hist5_s cn73xx;
1802 	struct cvmx_pki_statx_hist5_s cn78xx;
1803 	struct cvmx_pki_statx_hist5_s cn78xxp1;
1804 	struct cvmx_pki_statx_hist5_s cnf75xx;
1805 };
1806 
1807 typedef union cvmx_pki_statx_hist5 cvmx_pki_statx_hist5_t;
1808 
1809 /**
1810  * cvmx_pki_stat#_hist6
1811  */
1812 union cvmx_pki_statx_hist6 {
1813 	u64 u64;
1814 	struct cvmx_pki_statx_hist6_s {
1815 		u64 reserved_48_63 : 16;
1816 		u64 h1519 : 48;
1817 	} s;
1818 	struct cvmx_pki_statx_hist6_s cn73xx;
1819 	struct cvmx_pki_statx_hist6_s cn78xx;
1820 	struct cvmx_pki_statx_hist6_s cn78xxp1;
1821 	struct cvmx_pki_statx_hist6_s cnf75xx;
1822 };
1823 
1824 typedef union cvmx_pki_statx_hist6 cvmx_pki_statx_hist6_t;
1825 
1826 /**
1827  * cvmx_pki_stat#_stat0
1828  */
1829 union cvmx_pki_statx_stat0 {
1830 	u64 u64;
1831 	struct cvmx_pki_statx_stat0_s {
1832 		u64 reserved_48_63 : 16;
1833 		u64 pkts : 48;
1834 	} s;
1835 	struct cvmx_pki_statx_stat0_s cn73xx;
1836 	struct cvmx_pki_statx_stat0_s cn78xx;
1837 	struct cvmx_pki_statx_stat0_s cn78xxp1;
1838 	struct cvmx_pki_statx_stat0_s cnf75xx;
1839 };
1840 
1841 typedef union cvmx_pki_statx_stat0 cvmx_pki_statx_stat0_t;
1842 
1843 /**
1844  * cvmx_pki_stat#_stat1
1845  */
1846 union cvmx_pki_statx_stat1 {
1847 	u64 u64;
1848 	struct cvmx_pki_statx_stat1_s {
1849 		u64 reserved_48_63 : 16;
1850 		u64 octs : 48;
1851 	} s;
1852 	struct cvmx_pki_statx_stat1_s cn73xx;
1853 	struct cvmx_pki_statx_stat1_s cn78xx;
1854 	struct cvmx_pki_statx_stat1_s cn78xxp1;
1855 	struct cvmx_pki_statx_stat1_s cnf75xx;
1856 };
1857 
1858 typedef union cvmx_pki_statx_stat1 cvmx_pki_statx_stat1_t;
1859 
1860 /**
1861  * cvmx_pki_stat#_stat10
1862  */
1863 union cvmx_pki_statx_stat10 {
1864 	u64 u64;
1865 	struct cvmx_pki_statx_stat10_s {
1866 		u64 reserved_48_63 : 16;
1867 		u64 jabber : 48;
1868 	} s;
1869 	struct cvmx_pki_statx_stat10_s cn73xx;
1870 	struct cvmx_pki_statx_stat10_s cn78xx;
1871 	struct cvmx_pki_statx_stat10_s cn78xxp1;
1872 	struct cvmx_pki_statx_stat10_s cnf75xx;
1873 };
1874 
1875 typedef union cvmx_pki_statx_stat10 cvmx_pki_statx_stat10_t;
1876 
1877 /**
1878  * cvmx_pki_stat#_stat11
1879  */
1880 union cvmx_pki_statx_stat11 {
1881 	u64 u64;
1882 	struct cvmx_pki_statx_stat11_s {
1883 		u64 reserved_48_63 : 16;
1884 		u64 oversz : 48;
1885 	} s;
1886 	struct cvmx_pki_statx_stat11_s cn73xx;
1887 	struct cvmx_pki_statx_stat11_s cn78xx;
1888 	struct cvmx_pki_statx_stat11_s cn78xxp1;
1889 	struct cvmx_pki_statx_stat11_s cnf75xx;
1890 };
1891 
1892 typedef union cvmx_pki_statx_stat11 cvmx_pki_statx_stat11_t;
1893 
1894 /**
1895  * cvmx_pki_stat#_stat12
1896  */
1897 union cvmx_pki_statx_stat12 {
1898 	u64 u64;
1899 	struct cvmx_pki_statx_stat12_s {
1900 		u64 reserved_48_63 : 16;
1901 		u64 l2err : 48;
1902 	} s;
1903 	struct cvmx_pki_statx_stat12_s cn73xx;
1904 	struct cvmx_pki_statx_stat12_s cn78xx;
1905 	struct cvmx_pki_statx_stat12_s cn78xxp1;
1906 	struct cvmx_pki_statx_stat12_s cnf75xx;
1907 };
1908 
1909 typedef union cvmx_pki_statx_stat12 cvmx_pki_statx_stat12_t;
1910 
1911 /**
1912  * cvmx_pki_stat#_stat13
1913  */
1914 union cvmx_pki_statx_stat13 {
1915 	u64 u64;
1916 	struct cvmx_pki_statx_stat13_s {
1917 		u64 reserved_48_63 : 16;
1918 		u64 spec : 48;
1919 	} s;
1920 	struct cvmx_pki_statx_stat13_s cn73xx;
1921 	struct cvmx_pki_statx_stat13_s cn78xx;
1922 	struct cvmx_pki_statx_stat13_s cn78xxp1;
1923 	struct cvmx_pki_statx_stat13_s cnf75xx;
1924 };
1925 
1926 typedef union cvmx_pki_statx_stat13 cvmx_pki_statx_stat13_t;
1927 
1928 /**
1929  * cvmx_pki_stat#_stat14
1930  */
1931 union cvmx_pki_statx_stat14 {
1932 	u64 u64;
1933 	struct cvmx_pki_statx_stat14_s {
1934 		u64 reserved_48_63 : 16;
1935 		u64 drp_bcast : 48;
1936 	} s;
1937 	struct cvmx_pki_statx_stat14_s cn73xx;
1938 	struct cvmx_pki_statx_stat14_s cn78xx;
1939 	struct cvmx_pki_statx_stat14_s cn78xxp1;
1940 	struct cvmx_pki_statx_stat14_s cnf75xx;
1941 };
1942 
1943 typedef union cvmx_pki_statx_stat14 cvmx_pki_statx_stat14_t;
1944 
1945 /**
1946  * cvmx_pki_stat#_stat15
1947  */
1948 union cvmx_pki_statx_stat15 {
1949 	u64 u64;
1950 	struct cvmx_pki_statx_stat15_s {
1951 		u64 reserved_48_63 : 16;
1952 		u64 drp_mcast : 48;
1953 	} s;
1954 	struct cvmx_pki_statx_stat15_s cn73xx;
1955 	struct cvmx_pki_statx_stat15_s cn78xx;
1956 	struct cvmx_pki_statx_stat15_s cn78xxp1;
1957 	struct cvmx_pki_statx_stat15_s cnf75xx;
1958 };
1959 
1960 typedef union cvmx_pki_statx_stat15 cvmx_pki_statx_stat15_t;
1961 
1962 /**
1963  * cvmx_pki_stat#_stat16
1964  */
1965 union cvmx_pki_statx_stat16 {
1966 	u64 u64;
1967 	struct cvmx_pki_statx_stat16_s {
1968 		u64 reserved_48_63 : 16;
1969 		u64 drp_bcast : 48;
1970 	} s;
1971 	struct cvmx_pki_statx_stat16_s cn73xx;
1972 	struct cvmx_pki_statx_stat16_s cn78xx;
1973 	struct cvmx_pki_statx_stat16_s cn78xxp1;
1974 	struct cvmx_pki_statx_stat16_s cnf75xx;
1975 };
1976 
1977 typedef union cvmx_pki_statx_stat16 cvmx_pki_statx_stat16_t;
1978 
1979 /**
1980  * cvmx_pki_stat#_stat17
1981  */
1982 union cvmx_pki_statx_stat17 {
1983 	u64 u64;
1984 	struct cvmx_pki_statx_stat17_s {
1985 		u64 reserved_48_63 : 16;
1986 		u64 drp_mcast : 48;
1987 	} s;
1988 	struct cvmx_pki_statx_stat17_s cn73xx;
1989 	struct cvmx_pki_statx_stat17_s cn78xx;
1990 	struct cvmx_pki_statx_stat17_s cn78xxp1;
1991 	struct cvmx_pki_statx_stat17_s cnf75xx;
1992 };
1993 
1994 typedef union cvmx_pki_statx_stat17 cvmx_pki_statx_stat17_t;
1995 
1996 /**
1997  * cvmx_pki_stat#_stat18
1998  */
1999 union cvmx_pki_statx_stat18 {
2000 	u64 u64;
2001 	struct cvmx_pki_statx_stat18_s {
2002 		u64 reserved_48_63 : 16;
2003 		u64 drp_spec : 48;
2004 	} s;
2005 	struct cvmx_pki_statx_stat18_s cn73xx;
2006 	struct cvmx_pki_statx_stat18_s cn78xx;
2007 	struct cvmx_pki_statx_stat18_s cn78xxp1;
2008 	struct cvmx_pki_statx_stat18_s cnf75xx;
2009 };
2010 
2011 typedef union cvmx_pki_statx_stat18 cvmx_pki_statx_stat18_t;
2012 
2013 /**
2014  * cvmx_pki_stat#_stat2
2015  */
2016 union cvmx_pki_statx_stat2 {
2017 	u64 u64;
2018 	struct cvmx_pki_statx_stat2_s {
2019 		u64 reserved_48_63 : 16;
2020 		u64 raw : 48;
2021 	} s;
2022 	struct cvmx_pki_statx_stat2_s cn73xx;
2023 	struct cvmx_pki_statx_stat2_s cn78xx;
2024 	struct cvmx_pki_statx_stat2_s cn78xxp1;
2025 	struct cvmx_pki_statx_stat2_s cnf75xx;
2026 };
2027 
2028 typedef union cvmx_pki_statx_stat2 cvmx_pki_statx_stat2_t;
2029 
2030 /**
2031  * cvmx_pki_stat#_stat3
2032  */
2033 union cvmx_pki_statx_stat3 {
2034 	u64 u64;
2035 	struct cvmx_pki_statx_stat3_s {
2036 		u64 reserved_48_63 : 16;
2037 		u64 drp_pkts : 48;
2038 	} s;
2039 	struct cvmx_pki_statx_stat3_s cn73xx;
2040 	struct cvmx_pki_statx_stat3_s cn78xx;
2041 	struct cvmx_pki_statx_stat3_s cn78xxp1;
2042 	struct cvmx_pki_statx_stat3_s cnf75xx;
2043 };
2044 
2045 typedef union cvmx_pki_statx_stat3 cvmx_pki_statx_stat3_t;
2046 
2047 /**
2048  * cvmx_pki_stat#_stat4
2049  */
2050 union cvmx_pki_statx_stat4 {
2051 	u64 u64;
2052 	struct cvmx_pki_statx_stat4_s {
2053 		u64 reserved_48_63 : 16;
2054 		u64 drp_octs : 48;
2055 	} s;
2056 	struct cvmx_pki_statx_stat4_s cn73xx;
2057 	struct cvmx_pki_statx_stat4_s cn78xx;
2058 	struct cvmx_pki_statx_stat4_s cn78xxp1;
2059 	struct cvmx_pki_statx_stat4_s cnf75xx;
2060 };
2061 
2062 typedef union cvmx_pki_statx_stat4 cvmx_pki_statx_stat4_t;
2063 
2064 /**
2065  * cvmx_pki_stat#_stat5
2066  */
2067 union cvmx_pki_statx_stat5 {
2068 	u64 u64;
2069 	struct cvmx_pki_statx_stat5_s {
2070 		u64 reserved_48_63 : 16;
2071 		u64 bcast : 48;
2072 	} s;
2073 	struct cvmx_pki_statx_stat5_s cn73xx;
2074 	struct cvmx_pki_statx_stat5_s cn78xx;
2075 	struct cvmx_pki_statx_stat5_s cn78xxp1;
2076 	struct cvmx_pki_statx_stat5_s cnf75xx;
2077 };
2078 
2079 typedef union cvmx_pki_statx_stat5 cvmx_pki_statx_stat5_t;
2080 
2081 /**
2082  * cvmx_pki_stat#_stat6
2083  */
2084 union cvmx_pki_statx_stat6 {
2085 	u64 u64;
2086 	struct cvmx_pki_statx_stat6_s {
2087 		u64 reserved_48_63 : 16;
2088 		u64 mcast : 48;
2089 	} s;
2090 	struct cvmx_pki_statx_stat6_s cn73xx;
2091 	struct cvmx_pki_statx_stat6_s cn78xx;
2092 	struct cvmx_pki_statx_stat6_s cn78xxp1;
2093 	struct cvmx_pki_statx_stat6_s cnf75xx;
2094 };
2095 
2096 typedef union cvmx_pki_statx_stat6 cvmx_pki_statx_stat6_t;
2097 
2098 /**
2099  * cvmx_pki_stat#_stat7
2100  */
2101 union cvmx_pki_statx_stat7 {
2102 	u64 u64;
2103 	struct cvmx_pki_statx_stat7_s {
2104 		u64 reserved_48_63 : 16;
2105 		u64 fcs : 48;
2106 	} s;
2107 	struct cvmx_pki_statx_stat7_s cn73xx;
2108 	struct cvmx_pki_statx_stat7_s cn78xx;
2109 	struct cvmx_pki_statx_stat7_s cn78xxp1;
2110 	struct cvmx_pki_statx_stat7_s cnf75xx;
2111 };
2112 
2113 typedef union cvmx_pki_statx_stat7 cvmx_pki_statx_stat7_t;
2114 
2115 /**
2116  * cvmx_pki_stat#_stat8
2117  */
2118 union cvmx_pki_statx_stat8 {
2119 	u64 u64;
2120 	struct cvmx_pki_statx_stat8_s {
2121 		u64 reserved_48_63 : 16;
2122 		u64 frag : 48;
2123 	} s;
2124 	struct cvmx_pki_statx_stat8_s cn73xx;
2125 	struct cvmx_pki_statx_stat8_s cn78xx;
2126 	struct cvmx_pki_statx_stat8_s cn78xxp1;
2127 	struct cvmx_pki_statx_stat8_s cnf75xx;
2128 };
2129 
2130 typedef union cvmx_pki_statx_stat8 cvmx_pki_statx_stat8_t;
2131 
2132 /**
2133  * cvmx_pki_stat#_stat9
2134  */
2135 union cvmx_pki_statx_stat9 {
2136 	u64 u64;
2137 	struct cvmx_pki_statx_stat9_s {
2138 		u64 reserved_48_63 : 16;
2139 		u64 undersz : 48;
2140 	} s;
2141 	struct cvmx_pki_statx_stat9_s cn73xx;
2142 	struct cvmx_pki_statx_stat9_s cn78xx;
2143 	struct cvmx_pki_statx_stat9_s cn78xxp1;
2144 	struct cvmx_pki_statx_stat9_s cnf75xx;
2145 };
2146 
2147 typedef union cvmx_pki_statx_stat9 cvmx_pki_statx_stat9_t;
2148 
2149 /**
2150  * cvmx_pki_stat_ctl
2151  *
2152  * This register controls how the PKI statistics counters are handled.
2153  *
2154  */
2155 union cvmx_pki_stat_ctl {
2156 	u64 u64;
2157 	struct cvmx_pki_stat_ctl_s {
2158 		u64 reserved_2_63 : 62;
2159 		u64 mode : 2;
2160 	} s;
2161 	struct cvmx_pki_stat_ctl_s cn73xx;
2162 	struct cvmx_pki_stat_ctl_s cn78xx;
2163 	struct cvmx_pki_stat_ctl_s cn78xxp1;
2164 	struct cvmx_pki_stat_ctl_s cnf75xx;
2165 };
2166 
2167 typedef union cvmx_pki_stat_ctl cvmx_pki_stat_ctl_t;
2168 
2169 /**
2170  * cvmx_pki_style#_buf
2171  *
2172  * This register configures the PKI BE skip amounts and other information.
2173  * It is indexed by final style, PKI_WQE_S[STYLE]<5:0>.
2174  */
2175 union cvmx_pki_stylex_buf {
2176 	u64 u64;
2177 	struct cvmx_pki_stylex_buf_s {
2178 		u64 reserved_33_63 : 31;
2179 		u64 pkt_lend : 1;
2180 		u64 wqe_hsz : 2;
2181 		u64 wqe_skip : 2;
2182 		u64 first_skip : 6;
2183 		u64 later_skip : 6;
2184 		u64 opc_mode : 2;
2185 		u64 dis_wq_dat : 1;
2186 		u64 mb_size : 13;
2187 	} s;
2188 	struct cvmx_pki_stylex_buf_s cn73xx;
2189 	struct cvmx_pki_stylex_buf_s cn78xx;
2190 	struct cvmx_pki_stylex_buf_s cn78xxp1;
2191 	struct cvmx_pki_stylex_buf_s cnf75xx;
2192 };
2193 
2194 typedef union cvmx_pki_stylex_buf cvmx_pki_stylex_buf_t;
2195 
2196 /**
2197  * cvmx_pki_style#_tag_mask
2198  *
2199  * This register configures the PKI BE tag algorithm.
2200  * It is indexed by final style, PKI_WQE_S[STYLE]<5:0>.
2201  */
2202 union cvmx_pki_stylex_tag_mask {
2203 	u64 u64;
2204 	struct cvmx_pki_stylex_tag_mask_s {
2205 		u64 reserved_16_63 : 48;
2206 		u64 mask : 16;
2207 	} s;
2208 	struct cvmx_pki_stylex_tag_mask_s cn73xx;
2209 	struct cvmx_pki_stylex_tag_mask_s cn78xx;
2210 	struct cvmx_pki_stylex_tag_mask_s cn78xxp1;
2211 	struct cvmx_pki_stylex_tag_mask_s cnf75xx;
2212 };
2213 
2214 typedef union cvmx_pki_stylex_tag_mask cvmx_pki_stylex_tag_mask_t;
2215 
2216 /**
2217  * cvmx_pki_style#_tag_sel
2218  *
2219  * This register configures the PKI BE tag algorithm.
2220  * It is indexed by final style, PKI_WQE_S[STYLE]<5:0>.
2221  */
2222 union cvmx_pki_stylex_tag_sel {
2223 	u64 u64;
2224 	struct cvmx_pki_stylex_tag_sel_s {
2225 		u64 reserved_27_63 : 37;
2226 		u64 tag_idx3 : 3;
2227 		u64 reserved_19_23 : 5;
2228 		u64 tag_idx2 : 3;
2229 		u64 reserved_11_15 : 5;
2230 		u64 tag_idx1 : 3;
2231 		u64 reserved_3_7 : 5;
2232 		u64 tag_idx0 : 3;
2233 	} s;
2234 	struct cvmx_pki_stylex_tag_sel_s cn73xx;
2235 	struct cvmx_pki_stylex_tag_sel_s cn78xx;
2236 	struct cvmx_pki_stylex_tag_sel_s cn78xxp1;
2237 	struct cvmx_pki_stylex_tag_sel_s cnf75xx;
2238 };
2239 
2240 typedef union cvmx_pki_stylex_tag_sel cvmx_pki_stylex_tag_sel_t;
2241 
2242 /**
2243  * cvmx_pki_style#_wq2
2244  *
2245  * This register configures the PKI BE WQE generation.
2246  * It is indexed by final style, PKI_WQE_S[STYLE]<5:0>.
2247  */
2248 union cvmx_pki_stylex_wq2 {
2249 	u64 u64;
2250 	struct cvmx_pki_stylex_wq2_s {
2251 		u64 data : 64;
2252 	} s;
2253 	struct cvmx_pki_stylex_wq2_s cn73xx;
2254 	struct cvmx_pki_stylex_wq2_s cn78xx;
2255 	struct cvmx_pki_stylex_wq2_s cn78xxp1;
2256 	struct cvmx_pki_stylex_wq2_s cnf75xx;
2257 };
2258 
2259 typedef union cvmx_pki_stylex_wq2 cvmx_pki_stylex_wq2_t;
2260 
2261 /**
2262  * cvmx_pki_style#_wq4
2263  *
2264  * This register configures the PKI BE WQE generation.
2265  * It is indexed by final style, PKI_WQE_S[STYLE]<5:0>.
2266  */
2267 union cvmx_pki_stylex_wq4 {
2268 	u64 u64;
2269 	struct cvmx_pki_stylex_wq4_s {
2270 		u64 data : 64;
2271 	} s;
2272 	struct cvmx_pki_stylex_wq4_s cn73xx;
2273 	struct cvmx_pki_stylex_wq4_s cn78xx;
2274 	struct cvmx_pki_stylex_wq4_s cn78xxp1;
2275 	struct cvmx_pki_stylex_wq4_s cnf75xx;
2276 };
2277 
2278 typedef union cvmx_pki_stylex_wq4 cvmx_pki_stylex_wq4_t;
2279 
2280 /**
2281  * cvmx_pki_tag_inc#_ctl
2282  */
2283 union cvmx_pki_tag_incx_ctl {
2284 	u64 u64;
2285 	struct cvmx_pki_tag_incx_ctl_s {
2286 		u64 reserved_12_63 : 52;
2287 		u64 ptr_sel : 4;
2288 		u64 offset : 8;
2289 	} s;
2290 	struct cvmx_pki_tag_incx_ctl_s cn73xx;
2291 	struct cvmx_pki_tag_incx_ctl_s cn78xx;
2292 	struct cvmx_pki_tag_incx_ctl_s cn78xxp1;
2293 	struct cvmx_pki_tag_incx_ctl_s cnf75xx;
2294 };
2295 
2296 typedef union cvmx_pki_tag_incx_ctl cvmx_pki_tag_incx_ctl_t;
2297 
2298 /**
2299  * cvmx_pki_tag_inc#_mask
2300  */
2301 union cvmx_pki_tag_incx_mask {
2302 	u64 u64;
2303 	struct cvmx_pki_tag_incx_mask_s {
2304 		u64 en : 64;
2305 	} s;
2306 	struct cvmx_pki_tag_incx_mask_s cn73xx;
2307 	struct cvmx_pki_tag_incx_mask_s cn78xx;
2308 	struct cvmx_pki_tag_incx_mask_s cn78xxp1;
2309 	struct cvmx_pki_tag_incx_mask_s cnf75xx;
2310 };
2311 
2312 typedef union cvmx_pki_tag_incx_mask cvmx_pki_tag_incx_mask_t;
2313 
2314 /**
2315  * cvmx_pki_tag_secret
2316  *
2317  * The source and destination initial values (IVs) in tag generation provide a mechanism for
2318  * seeding with a random initialization value to reduce cache collision attacks.
2319  */
2320 union cvmx_pki_tag_secret {
2321 	u64 u64;
2322 	struct cvmx_pki_tag_secret_s {
2323 		u64 dst6 : 16;
2324 		u64 src6 : 16;
2325 		u64 dst : 16;
2326 		u64 src : 16;
2327 	} s;
2328 	struct cvmx_pki_tag_secret_s cn73xx;
2329 	struct cvmx_pki_tag_secret_s cn78xx;
2330 	struct cvmx_pki_tag_secret_s cn78xxp1;
2331 	struct cvmx_pki_tag_secret_s cnf75xx;
2332 };
2333 
2334 typedef union cvmx_pki_tag_secret cvmx_pki_tag_secret_t;
2335 
2336 /**
2337  * cvmx_pki_x2p_req_ofl
2338  */
2339 union cvmx_pki_x2p_req_ofl {
2340 	u64 u64;
2341 	struct cvmx_pki_x2p_req_ofl_s {
2342 		u64 reserved_4_63 : 60;
2343 		u64 x2p_did : 4;
2344 	} s;
2345 	struct cvmx_pki_x2p_req_ofl_s cn73xx;
2346 	struct cvmx_pki_x2p_req_ofl_s cn78xx;
2347 	struct cvmx_pki_x2p_req_ofl_s cn78xxp1;
2348 	struct cvmx_pki_x2p_req_ofl_s cnf75xx;
2349 };
2350 
2351 typedef union cvmx_pki_x2p_req_ofl cvmx_pki_x2p_req_ofl_t;
2352 
2353 #endif
2354