port: support packet mirroring
[dpdk.git] / drivers / compress / octeontx / include / zip_regs.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Cavium, Inc
3  */
4
5 #ifndef _RTE_OCTEONTX_ZIP_REGS_H_
6 #define _RTE_OCTEONTX_ZIP_REGS_H_
7
8
9 /**
10  * Enumeration zip_cc
11  *
12  * ZIP compression coding Enumeration
13  * Enumerates ZIP_INST_S[CC].
14  */
15 enum zip_cc {
16         ZIP_CC_DEFAULT = 0,
17         ZIP_CC_DYN_HUFF,
18         ZIP_CC_FIXED_HUFF,
19         ZIP_CC_LZS
20 };
21
22 /**
23  * Register (NCB) zip_vq#_ena
24  *
25  * ZIP VF Queue Enable Register
26  * If a queue is disabled, ZIP CTL stops fetching instructions from the queue.
27  */
28 typedef union {
29         uint64_t u;
30         struct zip_vqx_ena_s {
31 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
32                 uint64_t reserved_1_63         : 63;
33                 uint64_t ena                   : 1;
34 #else /* Word 0 - Little Endian */
35                 uint64_t ena                   : 1;
36                 uint64_t reserved_1_63         : 63;
37 #endif /* Word 0 - End */
38         } s;
39 } zip_vqx_ena_t;
40
41 /**
42  * Register (NCB) zip_vq#_sbuf_addr
43  *
44  * ZIP VF Queue Starting Buffer Address Registers
45  * These registers set the buffer parameters for the instruction queues.
46  * When quiescent (i.e.
47  * outstanding doorbell count is 0), it is safe to rewrite this register
48  * to effectively reset the
49  * command buffer state machine.
50  * These registers must be programmed after software programs the
51  * corresponding ZIP_QUE()_SBUF_CTL.
52  */
53 typedef union {
54         uint64_t u;
55         struct zip_vqx_sbuf_addr_s {
56 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
57                 uint64_t reserved_49_63        : 15;
58                 uint64_t ptr                   : 42;
59                 uint64_t off                   : 7;
60 #else /* Word 0 - Little Endian */
61                 uint64_t off                   : 7;
62                 uint64_t ptr                   : 42;
63                 uint64_t reserved_49_63        : 15;
64 #endif /* Word 0 - End */
65         } s;
66
67         struct zip_vqx_sbuf_addr_s9x {
68 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
69                 uint64_t reserved_53_63        : 11;
70                 uint64_t ptr                   : 46;
71                 uint64_t off                   : 7;
72 #else /* Word 0 - Little Endian */
73                 uint64_t off                   : 7;
74                 uint64_t ptr                   : 46;
75                 uint64_t reserved_53_63        : 11;
76 #endif /* Word 0 - End */
77         } s9x;
78 } zip_vqx_sbuf_addr_t;
79
80 /**
81  * Register (NCB) zip_que#_doorbell
82  *
83  * ZIP Queue Doorbell Registers
84  * Doorbells for the ZIP instruction queues.
85  */
86 typedef union {
87         uint64_t u;
88         struct zip_quex_doorbell_s {
89 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
90                 uint64_t reserved_20_63        : 44;
91                 uint64_t dbell_cnt             : 20;
92 #else /* Word 0 - Little Endian */
93                 uint64_t dbell_cnt             : 20;
94                 uint64_t reserved_20_63        : 44;
95 #endif /* Word 0 - End */
96         } s;
97 } zip_quex_doorbell_t;
98
99 /**
100  * Structure zip_nptr_s
101  *
102  * ZIP Instruction Next-Chunk-Buffer Pointer (NPTR) Structure
103  * This structure is used to chain all the ZIP instruction buffers
104  * together. ZIP instruction buffers are managed
105  * (allocated and released) by software.
106  */
107 union zip_nptr_s {
108         uint64_t u;
109         struct zip_nptr_s_s {
110 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
111                 uint64_t addr                  : 64;
112 #else /* Word 0 - Little Endian */
113                 uint64_t addr                  : 64;
114 #endif /* Word 0 - End */
115         } s;
116 };
117
118 /**
119  * generic ptr address
120  */
121 union zip_zptr_addr_s {
122         /** This field can be used to set/clear all bits, or do bitwise
123          * operations over the entire structure.
124          */
125         uint64_t u;
126         /** generic ptr address */
127         struct {
128 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
129                 uint64_t addr : 64;
130 #else /* Word 0 - Little Endian */
131                 uint64_t addr : 64;
132 #endif /* Word 0 - End */
133         } s;
134 };
135
136 /**
137  * generic ptr ctl
138  */
139 union zip_zptr_ctl_s {
140         /** This field can be used to set/clear all bits, or do bitwise
141          * operations over the entire structure.
142          */
143         uint64_t u;
144         /** generic ptr ctl */
145         struct {
146 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
147                 uint64_t reserved_112_127      : 16;
148                 uint64_t length                : 16;
149                 uint64_t reserved_67_95        : 29;
150                 uint64_t fw                    : 1;
151                 uint64_t nc                    : 1;
152                 uint64_t data_be               : 1;
153 #else /* Word 1 - Little Endian */
154                 uint64_t data_be               : 1;
155                 uint64_t nc                    : 1;
156                 uint64_t fw                    : 1;
157                 uint64_t reserved_67_95        : 29;
158                 uint64_t length                : 16;
159                 uint64_t reserved_112_127      : 16;
160 #endif /* Word 1 - End */
161         } s;
162
163 };
164
165 /**
166  * Structure zip_inst_s
167  *
168  * ZIP Instruction Structure
169  * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15
170  * within the structure).
171  */
172 union zip_inst_s {
173         /** This field can be used to set/clear all bits, or do bitwise
174          * operations over the entire structure.
175          */
176         uint64_t u[16];
177         /** ZIP Instruction Structure */
178         struct zip_inst_s_s {
179 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
180                 /** Done interrupt */
181                 uint64_t doneint               : 1;
182                 /** reserved */
183                 uint64_t reserved_56_62        : 7;
184                 /**  Total output length */
185                 uint64_t totaloutputlength     : 24;
186                 /** reserved */
187                 uint64_t reserved_27_31        : 5;
188                 /** EXNUM */
189                 uint64_t exn                   : 3;
190                 /**  HASH IV */
191                 uint64_t iv                    : 1;
192                 /** EXBITS */
193                 uint64_t exbits                : 7;
194                 /** Hash more-in-file */
195                 uint64_t hmif                  : 1;
196                 /** Hash Algorithm and enable */
197                 uint64_t halg                  : 3;
198                 /** Sync flush*/
199                 uint64_t sf                    : 1;
200                 /** Compression speed/storage */
201                 uint64_t ss                    : 2;
202                 /** Compression coding */
203                 uint64_t cc                    : 2;
204                 /** End of input data */
205                 uint64_t ef                    : 1;
206                 /** Beginning of file */
207                 uint64_t bf                    : 1;
208                 /** Comp/decomp operation */
209                 uint64_t op                    : 2;
210                 /** Data scatter */
211                 uint64_t ds                    : 1;
212                 /** Data gather */
213                 uint64_t dg                    : 1;
214                 /** History gather */
215                 uint64_t hg                    : 1;
216 #else /* Word 0 - Little Endian */
217                 uint64_t hg                    : 1;
218                 uint64_t dg                    : 1;
219                 uint64_t ds                    : 1;
220                 uint64_t op                    : 2;
221                 uint64_t bf                    : 1;
222                 uint64_t ef                    : 1;
223                 uint64_t cc                    : 2;
224                 uint64_t ss                    : 2;
225                 uint64_t sf                    : 1;
226                 uint64_t halg                  : 3;
227                 uint64_t hmif                  : 1;
228                 uint64_t exbits                : 7;
229                 uint64_t iv                    : 1;
230                 uint64_t exn                   : 3;
231                 uint64_t reserved_27_31        : 5;
232                 uint64_t totaloutputlength     : 24;
233                 uint64_t reserved_56_62        : 7;
234                 uint64_t doneint               : 1;
235
236 #endif /* Word 0 - End */
237
238 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
239                 /** History length */
240                 uint64_t historylength         : 16;
241                 /** reserved */
242                 uint64_t reserved_96_111       : 16;
243                 /** adler/crc32 checksum*/
244                 uint64_t adlercrc32            : 32;
245 #else /* Word 1 - Little Endian */
246                 uint64_t adlercrc32            : 32;
247                 uint64_t reserved_96_111       : 16;
248                 uint64_t historylength         : 16;
249 #endif /* Word 1 - End */
250
251 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */
252                 /** Decompression Context Pointer Address */
253                 union zip_zptr_addr_s  ctx_ptr_addr;
254 #else /* Word 2 - Little Endian */
255                 union zip_zptr_addr_s  ctx_ptr_addr;
256 #endif /* Word 2 - End */
257
258 #if defined(__BIG_ENDIAN_BITFIELD)
259                 /** Decompression Context Pointer Control */
260                 union zip_zptr_ctl_s   ctx_ptr_ctl;
261 #else /* Word 3 - Little Endian */
262                 union zip_zptr_ctl_s   ctx_ptr_ctl;
263 #endif /* Word 3 - End */
264
265 #if defined(__BIG_ENDIAN_BITFIELD)
266                 /** Decompression history pointer address */
267                 union zip_zptr_addr_s  his_ptr_addr;
268 #else /* Word 4 - Little Endian */
269                 union zip_zptr_addr_s  his_ptr_addr;
270 #endif /* Word 4 - End */
271
272 #if defined(__BIG_ENDIAN_BITFIELD)
273                 /** Decompression history pointer control */
274                 union zip_zptr_ctl_s   his_ptr_ctl;
275 #else /* Word 5 - Little Endian */
276                 union zip_zptr_ctl_s   his_ptr_ctl;
277 #endif /* Word 5 - End */
278
279 #if defined(__BIG_ENDIAN_BITFIELD)
280                 /** Input and compression history pointer address */
281                 union zip_zptr_addr_s  inp_ptr_addr;
282 #else /* Word 6 - Little Endian */
283                 union zip_zptr_addr_s  inp_ptr_addr;
284 #endif /* Word 6 - End */
285
286 #if defined(__BIG_ENDIAN_BITFIELD)
287                 /** Input and compression history pointer control */
288                 union zip_zptr_ctl_s   inp_ptr_ctl;
289 #else /* Word 7 - Little Endian */
290                 union zip_zptr_ctl_s   inp_ptr_ctl;
291 #endif /* Word 7 - End */
292
293 #if defined(__BIG_ENDIAN_BITFIELD)
294                 /** Output pointer address */
295                 union zip_zptr_addr_s  out_ptr_addr;
296 #else /* Word 8 - Little Endian */
297                 union zip_zptr_addr_s  out_ptr_addr;
298 #endif /* Word 8 - End */
299
300 #if defined(__BIG_ENDIAN_BITFIELD)
301                 /** Output pointer control */
302                 union zip_zptr_ctl_s   out_ptr_ctl;
303 #else /* Word 9 - Little Endian */
304                 union zip_zptr_ctl_s   out_ptr_ctl;
305 #endif /* Word 9 - End */
306
307 #if defined(__BIG_ENDIAN_BITFIELD)
308                 /** Result pointer address */
309                 union zip_zptr_addr_s  res_ptr_addr;
310 #else /* Word 10 - Little Endian */
311                 union zip_zptr_addr_s  res_ptr_addr;
312 #endif /* Word 10 - End */
313
314 #if defined(__BIG_ENDIAN_BITFIELD)
315                 /** Result pointer control */
316                 union zip_zptr_ctl_s   res_ptr_ctl;
317 #else /* Word 11 - Little Endian */
318                 union zip_zptr_ctl_s   res_ptr_ctl;
319 #endif /* Word 11 - End */
320
321 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */
322                 /** reserved */
323                 uint64_t reserved_812_831      : 20;
324                 /** SSO guest group */
325                 uint64_t ggrp                  : 10;
326                 /** SSO tag type */
327                 uint64_t tt                    : 2;
328                 /** SSO tag */
329                 uint64_t tag                   : 32;
330 #else /* Word 12 - Little Endian */
331                 uint64_t tag                   : 32;
332                 uint64_t tt                    : 2;
333                 uint64_t ggrp                  : 10;
334                 uint64_t reserved_812_831      : 20;
335 #endif /* Word 12 - End */
336
337 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */
338                 /** Work queue entry pointer */
339                 uint64_t wq_ptr                : 64;
340 #else /* Word 13 - Little Endian */
341                 uint64_t wq_ptr                : 64;
342 #endif /* Word 13 - End */
343
344 #if defined(__BIG_ENDIAN_BITFIELD)
345                 /** reserved */
346                 uint64_t reserved_896_959      : 64;
347 #else /* Word 14 - Little Endian */
348                 uint64_t reserved_896_959      : 64;
349 #endif /* Word 14 - End */
350 #if defined(__BIG_ENDIAN_BITFIELD)
351                 /** Hash structure pointer */
352                 uint64_t hash_ptr              : 64;
353 #else /* Word 15 - Little Endian */
354                 uint64_t hash_ptr              : 64;
355 #endif /* Word 15 - End */
356         } /** ZIP 88xx Instruction Structure */zip88xx;
357
358         /** ZIP Instruction Structure */
359         struct zip_inst_s_cn83xx {
360 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
361                 /** Done interrupt */
362                 uint64_t doneint               : 1;
363                 /** reserved */
364                 uint64_t reserved_56_62        : 7;
365                 /**  Total output length */
366                 uint64_t totaloutputlength     : 24;
367                 /** reserved */
368                 uint64_t reserved_27_31        : 5;
369                 /** EXNUM */
370                 uint64_t exn                   : 3;
371                 /**  HASH IV */
372                 uint64_t iv                    : 1;
373                 /** EXBITS */
374                 uint64_t exbits                : 7;
375                 /** Hash more-in-file */
376                 uint64_t hmif                  : 1;
377                 /** Hash Algorithm and enable */
378                 uint64_t halg                  : 3;
379                 /** Sync flush*/
380                 uint64_t sf                    : 1;
381                 /** Compression speed/storage */
382                 uint64_t ss                    : 2;
383                 /** Compression coding */
384                 uint64_t cc                    : 2;
385                 /** End of input data */
386                 uint64_t ef                    : 1;
387                 /** Beginning of file */
388                 uint64_t bf                    : 1;
389                 /** Comp/decomp operation */
390                 uint64_t op                    : 2;
391                 /** Data scatter */
392                 uint64_t ds                    : 1;
393                 /** Data gather */
394                 uint64_t dg                    : 1;
395                 /** History gather */
396                 uint64_t hg                    : 1;
397 #else /* Word 0 - Little Endian */
398                 uint64_t hg                    : 1;
399                 uint64_t dg                    : 1;
400                 uint64_t ds                    : 1;
401                 uint64_t op                    : 2;
402                 uint64_t bf                    : 1;
403                 uint64_t ef                    : 1;
404                 uint64_t cc                    : 2;
405                 uint64_t ss                    : 2;
406                 uint64_t sf                    : 1;
407                 uint64_t halg                  : 3;
408                 uint64_t hmif                  : 1;
409                 uint64_t exbits                : 7;
410                 uint64_t iv                    : 1;
411                 uint64_t exn                   : 3;
412                 uint64_t reserved_27_31        : 5;
413                 uint64_t totaloutputlength     : 24;
414                 uint64_t reserved_56_62        : 7;
415                 uint64_t doneint               : 1;
416 #endif /* Word 0 - End */
417 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
418                 /** History length */
419                 uint64_t historylength         : 16;
420                 /** reserved */
421                 uint64_t reserved_96_111       : 16;
422                 /** adler/crc32 checksum*/
423                 uint64_t adlercrc32            : 32;
424 #else /* Word 1 - Little Endian */
425                 uint64_t adlercrc32            : 32;
426                 uint64_t reserved_96_111       : 16;
427                 uint64_t historylength         : 16;
428 #endif /* Word 1 - End */
429 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */
430                 /** Decompression Context Pointer Address */
431                 union zip_zptr_addr_s  ctx_ptr_addr;
432 #else /* Word 2 - Little Endian */
433                 union zip_zptr_addr_s  ctx_ptr_addr;
434 #endif /* Word 2 - End */
435 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */
436                 /** Decompression Context Pointer Control */
437                 union zip_zptr_ctl_s   ctx_ptr_ctl;
438 #else /* Word 3 - Little Endian */
439                 union zip_zptr_ctl_s   ctx_ptr_ctl;
440 #endif /* Word 3 - End */
441 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */
442                 /** Decompression history pointer address */
443                 union zip_zptr_addr_s  his_ptr_addr;
444 #else /* Word 4 - Little Endian */
445                 union zip_zptr_addr_s  his_ptr_addr;
446 #endif /* Word 4 - End */
447 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */
448                 /** Decompression history pointer control */
449                 union zip_zptr_ctl_s   his_ptr_ctl;
450 #else /* Word 5 - Little Endian */
451                 union zip_zptr_ctl_s   his_ptr_ctl;
452 #endif /* Word 5 - End */
453 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */
454                 /** Input and compression history pointer address */
455                 union zip_zptr_addr_s  inp_ptr_addr;
456 #else /* Word 6 - Little Endian */
457                 union zip_zptr_addr_s  inp_ptr_addr;
458 #endif /* Word 6 - End */
459 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */
460                 /** Input and compression history pointer control */
461                 union zip_zptr_ctl_s   inp_ptr_ctl;
462 #else /* Word 7 - Little Endian */
463                 union zip_zptr_ctl_s   inp_ptr_ctl;
464 #endif /* Word 7 - End */
465 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 8 - Big Endian */
466                 /** Output pointer address */
467                 union zip_zptr_addr_s  out_ptr_addr;
468 #else /* Word 8 - Little Endian */
469                 union zip_zptr_addr_s  out_ptr_addr;
470 #endif /* Word 8 - End */
471 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 9 - Big Endian */
472                 /** Output pointer control */
473                 union zip_zptr_ctl_s   out_ptr_ctl;
474 #else /* Word 9 - Little Endian */
475                 union zip_zptr_ctl_s   out_ptr_ctl;
476 #endif /* Word 9 - End */
477 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 10 - Big Endian */
478                 /** Result pointer address */
479                 union zip_zptr_addr_s  res_ptr_addr;
480 #else /* Word 10 - Little Endian */
481                 union zip_zptr_addr_s  res_ptr_addr;
482 #endif /* Word 10 - End */
483 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 11 - Big Endian */
484                 /** Result pointer control */
485                 union zip_zptr_ctl_s   res_ptr_ctl;
486 #else /* Word 11 - Little Endian */
487                 union zip_zptr_ctl_s   res_ptr_ctl;
488 #endif /* Word 11 - End */
489 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */
490                 /** reserved */
491                 uint64_t reserved_812_831      : 20;
492                 /** SSO guest group */
493                 uint64_t ggrp                  : 10;
494                 /** SSO tag type */
495                 uint64_t tt                    : 2;
496                 /** SSO tag */
497                 uint64_t tag                   : 32;
498 #else /* Word 12 - Little Endian */
499                 uint64_t tag                   : 32;
500                 uint64_t tt                    : 2;
501                 uint64_t ggrp                  : 10;
502                 uint64_t reserved_812_831      : 20;
503 #endif /* Word 12 - End */
504 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */
505                 /** Work queue entry pointer */
506                 uint64_t wq_ptr                : 64;
507 #else /* Word 13 - Little Endian */
508                 uint64_t wq_ptr                : 64;
509 #endif /* Word 13 - End */
510 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 14 - Big Endian */
511                 /** reserved */
512                 uint64_t reserved_896_959      : 64;
513 #else /* Word 14 - Little Endian */
514                 uint64_t reserved_896_959      : 64;
515 #endif /* Word 14 - End */
516 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 15 - Big Endian */
517                 /** Hash structure pointer */
518                 uint64_t hash_ptr              : 64;
519 #else /* Word 15 - Little Endian */
520                 uint64_t hash_ptr              : 64;
521 #endif /* Word 15 - End */
522         } /** ZIP 83xx Instruction Structure */s;
523 };
524
525 /**
526  * Structure zip_zres_s
527  *
528  * ZIP Result Structure
529  * The ZIP coprocessor writes the result structure after it completes the
530  * invocation. The result structure is exactly 24 bytes, and each invocation
531  * of the ZIP coprocessor produces exactly one result structure.
532  */
533 union zip_zres_s {
534         /** This field can be used to set/clear all bits, or do bitwise
535          * operations over the entire structure.
536          */
537         uint64_t u[8];
538         /** ZIP Result Structure */
539         struct zip_zres_s_s {
540 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
541                 /** crc32 checksum of uncompressed stream */
542                 uint64_t crc32                 : 32;
543                 /** adler32 checksum of uncompressed stream*/
544                 uint64_t adler32               : 32;
545 #else /* Word 0 - Little Endian */
546                 uint64_t adler32               : 32;
547                 uint64_t crc32                 : 32;
548 #endif /* Word 0 - End */
549 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
550                 /** Total numer of Bytes produced in output stream */
551                 uint64_t totalbyteswritten     : 32;
552                 /** Total number of bytes processed from the input stream */
553                 uint64_t totalbytesread        : 32;
554 #else /* Word 1 - Little Endian */
555                 uint64_t totalbytesread        : 32;
556                 uint64_t totalbyteswritten     : 32;
557 #endif /* Word 1 - End */
558 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */
559                 /** Total number of compressed input bits
560                  * consumed to decompress all blocks in the file
561                  */
562                 uint64_t totalbitsprocessed    : 32;
563                 /** Done interrupt*/
564                 uint64_t doneint               : 1;
565                 /** reserved */
566                 uint64_t reserved_155_158      : 4;
567                 /** EXNUM */
568                 uint64_t exn                   : 3;
569                 /** reserved */
570                 uint64_t reserved_151          : 1;
571                 /** EXBITS */
572                 uint64_t exbits                : 7;
573                 /** reserved */
574                 uint64_t reserved_137_143      : 7;
575                 /** End of file */
576                 uint64_t ef                    : 1;
577                 /** Completion/error code */
578                 uint64_t compcode              : 8;
579 #else /* Word 2 - Little Endian */
580                 uint64_t compcode              : 8;
581                 uint64_t ef                    : 1;
582                 uint64_t reserved_137_143      : 7;
583                 uint64_t exbits                : 7;
584                 uint64_t reserved_151          : 1;
585                 uint64_t exn                   : 3;
586                 uint64_t reserved_155_158      : 4;
587                 uint64_t doneint               : 1;
588                 uint64_t totalbitsprocessed    : 32;
589 #endif /* Word 2 - End */
590 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */
591                 /** reserved */
592                 uint64_t reserved_253_255      : 3;
593                 /** Hash length in bytes */
594                 uint64_t hshlen                : 61;
595 #else /* Word 3 - Little Endian */
596                 uint64_t hshlen                : 61;
597                 uint64_t reserved_253_255      : 3;
598 #endif /* Word 3 - End */
599 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */
600                 /** Double-word 0 of computed hash */
601                 uint64_t hash0                 : 64;
602 #else /* Word 4 - Little Endian */
603                 uint64_t hash0                 : 64;
604 #endif /* Word 4 - End */
605 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */
606                 /** Double-word 1 of computed hash */
607                 uint64_t hash1                 : 64;
608 #else /* Word 5 - Little Endian */
609                 uint64_t hash1                 : 64;
610 #endif /* Word 5 - End */
611 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */
612                 /** Double-word 2 of computed hash */
613                 uint64_t hash2                 : 64;
614 #else /* Word 6 - Little Endian */
615                 uint64_t hash2                 : 64;
616 #endif /* Word 6 - End */
617 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */
618                 /** Double-word 3 of computed hash */
619                 uint64_t hash3                 : 64;
620 #else /* Word 7 - Little Endian */
621                 uint64_t hash3                 : 64;
622 #endif /* Word 7 - End */
623         } /** ZIP Result Structure */s;
624 };
625
626 /**
627  * Structure zip_zptr_s
628  *
629  * ZIP Generic Pointer Structure
630  * This structure is the generic format of pointers in ZIP_INST_S.
631  */
632 union zip_zptr_s {
633         /** This field can be used to set/clear all bits, or do bitwise
634          * operations over the entire structure.
635          */
636         uint64_t u[2];
637         /** ZIP Generic Pointer Structure */
638         struct zip_zptr_s_s {
639 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
640                 /** Pointer to Data or scatter-gather list */
641                 uint64_t addr                  : 64;
642 #else /* Word 0 - Little Endian */
643                 uint64_t addr                  : 64;
644 #endif /* Word 0 - End */
645 #if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
646                 /** reserved */
647                 uint64_t reserved_112_127      : 16;
648                 /** Length of Data or scatter-gather list*/
649                 uint64_t length                : 16;
650                 /** reserved */
651                 uint64_t reserved_67_95        : 29;
652                 /** Full-block write */
653                 uint64_t fw                    : 1;
654                 /** No cache allocation */
655                 uint64_t nc                    : 1;
656                 /** reserved */
657                 uint64_t data_be               : 1;
658 #else /* Word 1 - Little Endian */
659                 uint64_t data_be               : 1;
660                 uint64_t nc                    : 1;
661                 uint64_t fw                    : 1;
662                 uint64_t reserved_67_95        : 29;
663                 uint64_t length                : 16;
664                 uint64_t reserved_112_127      : 16;
665 #endif /* Word 1 - End */
666         } /** ZIP Generic Pointer Structure */s;
667 };
668
669 /**
670  * Enumeration zip_comp_e
671  *
672  * ZIP Completion Enumeration
673  * Enumerates the values of ZIP_ZRES_S[COMPCODE].
674  */
675 #define ZIP_COMP_E_NOTDONE       (0)
676 #define ZIP_COMP_E_SUCCESS       (1)
677 #define ZIP_COMP_E_DTRUNC        (2)
678 #define ZIP_COMP_E_DSTOP         (3)
679 #define ZIP_COMP_E_ITRUNC        (4)
680 #define ZIP_COMP_E_RBLOCK        (5)
681 #define ZIP_COMP_E_NLEN          (6)
682 #define ZIP_COMP_E_BADCODE       (7)
683 #define ZIP_COMP_E_BADCODE2      (8)
684 #define ZIP_COMP_E_ZERO_LEN      (9)
685 #define ZIP_COMP_E_PARITY        (0xa)
686 #define ZIP_COMP_E_FATAL         (0xb)
687 #define ZIP_COMP_E_TIMEOUT       (0xc)
688 #define ZIP_COMP_E_INSTR_ERR     (0xd)
689 #define ZIP_COMP_E_HCTX_ERR      (0xe)
690 #define ZIP_COMP_E_STOP          (3)
691
692 /**
693  * Enumeration zip_op_e
694  *
695  * ZIP Operation Enumeration
696  * Enumerates ZIP_INST_S[OP].
697  * Internal:
698  */
699 #define ZIP_OP_E_DECOMP   (0)
700 #define ZIP_OP_E_NOCOMP   (1)
701 #define ZIP_OP_E_COMP     (2)
702
703 /**
704  * Enumeration zip compression levels
705  *
706  * ZIP Compression Level Enumeration
707  * Enumerates ZIP_INST_S[SS].
708  * Internal:
709  */
710 #define ZIP_COMP_E_LEVEL_MAX  (0)
711 #define ZIP_COMP_E_LEVEL_MED  (1)
712 #define ZIP_COMP_E_LEVEL_LOW  (2)
713 #define ZIP_COMP_E_LEVEL_MIN  (3)
714
715 #endif  /* _RTE_ZIP_REGS_H_ */