New upstream version 18.08
[deb_dpdk.git] / drivers / compress / octeontx / include / zip_regs.h
diff --git a/drivers/compress/octeontx/include/zip_regs.h b/drivers/compress/octeontx/include/zip_regs.h
new file mode 100644 (file)
index 0000000..1e74db4
--- /dev/null
@@ -0,0 +1,711 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Cavium, Inc
+ */
+
+#ifndef _RTE_OCTEONTX_ZIP_REGS_H_
+#define _RTE_OCTEONTX_ZIP_REGS_H_
+
+
+/**
+ * Enumeration zip_cc
+ *
+ * ZIP compression coding Enumeration
+ * Enumerates ZIP_INST_S[CC].
+ */
+enum {
+       ZIP_CC_DEFAULT = 0,
+       ZIP_CC_DYN_HUFF,
+       ZIP_CC_FIXED_HUFF,
+       ZIP_CC_LZS
+} zip_cc;
+
+/**
+ * Register (NCB) zip_vq#_ena
+ *
+ * ZIP VF Queue Enable Register
+ * If a queue is disabled, ZIP CTL stops fetching instructions from the queue.
+ */
+typedef union {
+       uint64_t u;
+       struct zip_vqx_ena_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               uint64_t reserved_1_63         : 63;
+               uint64_t ena                   : 1;
+#else /* Word 0 - Little Endian */
+               uint64_t ena                   : 1;
+               uint64_t reserved_1_63         : 63;
+#endif /* Word 0 - End */
+       } s;
+       /* struct zip_vqx_ena_s cn; */
+} zip_vqx_ena_t;
+
+/**
+ * Register (NCB) zip_vq#_sbuf_addr
+ *
+ * ZIP VF Queue Starting Buffer Address Registers
+ * These registers set the buffer parameters for the instruction queues.
+ * When quiescent (i.e.
+ * outstanding doorbell count is 0), it is safe to rewrite this register
+ * to effectively reset the
+ * command buffer state machine.
+ * These registers must be programmed after software programs the
+ * corresponding ZIP_QUE()_SBUF_CTL.
+ */
+typedef union {
+       uint64_t u;
+       struct zip_vqx_sbuf_addr_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               uint64_t reserved_49_63        : 15;
+               uint64_t ptr                   : 42;
+               uint64_t off                   : 7;
+#else /* Word 0 - Little Endian */
+               uint64_t off                   : 7;
+               uint64_t ptr                   : 42;
+               uint64_t reserved_49_63        : 15;
+#endif /* Word 0 - End */
+       } s;
+       /* struct zip_vqx_sbuf_addr_s cn; */
+} zip_vqx_sbuf_addr_t;
+
+/**
+ * Register (NCB) zip_que#_doorbell
+ *
+ * ZIP Queue Doorbell Registers
+ * Doorbells for the ZIP instruction queues.
+ */
+typedef union {
+       uint64_t u;
+       struct zip_quex_doorbell_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               uint64_t reserved_20_63        : 44;
+               uint64_t dbell_cnt             : 20;
+#else /* Word 0 - Little Endian */
+               uint64_t dbell_cnt             : 20;
+               uint64_t reserved_20_63        : 44;
+#endif /* Word 0 - End */
+       } s;
+       /* struct zip_quex_doorbell_s cn; */
+} zip_quex_doorbell_t;
+
+/**
+ * Structure zip_nptr_s
+ *
+ * ZIP Instruction Next-Chunk-Buffer Pointer (NPTR) Structure
+ * This structure is used to chain all the ZIP instruction buffers
+ * together. ZIP instruction buffers are managed
+ * (allocated and released) by software.
+ */
+union zip_nptr_s {
+       uint64_t u;
+       struct zip_nptr_s_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               uint64_t addr                  : 64;
+#else /* Word 0 - Little Endian */
+               uint64_t addr                  : 64;
+#endif /* Word 0 - End */
+       } s;
+       /* struct zip_nptr_s_s cn83xx; */
+};
+
+/**
+ * generic ptr address
+ */
+union zip_zptr_addr_s {
+       /** This field can be used to set/clear all bits, or do bitwise
+        * operations over the entire structure.
+        */
+       uint64_t u;
+       /** generic ptr address */
+       struct {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               uint64_t addr : 64;
+#else /* Word 0 - Little Endian */
+               uint64_t addr : 64;
+#endif /* Word 0 - End */
+       } s;
+};
+
+/**
+ * generic ptr ctl
+ */
+union zip_zptr_ctl_s {
+       /** This field can be used to set/clear all bits, or do bitwise
+        * operations over the entire structure.
+        */
+       uint64_t u;
+       /** generic ptr ctl */
+       struct {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
+               uint64_t reserved_112_127      : 16;
+               uint64_t length                : 16;
+               uint64_t reserved_67_95        : 29;
+               uint64_t fw                    : 1;
+               uint64_t nc                    : 1;
+               uint64_t data_be               : 1;
+#else /* Word 1 - Little Endian */
+               uint64_t data_be               : 1;
+               uint64_t nc                    : 1;
+               uint64_t fw                    : 1;
+               uint64_t reserved_67_95        : 29;
+               uint64_t length                : 16;
+               uint64_t reserved_112_127      : 16;
+#endif /* Word 1 - End */
+       } s;
+
+};
+
+/**
+ * Structure zip_inst_s
+ *
+ * ZIP Instruction Structure
+ * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15
+ * within the structure).
+ */
+union zip_inst_s {
+       /** This field can be used to set/clear all bits, or do bitwise
+        * operations over the entire structure.
+        */
+       uint64_t u[16];
+       /** ZIP Instruction Structure */
+       struct zip_inst_s_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               /** Done interrupt */
+               uint64_t doneint               : 1;
+               /** reserved */
+               uint64_t reserved_56_62        : 7;
+               /**  Total output length */
+               uint64_t totaloutputlength     : 24;
+               /** reserved */
+               uint64_t reserved_27_31        : 5;
+               /** EXNUM */
+               uint64_t exn                   : 3;
+               /**  HASH IV */
+               uint64_t iv                    : 1;
+               /** EXBITS */
+               uint64_t exbits                : 7;
+               /** Hash more-in-file */
+               uint64_t hmif                  : 1;
+               /** Hash Algorithm and enable */
+               uint64_t halg                  : 3;
+               /** Sync flush*/
+               uint64_t sf                    : 1;
+               /** Compression speed/storage */
+               uint64_t ss                    : 2;
+               /** Compression coding */
+               uint64_t cc                    : 2;
+               /** End of input data */
+               uint64_t ef                    : 1;
+               /** Beginning of file */
+               uint64_t bf                    : 1;
+               // uint64_t reserved_3_4          : 2;
+               /** Comp/decomp operation */
+               uint64_t op                    : 2;
+               /** Data sactter */
+               uint64_t ds                    : 1;
+               /** Data gather */
+               uint64_t dg                    : 1;
+               /** History gather */
+               uint64_t hg                    : 1;
+#else /* Word 0 - Little Endian */
+               uint64_t hg                    : 1;
+               uint64_t dg                    : 1;
+               uint64_t ds                    : 1;
+               //uint64_t reserved_3_4          : 2;
+               uint64_t op                    : 2;
+               uint64_t bf                    : 1;
+               uint64_t ef                    : 1;
+               uint64_t cc                    : 2;
+               uint64_t ss                    : 2;
+               uint64_t sf                    : 1;
+               uint64_t halg                  : 3;
+               uint64_t hmif                  : 1;
+               uint64_t exbits                : 7;
+               uint64_t iv                    : 1;
+               uint64_t exn                   : 3;
+               uint64_t reserved_27_31        : 5;
+               uint64_t totaloutputlength     : 24;
+               uint64_t reserved_56_62        : 7;
+               uint64_t doneint               : 1;
+
+#endif /* Word 0 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
+               /** History length */
+               uint64_t historylength         : 16;
+               /** reserved */
+               uint64_t reserved_96_111       : 16;
+               /** adler/crc32 checksum*/
+               uint64_t adlercrc32            : 32;
+#else /* Word 1 - Little Endian */
+               uint64_t adlercrc32            : 32;
+               uint64_t reserved_96_111       : 16;
+               uint64_t historylength         : 16;
+#endif /* Word 1 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */
+               /** Decompression Context Pointer Address */
+               union zip_zptr_addr_s  ctx_ptr_addr;
+#else /* Word 2 - Little Endian */
+               union zip_zptr_addr_s  ctx_ptr_addr;
+#endif /* Word 2 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Decompression Context Pointer Control */
+               union zip_zptr_ctl_s   ctx_ptr_ctl;
+#else /* Word 3 - Little Endian */
+               union zip_zptr_ctl_s   ctx_ptr_ctl;
+#endif /* Word 3 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Decompression history pointer address */
+               union zip_zptr_addr_s  his_ptr_addr;
+#else /* Word 4 - Little Endian */
+               union zip_zptr_addr_s  his_ptr_addr;
+#endif /* Word 4 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Decompression history pointer control */
+               union zip_zptr_ctl_s   his_ptr_ctl;
+#else /* Word 5 - Little Endian */
+               union zip_zptr_ctl_s   his_ptr_ctl;
+#endif /* Word 5 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Input and compression history pointer address */
+               union zip_zptr_addr_s  inp_ptr_addr;
+#else /* Word 6 - Little Endian */
+               union zip_zptr_addr_s  inp_ptr_addr;
+#endif /* Word 6 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Input and compression history pointer control */
+               union zip_zptr_ctl_s   inp_ptr_ctl;
+#else /* Word 7 - Little Endian */
+               union zip_zptr_ctl_s   inp_ptr_ctl;
+#endif /* Word 7 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Output pointer address */
+               union zip_zptr_addr_s  out_ptr_addr;
+#else /* Word 8 - Little Endian */
+               union zip_zptr_addr_s  out_ptr_addr;
+#endif /* Word 8 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Output pointer control */
+               union zip_zptr_ctl_s   out_ptr_ctl;
+#else /* Word 9 - Little Endian */
+               union zip_zptr_ctl_s   out_ptr_ctl;
+#endif /* Word 9 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Result pointer address */
+               union zip_zptr_addr_s  res_ptr_addr;
+#else /* Word 10 - Little Endian */
+               union zip_zptr_addr_s  res_ptr_addr;
+#endif /* Word 10 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Result pointer control */
+               union zip_zptr_ctl_s   res_ptr_ctl;
+#else /* Word 11 - Little Endian */
+               union zip_zptr_ctl_s   res_ptr_ctl;
+#endif /* Word 11 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */
+               /** reserved */
+               uint64_t reserved_812_831      : 20;
+               /** SSO guest group */
+               uint64_t ggrp                  : 10;
+               /** SSO tag type */
+               uint64_t tt                    : 2;
+               /** SSO tag */
+               uint64_t tag                   : 32;
+#else /* Word 12 - Little Endian */
+               uint64_t tag                   : 32;
+               uint64_t tt                    : 2;
+               uint64_t ggrp                  : 10;
+               uint64_t reserved_812_831      : 20;
+#endif /* Word 12 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */
+               /** Work queue entry pointer */
+               uint64_t wq_ptr                : 64;
+#else /* Word 13 - Little Endian */
+               uint64_t wq_ptr                : 64;
+#endif /* Word 13 - End */
+
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** reserved */
+               uint64_t reserved_896_959      : 64;
+#else /* Word 14 - Little Endian */
+               uint64_t reserved_896_959      : 64;
+#endif /* Word 14 - End */
+#if defined(__BIG_ENDIAN_BITFIELD)
+               /** Hash structure pointer */
+               uint64_t hash_ptr              : 64;
+#else /* Word 15 - Little Endian */
+               uint64_t hash_ptr              : 64;
+#endif /* Word 15 - End */
+       } /** ZIP 88xx Instruction Structure */zip88xx;
+
+       /** ZIP Instruction Structure */
+       struct zip_inst_s_cn83xx {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               /** Done interrupt */
+               uint64_t doneint               : 1;
+               /** reserved */
+               uint64_t reserved_56_62        : 7;
+               /**  Total output length */
+               uint64_t totaloutputlength     : 24;
+               /** reserved */
+               uint64_t reserved_27_31        : 5;
+               /** EXNUM */
+               uint64_t exn                   : 3;
+               /**  HASH IV */
+               uint64_t iv                    : 1;
+               /** EXBITS */
+               uint64_t exbits                : 7;
+               /** Hash more-in-file */
+               uint64_t hmif                  : 1;
+               /** Hash Algorithm and enable */
+               uint64_t halg                  : 3;
+               /** Sync flush*/
+               uint64_t sf                    : 1;
+               /** Compression speed/storage */
+               uint64_t ss                    : 2;
+               /** Compression coding */
+               uint64_t cc                    : 2;
+               /** End of input data */
+               uint64_t ef                    : 1;
+               /** Beginning of file */
+               uint64_t bf                    : 1;
+               /** Comp/decomp operation */
+               uint64_t op                    : 2;
+               /** Data sactter */
+               uint64_t ds                    : 1;
+               /** Data gather */
+               uint64_t dg                    : 1;
+               /** History gather */
+               uint64_t hg                    : 1;
+#else /* Word 0 - Little Endian */
+               uint64_t hg                    : 1;
+               uint64_t dg                    : 1;
+               uint64_t ds                    : 1;
+               uint64_t op                    : 2;
+               uint64_t bf                    : 1;
+               uint64_t ef                    : 1;
+               uint64_t cc                    : 2;
+               uint64_t ss                    : 2;
+               uint64_t sf                    : 1;
+               uint64_t halg                  : 3;
+               uint64_t hmif                  : 1;
+               uint64_t exbits                : 7;
+               uint64_t iv                    : 1;
+               uint64_t exn                   : 3;
+               uint64_t reserved_27_31        : 5;
+               uint64_t totaloutputlength     : 24;
+               uint64_t reserved_56_62        : 7;
+               uint64_t doneint               : 1;
+#endif /* Word 0 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
+               /** History length */
+               uint64_t historylength         : 16;
+               /** reserved */
+               uint64_t reserved_96_111       : 16;
+               /** adler/crc32 checksum*/
+               uint64_t adlercrc32            : 32;
+#else /* Word 1 - Little Endian */
+               uint64_t adlercrc32            : 32;
+               uint64_t reserved_96_111       : 16;
+               uint64_t historylength         : 16;
+#endif /* Word 1 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */
+               /** Decompression Context Pointer Address */
+               union zip_zptr_addr_s  ctx_ptr_addr;
+#else /* Word 2 - Little Endian */
+               union zip_zptr_addr_s  ctx_ptr_addr;
+#endif /* Word 2 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */
+               /** Decompression Context Pointer Control */
+               union zip_zptr_ctl_s   ctx_ptr_ctl;
+#else /* Word 3 - Little Endian */
+               union zip_zptr_ctl_s   ctx_ptr_ctl;
+#endif /* Word 3 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */
+               /** Decompression history pointer address */
+               union zip_zptr_addr_s  his_ptr_addr;
+#else /* Word 4 - Little Endian */
+               union zip_zptr_addr_s  his_ptr_addr;
+#endif /* Word 4 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */
+               /** Decompression history pointer control */
+               union zip_zptr_ctl_s   his_ptr_ctl;
+#else /* Word 5 - Little Endian */
+               union zip_zptr_ctl_s   his_ptr_ctl;
+#endif /* Word 5 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */
+               /** Input and compression history pointer address */
+               union zip_zptr_addr_s  inp_ptr_addr;
+#else /* Word 6 - Little Endian */
+               union zip_zptr_addr_s  inp_ptr_addr;
+#endif /* Word 6 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */
+               /** Input and compression history pointer control */
+               union zip_zptr_ctl_s   inp_ptr_ctl;
+#else /* Word 7 - Little Endian */
+               union zip_zptr_ctl_s   inp_ptr_ctl;
+#endif /* Word 7 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 8 - Big Endian */
+               /** Output pointer address */
+               union zip_zptr_addr_s  out_ptr_addr;
+#else /* Word 8 - Little Endian */
+               union zip_zptr_addr_s  out_ptr_addr;
+#endif /* Word 8 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 9 - Big Endian */
+               /** Output pointer control */
+               union zip_zptr_ctl_s   out_ptr_ctl;
+#else /* Word 9 - Little Endian */
+               union zip_zptr_ctl_s   out_ptr_ctl;
+#endif /* Word 9 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 10 - Big Endian */
+               /** Result pointer address */
+               union zip_zptr_addr_s  res_ptr_addr;
+#else /* Word 10 - Little Endian */
+               union zip_zptr_addr_s  res_ptr_addr;
+#endif /* Word 10 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 11 - Big Endian */
+               /** Result pointer control */
+               union zip_zptr_ctl_s   res_ptr_ctl;
+#else /* Word 11 - Little Endian */
+               union zip_zptr_ctl_s   res_ptr_ctl;
+#endif /* Word 11 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 12 - Big Endian */
+               /** reserved */
+               uint64_t reserved_812_831      : 20;
+               /** SSO guest group */
+               uint64_t ggrp                  : 10;
+               /** SSO tag type */
+               uint64_t tt                    : 2;
+               /** SSO tag */
+               uint64_t tag                   : 32;
+#else /* Word 12 - Little Endian */
+               uint64_t tag                   : 32;
+               uint64_t tt                    : 2;
+               uint64_t ggrp                  : 10;
+               uint64_t reserved_812_831      : 20;
+#endif /* Word 12 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 13 - Big Endian */
+               /** Work queue entry pointer */
+               uint64_t wq_ptr                : 64;
+#else /* Word 13 - Little Endian */
+               uint64_t wq_ptr                : 64;
+#endif /* Word 13 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 14 - Big Endian */
+               /** reserved */
+               uint64_t reserved_896_959      : 64;
+#else /* Word 14 - Little Endian */
+               uint64_t reserved_896_959      : 64;
+#endif /* Word 14 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 15 - Big Endian */
+               /** Hash structure pointer */
+               uint64_t hash_ptr              : 64;
+#else /* Word 15 - Little Endian */
+               uint64_t hash_ptr              : 64;
+#endif /* Word 15 - End */
+       } /** ZIP 83xx Instruction Structure */s;
+};
+
+/**
+ * Structure zip_zres_s
+ *
+ * ZIP Result Structure
+ * The ZIP coprocessor writes the result structure after it completes the
+ * invocation. The result structure is exactly 24 bytes, and each invocation
+ * of the ZIP coprocessor produces exactly one result structure.
+ */
+union zip_zres_s {
+       /** This field can be used to set/clear all bits, or do bitwise
+        * operations over the entire structure.
+        */
+       uint64_t u[8];
+       /** ZIP Result Structure */
+       struct zip_zres_s_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               /** crc32 checksum of uncompressed stream */
+               uint64_t crc32                 : 32;
+               /** adler32 checksum of uncompressed stream*/
+               uint64_t adler32               : 32;
+#else /* Word 0 - Little Endian */
+               uint64_t adler32               : 32;
+               uint64_t crc32                 : 32;
+#endif /* Word 0 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
+               /** Total numer of Bytes produced in output stream */
+               uint64_t totalbyteswritten     : 32;
+               /** Total number of bytes processed from the input stream */
+               uint64_t totalbytesread        : 32;
+#else /* Word 1 - Little Endian */
+               uint64_t totalbytesread        : 32;
+               uint64_t totalbyteswritten     : 32;
+#endif /* Word 1 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 2 - Big Endian */
+               /** Total number of compressed input bits
+                * consumed to decompress all blocks in the file
+                */
+               uint64_t totalbitsprocessed    : 32;
+               /** Done interrupt*/
+               uint64_t doneint               : 1;
+               /** reserved */
+               uint64_t reserved_155_158      : 4;
+               /** EXNUM */
+               uint64_t exn                   : 3;
+               /** reserved */
+               uint64_t reserved_151          : 1;
+               /** EXBITS */
+               uint64_t exbits                : 7;
+               /** reserved */
+               uint64_t reserved_137_143      : 7;
+               /** End of file */
+               uint64_t ef                    : 1;
+               /** Completion/error code */
+               uint64_t compcode              : 8;
+#else /* Word 2 - Little Endian */
+               uint64_t compcode              : 8;
+               uint64_t ef                    : 1;
+               uint64_t reserved_137_143      : 7;
+               uint64_t exbits                : 7;
+               uint64_t reserved_151          : 1;
+               uint64_t exn                   : 3;
+               uint64_t reserved_155_158      : 4;
+               uint64_t doneint               : 1;
+               uint64_t totalbitsprocessed    : 32;
+#endif /* Word 2 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 3 - Big Endian */
+               /** reserved */
+               uint64_t reserved_253_255      : 3;
+               /** Hash length in bytes */
+               uint64_t hshlen                : 61;
+#else /* Word 3 - Little Endian */
+               uint64_t hshlen                : 61;
+               uint64_t reserved_253_255      : 3;
+#endif /* Word 3 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 4 - Big Endian */
+               /** Double-word 0 of computed hash */
+               uint64_t hash0                 : 64;
+#else /* Word 4 - Little Endian */
+               uint64_t hash0                 : 64;
+#endif /* Word 4 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 5 - Big Endian */
+               /** Double-word 1 of computed hash */
+               uint64_t hash1                 : 64;
+#else /* Word 5 - Little Endian */
+               uint64_t hash1                 : 64;
+#endif /* Word 5 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 6 - Big Endian */
+               /** Double-word 2 of computed hash */
+               uint64_t hash2                 : 64;
+#else /* Word 6 - Little Endian */
+               uint64_t hash2                 : 64;
+#endif /* Word 6 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 7 - Big Endian */
+               /** Double-word 3 of computed hash */
+               uint64_t hash3                 : 64;
+#else /* Word 7 - Little Endian */
+               uint64_t hash3                 : 64;
+#endif /* Word 7 - End */
+       } /** ZIP Result Structure */s;
+
+       /* struct zip_zres_s_s cn83xx; */
+};
+
+/**
+ * Structure zip_zptr_s
+ *
+ * ZIP Generic Pointer Structure
+ * This structure is the generic format of pointers in ZIP_INST_S.
+ */
+union zip_zptr_s {
+       /** This field can be used to set/clear all bits, or do bitwise
+        * operations over the entire structure.
+        */
+       uint64_t u[2];
+       /** ZIP Generic Pointer Structure */
+       struct zip_zptr_s_s {
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 0 - Big Endian */
+               /** Pointer to Data or scatter-gather list */
+               uint64_t addr                  : 64;
+#else /* Word 0 - Little Endian */
+               uint64_t addr                  : 64;
+#endif /* Word 0 - End */
+#if defined(__BIG_ENDIAN_BITFIELD) /* Word 1 - Big Endian */
+               /** reserved */
+               uint64_t reserved_112_127      : 16;
+               /** Length of Data or scatter-gather list*/
+               uint64_t length                : 16;
+               /** reserved */
+               uint64_t reserved_67_95        : 29;
+               /** Full-block write */
+               uint64_t fw                    : 1;
+               /** No cache allocation */
+               uint64_t nc                    : 1;
+               /** reserved */
+               uint64_t data_be               : 1;
+#else /* Word 1 - Little Endian */
+               uint64_t data_be               : 1;
+               uint64_t nc                    : 1;
+               uint64_t fw                    : 1;
+               uint64_t reserved_67_95        : 29;
+               uint64_t length                : 16;
+               uint64_t reserved_112_127      : 16;
+#endif /* Word 1 - End */
+       } /** ZIP Generic Pointer Structure */s;
+};
+
+/**
+ * Enumeration zip_comp_e
+ *
+ * ZIP Completion Enumeration
+ * Enumerates the values of ZIP_ZRES_S[COMPCODE].
+ */
+#define ZIP_COMP_E_NOTDONE       (0)
+#define ZIP_COMP_E_SUCCESS       (1)
+#define ZIP_COMP_E_DTRUNC        (2)
+#define ZIP_COMP_E_DSTOP         (3)
+#define ZIP_COMP_E_ITRUNC        (4)
+#define ZIP_COMP_E_RBLOCK        (5)
+#define ZIP_COMP_E_NLEN          (6)
+#define ZIP_COMP_E_BADCODE       (7)
+#define ZIP_COMP_E_BADCODE2      (8)
+#define ZIP_COMP_E_ZERO_LEN      (9)
+#define ZIP_COMP_E_PARITY        (0xa)
+#define ZIP_COMP_E_FATAL         (0xb)
+#define ZIP_COMP_E_TIMEOUT       (0xc)
+#define ZIP_COMP_E_INSTR_ERR     (0xd)
+#define ZIP_COMP_E_HCTX_ERR      (0xe)
+#define ZIP_COMP_E_STOP          (3)
+
+/**
+ * Enumeration zip_op_e
+ *
+ * ZIP Operation Enumeration
+ * Enumerates ZIP_INST_S[OP].
+ * Internal:
+ */
+#define ZIP_OP_E_DECOMP   (0)
+#define ZIP_OP_E_NOCOMP   (1)
+#define ZIP_OP_E_COMP     (2)
+
+/**
+ * Enumeration zip compression levels
+ *
+ * ZIP Compression Level Enumeration
+ * Enumerates ZIP_INST_S[SS].
+ * Internal:
+ */
+#define ZIP_COMP_E_LEVEL_MAX  (0)
+#define ZIP_COMP_E_LEVEL_MED  (1)
+#define ZIP_COMP_E_LEVEL_LOW  (2)
+#define ZIP_COMP_E_LEVEL_MIN  (3)
+
+#endif /* _RTE_ZIP_REGS_H_ */