]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mips: octeon: Add cvmx-pko-defs.h header file
authorAaron Williams <awilliams@marvell.com>
Fri, 11 Dec 2020 16:05:46 +0000 (17:05 +0100)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Fri, 23 Apr 2021 19:02:12 +0000 (21:02 +0200)
Import cvmx-pko-defs.h header file from 2013 U-Boot. It will be used
by the later added drivers to support PCIe and networking on the MIPS
Octeon II / III platforms.

Signed-off-by: Aaron Williams <awilliams@marvell.com>
Signed-off-by: Stefan Roese <sr@denx.de>
arch/mips/mach-octeon/include/mach/cvmx-pko-defs.h [new file with mode: 0644]

diff --git a/arch/mips/mach-octeon/include/mach/cvmx-pko-defs.h b/arch/mips/mach-octeon/include/mach/cvmx-pko-defs.h
new file mode 100644 (file)
index 0000000..6ae0151
--- /dev/null
@@ -0,0 +1,9388 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ *
+ * Configuration and status register (CSR) type definitions for
+ * Octeon pko.
+ */
+
+#ifndef __CVMX_PKO_DEFS_H__
+#define __CVMX_PKO_DEFS_H__
+
+#define CVMX_PKO_CHANNEL_LEVEL                 (0x00015400000800F0ull)
+#define CVMX_PKO_DPFI_ENA                      (0x0001540000C00018ull)
+#define CVMX_PKO_DPFI_FLUSH                    (0x0001540000C00008ull)
+#define CVMX_PKO_DPFI_FPA_AURA                 (0x0001540000C00010ull)
+#define CVMX_PKO_DPFI_STATUS                   (0x0001540000C00000ull)
+#define CVMX_PKO_DQX_BYTES(offset)             (0x00015400000000D8ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_CIR(offset)               (0x0001540000280018ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_DROPPED_BYTES(offset)     (0x00015400000000C8ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_DROPPED_PACKETS(offset)   (0x00015400000000C0ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_FIFO(offset)              (0x0001540000300078ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_PACKETS(offset)           (0x00015400000000D0ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_PICK(offset)              (0x0001540000300070ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_PIR(offset)               (0x0001540000280020ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_POINTERS(offset)          (0x0001540000280078ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_SCHEDULE(offset)          (0x0001540000280008ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_SCHED_STATE(offset)       (0x0001540000280028ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_SHAPE(offset)             (0x0001540000280010ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_SHAPE_STATE(offset)       (0x0001540000280030ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_SW_XOFF(offset)           (0x00015400002800E0ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_TOPOLOGY(offset)          (0x0001540000300000ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_WM_BUF_CNT(offset)                (0x00015400008000E8ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_WM_BUF_CTL(offset)                (0x00015400008000F0ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_WM_BUF_CTL_W1C(offset)    (0x00015400008000F8ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_WM_CNT(offset)            (0x0001540000000050ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_WM_CTL(offset)            (0x0001540000000040ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQX_WM_CTL_W1C(offset)                (0x0001540000000048ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_DQ_CSR_BUS_DEBUG              (0x00015400003001F8ull)
+#define CVMX_PKO_DQ_DEBUG                      (0x0001540000300128ull)
+#define CVMX_PKO_DRAIN_IRQ                     (0x0001540000000140ull)
+#define CVMX_PKO_ENABLE                                (0x0001540000D00008ull)
+#define CVMX_PKO_FORMATX_CTL(offset)           (0x0001540000900800ull + ((offset) & 127) * 8)
+#define CVMX_PKO_L1_SQA_DEBUG                  (0x0001540000080128ull)
+#define CVMX_PKO_L1_SQB_DEBUG                  (0x0001540000080130ull)
+#define CVMX_PKO_L1_SQX_CIR(offset)            (0x0001540000000018ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_DROPPED_BYTES(offset)  (0x0001540000000088ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_DROPPED_PACKETS(offset) (0x0001540000000080ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_GREEN(offset)          (0x0001540000080058ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_GREEN_BYTES(offset)    (0x00015400000000B8ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_GREEN_PACKETS(offset)  (0x00015400000000B0ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_LINK(offset)           (0x0001540000000038ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_PICK(offset)           (0x0001540000080070ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_RED(offset)            (0x0001540000080068ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_RED_BYTES(offset)      (0x0001540000000098ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_RED_PACKETS(offset)    (0x0001540000000090ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_SCHEDULE(offset)       (0x0001540000000008ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_SHAPE(offset)          (0x0001540000000010ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_SHAPE_STATE(offset)    (0x0001540000000030ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_SW_XOFF(offset)                (0x00015400000000E0ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_TOPOLOGY(offset)       (0x0001540000080000ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_YELLOW(offset)         (0x0001540000080060ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_YELLOW_BYTES(offset)   (0x00015400000000A8ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQX_YELLOW_PACKETS(offset) (0x00015400000000A0ull + ((offset) & 31) * 512)
+#define CVMX_PKO_L1_SQ_CSR_BUS_DEBUG           (0x00015400000801F8ull)
+#define CVMX_PKO_L2_SQA_DEBUG                  (0x0001540000100128ull)
+#define CVMX_PKO_L2_SQB_DEBUG                  (0x0001540000100130ull)
+#define CVMX_PKO_L2_SQX_CIR(offset)            (0x0001540000080018ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_GREEN(offset)          (0x0001540000100058ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_PICK(offset)           (0x0001540000100070ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_PIR(offset)            (0x0001540000080020ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_POINTERS(offset)       (0x0001540000080078ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_RED(offset)            (0x0001540000100068ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_SCHEDULE(offset)       (0x0001540000080008ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_SCHED_STATE(offset)    (0x0001540000080028ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_SHAPE(offset)          (0x0001540000080010ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_SHAPE_STATE(offset)    (0x0001540000080030ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_SW_XOFF(offset)                (0x00015400000800E0ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_TOPOLOGY(offset)       (0x0001540000100000ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQX_YELLOW(offset)         (0x0001540000100060ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L2_SQ_CSR_BUS_DEBUG           (0x00015400001001F8ull)
+#define CVMX_PKO_L3_L2_SQX_CHANNEL(offset)     (0x0001540000080038ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQA_DEBUG                  (0x0001540000180128ull)
+#define CVMX_PKO_L3_SQB_DEBUG                  (0x0001540000180130ull)
+#define CVMX_PKO_L3_SQX_CIR(offset)            (0x0001540000100018ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_GREEN(offset)          (0x0001540000180058ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_PICK(offset)           (0x0001540000180070ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_PIR(offset)            (0x0001540000100020ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_POINTERS(offset)       (0x0001540000100078ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_RED(offset)            (0x0001540000180068ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_SCHEDULE(offset)       (0x0001540000100008ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_SCHED_STATE(offset)    (0x0001540000100028ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_SHAPE(offset)          (0x0001540000100010ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_SHAPE_STATE(offset)    (0x0001540000100030ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_SW_XOFF(offset)                (0x00015400001000E0ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_TOPOLOGY(offset)       (0x0001540000180000ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQX_YELLOW(offset)         (0x0001540000180060ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L3_SQ_CSR_BUS_DEBUG           (0x00015400001801F8ull)
+#define CVMX_PKO_L4_SQA_DEBUG                  (0x0001540000200128ull)
+#define CVMX_PKO_L4_SQB_DEBUG                  (0x0001540000200130ull)
+#define CVMX_PKO_L4_SQX_CIR(offset)            (0x0001540000180018ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_GREEN(offset)          (0x0001540000200058ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_PICK(offset)           (0x0001540000200070ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_PIR(offset)            (0x0001540000180020ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_POINTERS(offset)       (0x0001540000180078ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_RED(offset)            (0x0001540000200068ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_SCHEDULE(offset)       (0x0001540000180008ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_SCHED_STATE(offset)    (0x0001540000180028ull + ((offset) & 511) * 512)
+#define CVMX_PKO_L4_SQX_SHAPE(offset)          (0x0001540000180010ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_SHAPE_STATE(offset)    (0x0001540000180030ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_SW_XOFF(offset)                (0x00015400001800E0ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_TOPOLOGY(offset)       (0x0001540000200000ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQX_YELLOW(offset)         (0x0001540000200060ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L4_SQ_CSR_BUS_DEBUG           (0x00015400002001F8ull)
+#define CVMX_PKO_L5_SQA_DEBUG                  (0x0001540000280128ull)
+#define CVMX_PKO_L5_SQB_DEBUG                  (0x0001540000280130ull)
+#define CVMX_PKO_L5_SQX_CIR(offset)            (0x0001540000200018ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_GREEN(offset)          (0x0001540000280058ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_PICK(offset)           (0x0001540000280070ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_PIR(offset)            (0x0001540000200020ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_POINTERS(offset)       (0x0001540000200078ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_RED(offset)            (0x0001540000280068ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_SCHEDULE(offset)       (0x0001540000200008ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_SCHED_STATE(offset)    (0x0001540000200028ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_SHAPE(offset)          (0x0001540000200010ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_SHAPE_STATE(offset)    (0x0001540000200030ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_SW_XOFF(offset)                (0x00015400002000E0ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_TOPOLOGY(offset)       (0x0001540000280000ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQX_YELLOW(offset)         (0x0001540000280060ull + ((offset) & 1023) * 512)
+#define CVMX_PKO_L5_SQ_CSR_BUS_DEBUG           (0x00015400002801F8ull)
+#define CVMX_PKO_LUTX(offset)                  (0x0001540000B00000ull + ((offset) & 1023) * 8)
+#define CVMX_PKO_LUT_BIST_STATUS               (0x0001540000B02018ull)
+#define CVMX_PKO_LUT_ECC_CTL0                  (0x0001540000BFFFD0ull)
+#define CVMX_PKO_LUT_ECC_DBE_STS0              (0x0001540000BFFFF0ull)
+#define CVMX_PKO_LUT_ECC_DBE_STS_CMB0          (0x0001540000BFFFD8ull)
+#define CVMX_PKO_LUT_ECC_SBE_STS0              (0x0001540000BFFFF8ull)
+#define CVMX_PKO_LUT_ECC_SBE_STS_CMB0          (0x0001540000BFFFE8ull)
+#define CVMX_PKO_MACX_CFG(offset)              (0x0001540000900000ull + ((offset) & 31) * 8)
+#define CVMX_PKO_MCI0_CRED_CNTX(offset)                (0x0001540000A40000ull + ((offset) & 31) * 8)
+#define CVMX_PKO_MCI0_MAX_CREDX(offset)                (0x0001540000A00000ull + ((offset) & 31) * 8)
+#define CVMX_PKO_MCI1_CRED_CNTX(offset)                (0x0001540000A80100ull + ((offset) & 31) * 8)
+#define CVMX_PKO_MCI1_MAX_CREDX(offset)                (0x0001540000A80000ull + ((offset) & 31) * 8)
+#define CVMX_PKO_MEM_COUNT0                    (0x0001180050001080ull)
+#define CVMX_PKO_MEM_COUNT1                    (0x0001180050001088ull)
+#define CVMX_PKO_MEM_DEBUG0                    (0x0001180050001100ull)
+#define CVMX_PKO_MEM_DEBUG1                    (0x0001180050001108ull)
+#define CVMX_PKO_MEM_DEBUG10                   (0x0001180050001150ull)
+#define CVMX_PKO_MEM_DEBUG11                   (0x0001180050001158ull)
+#define CVMX_PKO_MEM_DEBUG12                   (0x0001180050001160ull)
+#define CVMX_PKO_MEM_DEBUG13                   (0x0001180050001168ull)
+#define CVMX_PKO_MEM_DEBUG14                   (0x0001180050001170ull)
+#define CVMX_PKO_MEM_DEBUG2                    (0x0001180050001110ull)
+#define CVMX_PKO_MEM_DEBUG3                    (0x0001180050001118ull)
+#define CVMX_PKO_MEM_DEBUG4                    (0x0001180050001120ull)
+#define CVMX_PKO_MEM_DEBUG5                    (0x0001180050001128ull)
+#define CVMX_PKO_MEM_DEBUG6                    (0x0001180050001130ull)
+#define CVMX_PKO_MEM_DEBUG7                    (0x0001180050001138ull)
+#define CVMX_PKO_MEM_DEBUG8                    (0x0001180050001140ull)
+#define CVMX_PKO_MEM_DEBUG9                    (0x0001180050001148ull)
+#define CVMX_PKO_MEM_IPORT_PTRS                        (0x0001180050001030ull)
+#define CVMX_PKO_MEM_IPORT_QOS                 (0x0001180050001038ull)
+#define CVMX_PKO_MEM_IQUEUE_PTRS               (0x0001180050001040ull)
+#define CVMX_PKO_MEM_IQUEUE_QOS                        (0x0001180050001048ull)
+#define CVMX_PKO_MEM_PORT_PTRS                 (0x0001180050001010ull)
+#define CVMX_PKO_MEM_PORT_QOS                  (0x0001180050001018ull)
+#define CVMX_PKO_MEM_PORT_RATE0                        (0x0001180050001020ull)
+#define CVMX_PKO_MEM_PORT_RATE1                        (0x0001180050001028ull)
+#define CVMX_PKO_MEM_QUEUE_PTRS                        (0x0001180050001000ull)
+#define CVMX_PKO_MEM_QUEUE_QOS                 (0x0001180050001008ull)
+#define CVMX_PKO_MEM_THROTTLE_INT              (0x0001180050001058ull)
+#define CVMX_PKO_MEM_THROTTLE_PIPE             (0x0001180050001050ull)
+#define CVMX_PKO_NCB_BIST_STATUS               (0x0001540000EFFF00ull)
+#define CVMX_PKO_NCB_ECC_CTL0                  (0x0001540000EFFFD0ull)
+#define CVMX_PKO_NCB_ECC_DBE_STS0              (0x0001540000EFFFF0ull)
+#define CVMX_PKO_NCB_ECC_DBE_STS_CMB0          (0x0001540000EFFFD8ull)
+#define CVMX_PKO_NCB_ECC_SBE_STS0              (0x0001540000EFFFF8ull)
+#define CVMX_PKO_NCB_ECC_SBE_STS_CMB0          (0x0001540000EFFFE8ull)
+#define CVMX_PKO_NCB_INT                       (0x0001540000E00010ull)
+#define CVMX_PKO_NCB_TX_ERR_INFO               (0x0001540000E00008ull)
+#define CVMX_PKO_NCB_TX_ERR_WORD               (0x0001540000E00000ull)
+#define CVMX_PKO_PDM_BIST_STATUS               (0x00015400008FFF00ull)
+#define CVMX_PKO_PDM_CFG                       (0x0001540000800000ull)
+#define CVMX_PKO_PDM_CFG_DBG                   (0x0001540000800FF8ull)
+#define CVMX_PKO_PDM_CP_DBG                    (0x0001540000800190ull)
+#define CVMX_PKO_PDM_DQX_MINPAD(offset)                (0x00015400008F0000ull + ((offset) & 1023) * 8)
+#define CVMX_PKO_PDM_DRPBUF_DBG                        (0x00015400008000B0ull)
+#define CVMX_PKO_PDM_DWPBUF_DBG                        (0x00015400008000A8ull)
+#define CVMX_PKO_PDM_ECC_CTL0                  (0x00015400008FFFD0ull)
+#define CVMX_PKO_PDM_ECC_CTL1                  (0x00015400008FFFD8ull)
+#define CVMX_PKO_PDM_ECC_DBE_STS0              (0x00015400008FFFF0ull)
+#define CVMX_PKO_PDM_ECC_DBE_STS_CMB0          (0x00015400008FFFE0ull)
+#define CVMX_PKO_PDM_ECC_SBE_STS0              (0x00015400008FFFF8ull)
+#define CVMX_PKO_PDM_ECC_SBE_STS_CMB0          (0x00015400008FFFE8ull)
+#define CVMX_PKO_PDM_FILLB_DBG0                        (0x00015400008002A0ull)
+#define CVMX_PKO_PDM_FILLB_DBG1                        (0x00015400008002A8ull)
+#define CVMX_PKO_PDM_FILLB_DBG2                        (0x00015400008002B0ull)
+#define CVMX_PKO_PDM_FLSHB_DBG0                        (0x00015400008002B8ull)
+#define CVMX_PKO_PDM_FLSHB_DBG1                        (0x00015400008002C0ull)
+#define CVMX_PKO_PDM_INTF_DBG_RD               (0x0001540000900F20ull)
+#define CVMX_PKO_PDM_ISRD_DBG                  (0x0001540000800090ull)
+#define CVMX_PKO_PDM_ISRD_DBG_DQ               (0x0001540000800290ull)
+#define CVMX_PKO_PDM_ISRM_DBG                  (0x0001540000800098ull)
+#define CVMX_PKO_PDM_ISRM_DBG_DQ               (0x0001540000800298ull)
+#define CVMX_PKO_PDM_MEM_ADDR                  (0x0001540000800018ull)
+#define CVMX_PKO_PDM_MEM_DATA                  (0x0001540000800010ull)
+#define CVMX_PKO_PDM_MEM_RW_CTL                        (0x0001540000800020ull)
+#define CVMX_PKO_PDM_MEM_RW_STS                        (0x0001540000800028ull)
+#define CVMX_PKO_PDM_MWPBUF_DBG                        (0x00015400008000A0ull)
+#define CVMX_PKO_PDM_STS                       (0x0001540000800008ull)
+#define CVMX_PKO_PEB_BIST_STATUS               (0x0001540000900D00ull)
+#define CVMX_PKO_PEB_ECC_CTL0                  (0x00015400009FFFD0ull)
+#define CVMX_PKO_PEB_ECC_CTL1                  (0x00015400009FFFA8ull)
+#define CVMX_PKO_PEB_ECC_DBE_STS0              (0x00015400009FFFF0ull)
+#define CVMX_PKO_PEB_ECC_DBE_STS_CMB0          (0x00015400009FFFD8ull)
+#define CVMX_PKO_PEB_ECC_SBE_STS0              (0x00015400009FFFF8ull)
+#define CVMX_PKO_PEB_ECC_SBE_STS_CMB0          (0x00015400009FFFE8ull)
+#define CVMX_PKO_PEB_ECO                       (0x0001540000901000ull)
+#define CVMX_PKO_PEB_ERR_INT                   (0x0001540000900C00ull)
+#define CVMX_PKO_PEB_EXT_HDR_DEF_ERR_INFO      (0x0001540000900C08ull)
+#define CVMX_PKO_PEB_FCS_SOP_ERR_INFO          (0x0001540000900C18ull)
+#define CVMX_PKO_PEB_JUMP_DEF_ERR_INFO         (0x0001540000900C10ull)
+#define CVMX_PKO_PEB_MACX_CFG_WR_ERR_INFO      (0x0001540000900C50ull)
+#define CVMX_PKO_PEB_MAX_LINK_ERR_INFO         (0x0001540000900C48ull)
+#define CVMX_PKO_PEB_NCB_CFG                   (0x0001540000900308ull)
+#define CVMX_PKO_PEB_PAD_ERR_INFO              (0x0001540000900C28ull)
+#define CVMX_PKO_PEB_PSE_FIFO_ERR_INFO         (0x0001540000900C20ull)
+#define CVMX_PKO_PEB_SUBD_ADDR_ERR_INFO                (0x0001540000900C38ull)
+#define CVMX_PKO_PEB_SUBD_SIZE_ERR_INFO                (0x0001540000900C40ull)
+#define CVMX_PKO_PEB_TRUNC_ERR_INFO            (0x0001540000900C30ull)
+#define CVMX_PKO_PEB_TSO_CFG                   (0x0001540000900310ull)
+#define CVMX_PKO_PQA_DEBUG                     (0x0001540000000128ull)
+#define CVMX_PKO_PQB_DEBUG                     (0x0001540000000130ull)
+#define CVMX_PKO_PQ_CSR_BUS_DEBUG              (0x00015400000001F8ull)
+#define CVMX_PKO_PQ_DEBUG_GREEN                        (0x0001540000000058ull)
+#define CVMX_PKO_PQ_DEBUG_LINKS                        (0x0001540000000068ull)
+#define CVMX_PKO_PQ_DEBUG_YELLOW               (0x0001540000000060ull)
+#define CVMX_PKO_PSE_DQ_BIST_STATUS            (0x0001540000300138ull)
+#define CVMX_PKO_PSE_DQ_ECC_CTL0               (0x0001540000300100ull)
+#define CVMX_PKO_PSE_DQ_ECC_DBE_STS0           (0x0001540000300118ull)
+#define CVMX_PKO_PSE_DQ_ECC_DBE_STS_CMB0       (0x0001540000300120ull)
+#define CVMX_PKO_PSE_DQ_ECC_SBE_STS0           (0x0001540000300108ull)
+#define CVMX_PKO_PSE_DQ_ECC_SBE_STS_CMB0       (0x0001540000300110ull)
+#define CVMX_PKO_PSE_PQ_BIST_STATUS            (0x0001540000000138ull)
+#define CVMX_PKO_PSE_PQ_ECC_CTL0               (0x0001540000000100ull)
+#define CVMX_PKO_PSE_PQ_ECC_DBE_STS0           (0x0001540000000118ull)
+#define CVMX_PKO_PSE_PQ_ECC_DBE_STS_CMB0       (0x0001540000000120ull)
+#define CVMX_PKO_PSE_PQ_ECC_SBE_STS0           (0x0001540000000108ull)
+#define CVMX_PKO_PSE_PQ_ECC_SBE_STS_CMB0       (0x0001540000000110ull)
+#define CVMX_PKO_PSE_SQ1_BIST_STATUS           (0x0001540000080138ull)
+#define CVMX_PKO_PSE_SQ1_ECC_CTL0              (0x0001540000080100ull)
+#define CVMX_PKO_PSE_SQ1_ECC_DBE_STS0          (0x0001540000080118ull)
+#define CVMX_PKO_PSE_SQ1_ECC_DBE_STS_CMB0      (0x0001540000080120ull)
+#define CVMX_PKO_PSE_SQ1_ECC_SBE_STS0          (0x0001540000080108ull)
+#define CVMX_PKO_PSE_SQ1_ECC_SBE_STS_CMB0      (0x0001540000080110ull)
+#define CVMX_PKO_PSE_SQ2_BIST_STATUS           (0x0001540000100138ull)
+#define CVMX_PKO_PSE_SQ2_ECC_CTL0              (0x0001540000100100ull)
+#define CVMX_PKO_PSE_SQ2_ECC_DBE_STS0          (0x0001540000100118ull)
+#define CVMX_PKO_PSE_SQ2_ECC_DBE_STS_CMB0      (0x0001540000100120ull)
+#define CVMX_PKO_PSE_SQ2_ECC_SBE_STS0          (0x0001540000100108ull)
+#define CVMX_PKO_PSE_SQ2_ECC_SBE_STS_CMB0      (0x0001540000100110ull)
+#define CVMX_PKO_PSE_SQ3_BIST_STATUS           (0x0001540000180138ull)
+#define CVMX_PKO_PSE_SQ3_ECC_CTL0              (0x0001540000180100ull)
+#define CVMX_PKO_PSE_SQ3_ECC_DBE_STS0          (0x0001540000180118ull)
+#define CVMX_PKO_PSE_SQ3_ECC_DBE_STS_CMB0      (0x0001540000180120ull)
+#define CVMX_PKO_PSE_SQ3_ECC_SBE_STS0          (0x0001540000180108ull)
+#define CVMX_PKO_PSE_SQ3_ECC_SBE_STS_CMB0      (0x0001540000180110ull)
+#define CVMX_PKO_PSE_SQ4_BIST_STATUS           (0x0001540000200138ull)
+#define CVMX_PKO_PSE_SQ4_ECC_CTL0              (0x0001540000200100ull)
+#define CVMX_PKO_PSE_SQ4_ECC_DBE_STS0          (0x0001540000200118ull)
+#define CVMX_PKO_PSE_SQ4_ECC_DBE_STS_CMB0      (0x0001540000200120ull)
+#define CVMX_PKO_PSE_SQ4_ECC_SBE_STS0          (0x0001540000200108ull)
+#define CVMX_PKO_PSE_SQ4_ECC_SBE_STS_CMB0      (0x0001540000200110ull)
+#define CVMX_PKO_PSE_SQ5_BIST_STATUS           (0x0001540000280138ull)
+#define CVMX_PKO_PSE_SQ5_ECC_CTL0              (0x0001540000280100ull)
+#define CVMX_PKO_PSE_SQ5_ECC_DBE_STS0          (0x0001540000280118ull)
+#define CVMX_PKO_PSE_SQ5_ECC_DBE_STS_CMB0      (0x0001540000280120ull)
+#define CVMX_PKO_PSE_SQ5_ECC_SBE_STS0          (0x0001540000280108ull)
+#define CVMX_PKO_PSE_SQ5_ECC_SBE_STS_CMB0      (0x0001540000280110ull)
+#define CVMX_PKO_PTFX_STATUS(offset)           (0x0001540000900100ull + ((offset) & 31) * 8)
+#define CVMX_PKO_PTF_IOBP_CFG                  (0x0001540000900300ull)
+#define CVMX_PKO_PTGFX_CFG(offset)             (0x0001540000900200ull + ((offset) & 7) * 8)
+#define CVMX_PKO_REG_BIST_RESULT               (0x0001180050000080ull)
+#define CVMX_PKO_REG_CMD_BUF                   (0x0001180050000010ull)
+#define CVMX_PKO_REG_CRC_CTLX(offset)          (0x0001180050000028ull + ((offset) & 1) * 8)
+#define CVMX_PKO_REG_CRC_ENABLE                        (0x0001180050000020ull)
+#define CVMX_PKO_REG_CRC_IVX(offset)           (0x0001180050000038ull + ((offset) & 1) * 8)
+#define CVMX_PKO_REG_DEBUG0                    (0x0001180050000098ull)
+#define CVMX_PKO_REG_DEBUG1                    (0x00011800500000A0ull)
+#define CVMX_PKO_REG_DEBUG2                    (0x00011800500000A8ull)
+#define CVMX_PKO_REG_DEBUG3                    (0x00011800500000B0ull)
+#define CVMX_PKO_REG_DEBUG4                    (0x00011800500000B8ull)
+#define CVMX_PKO_REG_ENGINE_INFLIGHT           (0x0001180050000050ull)
+#define CVMX_PKO_REG_ENGINE_INFLIGHT1          (0x0001180050000318ull)
+#define CVMX_PKO_REG_ENGINE_STORAGEX(offset)   (0x0001180050000300ull + ((offset) & 1) * 8)
+#define CVMX_PKO_REG_ENGINE_THRESH             (0x0001180050000058ull)
+#define CVMX_PKO_REG_ERROR                     (0x0001180050000088ull)
+#define CVMX_PKO_REG_FLAGS                     (0x0001180050000000ull)
+#define CVMX_PKO_REG_GMX_PORT_MODE             (0x0001180050000018ull)
+#define CVMX_PKO_REG_INT_MASK                  (0x0001180050000090ull)
+#define CVMX_PKO_REG_LOOPBACK_BPID             (0x0001180050000118ull)
+#define CVMX_PKO_REG_LOOPBACK_PKIND            (0x0001180050000068ull)
+#define CVMX_PKO_REG_MIN_PKT                   (0x0001180050000070ull)
+#define CVMX_PKO_REG_PREEMPT                   (0x0001180050000110ull)
+#define CVMX_PKO_REG_QUEUE_MODE                        (0x0001180050000048ull)
+#define CVMX_PKO_REG_QUEUE_PREEMPT             (0x0001180050000108ull)
+#define CVMX_PKO_REG_QUEUE_PTRS1               (0x0001180050000100ull)
+#define CVMX_PKO_REG_READ_IDX                  (0x0001180050000008ull)
+#define CVMX_PKO_REG_THROTTLE                  (0x0001180050000078ull)
+#define CVMX_PKO_REG_TIMESTAMP                 (0x0001180050000060ull)
+#define CVMX_PKO_SHAPER_CFG                    (0x00015400000800F8ull)
+#define CVMX_PKO_STATE_UID_IN_USEX_RD(offset)  (0x0001540000900F00ull + ((offset) & 3) * 8)
+#define CVMX_PKO_STATUS                                (0x0001540000D00000ull)
+#define CVMX_PKO_TXFX_PKT_CNT_RD(offset)       (0x0001540000900E00ull + ((offset) & 31) * 8)
+
+/**
+ * cvmx_pko_channel_level
+ */
+union cvmx_pko_channel_level {
+       u64 u64;
+       struct cvmx_pko_channel_level_s {
+               u64 reserved_1_63 : 63;
+               u64 cc_level : 1;
+       } s;
+       struct cvmx_pko_channel_level_s cn73xx;
+       struct cvmx_pko_channel_level_s cn78xx;
+       struct cvmx_pko_channel_level_s cn78xxp1;
+       struct cvmx_pko_channel_level_s cnf75xx;
+};
+
+typedef union cvmx_pko_channel_level cvmx_pko_channel_level_t;
+
+/**
+ * cvmx_pko_dpfi_ena
+ */
+union cvmx_pko_dpfi_ena {
+       u64 u64;
+       struct cvmx_pko_dpfi_ena_s {
+               u64 reserved_1_63 : 63;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_dpfi_ena_s cn73xx;
+       struct cvmx_pko_dpfi_ena_s cn78xx;
+       struct cvmx_pko_dpfi_ena_s cn78xxp1;
+       struct cvmx_pko_dpfi_ena_s cnf75xx;
+};
+
+typedef union cvmx_pko_dpfi_ena cvmx_pko_dpfi_ena_t;
+
+/**
+ * cvmx_pko_dpfi_flush
+ */
+union cvmx_pko_dpfi_flush {
+       u64 u64;
+       struct cvmx_pko_dpfi_flush_s {
+               u64 reserved_1_63 : 63;
+               u64 flush_en : 1;
+       } s;
+       struct cvmx_pko_dpfi_flush_s cn73xx;
+       struct cvmx_pko_dpfi_flush_s cn78xx;
+       struct cvmx_pko_dpfi_flush_s cn78xxp1;
+       struct cvmx_pko_dpfi_flush_s cnf75xx;
+};
+
+typedef union cvmx_pko_dpfi_flush cvmx_pko_dpfi_flush_t;
+
+/**
+ * cvmx_pko_dpfi_fpa_aura
+ */
+union cvmx_pko_dpfi_fpa_aura {
+       u64 u64;
+       struct cvmx_pko_dpfi_fpa_aura_s {
+               u64 reserved_12_63 : 52;
+               u64 node : 2;
+               u64 laura : 10;
+       } s;
+       struct cvmx_pko_dpfi_fpa_aura_s cn73xx;
+       struct cvmx_pko_dpfi_fpa_aura_s cn78xx;
+       struct cvmx_pko_dpfi_fpa_aura_s cn78xxp1;
+       struct cvmx_pko_dpfi_fpa_aura_s cnf75xx;
+};
+
+typedef union cvmx_pko_dpfi_fpa_aura cvmx_pko_dpfi_fpa_aura_t;
+
+/**
+ * cvmx_pko_dpfi_status
+ */
+union cvmx_pko_dpfi_status {
+       u64 u64;
+       struct cvmx_pko_dpfi_status_s {
+               u64 ptr_cnt : 32;
+               u64 reserved_27_31 : 5;
+               u64 xpd_fif_cnt : 4;
+               u64 dalc_fif_cnt : 4;
+               u64 alc_fif_cnt : 5;
+               u64 reserved_13_13 : 1;
+               u64 isrd_ptr1_rtn_full : 1;
+               u64 isrd_ptr0_rtn_full : 1;
+               u64 isrm_ptr1_rtn_full : 1;
+               u64 isrm_ptr0_rtn_full : 1;
+               u64 isrd_ptr1_val : 1;
+               u64 isrd_ptr0_val : 1;
+               u64 isrm_ptr1_val : 1;
+               u64 isrm_ptr0_val : 1;
+               u64 ptr_req_pend : 1;
+               u64 ptr_rtn_pend : 1;
+               u64 fpa_empty : 1;
+               u64 dpfi_empty : 1;
+               u64 cache_flushed : 1;
+       } s;
+       struct cvmx_pko_dpfi_status_s cn73xx;
+       struct cvmx_pko_dpfi_status_s cn78xx;
+       struct cvmx_pko_dpfi_status_cn78xxp1 {
+               u64 ptr_cnt : 32;
+               u64 reserved_13_31 : 19;
+               u64 isrd_ptr1_rtn_full : 1;
+               u64 isrd_ptr0_rtn_full : 1;
+               u64 isrm_ptr1_rtn_full : 1;
+               u64 isrm_ptr0_rtn_full : 1;
+               u64 isrd_ptr1_val : 1;
+               u64 isrd_ptr0_val : 1;
+               u64 isrm_ptr1_val : 1;
+               u64 isrm_ptr0_val : 1;
+               u64 ptr_req_pend : 1;
+               u64 ptr_rtn_pend : 1;
+               u64 fpa_empty : 1;
+               u64 dpfi_empty : 1;
+               u64 cache_flushed : 1;
+       } cn78xxp1;
+       struct cvmx_pko_dpfi_status_s cnf75xx;
+};
+
+typedef union cvmx_pko_dpfi_status cvmx_pko_dpfi_status_t;
+
+/**
+ * cvmx_pko_dq#_bytes
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_BYTES.
+ *
+ */
+union cvmx_pko_dqx_bytes {
+       u64 u64;
+       struct cvmx_pko_dqx_bytes_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_dqx_bytes_s cn73xx;
+       struct cvmx_pko_dqx_bytes_s cn78xx;
+       struct cvmx_pko_dqx_bytes_s cn78xxp1;
+       struct cvmx_pko_dqx_bytes_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_bytes cvmx_pko_dqx_bytes_t;
+
+/**
+ * cvmx_pko_dq#_cir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_dqx_cir {
+       u64 u64;
+       struct cvmx_pko_dqx_cir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_dqx_cir_s cn73xx;
+       struct cvmx_pko_dqx_cir_s cn78xx;
+       struct cvmx_pko_dqx_cir_s cn78xxp1;
+       struct cvmx_pko_dqx_cir_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_cir cvmx_pko_dqx_cir_t;
+
+/**
+ * cvmx_pko_dq#_dropped_bytes
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_BYTES.
+ *
+ */
+union cvmx_pko_dqx_dropped_bytes {
+       u64 u64;
+       struct cvmx_pko_dqx_dropped_bytes_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_dqx_dropped_bytes_s cn73xx;
+       struct cvmx_pko_dqx_dropped_bytes_s cn78xx;
+       struct cvmx_pko_dqx_dropped_bytes_s cn78xxp1;
+       struct cvmx_pko_dqx_dropped_bytes_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_dropped_bytes cvmx_pko_dqx_dropped_bytes_t;
+
+/**
+ * cvmx_pko_dq#_dropped_packets
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_PACKETS.
+ *
+ */
+union cvmx_pko_dqx_dropped_packets {
+       u64 u64;
+       struct cvmx_pko_dqx_dropped_packets_s {
+               u64 reserved_40_63 : 24;
+               u64 count : 40;
+       } s;
+       struct cvmx_pko_dqx_dropped_packets_s cn73xx;
+       struct cvmx_pko_dqx_dropped_packets_s cn78xx;
+       struct cvmx_pko_dqx_dropped_packets_s cn78xxp1;
+       struct cvmx_pko_dqx_dropped_packets_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_dropped_packets cvmx_pko_dqx_dropped_packets_t;
+
+/**
+ * cvmx_pko_dq#_fifo
+ */
+union cvmx_pko_dqx_fifo {
+       u64 u64;
+       struct cvmx_pko_dqx_fifo_s {
+               u64 reserved_15_63 : 49;
+               u64 p_con : 1;
+               u64 head : 7;
+               u64 tail : 7;
+       } s;
+       struct cvmx_pko_dqx_fifo_s cn73xx;
+       struct cvmx_pko_dqx_fifo_s cn78xx;
+       struct cvmx_pko_dqx_fifo_s cn78xxp1;
+       struct cvmx_pko_dqx_fifo_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_fifo cvmx_pko_dqx_fifo_t;
+
+/**
+ * cvmx_pko_dq#_packets
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_PACKETS.
+ *
+ */
+union cvmx_pko_dqx_packets {
+       u64 u64;
+       struct cvmx_pko_dqx_packets_s {
+               u64 reserved_40_63 : 24;
+               u64 count : 40;
+       } s;
+       struct cvmx_pko_dqx_packets_s cn73xx;
+       struct cvmx_pko_dqx_packets_s cn78xx;
+       struct cvmx_pko_dqx_packets_s cn78xxp1;
+       struct cvmx_pko_dqx_packets_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_packets cvmx_pko_dqx_packets_t;
+
+/**
+ * cvmx_pko_dq#_pick
+ *
+ * This CSR contains the meta for the DQ, and is for debug and reconfiguration
+ * only and should never be written. See also PKO_META_DESC_S.
+ */
+union cvmx_pko_dqx_pick {
+       u64 u64;
+       struct cvmx_pko_dqx_pick_s {
+               u64 dq : 10;
+               u64 color : 2;
+               u64 child : 10;
+               u64 bubble : 1;
+               u64 p_con : 1;
+               u64 c_con : 1;
+               u64 uid : 7;
+               u64 jump : 1;
+               u64 fpd : 1;
+               u64 ds : 1;
+               u64 adjust : 9;
+               u64 pir_dis : 1;
+               u64 cir_dis : 1;
+               u64 red_algo_override : 2;
+               u64 length : 16;
+       } s;
+       struct cvmx_pko_dqx_pick_s cn73xx;
+       struct cvmx_pko_dqx_pick_s cn78xx;
+       struct cvmx_pko_dqx_pick_s cn78xxp1;
+       struct cvmx_pko_dqx_pick_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_pick cvmx_pko_dqx_pick_t;
+
+/**
+ * cvmx_pko_dq#_pir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_dqx_pir {
+       u64 u64;
+       struct cvmx_pko_dqx_pir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_dqx_pir_s cn73xx;
+       struct cvmx_pko_dqx_pir_s cn78xx;
+       struct cvmx_pko_dqx_pir_s cn78xxp1;
+       struct cvmx_pko_dqx_pir_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_pir cvmx_pko_dqx_pir_t;
+
+/**
+ * cvmx_pko_dq#_pointers
+ *
+ * This register has the same bit fields as PKO_L3_SQ(0..255)_POINTERS.
+ *
+ */
+union cvmx_pko_dqx_pointers {
+       u64 u64;
+       struct cvmx_pko_dqx_pointers_s {
+               u64 reserved_26_63 : 38;
+               u64 prev : 10;
+               u64 reserved_10_15 : 6;
+               u64 next : 10;
+       } s;
+       struct cvmx_pko_dqx_pointers_cn73xx {
+               u64 reserved_24_63 : 40;
+               u64 prev : 8;
+               u64 reserved_8_15 : 8;
+               u64 next : 8;
+       } cn73xx;
+       struct cvmx_pko_dqx_pointers_s cn78xx;
+       struct cvmx_pko_dqx_pointers_s cn78xxp1;
+       struct cvmx_pko_dqx_pointers_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_pointers cvmx_pko_dqx_pointers_t;
+
+/**
+ * cvmx_pko_dq#_sched_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHED_STATE.
+ *
+ */
+union cvmx_pko_dqx_sched_state {
+       u64 u64;
+       struct cvmx_pko_dqx_sched_state_s {
+               u64 reserved_25_63 : 39;
+               u64 rr_count : 25;
+       } s;
+       struct cvmx_pko_dqx_sched_state_s cn73xx;
+       struct cvmx_pko_dqx_sched_state_s cn78xx;
+       struct cvmx_pko_dqx_sched_state_s cn78xxp1;
+       struct cvmx_pko_dqx_sched_state_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_sched_state cvmx_pko_dqx_sched_state_t;
+
+/**
+ * cvmx_pko_dq#_schedule
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHEDULE.
+ *
+ */
+union cvmx_pko_dqx_schedule {
+       u64 u64;
+       struct cvmx_pko_dqx_schedule_s {
+               u64 reserved_28_63 : 36;
+               u64 prio : 4;
+               u64 rr_quantum : 24;
+       } s;
+       struct cvmx_pko_dqx_schedule_s cn73xx;
+       struct cvmx_pko_dqx_schedule_s cn78xx;
+       struct cvmx_pko_dqx_schedule_s cn78xxp1;
+       struct cvmx_pko_dqx_schedule_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_schedule cvmx_pko_dqx_schedule_t;
+
+/**
+ * cvmx_pko_dq#_shape
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_SHAPE.
+ *
+ */
+union cvmx_pko_dqx_shape {
+       u64 u64;
+       struct cvmx_pko_dqx_shape_s {
+               u64 reserved_27_63 : 37;
+               u64 schedule_list : 2;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } s;
+       struct cvmx_pko_dqx_shape_s cn73xx;
+       struct cvmx_pko_dqx_shape_cn78xx {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } cn78xx;
+       struct cvmx_pko_dqx_shape_cn78xx cn78xxp1;
+       struct cvmx_pko_dqx_shape_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_shape cvmx_pko_dqx_shape_t;
+
+/**
+ * cvmx_pko_dq#_shape_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SHAPE_STATE.
+ * This register must not be written during normal operation.
+ */
+union cvmx_pko_dqx_shape_state {
+       u64 u64;
+       struct cvmx_pko_dqx_shape_state_s {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 color : 2;
+               u64 pir_accum : 26;
+               u64 cir_accum : 26;
+       } s;
+       struct cvmx_pko_dqx_shape_state_s cn73xx;
+       struct cvmx_pko_dqx_shape_state_s cn78xx;
+       struct cvmx_pko_dqx_shape_state_s cn78xxp1;
+       struct cvmx_pko_dqx_shape_state_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_shape_state cvmx_pko_dqx_shape_state_t;
+
+/**
+ * cvmx_pko_dq#_sw_xoff
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_SW_XOFF.
+ *
+ */
+union cvmx_pko_dqx_sw_xoff {
+       u64 u64;
+       struct cvmx_pko_dqx_sw_xoff_s {
+               u64 reserved_4_63 : 60;
+               u64 drain_irq : 1;
+               u64 drain_null_link : 1;
+               u64 drain : 1;
+               u64 xoff : 1;
+       } s;
+       struct cvmx_pko_dqx_sw_xoff_s cn73xx;
+       struct cvmx_pko_dqx_sw_xoff_s cn78xx;
+       struct cvmx_pko_dqx_sw_xoff_s cn78xxp1;
+       struct cvmx_pko_dqx_sw_xoff_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_sw_xoff cvmx_pko_dqx_sw_xoff_t;
+
+/**
+ * cvmx_pko_dq#_topology
+ */
+union cvmx_pko_dqx_topology {
+       u64 u64;
+       struct cvmx_pko_dqx_topology_s {
+               u64 reserved_26_63 : 38;
+               u64 parent : 10;
+               u64 reserved_0_15 : 16;
+       } s;
+       struct cvmx_pko_dqx_topology_cn73xx {
+               u64 reserved_24_63 : 40;
+               u64 parent : 8;
+               u64 reserved_0_15 : 16;
+       } cn73xx;
+       struct cvmx_pko_dqx_topology_s cn78xx;
+       struct cvmx_pko_dqx_topology_s cn78xxp1;
+       struct cvmx_pko_dqx_topology_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_topology cvmx_pko_dqx_topology_t;
+
+/**
+ * cvmx_pko_dq#_wm_buf_cnt
+ */
+union cvmx_pko_dqx_wm_buf_cnt {
+       u64 u64;
+       struct cvmx_pko_dqx_wm_buf_cnt_s {
+               u64 reserved_36_63 : 28;
+               u64 count : 36;
+       } s;
+       struct cvmx_pko_dqx_wm_buf_cnt_s cn73xx;
+       struct cvmx_pko_dqx_wm_buf_cnt_s cn78xx;
+       struct cvmx_pko_dqx_wm_buf_cnt_s cn78xxp1;
+       struct cvmx_pko_dqx_wm_buf_cnt_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_wm_buf_cnt cvmx_pko_dqx_wm_buf_cnt_t;
+
+/**
+ * cvmx_pko_dq#_wm_buf_ctl
+ */
+union cvmx_pko_dqx_wm_buf_ctl {
+       u64 u64;
+       struct cvmx_pko_dqx_wm_buf_ctl_s {
+               u64 reserved_51_63 : 13;
+               u64 enable : 1;
+               u64 reserved_49_49 : 1;
+               u64 intr : 1;
+               u64 reserved_36_47 : 12;
+               u64 threshold : 36;
+       } s;
+       struct cvmx_pko_dqx_wm_buf_ctl_s cn73xx;
+       struct cvmx_pko_dqx_wm_buf_ctl_s cn78xx;
+       struct cvmx_pko_dqx_wm_buf_ctl_s cn78xxp1;
+       struct cvmx_pko_dqx_wm_buf_ctl_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_wm_buf_ctl cvmx_pko_dqx_wm_buf_ctl_t;
+
+/**
+ * cvmx_pko_dq#_wm_buf_ctl_w1c
+ */
+union cvmx_pko_dqx_wm_buf_ctl_w1c {
+       u64 u64;
+       struct cvmx_pko_dqx_wm_buf_ctl_w1c_s {
+               u64 reserved_49_63 : 15;
+               u64 intr : 1;
+               u64 reserved_0_47 : 48;
+       } s;
+       struct cvmx_pko_dqx_wm_buf_ctl_w1c_s cn73xx;
+       struct cvmx_pko_dqx_wm_buf_ctl_w1c_s cn78xx;
+       struct cvmx_pko_dqx_wm_buf_ctl_w1c_s cn78xxp1;
+       struct cvmx_pko_dqx_wm_buf_ctl_w1c_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_wm_buf_ctl_w1c cvmx_pko_dqx_wm_buf_ctl_w1c_t;
+
+/**
+ * cvmx_pko_dq#_wm_cnt
+ */
+union cvmx_pko_dqx_wm_cnt {
+       u64 u64;
+       struct cvmx_pko_dqx_wm_cnt_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_dqx_wm_cnt_s cn73xx;
+       struct cvmx_pko_dqx_wm_cnt_s cn78xx;
+       struct cvmx_pko_dqx_wm_cnt_s cn78xxp1;
+       struct cvmx_pko_dqx_wm_cnt_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_wm_cnt cvmx_pko_dqx_wm_cnt_t;
+
+/**
+ * cvmx_pko_dq#_wm_ctl
+ */
+union cvmx_pko_dqx_wm_ctl {
+       u64 u64;
+       struct cvmx_pko_dqx_wm_ctl_s {
+               u64 reserved_52_63 : 12;
+               u64 ncb_query_rsp : 1;
+               u64 enable : 1;
+               u64 kind : 1;
+               u64 intr : 1;
+               u64 threshold : 48;
+       } s;
+       struct cvmx_pko_dqx_wm_ctl_s cn73xx;
+       struct cvmx_pko_dqx_wm_ctl_s cn78xx;
+       struct cvmx_pko_dqx_wm_ctl_s cn78xxp1;
+       struct cvmx_pko_dqx_wm_ctl_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_wm_ctl cvmx_pko_dqx_wm_ctl_t;
+
+/**
+ * cvmx_pko_dq#_wm_ctl_w1c
+ */
+union cvmx_pko_dqx_wm_ctl_w1c {
+       u64 u64;
+       struct cvmx_pko_dqx_wm_ctl_w1c_s {
+               u64 reserved_49_63 : 15;
+               u64 intr : 1;
+               u64 reserved_0_47 : 48;
+       } s;
+       struct cvmx_pko_dqx_wm_ctl_w1c_s cn73xx;
+       struct cvmx_pko_dqx_wm_ctl_w1c_s cn78xx;
+       struct cvmx_pko_dqx_wm_ctl_w1c_s cn78xxp1;
+       struct cvmx_pko_dqx_wm_ctl_w1c_s cnf75xx;
+};
+
+typedef union cvmx_pko_dqx_wm_ctl_w1c cvmx_pko_dqx_wm_ctl_w1c_t;
+
+/**
+ * cvmx_pko_dq_csr_bus_debug
+ */
+union cvmx_pko_dq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_dq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_dq_csr_bus_debug_s cn73xx;
+       struct cvmx_pko_dq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_dq_csr_bus_debug_s cn78xxp1;
+       struct cvmx_pko_dq_csr_bus_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_dq_csr_bus_debug cvmx_pko_dq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_dq_debug
+ */
+union cvmx_pko_dq_debug {
+       u64 u64;
+       struct cvmx_pko_dq_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_dq_debug_s cn73xx;
+       struct cvmx_pko_dq_debug_s cn78xx;
+       struct cvmx_pko_dq_debug_s cn78xxp1;
+       struct cvmx_pko_dq_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_dq_debug cvmx_pko_dq_debug_t;
+
+/**
+ * cvmx_pko_drain_irq
+ */
+union cvmx_pko_drain_irq {
+       u64 u64;
+       struct cvmx_pko_drain_irq_s {
+               u64 reserved_1_63 : 63;
+               u64 intr : 1;
+       } s;
+       struct cvmx_pko_drain_irq_s cn73xx;
+       struct cvmx_pko_drain_irq_s cn78xx;
+       struct cvmx_pko_drain_irq_s cn78xxp1;
+       struct cvmx_pko_drain_irq_s cnf75xx;
+};
+
+typedef union cvmx_pko_drain_irq cvmx_pko_drain_irq_t;
+
+/**
+ * cvmx_pko_enable
+ */
+union cvmx_pko_enable {
+       u64 u64;
+       struct cvmx_pko_enable_s {
+               u64 reserved_1_63 : 63;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_enable_s cn73xx;
+       struct cvmx_pko_enable_s cn78xx;
+       struct cvmx_pko_enable_s cn78xxp1;
+       struct cvmx_pko_enable_s cnf75xx;
+};
+
+typedef union cvmx_pko_enable cvmx_pko_enable_t;
+
+/**
+ * cvmx_pko_format#_ctl
+ *
+ * Describes packet marking calculations for YELLOW and for RED_SEND packets.
+ * PKO_SEND_HDR_S[FORMAT] selects the CSR used for the packet descriptor.
+ *
+ * All the packet marking calculations assume big-endian bits within a byte.
+ *
+ * For example, if MARKPTR is 3 and [OFFSET] is 5 and the packet is YELLOW,
+ * the PKO marking hardware would do this:
+ *
+ * _  byte[3]<2:0> |=   Y_VAL<3:1>
+ * _  byte[3]<2:0> &= ~Y_MASK<3:1>
+ * _  byte[4]<7>   |=   Y_VAL<0>
+ * _  byte[4]<7>   &= ~Y_MASK<0>
+ *
+ * where byte[3] is the 3rd byte in the packet, and byte[4] the 4th.
+ *
+ * For another example, if MARKPTR is 3 and [OFFSET] is 0 and the packet is RED_SEND,
+ *
+ * _   byte[3]<7:4> |=   R_VAL<3:0>
+ * _   byte[3]<7:4> &= ~R_MASK<3:0>
+ */
+union cvmx_pko_formatx_ctl {
+       u64 u64;
+       struct cvmx_pko_formatx_ctl_s {
+               u64 reserved_27_63 : 37;
+               u64 offset : 11;
+               u64 y_mask : 4;
+               u64 y_val : 4;
+               u64 r_mask : 4;
+               u64 r_val : 4;
+       } s;
+       struct cvmx_pko_formatx_ctl_s cn73xx;
+       struct cvmx_pko_formatx_ctl_s cn78xx;
+       struct cvmx_pko_formatx_ctl_s cn78xxp1;
+       struct cvmx_pko_formatx_ctl_s cnf75xx;
+};
+
+typedef union cvmx_pko_formatx_ctl cvmx_pko_formatx_ctl_t;
+
+/**
+ * cvmx_pko_l1_sq#_cir
+ */
+union cvmx_pko_l1_sqx_cir {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_cir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l1_sqx_cir_s cn73xx;
+       struct cvmx_pko_l1_sqx_cir_s cn78xx;
+       struct cvmx_pko_l1_sqx_cir_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_cir_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_cir cvmx_pko_l1_sqx_cir_t;
+
+/**
+ * cvmx_pko_l1_sq#_dropped_bytes
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_BYTES.
+ *
+ */
+union cvmx_pko_l1_sqx_dropped_bytes {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_dropped_bytes_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_l1_sqx_dropped_bytes_s cn73xx;
+       struct cvmx_pko_l1_sqx_dropped_bytes_s cn78xx;
+       struct cvmx_pko_l1_sqx_dropped_bytes_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_dropped_bytes_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_dropped_bytes cvmx_pko_l1_sqx_dropped_bytes_t;
+
+/**
+ * cvmx_pko_l1_sq#_dropped_packets
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_PACKETS.
+ *
+ */
+union cvmx_pko_l1_sqx_dropped_packets {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_dropped_packets_s {
+               u64 reserved_40_63 : 24;
+               u64 count : 40;
+       } s;
+       struct cvmx_pko_l1_sqx_dropped_packets_s cn73xx;
+       struct cvmx_pko_l1_sqx_dropped_packets_s cn78xx;
+       struct cvmx_pko_l1_sqx_dropped_packets_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_dropped_packets_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_dropped_packets cvmx_pko_l1_sqx_dropped_packets_t;
+
+/**
+ * cvmx_pko_l1_sq#_green
+ */
+union cvmx_pko_l1_sqx_green {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_green_s {
+               u64 reserved_41_63 : 23;
+               u64 rr_active : 1;
+               u64 active_vec : 20;
+               u64 reserved_19_19 : 1;
+               u64 head : 9;
+               u64 reserved_9_9 : 1;
+               u64 tail : 9;
+       } s;
+       struct cvmx_pko_l1_sqx_green_s cn73xx;
+       struct cvmx_pko_l1_sqx_green_s cn78xx;
+       struct cvmx_pko_l1_sqx_green_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_green_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_green cvmx_pko_l1_sqx_green_t;
+
+/**
+ * cvmx_pko_l1_sq#_green_bytes
+ */
+union cvmx_pko_l1_sqx_green_bytes {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_green_bytes_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_l1_sqx_green_bytes_s cn73xx;
+       struct cvmx_pko_l1_sqx_green_bytes_s cn78xx;
+       struct cvmx_pko_l1_sqx_green_bytes_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_green_bytes_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_green_bytes cvmx_pko_l1_sqx_green_bytes_t;
+
+/**
+ * cvmx_pko_l1_sq#_green_packets
+ */
+union cvmx_pko_l1_sqx_green_packets {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_green_packets_s {
+               u64 reserved_40_63 : 24;
+               u64 count : 40;
+       } s;
+       struct cvmx_pko_l1_sqx_green_packets_s cn73xx;
+       struct cvmx_pko_l1_sqx_green_packets_s cn78xx;
+       struct cvmx_pko_l1_sqx_green_packets_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_green_packets_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_green_packets cvmx_pko_l1_sqx_green_packets_t;
+
+/**
+ * cvmx_pko_l1_sq#_link
+ */
+union cvmx_pko_l1_sqx_link {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_link_s {
+               u64 reserved_49_63 : 15;
+               u64 link : 5;
+               u64 reserved_32_43 : 12;
+               u64 cc_word_cnt : 20;
+               u64 cc_packet_cnt : 10;
+               u64 cc_enable : 1;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_l1_sqx_link_cn73xx {
+               u64 reserved_48_63 : 16;
+               u64 link : 4;
+               u64 reserved_32_43 : 12;
+               u64 cc_word_cnt : 20;
+               u64 cc_packet_cnt : 10;
+               u64 cc_enable : 1;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_l1_sqx_link_s cn78xx;
+       struct cvmx_pko_l1_sqx_link_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_link_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_link cvmx_pko_l1_sqx_link_t;
+
+/**
+ * cvmx_pko_l1_sq#_pick
+ *
+ * This CSR contains the meta for the L1 SQ, and is for debug and reconfiguration
+ * only and should never be written. See also PKO_META_DESC_S.
+ */
+union cvmx_pko_l1_sqx_pick {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_pick_s {
+               u64 dq : 10;
+               u64 color : 2;
+               u64 child : 10;
+               u64 bubble : 1;
+               u64 p_con : 1;
+               u64 c_con : 1;
+               u64 uid : 7;
+               u64 jump : 1;
+               u64 fpd : 1;
+               u64 ds : 1;
+               u64 adjust : 9;
+               u64 pir_dis : 1;
+               u64 cir_dis : 1;
+               u64 red_algo_override : 2;
+               u64 length : 16;
+       } s;
+       struct cvmx_pko_l1_sqx_pick_s cn73xx;
+       struct cvmx_pko_l1_sqx_pick_s cn78xx;
+       struct cvmx_pko_l1_sqx_pick_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_pick_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_pick cvmx_pko_l1_sqx_pick_t;
+
+/**
+ * cvmx_pko_l1_sq#_red
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l1_sqx_red {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_red_s {
+               u64 reserved_19_63 : 45;
+               u64 head : 9;
+               u64 reserved_9_9 : 1;
+               u64 tail : 9;
+       } s;
+       struct cvmx_pko_l1_sqx_red_s cn73xx;
+       struct cvmx_pko_l1_sqx_red_s cn78xx;
+       struct cvmx_pko_l1_sqx_red_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_red_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_red cvmx_pko_l1_sqx_red_t;
+
+/**
+ * cvmx_pko_l1_sq#_red_bytes
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_BYTES.
+ *
+ */
+union cvmx_pko_l1_sqx_red_bytes {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_red_bytes_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_l1_sqx_red_bytes_s cn73xx;
+       struct cvmx_pko_l1_sqx_red_bytes_s cn78xx;
+       struct cvmx_pko_l1_sqx_red_bytes_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_red_bytes_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_red_bytes cvmx_pko_l1_sqx_red_bytes_t;
+
+/**
+ * cvmx_pko_l1_sq#_red_packets
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_PACKETS.
+ *
+ */
+union cvmx_pko_l1_sqx_red_packets {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_red_packets_s {
+               u64 reserved_40_63 : 24;
+               u64 count : 40;
+       } s;
+       struct cvmx_pko_l1_sqx_red_packets_s cn73xx;
+       struct cvmx_pko_l1_sqx_red_packets_s cn78xx;
+       struct cvmx_pko_l1_sqx_red_packets_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_red_packets_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_red_packets cvmx_pko_l1_sqx_red_packets_t;
+
+/**
+ * cvmx_pko_l1_sq#_schedule
+ */
+union cvmx_pko_l1_sqx_schedule {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_schedule_s {
+               u64 dummy : 40;
+               u64 rr_quantum : 24;
+       } s;
+       struct cvmx_pko_l1_sqx_schedule_cn73xx {
+               u64 reserved_24_63 : 40;
+               u64 rr_quantum : 24;
+       } cn73xx;
+       struct cvmx_pko_l1_sqx_schedule_cn73xx cn78xx;
+       struct cvmx_pko_l1_sqx_schedule_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_schedule_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_schedule cvmx_pko_l1_sqx_schedule_t;
+
+/**
+ * cvmx_pko_l1_sq#_shape
+ */
+union cvmx_pko_l1_sqx_shape {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_shape_s {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_18_23 : 6;
+               u64 link : 5;
+               u64 reserved_9_12 : 4;
+               u64 adjust : 9;
+       } s;
+       struct cvmx_pko_l1_sqx_shape_cn73xx {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_17_23 : 7;
+               u64 link : 4;
+               u64 reserved_9_12 : 4;
+               u64 adjust : 9;
+       } cn73xx;
+       struct cvmx_pko_l1_sqx_shape_s cn78xx;
+       struct cvmx_pko_l1_sqx_shape_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_shape_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_shape cvmx_pko_l1_sqx_shape_t;
+
+/**
+ * cvmx_pko_l1_sq#_shape_state
+ *
+ * This register must not be written during normal operation.
+ *
+ */
+union cvmx_pko_l1_sqx_shape_state {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_shape_state_s {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 color2 : 1;
+               u64 color : 1;
+               u64 reserved_26_51 : 26;
+               u64 cir_accum : 26;
+       } s;
+       struct cvmx_pko_l1_sqx_shape_state_cn73xx {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 reserved_53_53 : 1;
+               u64 color : 1;
+               u64 reserved_26_51 : 26;
+               u64 cir_accum : 26;
+       } cn73xx;
+       struct cvmx_pko_l1_sqx_shape_state_cn73xx cn78xx;
+       struct cvmx_pko_l1_sqx_shape_state_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_shape_state_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_shape_state cvmx_pko_l1_sqx_shape_state_t;
+
+/**
+ * cvmx_pko_l1_sq#_sw_xoff
+ */
+union cvmx_pko_l1_sqx_sw_xoff {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_sw_xoff_s {
+               u64 reserved_4_63 : 60;
+               u64 drain_irq : 1;
+               u64 drain_null_link : 1;
+               u64 drain : 1;
+               u64 xoff : 1;
+       } s;
+       struct cvmx_pko_l1_sqx_sw_xoff_s cn73xx;
+       struct cvmx_pko_l1_sqx_sw_xoff_s cn78xx;
+       struct cvmx_pko_l1_sqx_sw_xoff_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_sw_xoff_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_sw_xoff cvmx_pko_l1_sqx_sw_xoff_t;
+
+/**
+ * cvmx_pko_l1_sq#_topology
+ */
+union cvmx_pko_l1_sqx_topology {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_topology_s {
+               u64 reserved_41_63 : 23;
+               u64 prio_anchor : 9;
+               u64 reserved_21_31 : 11;
+               u64 link : 5;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_l1_sqx_topology_cn73xx {
+               u64 reserved_40_63 : 24;
+               u64 prio_anchor : 8;
+               u64 reserved_20_31 : 12;
+               u64 link : 4;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_l1_sqx_topology_s cn78xx;
+       struct cvmx_pko_l1_sqx_topology_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_topology_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_topology cvmx_pko_l1_sqx_topology_t;
+
+/**
+ * cvmx_pko_l1_sq#_yellow
+ */
+union cvmx_pko_l1_sqx_yellow {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_yellow_s {
+               u64 reserved_19_63 : 45;
+               u64 head : 9;
+               u64 reserved_9_9 : 1;
+               u64 tail : 9;
+       } s;
+       struct cvmx_pko_l1_sqx_yellow_s cn73xx;
+       struct cvmx_pko_l1_sqx_yellow_s cn78xx;
+       struct cvmx_pko_l1_sqx_yellow_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_yellow_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_yellow cvmx_pko_l1_sqx_yellow_t;
+
+/**
+ * cvmx_pko_l1_sq#_yellow_bytes
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_BYTES.
+ *
+ */
+union cvmx_pko_l1_sqx_yellow_bytes {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_yellow_bytes_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_l1_sqx_yellow_bytes_s cn73xx;
+       struct cvmx_pko_l1_sqx_yellow_bytes_s cn78xx;
+       struct cvmx_pko_l1_sqx_yellow_bytes_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_yellow_bytes_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_yellow_bytes cvmx_pko_l1_sqx_yellow_bytes_t;
+
+/**
+ * cvmx_pko_l1_sq#_yellow_packets
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN_PACKETS.
+ *
+ */
+union cvmx_pko_l1_sqx_yellow_packets {
+       u64 u64;
+       struct cvmx_pko_l1_sqx_yellow_packets_s {
+               u64 reserved_40_63 : 24;
+               u64 count : 40;
+       } s;
+       struct cvmx_pko_l1_sqx_yellow_packets_s cn73xx;
+       struct cvmx_pko_l1_sqx_yellow_packets_s cn78xx;
+       struct cvmx_pko_l1_sqx_yellow_packets_s cn78xxp1;
+       struct cvmx_pko_l1_sqx_yellow_packets_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqx_yellow_packets cvmx_pko_l1_sqx_yellow_packets_t;
+
+/**
+ * cvmx_pko_l1_sq_csr_bus_debug
+ */
+union cvmx_pko_l1_sq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_l1_sq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_l1_sq_csr_bus_debug_s cn73xx;
+       struct cvmx_pko_l1_sq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_l1_sq_csr_bus_debug_s cn78xxp1;
+       struct cvmx_pko_l1_sq_csr_bus_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sq_csr_bus_debug cvmx_pko_l1_sq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_l1_sqa_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l1_sqa_debug {
+       u64 u64;
+       struct cvmx_pko_l1_sqa_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l1_sqa_debug_s cn73xx;
+       struct cvmx_pko_l1_sqa_debug_s cn78xx;
+       struct cvmx_pko_l1_sqa_debug_s cn78xxp1;
+       struct cvmx_pko_l1_sqa_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqa_debug cvmx_pko_l1_sqa_debug_t;
+
+/**
+ * cvmx_pko_l1_sqb_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l1_sqb_debug {
+       u64 u64;
+       struct cvmx_pko_l1_sqb_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l1_sqb_debug_s cn73xx;
+       struct cvmx_pko_l1_sqb_debug_s cn78xx;
+       struct cvmx_pko_l1_sqb_debug_s cn78xxp1;
+       struct cvmx_pko_l1_sqb_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l1_sqb_debug cvmx_pko_l1_sqb_debug_t;
+
+/**
+ * cvmx_pko_l2_sq#_cir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l2_sqx_cir {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_cir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l2_sqx_cir_s cn73xx;
+       struct cvmx_pko_l2_sqx_cir_s cn78xx;
+       struct cvmx_pko_l2_sqx_cir_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_cir_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_cir cvmx_pko_l2_sqx_cir_t;
+
+/**
+ * cvmx_pko_l2_sq#_green
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_GREEN.
+ *
+ */
+union cvmx_pko_l2_sqx_green {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_green_s {
+               u64 reserved_41_63 : 23;
+               u64 rr_active : 1;
+               u64 active_vec : 20;
+               u64 reserved_19_19 : 1;
+               u64 head : 9;
+               u64 reserved_9_9 : 1;
+               u64 tail : 9;
+       } s;
+       struct cvmx_pko_l2_sqx_green_s cn73xx;
+       struct cvmx_pko_l2_sqx_green_s cn78xx;
+       struct cvmx_pko_l2_sqx_green_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_green_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_green cvmx_pko_l2_sqx_green_t;
+
+/**
+ * cvmx_pko_l2_sq#_pick
+ *
+ * This CSR contains the meta for the L2 SQ, and is for debug and reconfiguration
+ * only and should never be written. See also PKO_META_DESC_S.
+ */
+union cvmx_pko_l2_sqx_pick {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_pick_s {
+               u64 dq : 10;
+               u64 color : 2;
+               u64 child : 10;
+               u64 bubble : 1;
+               u64 p_con : 1;
+               u64 c_con : 1;
+               u64 uid : 7;
+               u64 jump : 1;
+               u64 fpd : 1;
+               u64 ds : 1;
+               u64 adjust : 9;
+               u64 pir_dis : 1;
+               u64 cir_dis : 1;
+               u64 red_algo_override : 2;
+               u64 length : 16;
+       } s;
+       struct cvmx_pko_l2_sqx_pick_s cn73xx;
+       struct cvmx_pko_l2_sqx_pick_s cn78xx;
+       struct cvmx_pko_l2_sqx_pick_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_pick_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_pick cvmx_pko_l2_sqx_pick_t;
+
+/**
+ * cvmx_pko_l2_sq#_pir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l2_sqx_pir {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_pir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l2_sqx_pir_s cn73xx;
+       struct cvmx_pko_l2_sqx_pir_s cn78xx;
+       struct cvmx_pko_l2_sqx_pir_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_pir_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_pir cvmx_pko_l2_sqx_pir_t;
+
+/**
+ * cvmx_pko_l2_sq#_pointers
+ */
+union cvmx_pko_l2_sqx_pointers {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_pointers_s {
+               u64 reserved_25_63 : 39;
+               u64 prev : 9;
+               u64 reserved_9_15 : 7;
+               u64 next : 9;
+       } s;
+       struct cvmx_pko_l2_sqx_pointers_cn73xx {
+               u64 reserved_24_63 : 40;
+               u64 prev : 8;
+               u64 reserved_8_15 : 8;
+               u64 next : 8;
+       } cn73xx;
+       struct cvmx_pko_l2_sqx_pointers_s cn78xx;
+       struct cvmx_pko_l2_sqx_pointers_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_pointers_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_pointers cvmx_pko_l2_sqx_pointers_t;
+
+/**
+ * cvmx_pko_l2_sq#_red
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_RED.
+ *
+ */
+union cvmx_pko_l2_sqx_red {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_red_s {
+               u64 reserved_19_63 : 45;
+               u64 head : 9;
+               u64 reserved_9_9 : 1;
+               u64 tail : 9;
+       } s;
+       struct cvmx_pko_l2_sqx_red_s cn73xx;
+       struct cvmx_pko_l2_sqx_red_s cn78xx;
+       struct cvmx_pko_l2_sqx_red_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_red_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_red cvmx_pko_l2_sqx_red_t;
+
+/**
+ * cvmx_pko_l2_sq#_sched_state
+ */
+union cvmx_pko_l2_sqx_sched_state {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_sched_state_s {
+               u64 reserved_25_63 : 39;
+               u64 rr_count : 25;
+       } s;
+       struct cvmx_pko_l2_sqx_sched_state_s cn73xx;
+       struct cvmx_pko_l2_sqx_sched_state_s cn78xx;
+       struct cvmx_pko_l2_sqx_sched_state_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_sched_state_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_sched_state cvmx_pko_l2_sqx_sched_state_t;
+
+/**
+ * cvmx_pko_l2_sq#_schedule
+ */
+union cvmx_pko_l2_sqx_schedule {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_schedule_s {
+               u64 reserved_28_63 : 36;
+               u64 prio : 4;
+               u64 rr_quantum : 24;
+       } s;
+       struct cvmx_pko_l2_sqx_schedule_s cn73xx;
+       struct cvmx_pko_l2_sqx_schedule_s cn78xx;
+       struct cvmx_pko_l2_sqx_schedule_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_schedule_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_schedule cvmx_pko_l2_sqx_schedule_t;
+
+/**
+ * cvmx_pko_l2_sq#_shape
+ */
+union cvmx_pko_l2_sqx_shape {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_shape_s {
+               u64 reserved_27_63 : 37;
+               u64 schedule_list : 2;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } s;
+       struct cvmx_pko_l2_sqx_shape_s cn73xx;
+       struct cvmx_pko_l2_sqx_shape_cn78xx {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } cn78xx;
+       struct cvmx_pko_l2_sqx_shape_cn78xx cn78xxp1;
+       struct cvmx_pko_l2_sqx_shape_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_shape cvmx_pko_l2_sqx_shape_t;
+
+/**
+ * cvmx_pko_l2_sq#_shape_state
+ *
+ * This register must not be written during normal operation.
+ *
+ */
+union cvmx_pko_l2_sqx_shape_state {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_shape_state_s {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 color : 2;
+               u64 pir_accum : 26;
+               u64 cir_accum : 26;
+       } s;
+       struct cvmx_pko_l2_sqx_shape_state_s cn73xx;
+       struct cvmx_pko_l2_sqx_shape_state_s cn78xx;
+       struct cvmx_pko_l2_sqx_shape_state_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_shape_state_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_shape_state cvmx_pko_l2_sqx_shape_state_t;
+
+/**
+ * cvmx_pko_l2_sq#_sw_xoff
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_SW_XOFF.
+ *
+ */
+union cvmx_pko_l2_sqx_sw_xoff {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_sw_xoff_s {
+               u64 reserved_4_63 : 60;
+               u64 drain_irq : 1;
+               u64 drain_null_link : 1;
+               u64 drain : 1;
+               u64 xoff : 1;
+       } s;
+       struct cvmx_pko_l2_sqx_sw_xoff_s cn73xx;
+       struct cvmx_pko_l2_sqx_sw_xoff_s cn78xx;
+       struct cvmx_pko_l2_sqx_sw_xoff_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_sw_xoff_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_sw_xoff cvmx_pko_l2_sqx_sw_xoff_t;
+
+/**
+ * cvmx_pko_l2_sq#_topology
+ */
+union cvmx_pko_l2_sqx_topology {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_topology_s {
+               u64 reserved_41_63 : 23;
+               u64 prio_anchor : 9;
+               u64 reserved_21_31 : 11;
+               u64 parent : 5;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_l2_sqx_topology_cn73xx {
+               u64 reserved_40_63 : 24;
+               u64 prio_anchor : 8;
+               u64 reserved_20_31 : 12;
+               u64 parent : 4;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_l2_sqx_topology_s cn78xx;
+       struct cvmx_pko_l2_sqx_topology_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_topology_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_topology cvmx_pko_l2_sqx_topology_t;
+
+/**
+ * cvmx_pko_l2_sq#_yellow
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l2_sqx_yellow {
+       u64 u64;
+       struct cvmx_pko_l2_sqx_yellow_s {
+               u64 reserved_19_63 : 45;
+               u64 head : 9;
+               u64 reserved_9_9 : 1;
+               u64 tail : 9;
+       } s;
+       struct cvmx_pko_l2_sqx_yellow_s cn73xx;
+       struct cvmx_pko_l2_sqx_yellow_s cn78xx;
+       struct cvmx_pko_l2_sqx_yellow_s cn78xxp1;
+       struct cvmx_pko_l2_sqx_yellow_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqx_yellow cvmx_pko_l2_sqx_yellow_t;
+
+/**
+ * cvmx_pko_l2_sq_csr_bus_debug
+ */
+union cvmx_pko_l2_sq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_l2_sq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_l2_sq_csr_bus_debug_s cn73xx;
+       struct cvmx_pko_l2_sq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_l2_sq_csr_bus_debug_s cn78xxp1;
+       struct cvmx_pko_l2_sq_csr_bus_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sq_csr_bus_debug cvmx_pko_l2_sq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_l2_sqa_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l2_sqa_debug {
+       u64 u64;
+       struct cvmx_pko_l2_sqa_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l2_sqa_debug_s cn73xx;
+       struct cvmx_pko_l2_sqa_debug_s cn78xx;
+       struct cvmx_pko_l2_sqa_debug_s cn78xxp1;
+       struct cvmx_pko_l2_sqa_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqa_debug cvmx_pko_l2_sqa_debug_t;
+
+/**
+ * cvmx_pko_l2_sqb_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l2_sqb_debug {
+       u64 u64;
+       struct cvmx_pko_l2_sqb_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l2_sqb_debug_s cn73xx;
+       struct cvmx_pko_l2_sqb_debug_s cn78xx;
+       struct cvmx_pko_l2_sqb_debug_s cn78xxp1;
+       struct cvmx_pko_l2_sqb_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l2_sqb_debug cvmx_pko_l2_sqb_debug_t;
+
+/**
+ * cvmx_pko_l3_l2_sq#_channel
+ *
+ * PKO_CHANNEL_LEVEL[CC_LEVEL] determines whether this CSR array is associated to
+ * the L2 SQs or the L3 SQs.
+ */
+union cvmx_pko_l3_l2_sqx_channel {
+       u64 u64;
+       struct cvmx_pko_l3_l2_sqx_channel_s {
+               u64 reserved_44_63 : 20;
+               u64 cc_channel : 12;
+               u64 cc_word_cnt : 20;
+               u64 cc_packet_cnt : 10;
+               u64 cc_enable : 1;
+               u64 hw_xoff : 1;
+       } s;
+       struct cvmx_pko_l3_l2_sqx_channel_s cn73xx;
+       struct cvmx_pko_l3_l2_sqx_channel_s cn78xx;
+       struct cvmx_pko_l3_l2_sqx_channel_s cn78xxp1;
+       struct cvmx_pko_l3_l2_sqx_channel_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_l2_sqx_channel cvmx_pko_l3_l2_sqx_channel_t;
+
+/**
+ * cvmx_pko_l3_sq#_cir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l3_sqx_cir {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_cir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l3_sqx_cir_s cn73xx;
+       struct cvmx_pko_l3_sqx_cir_s cn78xx;
+       struct cvmx_pko_l3_sqx_cir_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_cir_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_cir cvmx_pko_l3_sqx_cir_t;
+
+/**
+ * cvmx_pko_l3_sq#_green
+ */
+union cvmx_pko_l3_sqx_green {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_green_s {
+               u64 reserved_41_63 : 23;
+               u64 rr_active : 1;
+               u64 active_vec : 20;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l3_sqx_green_cn73xx {
+               u64 reserved_41_63 : 23;
+               u64 rr_active : 1;
+               u64 active_vec : 20;
+               u64 reserved_18_19 : 2;
+               u64 head : 8;
+               u64 reserved_8_9 : 2;
+               u64 tail : 8;
+       } cn73xx;
+       struct cvmx_pko_l3_sqx_green_s cn78xx;
+       struct cvmx_pko_l3_sqx_green_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_green_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_green cvmx_pko_l3_sqx_green_t;
+
+/**
+ * cvmx_pko_l3_sq#_pick
+ *
+ * This CSR contains the meta for the L3 SQ, and is for debug and reconfiguration
+ * only and should never be written. See also PKO_META_DESC_S.
+ */
+union cvmx_pko_l3_sqx_pick {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_pick_s {
+               u64 dq : 10;
+               u64 color : 2;
+               u64 child : 10;
+               u64 bubble : 1;
+               u64 p_con : 1;
+               u64 c_con : 1;
+               u64 uid : 7;
+               u64 jump : 1;
+               u64 fpd : 1;
+               u64 ds : 1;
+               u64 adjust : 9;
+               u64 pir_dis : 1;
+               u64 cir_dis : 1;
+               u64 red_algo_override : 2;
+               u64 length : 16;
+       } s;
+       struct cvmx_pko_l3_sqx_pick_s cn73xx;
+       struct cvmx_pko_l3_sqx_pick_s cn78xx;
+       struct cvmx_pko_l3_sqx_pick_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_pick_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_pick cvmx_pko_l3_sqx_pick_t;
+
+/**
+ * cvmx_pko_l3_sq#_pir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l3_sqx_pir {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_pir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l3_sqx_pir_s cn73xx;
+       struct cvmx_pko_l3_sqx_pir_s cn78xx;
+       struct cvmx_pko_l3_sqx_pir_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_pir_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_pir cvmx_pko_l3_sqx_pir_t;
+
+/**
+ * cvmx_pko_l3_sq#_pointers
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_POINTERS.
+ *
+ */
+union cvmx_pko_l3_sqx_pointers {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_pointers_s {
+               u64 reserved_25_63 : 39;
+               u64 prev : 9;
+               u64 reserved_9_15 : 7;
+               u64 next : 9;
+       } s;
+       struct cvmx_pko_l3_sqx_pointers_cn73xx {
+               u64 reserved_24_63 : 40;
+               u64 prev : 8;
+               u64 reserved_8_15 : 8;
+               u64 next : 8;
+       } cn73xx;
+       struct cvmx_pko_l3_sqx_pointers_s cn78xx;
+       struct cvmx_pko_l3_sqx_pointers_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_pointers_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_pointers cvmx_pko_l3_sqx_pointers_t;
+
+/**
+ * cvmx_pko_l3_sq#_red
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l3_sqx_red {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_red_s {
+               u64 reserved_20_63 : 44;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l3_sqx_red_cn73xx {
+               u64 reserved_18_63 : 46;
+               u64 head : 8;
+               u64 reserved_8_9 : 2;
+               u64 tail : 8;
+       } cn73xx;
+       struct cvmx_pko_l3_sqx_red_s cn78xx;
+       struct cvmx_pko_l3_sqx_red_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_red_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_red cvmx_pko_l3_sqx_red_t;
+
+/**
+ * cvmx_pko_l3_sq#_sched_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHED_STATE.
+ *
+ */
+union cvmx_pko_l3_sqx_sched_state {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_sched_state_s {
+               u64 reserved_25_63 : 39;
+               u64 rr_count : 25;
+       } s;
+       struct cvmx_pko_l3_sqx_sched_state_s cn73xx;
+       struct cvmx_pko_l3_sqx_sched_state_s cn78xx;
+       struct cvmx_pko_l3_sqx_sched_state_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_sched_state_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_sched_state cvmx_pko_l3_sqx_sched_state_t;
+
+/**
+ * cvmx_pko_l3_sq#_schedule
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHEDULE.
+ *
+ */
+union cvmx_pko_l3_sqx_schedule {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_schedule_s {
+               u64 reserved_28_63 : 36;
+               u64 prio : 4;
+               u64 rr_quantum : 24;
+       } s;
+       struct cvmx_pko_l3_sqx_schedule_s cn73xx;
+       struct cvmx_pko_l3_sqx_schedule_s cn78xx;
+       struct cvmx_pko_l3_sqx_schedule_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_schedule_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_schedule cvmx_pko_l3_sqx_schedule_t;
+
+/**
+ * cvmx_pko_l3_sq#_shape
+ */
+union cvmx_pko_l3_sqx_shape {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_shape_s {
+               u64 reserved_27_63 : 37;
+               u64 schedule_list : 2;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } s;
+       struct cvmx_pko_l3_sqx_shape_s cn73xx;
+       struct cvmx_pko_l3_sqx_shape_cn78xx {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } cn78xx;
+       struct cvmx_pko_l3_sqx_shape_cn78xx cn78xxp1;
+       struct cvmx_pko_l3_sqx_shape_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_shape cvmx_pko_l3_sqx_shape_t;
+
+/**
+ * cvmx_pko_l3_sq#_shape_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SHAPE_STATE.
+ * This register must not be written during normal operation.
+ */
+union cvmx_pko_l3_sqx_shape_state {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_shape_state_s {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 color : 2;
+               u64 pir_accum : 26;
+               u64 cir_accum : 26;
+       } s;
+       struct cvmx_pko_l3_sqx_shape_state_s cn73xx;
+       struct cvmx_pko_l3_sqx_shape_state_s cn78xx;
+       struct cvmx_pko_l3_sqx_shape_state_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_shape_state_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_shape_state cvmx_pko_l3_sqx_shape_state_t;
+
+/**
+ * cvmx_pko_l3_sq#_sw_xoff
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_SW_XOFF
+ *
+ */
+union cvmx_pko_l3_sqx_sw_xoff {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_sw_xoff_s {
+               u64 reserved_4_63 : 60;
+               u64 drain_irq : 1;
+               u64 drain_null_link : 1;
+               u64 drain : 1;
+               u64 xoff : 1;
+       } s;
+       struct cvmx_pko_l3_sqx_sw_xoff_s cn73xx;
+       struct cvmx_pko_l3_sqx_sw_xoff_s cn78xx;
+       struct cvmx_pko_l3_sqx_sw_xoff_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_sw_xoff_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_sw_xoff cvmx_pko_l3_sqx_sw_xoff_t;
+
+/**
+ * cvmx_pko_l3_sq#_topology
+ */
+union cvmx_pko_l3_sqx_topology {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_topology_s {
+               u64 reserved_42_63 : 22;
+               u64 prio_anchor : 10;
+               u64 reserved_25_31 : 7;
+               u64 parent : 9;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_l3_sqx_topology_cn73xx {
+               u64 reserved_40_63 : 24;
+               u64 prio_anchor : 8;
+               u64 reserved_24_31 : 8;
+               u64 parent : 8;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_l3_sqx_topology_s cn78xx;
+       struct cvmx_pko_l3_sqx_topology_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_topology_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_topology cvmx_pko_l3_sqx_topology_t;
+
+/**
+ * cvmx_pko_l3_sq#_yellow
+ */
+union cvmx_pko_l3_sqx_yellow {
+       u64 u64;
+       struct cvmx_pko_l3_sqx_yellow_s {
+               u64 reserved_20_63 : 44;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l3_sqx_yellow_cn73xx {
+               u64 reserved_18_63 : 46;
+               u64 head : 8;
+               u64 reserved_8_9 : 2;
+               u64 tail : 8;
+       } cn73xx;
+       struct cvmx_pko_l3_sqx_yellow_s cn78xx;
+       struct cvmx_pko_l3_sqx_yellow_s cn78xxp1;
+       struct cvmx_pko_l3_sqx_yellow_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqx_yellow cvmx_pko_l3_sqx_yellow_t;
+
+/**
+ * cvmx_pko_l3_sq_csr_bus_debug
+ */
+union cvmx_pko_l3_sq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_l3_sq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_l3_sq_csr_bus_debug_s cn73xx;
+       struct cvmx_pko_l3_sq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_l3_sq_csr_bus_debug_s cn78xxp1;
+       struct cvmx_pko_l3_sq_csr_bus_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sq_csr_bus_debug cvmx_pko_l3_sq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_l3_sqa_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l3_sqa_debug {
+       u64 u64;
+       struct cvmx_pko_l3_sqa_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l3_sqa_debug_s cn73xx;
+       struct cvmx_pko_l3_sqa_debug_s cn78xx;
+       struct cvmx_pko_l3_sqa_debug_s cn78xxp1;
+       struct cvmx_pko_l3_sqa_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqa_debug cvmx_pko_l3_sqa_debug_t;
+
+/**
+ * cvmx_pko_l3_sqb_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l3_sqb_debug {
+       u64 u64;
+       struct cvmx_pko_l3_sqb_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l3_sqb_debug_s cn73xx;
+       struct cvmx_pko_l3_sqb_debug_s cn78xx;
+       struct cvmx_pko_l3_sqb_debug_s cn78xxp1;
+       struct cvmx_pko_l3_sqb_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_l3_sqb_debug cvmx_pko_l3_sqb_debug_t;
+
+/**
+ * cvmx_pko_l4_sq#_cir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l4_sqx_cir {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_cir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l4_sqx_cir_s cn78xx;
+       struct cvmx_pko_l4_sqx_cir_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_cir cvmx_pko_l4_sqx_cir_t;
+
+/**
+ * cvmx_pko_l4_sq#_green
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_GREEN.
+ *
+ */
+union cvmx_pko_l4_sqx_green {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_green_s {
+               u64 reserved_41_63 : 23;
+               u64 rr_active : 1;
+               u64 active_vec : 20;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l4_sqx_green_s cn78xx;
+       struct cvmx_pko_l4_sqx_green_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_green cvmx_pko_l4_sqx_green_t;
+
+/**
+ * cvmx_pko_l4_sq#_pick
+ *
+ * This CSR contains the meta for the L4 SQ, and is for debug and reconfiguration
+ * only and should never be written. See also PKO_META_DESC_S.
+ */
+union cvmx_pko_l4_sqx_pick {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_pick_s {
+               u64 dq : 10;
+               u64 color : 2;
+               u64 child : 10;
+               u64 bubble : 1;
+               u64 p_con : 1;
+               u64 c_con : 1;
+               u64 uid : 7;
+               u64 jump : 1;
+               u64 fpd : 1;
+               u64 ds : 1;
+               u64 adjust : 9;
+               u64 pir_dis : 1;
+               u64 cir_dis : 1;
+               u64 red_algo_override : 2;
+               u64 length : 16;
+       } s;
+       struct cvmx_pko_l4_sqx_pick_s cn78xx;
+       struct cvmx_pko_l4_sqx_pick_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_pick cvmx_pko_l4_sqx_pick_t;
+
+/**
+ * cvmx_pko_l4_sq#_pir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l4_sqx_pir {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_pir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l4_sqx_pir_s cn78xx;
+       struct cvmx_pko_l4_sqx_pir_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_pir cvmx_pko_l4_sqx_pir_t;
+
+/**
+ * cvmx_pko_l4_sq#_pointers
+ */
+union cvmx_pko_l4_sqx_pointers {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_pointers_s {
+               u64 reserved_26_63 : 38;
+               u64 prev : 10;
+               u64 reserved_10_15 : 6;
+               u64 next : 10;
+       } s;
+       struct cvmx_pko_l4_sqx_pointers_s cn78xx;
+       struct cvmx_pko_l4_sqx_pointers_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_pointers cvmx_pko_l4_sqx_pointers_t;
+
+/**
+ * cvmx_pko_l4_sq#_red
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l4_sqx_red {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_red_s {
+               u64 reserved_20_63 : 44;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l4_sqx_red_s cn78xx;
+       struct cvmx_pko_l4_sqx_red_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_red cvmx_pko_l4_sqx_red_t;
+
+/**
+ * cvmx_pko_l4_sq#_sched_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHED_STATE.
+ *
+ */
+union cvmx_pko_l4_sqx_sched_state {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_sched_state_s {
+               u64 reserved_25_63 : 39;
+               u64 rr_count : 25;
+       } s;
+       struct cvmx_pko_l4_sqx_sched_state_s cn78xx;
+       struct cvmx_pko_l4_sqx_sched_state_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_sched_state cvmx_pko_l4_sqx_sched_state_t;
+
+/**
+ * cvmx_pko_l4_sq#_schedule
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHEDULE.
+ *
+ */
+union cvmx_pko_l4_sqx_schedule {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_schedule_s {
+               u64 reserved_28_63 : 36;
+               u64 prio : 4;
+               u64 rr_quantum : 24;
+       } s;
+       struct cvmx_pko_l4_sqx_schedule_s cn78xx;
+       struct cvmx_pko_l4_sqx_schedule_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_schedule cvmx_pko_l4_sqx_schedule_t;
+
+/**
+ * cvmx_pko_l4_sq#_shape
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_SHAPE.
+ *
+ */
+union cvmx_pko_l4_sqx_shape {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_shape_s {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } s;
+       struct cvmx_pko_l4_sqx_shape_s cn78xx;
+       struct cvmx_pko_l4_sqx_shape_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_shape cvmx_pko_l4_sqx_shape_t;
+
+/**
+ * cvmx_pko_l4_sq#_shape_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SHAPE_STATE.
+ * This register must not be written during normal operation.
+ */
+union cvmx_pko_l4_sqx_shape_state {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_shape_state_s {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 color : 2;
+               u64 pir_accum : 26;
+               u64 cir_accum : 26;
+       } s;
+       struct cvmx_pko_l4_sqx_shape_state_s cn78xx;
+       struct cvmx_pko_l4_sqx_shape_state_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_shape_state cvmx_pko_l4_sqx_shape_state_t;
+
+/**
+ * cvmx_pko_l4_sq#_sw_xoff
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_SW_XOFF.
+ *
+ */
+union cvmx_pko_l4_sqx_sw_xoff {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_sw_xoff_s {
+               u64 reserved_4_63 : 60;
+               u64 drain_irq : 1;
+               u64 drain_null_link : 1;
+               u64 drain : 1;
+               u64 xoff : 1;
+       } s;
+       struct cvmx_pko_l4_sqx_sw_xoff_s cn78xx;
+       struct cvmx_pko_l4_sqx_sw_xoff_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_sw_xoff cvmx_pko_l4_sqx_sw_xoff_t;
+
+/**
+ * cvmx_pko_l4_sq#_topology
+ */
+union cvmx_pko_l4_sqx_topology {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_topology_s {
+               u64 reserved_42_63 : 22;
+               u64 prio_anchor : 10;
+               u64 reserved_25_31 : 7;
+               u64 parent : 9;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_l4_sqx_topology_s cn78xx;
+       struct cvmx_pko_l4_sqx_topology_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_topology cvmx_pko_l4_sqx_topology_t;
+
+/**
+ * cvmx_pko_l4_sq#_yellow
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l4_sqx_yellow {
+       u64 u64;
+       struct cvmx_pko_l4_sqx_yellow_s {
+               u64 reserved_20_63 : 44;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l4_sqx_yellow_s cn78xx;
+       struct cvmx_pko_l4_sqx_yellow_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqx_yellow cvmx_pko_l4_sqx_yellow_t;
+
+/**
+ * cvmx_pko_l4_sq_csr_bus_debug
+ */
+union cvmx_pko_l4_sq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_l4_sq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_l4_sq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_l4_sq_csr_bus_debug_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sq_csr_bus_debug cvmx_pko_l4_sq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_l4_sqa_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l4_sqa_debug {
+       u64 u64;
+       struct cvmx_pko_l4_sqa_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l4_sqa_debug_s cn78xx;
+       struct cvmx_pko_l4_sqa_debug_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqa_debug cvmx_pko_l4_sqa_debug_t;
+
+/**
+ * cvmx_pko_l4_sqb_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l4_sqb_debug {
+       u64 u64;
+       struct cvmx_pko_l4_sqb_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l4_sqb_debug_s cn78xx;
+       struct cvmx_pko_l4_sqb_debug_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l4_sqb_debug cvmx_pko_l4_sqb_debug_t;
+
+/**
+ * cvmx_pko_l5_sq#_cir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l5_sqx_cir {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_cir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l5_sqx_cir_s cn78xx;
+       struct cvmx_pko_l5_sqx_cir_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_cir cvmx_pko_l5_sqx_cir_t;
+
+/**
+ * cvmx_pko_l5_sq#_green
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_GREEN.
+ *
+ */
+union cvmx_pko_l5_sqx_green {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_green_s {
+               u64 reserved_41_63 : 23;
+               u64 rr_active : 1;
+               u64 active_vec : 20;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l5_sqx_green_s cn78xx;
+       struct cvmx_pko_l5_sqx_green_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_green cvmx_pko_l5_sqx_green_t;
+
+/**
+ * cvmx_pko_l5_sq#_pick
+ *
+ * This CSR contains the meta for the L5 SQ, and is for debug and reconfiguration
+ * only and should never be written. See also PKO_META_DESC_S.
+ */
+union cvmx_pko_l5_sqx_pick {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_pick_s {
+               u64 dq : 10;
+               u64 color : 2;
+               u64 child : 10;
+               u64 bubble : 1;
+               u64 p_con : 1;
+               u64 c_con : 1;
+               u64 uid : 7;
+               u64 jump : 1;
+               u64 fpd : 1;
+               u64 ds : 1;
+               u64 adjust : 9;
+               u64 pir_dis : 1;
+               u64 cir_dis : 1;
+               u64 red_algo_override : 2;
+               u64 length : 16;
+       } s;
+       struct cvmx_pko_l5_sqx_pick_s cn78xx;
+       struct cvmx_pko_l5_sqx_pick_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_pick cvmx_pko_l5_sqx_pick_t;
+
+/**
+ * cvmx_pko_l5_sq#_pir
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_CIR.
+ *
+ */
+union cvmx_pko_l5_sqx_pir {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_pir_s {
+               u64 reserved_41_63 : 23;
+               u64 burst_exponent : 4;
+               u64 burst_mantissa : 8;
+               u64 reserved_17_28 : 12;
+               u64 rate_divider_exponent : 4;
+               u64 rate_exponent : 4;
+               u64 rate_mantissa : 8;
+               u64 enable : 1;
+       } s;
+       struct cvmx_pko_l5_sqx_pir_s cn78xx;
+       struct cvmx_pko_l5_sqx_pir_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_pir cvmx_pko_l5_sqx_pir_t;
+
+/**
+ * cvmx_pko_l5_sq#_pointers
+ *
+ * This register has the same bit fields as PKO_L4_SQ()_POINTERS.
+ *
+ */
+union cvmx_pko_l5_sqx_pointers {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_pointers_s {
+               u64 reserved_26_63 : 38;
+               u64 prev : 10;
+               u64 reserved_10_15 : 6;
+               u64 next : 10;
+       } s;
+       struct cvmx_pko_l5_sqx_pointers_s cn78xx;
+       struct cvmx_pko_l5_sqx_pointers_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_pointers cvmx_pko_l5_sqx_pointers_t;
+
+/**
+ * cvmx_pko_l5_sq#_red
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l5_sqx_red {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_red_s {
+               u64 reserved_20_63 : 44;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l5_sqx_red_s cn78xx;
+       struct cvmx_pko_l5_sqx_red_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_red cvmx_pko_l5_sqx_red_t;
+
+/**
+ * cvmx_pko_l5_sq#_sched_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHED_STATE.
+ *
+ */
+union cvmx_pko_l5_sqx_sched_state {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_sched_state_s {
+               u64 reserved_25_63 : 39;
+               u64 rr_count : 25;
+       } s;
+       struct cvmx_pko_l5_sqx_sched_state_s cn78xx;
+       struct cvmx_pko_l5_sqx_sched_state_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_sched_state cvmx_pko_l5_sqx_sched_state_t;
+
+/**
+ * cvmx_pko_l5_sq#_schedule
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SCHEDULE.
+ *
+ */
+union cvmx_pko_l5_sqx_schedule {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_schedule_s {
+               u64 reserved_28_63 : 36;
+               u64 prio : 4;
+               u64 rr_quantum : 24;
+       } s;
+       struct cvmx_pko_l5_sqx_schedule_s cn78xx;
+       struct cvmx_pko_l5_sqx_schedule_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_schedule cvmx_pko_l5_sqx_schedule_t;
+
+/**
+ * cvmx_pko_l5_sq#_shape
+ */
+union cvmx_pko_l5_sqx_shape {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_shape_s {
+               u64 reserved_25_63 : 39;
+               u64 length_disable : 1;
+               u64 reserved_13_23 : 11;
+               u64 yellow_disable : 1;
+               u64 red_disable : 1;
+               u64 red_algo : 2;
+               u64 adjust : 9;
+       } s;
+       struct cvmx_pko_l5_sqx_shape_s cn78xx;
+       struct cvmx_pko_l5_sqx_shape_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_shape cvmx_pko_l5_sqx_shape_t;
+
+/**
+ * cvmx_pko_l5_sq#_shape_state
+ *
+ * This register has the same bit fields as PKO_L2_SQ()_SHAPE_STATE.
+ * This register must not be written during normal operation.
+ */
+union cvmx_pko_l5_sqx_shape_state {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_shape_state_s {
+               u64 reserved_60_63 : 4;
+               u64 tw_timestamp : 6;
+               u64 color : 2;
+               u64 pir_accum : 26;
+               u64 cir_accum : 26;
+       } s;
+       struct cvmx_pko_l5_sqx_shape_state_s cn78xx;
+       struct cvmx_pko_l5_sqx_shape_state_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_shape_state cvmx_pko_l5_sqx_shape_state_t;
+
+/**
+ * cvmx_pko_l5_sq#_sw_xoff
+ *
+ * This register has the same bit fields as PKO_L1_SQ()_SW_XOFF.
+ *
+ */
+union cvmx_pko_l5_sqx_sw_xoff {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_sw_xoff_s {
+               u64 reserved_4_63 : 60;
+               u64 drain_irq : 1;
+               u64 drain_null_link : 1;
+               u64 drain : 1;
+               u64 xoff : 1;
+       } s;
+       struct cvmx_pko_l5_sqx_sw_xoff_s cn78xx;
+       struct cvmx_pko_l5_sqx_sw_xoff_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_sw_xoff cvmx_pko_l5_sqx_sw_xoff_t;
+
+/**
+ * cvmx_pko_l5_sq#_topology
+ */
+union cvmx_pko_l5_sqx_topology {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_topology_s {
+               u64 reserved_42_63 : 22;
+               u64 prio_anchor : 10;
+               u64 reserved_26_31 : 6;
+               u64 parent : 10;
+               u64 reserved_5_15 : 11;
+               u64 rr_prio : 4;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_l5_sqx_topology_s cn78xx;
+       struct cvmx_pko_l5_sqx_topology_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_topology cvmx_pko_l5_sqx_topology_t;
+
+/**
+ * cvmx_pko_l5_sq#_yellow
+ *
+ * This register has the same bit fields as PKO_L3_SQ()_YELLOW.
+ *
+ */
+union cvmx_pko_l5_sqx_yellow {
+       u64 u64;
+       struct cvmx_pko_l5_sqx_yellow_s {
+               u64 reserved_20_63 : 44;
+               u64 head : 10;
+               u64 tail : 10;
+       } s;
+       struct cvmx_pko_l5_sqx_yellow_s cn78xx;
+       struct cvmx_pko_l5_sqx_yellow_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqx_yellow cvmx_pko_l5_sqx_yellow_t;
+
+/**
+ * cvmx_pko_l5_sq_csr_bus_debug
+ */
+union cvmx_pko_l5_sq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_l5_sq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_l5_sq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_l5_sq_csr_bus_debug_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sq_csr_bus_debug cvmx_pko_l5_sq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_l5_sqa_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l5_sqa_debug {
+       u64 u64;
+       struct cvmx_pko_l5_sqa_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l5_sqa_debug_s cn78xx;
+       struct cvmx_pko_l5_sqa_debug_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqa_debug cvmx_pko_l5_sqa_debug_t;
+
+/**
+ * cvmx_pko_l5_sqb_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_l5_sqb_debug {
+       u64 u64;
+       struct cvmx_pko_l5_sqb_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_l5_sqb_debug_s cn78xx;
+       struct cvmx_pko_l5_sqb_debug_s cn78xxp1;
+};
+
+typedef union cvmx_pko_l5_sqb_debug cvmx_pko_l5_sqb_debug_t;
+
+/**
+ * cvmx_pko_lut#
+ *
+ * PKO_LUT has a location for each used PKI_CHAN_E. The following table
+ * shows the mapping between LINK/MAC_NUM's, PKI_CHAN_E channels, and
+ * PKO_LUT indices.
+ *
+ * <pre>
+ *   LINK/   PKI_CHAN_E    Corresponding
+ * MAC_NUM   Range         PKO_LUT index   Description
+ * -------   -----------   -------------   -----------------
+ *     0     0x000-0x03F   0x040-0x07F     LBK Loopback
+ *     1     0x100-0x13F   0x080-0x0BF     DPI packet output
+ *     2     0x800-0x80F   0x000-0x00F     BGX0 Logical MAC 0
+ *     3     0x810-0x81F   0x010-0x01F     BGX0 Logical MAC 1
+ *     4     0x820-0x82F   0x020-0x02F     BGX0 Logical MAC 2
+ *     5     0x830-0x83F   0x030-0x03F     BGX0 Logical MAC 3
+ * </pre>
+ */
+union cvmx_pko_lutx {
+       u64 u64;
+       struct cvmx_pko_lutx_s {
+               u64 reserved_16_63 : 48;
+               u64 valid : 1;
+               u64 reserved_14_14 : 1;
+               u64 pq_idx : 5;
+               u64 queue_number : 9;
+       } s;
+       struct cvmx_pko_lutx_cn73xx {
+               u64 reserved_16_63 : 48;
+               u64 valid : 1;
+               u64 reserved_13_14 : 2;
+               u64 pq_idx : 4;
+               u64 reserved_8_8 : 1;
+               u64 queue_number : 8;
+       } cn73xx;
+       struct cvmx_pko_lutx_s cn78xx;
+       struct cvmx_pko_lutx_s cn78xxp1;
+       struct cvmx_pko_lutx_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_lutx cvmx_pko_lutx_t;
+
+/**
+ * cvmx_pko_lut_bist_status
+ */
+union cvmx_pko_lut_bist_status {
+       u64 u64;
+       struct cvmx_pko_lut_bist_status_s {
+               u64 reserved_1_63 : 63;
+               u64 bist_status : 1;
+       } s;
+       struct cvmx_pko_lut_bist_status_s cn73xx;
+       struct cvmx_pko_lut_bist_status_s cn78xx;
+       struct cvmx_pko_lut_bist_status_s cn78xxp1;
+       struct cvmx_pko_lut_bist_status_s cnf75xx;
+};
+
+typedef union cvmx_pko_lut_bist_status cvmx_pko_lut_bist_status_t;
+
+/**
+ * cvmx_pko_lut_ecc_ctl0
+ */
+union cvmx_pko_lut_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_lut_ecc_ctl0_s {
+               u64 c2q_lut_ram_flip : 2;
+               u64 c2q_lut_ram_cdis : 1;
+               u64 reserved_0_60 : 61;
+       } s;
+       struct cvmx_pko_lut_ecc_ctl0_s cn73xx;
+       struct cvmx_pko_lut_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_lut_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_lut_ecc_ctl0_s cnf75xx;
+};
+
+typedef union cvmx_pko_lut_ecc_ctl0 cvmx_pko_lut_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_lut_ecc_dbe_sts0
+ */
+union cvmx_pko_lut_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_lut_ecc_dbe_sts0_s {
+               u64 c2q_lut_ram_dbe : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_lut_ecc_dbe_sts0_s cn73xx;
+       struct cvmx_pko_lut_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_lut_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_lut_ecc_dbe_sts0_s cnf75xx;
+};
+
+typedef union cvmx_pko_lut_ecc_dbe_sts0 cvmx_pko_lut_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_lut_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_lut_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_lut_ecc_dbe_sts_cmb0_s {
+               u64 lut_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_lut_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_lut_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_lut_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_lut_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_lut_ecc_dbe_sts_cmb0 cvmx_pko_lut_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_lut_ecc_sbe_sts0
+ */
+union cvmx_pko_lut_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_lut_ecc_sbe_sts0_s {
+               u64 c2q_lut_ram_sbe : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_lut_ecc_sbe_sts0_s cn73xx;
+       struct cvmx_pko_lut_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_lut_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_lut_ecc_sbe_sts0_s cnf75xx;
+};
+
+typedef union cvmx_pko_lut_ecc_sbe_sts0 cvmx_pko_lut_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_lut_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_lut_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_lut_ecc_sbe_sts_cmb0_s {
+               u64 lut_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_lut_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_lut_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_lut_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_lut_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_lut_ecc_sbe_sts_cmb0 cvmx_pko_lut_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_mac#_cfg
+ *
+ * These registers create the links between the MACs and the TxFIFO used to store the data,
+ * and hold the per-MAC configuration bits.  These registers must be disabled (FIFO_NUM set
+ * to 31) prior to reconfiguration of any of the other bits.
+ *
+ * <pre>
+ *   CSR Name       Associated MAC
+ *   ------------   -------------------
+ *   PKO_MAC0_CFG   LBK loopback
+ *   PKO_MAC1_CFG   DPI packet output
+ *   PKO_MAC2_CFG   BGX0  logical MAC 0
+ *   PKO_MAC3_CFG   BGX0  logical MAC 1
+ *   PKO_MAC4_CFG   BGX0  logical MAC 2
+ *   PKO_MAC5_CFG   BGX0  logical MAC 3
+ *   PKO_MAC6_CFG   SRIO0 logical MAC 0
+ *   PKO_MAC7_CFG   SRIO0 logical MAC 1
+ *   PKO_MAC8_CFG   SRIO1 logical MAC 0
+ *   PKO_MAC9_CFG   SRIO1 logical MAC 1
+ * </pre>
+ */
+union cvmx_pko_macx_cfg {
+       u64 u64;
+       struct cvmx_pko_macx_cfg_s {
+               u64 reserved_17_63 : 47;
+               u64 min_pad_ena : 1;
+               u64 fcs_ena : 1;
+               u64 fcs_sop_off : 8;
+               u64 skid_max_cnt : 2;
+               u64 fifo_num : 5;
+       } s;
+       struct cvmx_pko_macx_cfg_s cn73xx;
+       struct cvmx_pko_macx_cfg_s cn78xx;
+       struct cvmx_pko_macx_cfg_s cn78xxp1;
+       struct cvmx_pko_macx_cfg_s cnf75xx;
+};
+
+typedef union cvmx_pko_macx_cfg cvmx_pko_macx_cfg_t;
+
+/**
+ * cvmx_pko_mci0_cred_cnt#
+ */
+union cvmx_pko_mci0_cred_cntx {
+       u64 u64;
+       struct cvmx_pko_mci0_cred_cntx_s {
+               u64 reserved_13_63 : 51;
+               u64 cred_cnt : 13;
+       } s;
+       struct cvmx_pko_mci0_cred_cntx_s cn78xx;
+       struct cvmx_pko_mci0_cred_cntx_s cn78xxp1;
+};
+
+typedef union cvmx_pko_mci0_cred_cntx cvmx_pko_mci0_cred_cntx_t;
+
+/**
+ * cvmx_pko_mci0_max_cred#
+ */
+union cvmx_pko_mci0_max_credx {
+       u64 u64;
+       struct cvmx_pko_mci0_max_credx_s {
+               u64 reserved_12_63 : 52;
+               u64 max_cred_lim : 12;
+       } s;
+       struct cvmx_pko_mci0_max_credx_s cn78xx;
+       struct cvmx_pko_mci0_max_credx_s cn78xxp1;
+};
+
+typedef union cvmx_pko_mci0_max_credx cvmx_pko_mci0_max_credx_t;
+
+/**
+ * cvmx_pko_mci1_cred_cnt#
+ */
+union cvmx_pko_mci1_cred_cntx {
+       u64 u64;
+       struct cvmx_pko_mci1_cred_cntx_s {
+               u64 reserved_13_63 : 51;
+               u64 cred_cnt : 13;
+       } s;
+       struct cvmx_pko_mci1_cred_cntx_s cn73xx;
+       struct cvmx_pko_mci1_cred_cntx_s cn78xx;
+       struct cvmx_pko_mci1_cred_cntx_s cn78xxp1;
+       struct cvmx_pko_mci1_cred_cntx_s cnf75xx;
+};
+
+typedef union cvmx_pko_mci1_cred_cntx cvmx_pko_mci1_cred_cntx_t;
+
+/**
+ * cvmx_pko_mci1_max_cred#
+ */
+union cvmx_pko_mci1_max_credx {
+       u64 u64;
+       struct cvmx_pko_mci1_max_credx_s {
+               u64 reserved_12_63 : 52;
+               u64 max_cred_lim : 12;
+       } s;
+       struct cvmx_pko_mci1_max_credx_s cn73xx;
+       struct cvmx_pko_mci1_max_credx_s cn78xx;
+       struct cvmx_pko_mci1_max_credx_s cn78xxp1;
+       struct cvmx_pko_mci1_max_credx_s cnf75xx;
+};
+
+typedef union cvmx_pko_mci1_max_credx cvmx_pko_mci1_max_credx_t;
+
+/**
+ * cvmx_pko_mem_count0
+ *
+ * Notes:
+ * Total number of packets seen by PKO, per port
+ * A write to this address will clear the entry whose index is specified as COUNT[5:0].
+ * This CSR is a memory of 44 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_count0 {
+       u64 u64;
+       struct cvmx_pko_mem_count0_s {
+               u64 reserved_32_63 : 32;
+               u64 count : 32;
+       } s;
+       struct cvmx_pko_mem_count0_s cn30xx;
+       struct cvmx_pko_mem_count0_s cn31xx;
+       struct cvmx_pko_mem_count0_s cn38xx;
+       struct cvmx_pko_mem_count0_s cn38xxp2;
+       struct cvmx_pko_mem_count0_s cn50xx;
+       struct cvmx_pko_mem_count0_s cn52xx;
+       struct cvmx_pko_mem_count0_s cn52xxp1;
+       struct cvmx_pko_mem_count0_s cn56xx;
+       struct cvmx_pko_mem_count0_s cn56xxp1;
+       struct cvmx_pko_mem_count0_s cn58xx;
+       struct cvmx_pko_mem_count0_s cn58xxp1;
+       struct cvmx_pko_mem_count0_s cn61xx;
+       struct cvmx_pko_mem_count0_s cn63xx;
+       struct cvmx_pko_mem_count0_s cn63xxp1;
+       struct cvmx_pko_mem_count0_s cn66xx;
+       struct cvmx_pko_mem_count0_s cn68xx;
+       struct cvmx_pko_mem_count0_s cn68xxp1;
+       struct cvmx_pko_mem_count0_s cn70xx;
+       struct cvmx_pko_mem_count0_s cn70xxp1;
+       struct cvmx_pko_mem_count0_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_count0 cvmx_pko_mem_count0_t;
+
+/**
+ * cvmx_pko_mem_count1
+ *
+ * Notes:
+ * Total number of bytes seen by PKO, per port
+ * A write to this address will clear the entry whose index is specified as COUNT[5:0].
+ * This CSR is a memory of 44 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_count1 {
+       u64 u64;
+       struct cvmx_pko_mem_count1_s {
+               u64 reserved_48_63 : 16;
+               u64 count : 48;
+       } s;
+       struct cvmx_pko_mem_count1_s cn30xx;
+       struct cvmx_pko_mem_count1_s cn31xx;
+       struct cvmx_pko_mem_count1_s cn38xx;
+       struct cvmx_pko_mem_count1_s cn38xxp2;
+       struct cvmx_pko_mem_count1_s cn50xx;
+       struct cvmx_pko_mem_count1_s cn52xx;
+       struct cvmx_pko_mem_count1_s cn52xxp1;
+       struct cvmx_pko_mem_count1_s cn56xx;
+       struct cvmx_pko_mem_count1_s cn56xxp1;
+       struct cvmx_pko_mem_count1_s cn58xx;
+       struct cvmx_pko_mem_count1_s cn58xxp1;
+       struct cvmx_pko_mem_count1_s cn61xx;
+       struct cvmx_pko_mem_count1_s cn63xx;
+       struct cvmx_pko_mem_count1_s cn63xxp1;
+       struct cvmx_pko_mem_count1_s cn66xx;
+       struct cvmx_pko_mem_count1_s cn68xx;
+       struct cvmx_pko_mem_count1_s cn68xxp1;
+       struct cvmx_pko_mem_count1_s cn70xx;
+       struct cvmx_pko_mem_count1_s cn70xxp1;
+       struct cvmx_pko_mem_count1_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_count1 cvmx_pko_mem_count1_t;
+
+/**
+ * cvmx_pko_mem_debug0
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.cmnd[63:0]
+ * This CSR is a memory of 12 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug0 {
+       u64 u64;
+       struct cvmx_pko_mem_debug0_s {
+               u64 fau : 28;
+               u64 cmd : 14;
+               u64 segs : 6;
+               u64 size : 16;
+       } s;
+       struct cvmx_pko_mem_debug0_s cn30xx;
+       struct cvmx_pko_mem_debug0_s cn31xx;
+       struct cvmx_pko_mem_debug0_s cn38xx;
+       struct cvmx_pko_mem_debug0_s cn38xxp2;
+       struct cvmx_pko_mem_debug0_s cn50xx;
+       struct cvmx_pko_mem_debug0_s cn52xx;
+       struct cvmx_pko_mem_debug0_s cn52xxp1;
+       struct cvmx_pko_mem_debug0_s cn56xx;
+       struct cvmx_pko_mem_debug0_s cn56xxp1;
+       struct cvmx_pko_mem_debug0_s cn58xx;
+       struct cvmx_pko_mem_debug0_s cn58xxp1;
+       struct cvmx_pko_mem_debug0_s cn61xx;
+       struct cvmx_pko_mem_debug0_s cn63xx;
+       struct cvmx_pko_mem_debug0_s cn63xxp1;
+       struct cvmx_pko_mem_debug0_s cn66xx;
+       struct cvmx_pko_mem_debug0_s cn68xx;
+       struct cvmx_pko_mem_debug0_s cn68xxp1;
+       struct cvmx_pko_mem_debug0_s cn70xx;
+       struct cvmx_pko_mem_debug0_s cn70xxp1;
+       struct cvmx_pko_mem_debug0_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug0 cvmx_pko_mem_debug0_t;
+
+/**
+ * cvmx_pko_mem_debug1
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.curr[63:0]
+ * This CSR is a memory of 12 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug1 {
+       u64 u64;
+       struct cvmx_pko_mem_debug1_s {
+               u64 i : 1;
+               u64 back : 4;
+               u64 pool : 3;
+               u64 size : 16;
+               u64 ptr : 40;
+       } s;
+       struct cvmx_pko_mem_debug1_s cn30xx;
+       struct cvmx_pko_mem_debug1_s cn31xx;
+       struct cvmx_pko_mem_debug1_s cn38xx;
+       struct cvmx_pko_mem_debug1_s cn38xxp2;
+       struct cvmx_pko_mem_debug1_s cn50xx;
+       struct cvmx_pko_mem_debug1_s cn52xx;
+       struct cvmx_pko_mem_debug1_s cn52xxp1;
+       struct cvmx_pko_mem_debug1_s cn56xx;
+       struct cvmx_pko_mem_debug1_s cn56xxp1;
+       struct cvmx_pko_mem_debug1_s cn58xx;
+       struct cvmx_pko_mem_debug1_s cn58xxp1;
+       struct cvmx_pko_mem_debug1_s cn61xx;
+       struct cvmx_pko_mem_debug1_s cn63xx;
+       struct cvmx_pko_mem_debug1_s cn63xxp1;
+       struct cvmx_pko_mem_debug1_s cn66xx;
+       struct cvmx_pko_mem_debug1_s cn68xx;
+       struct cvmx_pko_mem_debug1_s cn68xxp1;
+       struct cvmx_pko_mem_debug1_s cn70xx;
+       struct cvmx_pko_mem_debug1_s cn70xxp1;
+       struct cvmx_pko_mem_debug1_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug1 cvmx_pko_mem_debug1_t;
+
+/**
+ * cvmx_pko_mem_debug10
+ *
+ * Notes:
+ * Internal per-engine state intended for debug use only - pko.dat.ptr.ptrs1, pko.dat.ptr.ptrs2
+ * This CSR is a memory of 10 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug10 {
+       u64 u64;
+       struct cvmx_pko_mem_debug10_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug10_cn30xx {
+               u64 fau : 28;
+               u64 cmd : 14;
+               u64 segs : 6;
+               u64 size : 16;
+       } cn30xx;
+       struct cvmx_pko_mem_debug10_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug10_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug10_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug10_cn50xx {
+               u64 reserved_49_63 : 15;
+               u64 ptrs1 : 17;
+               u64 reserved_17_31 : 15;
+               u64 ptrs2 : 17;
+       } cn50xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug10_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug10_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug10_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug10_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn68xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn68xxp1;
+       struct cvmx_pko_mem_debug10_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug10_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug10_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug10 cvmx_pko_mem_debug10_t;
+
+/**
+ * cvmx_pko_mem_debug11
+ *
+ * Notes:
+ * Internal per-engine state intended for debug use only - pko.out.sta.state[22:0]
+ * This CSR is a memory of 10 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug11 {
+       u64 u64;
+       struct cvmx_pko_mem_debug11_s {
+               u64 i : 1;
+               u64 back : 4;
+               u64 pool : 3;
+               u64 size : 16;
+               u64 reserved_0_39 : 40;
+       } s;
+       struct cvmx_pko_mem_debug11_cn30xx {
+               u64 i : 1;
+               u64 back : 4;
+               u64 pool : 3;
+               u64 size : 16;
+               u64 ptr : 40;
+       } cn30xx;
+       struct cvmx_pko_mem_debug11_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug11_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug11_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug11_cn50xx {
+               u64 reserved_23_63 : 41;
+               u64 maj : 1;
+               u64 uid : 3;
+               u64 sop : 1;
+               u64 len : 1;
+               u64 chk : 1;
+               u64 cnt : 13;
+               u64 mod : 3;
+       } cn50xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug11_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug11_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug11_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug11_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn68xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn68xxp1;
+       struct cvmx_pko_mem_debug11_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug11_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug11_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug11 cvmx_pko_mem_debug11_t;
+
+/**
+ * cvmx_pko_mem_debug12
+ *
+ * Notes:
+ * Internal per-engine x4 state intended for debug use only - pko.out.ctl.cmnd[63:0]
+ * This CSR is a memory of 40 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug12 {
+       u64 u64;
+       struct cvmx_pko_mem_debug12_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug12_cn30xx {
+               u64 data : 64;
+       } cn30xx;
+       struct cvmx_pko_mem_debug12_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug12_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug12_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug12_cn50xx {
+               u64 fau : 28;
+               u64 cmd : 14;
+               u64 segs : 6;
+               u64 size : 16;
+       } cn50xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug12_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug12_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug12_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug12_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug12_cn68xx {
+               u64 state : 64;
+       } cn68xx;
+       struct cvmx_pko_mem_debug12_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug12_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug12_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug12_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug12 cvmx_pko_mem_debug12_t;
+
+/**
+ * cvmx_pko_mem_debug13
+ *
+ * Notes:
+ * Internal per-engine x4 state intended for debug use only - pko.out.ctl.head[63:0]
+ * This CSR is a memory of 40 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug13 {
+       u64 u64;
+       struct cvmx_pko_mem_debug13_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug13_cn30xx {
+               u64 reserved_51_63 : 13;
+               u64 widx : 17;
+               u64 ridx2 : 17;
+               u64 widx2 : 17;
+       } cn30xx;
+       struct cvmx_pko_mem_debug13_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug13_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug13_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug13_cn50xx {
+               u64 i : 1;
+               u64 back : 4;
+               u64 pool : 3;
+               u64 size : 16;
+               u64 ptr : 40;
+       } cn50xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug13_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug13_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug13_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug13_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug13_cn68xx {
+               u64 state : 64;
+       } cn68xx;
+       struct cvmx_pko_mem_debug13_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug13_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug13_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug13_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug13 cvmx_pko_mem_debug13_t;
+
+/**
+ * cvmx_pko_mem_debug14
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko.prt.psb.save[63:0]
+ * This CSR is a memory of 132 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug14 {
+       u64 u64;
+       struct cvmx_pko_mem_debug14_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug14_cn30xx {
+               u64 reserved_17_63 : 47;
+               u64 ridx : 17;
+       } cn30xx;
+       struct cvmx_pko_mem_debug14_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug14_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug14_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug14_cn52xx {
+               u64 data : 64;
+       } cn52xx;
+       struct cvmx_pko_mem_debug14_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_debug14_cn52xx cn56xx;
+       struct cvmx_pko_mem_debug14_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_debug14_cn52xx cn61xx;
+       struct cvmx_pko_mem_debug14_cn52xx cn63xx;
+       struct cvmx_pko_mem_debug14_cn52xx cn63xxp1;
+       struct cvmx_pko_mem_debug14_cn52xx cn66xx;
+       struct cvmx_pko_mem_debug14_cn52xx cn70xx;
+       struct cvmx_pko_mem_debug14_cn52xx cn70xxp1;
+       struct cvmx_pko_mem_debug14_cn52xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug14 cvmx_pko_mem_debug14_t;
+
+/**
+ * cvmx_pko_mem_debug2
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.head[63:0]
+ * This CSR is a memory of 12 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug2 {
+       u64 u64;
+       struct cvmx_pko_mem_debug2_s {
+               u64 i : 1;
+               u64 back : 4;
+               u64 pool : 3;
+               u64 size : 16;
+               u64 ptr : 40;
+       } s;
+       struct cvmx_pko_mem_debug2_s cn30xx;
+       struct cvmx_pko_mem_debug2_s cn31xx;
+       struct cvmx_pko_mem_debug2_s cn38xx;
+       struct cvmx_pko_mem_debug2_s cn38xxp2;
+       struct cvmx_pko_mem_debug2_s cn50xx;
+       struct cvmx_pko_mem_debug2_s cn52xx;
+       struct cvmx_pko_mem_debug2_s cn52xxp1;
+       struct cvmx_pko_mem_debug2_s cn56xx;
+       struct cvmx_pko_mem_debug2_s cn56xxp1;
+       struct cvmx_pko_mem_debug2_s cn58xx;
+       struct cvmx_pko_mem_debug2_s cn58xxp1;
+       struct cvmx_pko_mem_debug2_s cn61xx;
+       struct cvmx_pko_mem_debug2_s cn63xx;
+       struct cvmx_pko_mem_debug2_s cn63xxp1;
+       struct cvmx_pko_mem_debug2_s cn66xx;
+       struct cvmx_pko_mem_debug2_s cn68xx;
+       struct cvmx_pko_mem_debug2_s cn68xxp1;
+       struct cvmx_pko_mem_debug2_s cn70xx;
+       struct cvmx_pko_mem_debug2_s cn70xxp1;
+       struct cvmx_pko_mem_debug2_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug2 cvmx_pko_mem_debug2_t;
+
+/**
+ * cvmx_pko_mem_debug3
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.resp[63:0]
+ * This CSR is a memory of 12 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug3 {
+       u64 u64;
+       struct cvmx_pko_mem_debug3_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug3_cn30xx {
+               u64 i : 1;
+               u64 back : 4;
+               u64 pool : 3;
+               u64 size : 16;
+               u64 ptr : 40;
+       } cn30xx;
+       struct cvmx_pko_mem_debug3_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug3_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug3_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug3_cn50xx {
+               u64 data : 64;
+       } cn50xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug3_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug3_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug3_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug3_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn68xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn68xxp1;
+       struct cvmx_pko_mem_debug3_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug3_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug3_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug3 cvmx_pko_mem_debug3_t;
+
+/**
+ * cvmx_pko_mem_debug4
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.state[63:0]
+ * This CSR is a memory of 12 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug4 {
+       u64 u64;
+       struct cvmx_pko_mem_debug4_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug4_cn30xx {
+               u64 data : 64;
+       } cn30xx;
+       struct cvmx_pko_mem_debug4_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug4_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug4_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug4_cn50xx {
+               u64 cmnd_segs : 3;
+               u64 cmnd_siz : 16;
+               u64 cmnd_off : 6;
+               u64 uid : 3;
+               u64 dread_sop : 1;
+               u64 init_dwrite : 1;
+               u64 chk_once : 1;
+               u64 chk_mode : 1;
+               u64 active : 1;
+               u64 static_p : 1;
+               u64 qos : 3;
+               u64 qcb_ridx : 5;
+               u64 qid_off_max : 4;
+               u64 qid_off : 4;
+               u64 qid_base : 8;
+               u64 wait : 1;
+               u64 minor : 2;
+               u64 major : 3;
+       } cn50xx;
+       struct cvmx_pko_mem_debug4_cn52xx {
+               u64 curr_siz : 8;
+               u64 curr_off : 16;
+               u64 cmnd_segs : 6;
+               u64 cmnd_siz : 16;
+               u64 cmnd_off : 6;
+               u64 uid : 2;
+               u64 dread_sop : 1;
+               u64 init_dwrite : 1;
+               u64 chk_once : 1;
+               u64 chk_mode : 1;
+               u64 wait : 1;
+               u64 minor : 2;
+               u64 major : 3;
+       } cn52xx;
+       struct cvmx_pko_mem_debug4_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_debug4_cn52xx cn56xx;
+       struct cvmx_pko_mem_debug4_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_debug4_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug4_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug4_cn52xx cn61xx;
+       struct cvmx_pko_mem_debug4_cn52xx cn63xx;
+       struct cvmx_pko_mem_debug4_cn52xx cn63xxp1;
+       struct cvmx_pko_mem_debug4_cn52xx cn66xx;
+       struct cvmx_pko_mem_debug4_cn68xx {
+               u64 curr_siz : 9;
+               u64 curr_off : 16;
+               u64 cmnd_segs : 6;
+               u64 cmnd_siz : 16;
+               u64 cmnd_off : 6;
+               u64 dread_sop : 1;
+               u64 init_dwrite : 1;
+               u64 chk_once : 1;
+               u64 chk_mode : 1;
+               u64 reserved_6_6 : 1;
+               u64 minor : 2;
+               u64 major : 4;
+       } cn68xx;
+       struct cvmx_pko_mem_debug4_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug4_cn52xx cn70xx;
+       struct cvmx_pko_mem_debug4_cn52xx cn70xxp1;
+       struct cvmx_pko_mem_debug4_cn52xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug4 cvmx_pko_mem_debug4_t;
+
+/**
+ * cvmx_pko_mem_debug5
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.state[127:64]
+ * This CSR is a memory of 12 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug5 {
+       u64 u64;
+       struct cvmx_pko_mem_debug5_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug5_cn30xx {
+               u64 dwri_mod : 1;
+               u64 dwri_sop : 1;
+               u64 dwri_len : 1;
+               u64 dwri_cnt : 13;
+               u64 cmnd_siz : 16;
+               u64 uid : 1;
+               u64 xfer_wor : 1;
+               u64 xfer_dwr : 1;
+               u64 cbuf_fre : 1;
+               u64 reserved_27_27 : 1;
+               u64 chk_mode : 1;
+               u64 active : 1;
+               u64 qos : 3;
+               u64 qcb_ridx : 5;
+               u64 qid_off : 3;
+               u64 qid_base : 7;
+               u64 wait : 1;
+               u64 minor : 2;
+               u64 major : 4;
+       } cn30xx;
+       struct cvmx_pko_mem_debug5_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug5_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug5_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug5_cn50xx {
+               u64 curr_ptr : 29;
+               u64 curr_siz : 16;
+               u64 curr_off : 16;
+               u64 cmnd_segs : 3;
+       } cn50xx;
+       struct cvmx_pko_mem_debug5_cn52xx {
+               u64 reserved_54_63 : 10;
+               u64 nxt_inflt : 6;
+               u64 curr_ptr : 40;
+               u64 curr_siz : 8;
+       } cn52xx;
+       struct cvmx_pko_mem_debug5_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_debug5_cn52xx cn56xx;
+       struct cvmx_pko_mem_debug5_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_debug5_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug5_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug5_cn61xx {
+               u64 reserved_56_63 : 8;
+               u64 ptp : 1;
+               u64 major_3 : 1;
+               u64 nxt_inflt : 6;
+               u64 curr_ptr : 40;
+               u64 curr_siz : 8;
+       } cn61xx;
+       struct cvmx_pko_mem_debug5_cn61xx cn63xx;
+       struct cvmx_pko_mem_debug5_cn61xx cn63xxp1;
+       struct cvmx_pko_mem_debug5_cn61xx cn66xx;
+       struct cvmx_pko_mem_debug5_cn68xx {
+               u64 reserved_57_63 : 7;
+               u64 uid : 3;
+               u64 ptp : 1;
+               u64 nxt_inflt : 6;
+               u64 curr_ptr : 40;
+               u64 curr_siz : 7;
+       } cn68xx;
+       struct cvmx_pko_mem_debug5_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug5_cn61xx cn70xx;
+       struct cvmx_pko_mem_debug5_cn61xx cn70xxp1;
+       struct cvmx_pko_mem_debug5_cn61xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug5 cvmx_pko_mem_debug5_t;
+
+/**
+ * cvmx_pko_mem_debug6
+ *
+ * Notes:
+ * Internal per-port state intended for debug use only - pko_prt_psb.port[63:0]
+ * This CSR is a memory of 44 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug6 {
+       u64 u64;
+       struct cvmx_pko_mem_debug6_s {
+               u64 reserved_38_63 : 26;
+               u64 qos_active : 1;
+               u64 reserved_0_36 : 37;
+       } s;
+       struct cvmx_pko_mem_debug6_cn30xx {
+               u64 reserved_11_63 : 53;
+               u64 qid_offm : 3;
+               u64 static_p : 1;
+               u64 work_min : 3;
+               u64 dwri_chk : 1;
+               u64 dwri_uid : 1;
+               u64 dwri_mod : 2;
+       } cn30xx;
+       struct cvmx_pko_mem_debug6_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug6_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug6_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug6_cn50xx {
+               u64 reserved_11_63 : 53;
+               u64 curr_ptr : 11;
+       } cn50xx;
+       struct cvmx_pko_mem_debug6_cn52xx {
+               u64 reserved_37_63 : 27;
+               u64 qid_offres : 4;
+               u64 qid_offths : 4;
+               u64 preempter : 1;
+               u64 preemptee : 1;
+               u64 preempted : 1;
+               u64 active : 1;
+               u64 statc : 1;
+               u64 qos : 3;
+               u64 qcb_ridx : 5;
+               u64 qid_offmax : 4;
+               u64 qid_off : 4;
+               u64 qid_base : 8;
+       } cn52xx;
+       struct cvmx_pko_mem_debug6_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_debug6_cn52xx cn56xx;
+       struct cvmx_pko_mem_debug6_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_debug6_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug6_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug6_cn52xx cn61xx;
+       struct cvmx_pko_mem_debug6_cn52xx cn63xx;
+       struct cvmx_pko_mem_debug6_cn52xx cn63xxp1;
+       struct cvmx_pko_mem_debug6_cn52xx cn66xx;
+       struct cvmx_pko_mem_debug6_cn68xx {
+               u64 reserved_38_63 : 26;
+               u64 qos_active : 1;
+               u64 qid_offths : 5;
+               u64 preempter : 1;
+               u64 preemptee : 1;
+               u64 active : 1;
+               u64 static_p : 1;
+               u64 qos : 3;
+               u64 qcb_ridx : 7;
+               u64 qid_offmax : 5;
+               u64 qid_off : 5;
+               u64 qid_base : 8;
+       } cn68xx;
+       struct cvmx_pko_mem_debug6_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug6_cn70xx {
+               u64 reserved_63_37 : 27;
+               u64 qid_offres : 4;
+               u64 qid_offths : 4;
+               u64 preempter : 1;
+               u64 preemptee : 1;
+               u64 preempted : 1;
+               u64 active : 1;
+               u64 staticb : 1;
+               u64 qos : 3;
+               u64 qcb_ridx : 5;
+               u64 qid_offmax : 4;
+               u64 qid_off : 4;
+               u64 qid_base : 8;
+       } cn70xx;
+       struct cvmx_pko_mem_debug6_cn70xx cn70xxp1;
+       struct cvmx_pko_mem_debug6_cn52xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug6 cvmx_pko_mem_debug6_t;
+
+/**
+ * cvmx_pko_mem_debug7
+ *
+ * Notes:
+ * Internal per-queue state intended for debug use only - pko_prt_qsb.state[63:0]
+ * This CSR is a memory of 256 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug7 {
+       u64 u64;
+       struct cvmx_pko_mem_debug7_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_mem_debug7_cn30xx {
+               u64 reserved_58_63 : 6;
+               u64 dwb : 9;
+               u64 start : 33;
+               u64 size : 16;
+       } cn30xx;
+       struct cvmx_pko_mem_debug7_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug7_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug7_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug7_cn50xx {
+               u64 qos : 5;
+               u64 tail : 1;
+               u64 buf_siz : 13;
+               u64 buf_ptr : 33;
+               u64 qcb_widx : 6;
+               u64 qcb_ridx : 6;
+       } cn50xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug7_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug7_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug7_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug7_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug7_cn68xx {
+               u64 buf_siz : 11;
+               u64 buf_ptr : 37;
+               u64 qcb_widx : 8;
+               u64 qcb_ridx : 8;
+       } cn68xx;
+       struct cvmx_pko_mem_debug7_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug7_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug7_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug7_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug7 cvmx_pko_mem_debug7_t;
+
+/**
+ * cvmx_pko_mem_debug8
+ *
+ * Notes:
+ * Internal per-queue state intended for debug use only - pko_prt_qsb.state[91:64]
+ * This CSR is a memory of 256 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug8 {
+       u64 u64;
+       struct cvmx_pko_mem_debug8_s {
+               u64 reserved_59_63 : 5;
+               u64 tail : 1;
+               u64 reserved_0_57 : 58;
+       } s;
+       struct cvmx_pko_mem_debug8_cn30xx {
+               u64 qos : 5;
+               u64 tail : 1;
+               u64 buf_siz : 13;
+               u64 buf_ptr : 33;
+               u64 qcb_widx : 6;
+               u64 qcb_ridx : 6;
+       } cn30xx;
+       struct cvmx_pko_mem_debug8_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug8_cn30xx cn38xx;
+       struct cvmx_pko_mem_debug8_cn30xx cn38xxp2;
+       struct cvmx_pko_mem_debug8_cn50xx {
+               u64 reserved_28_63 : 36;
+               u64 doorbell : 20;
+               u64 reserved_6_7 : 2;
+               u64 static_p : 1;
+               u64 s_tail : 1;
+               u64 static_q : 1;
+               u64 qos : 3;
+       } cn50xx;
+       struct cvmx_pko_mem_debug8_cn52xx {
+               u64 reserved_29_63 : 35;
+               u64 preempter : 1;
+               u64 doorbell : 20;
+               u64 reserved_7_7 : 1;
+               u64 preemptee : 1;
+               u64 static_p : 1;
+               u64 s_tail : 1;
+               u64 static_q : 1;
+               u64 qos : 3;
+       } cn52xx;
+       struct cvmx_pko_mem_debug8_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_debug8_cn52xx cn56xx;
+       struct cvmx_pko_mem_debug8_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_debug8_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug8_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug8_cn61xx {
+               u64 reserved_42_63 : 22;
+               u64 qid_qqos : 8;
+               u64 reserved_33_33 : 1;
+               u64 qid_idx : 4;
+               u64 preempter : 1;
+               u64 doorbell : 20;
+               u64 reserved_7_7 : 1;
+               u64 preemptee : 1;
+               u64 static_p : 1;
+               u64 s_tail : 1;
+               u64 static_q : 1;
+               u64 qos : 3;
+       } cn61xx;
+       struct cvmx_pko_mem_debug8_cn52xx cn63xx;
+       struct cvmx_pko_mem_debug8_cn52xx cn63xxp1;
+       struct cvmx_pko_mem_debug8_cn61xx cn66xx;
+       struct cvmx_pko_mem_debug8_cn68xx {
+               u64 reserved_50_63 : 14;
+               u64 qid_qqos : 8;
+               u64 qid_idx : 5;
+               u64 preempter : 1;
+               u64 doorbell : 20;
+               u64 reserved_9_15 : 7;
+               u64 qid_qos : 6;
+               u64 qid_tail : 1;
+               u64 buf_siz : 2;
+       } cn68xx;
+       struct cvmx_pko_mem_debug8_cn68xx cn68xxp1;
+       struct cvmx_pko_mem_debug8_cn61xx cn70xx;
+       struct cvmx_pko_mem_debug8_cn61xx cn70xxp1;
+       struct cvmx_pko_mem_debug8_cn61xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug8 cvmx_pko_mem_debug8_t;
+
+/**
+ * cvmx_pko_mem_debug9
+ *
+ * Notes:
+ * Internal per-engine state intended for debug use only - pko.dat.ptr.ptrs0, pko.dat.ptr.ptrs3
+ * This CSR is a memory of 10 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.
+ */
+union cvmx_pko_mem_debug9 {
+       u64 u64;
+       struct cvmx_pko_mem_debug9_s {
+               u64 reserved_49_63 : 15;
+               u64 ptrs0 : 17;
+               u64 reserved_0_31 : 32;
+       } s;
+       struct cvmx_pko_mem_debug9_cn30xx {
+               u64 reserved_28_63 : 36;
+               u64 doorbell : 20;
+               u64 reserved_5_7 : 3;
+               u64 s_tail : 1;
+               u64 static_q : 1;
+               u64 qos : 3;
+       } cn30xx;
+       struct cvmx_pko_mem_debug9_cn30xx cn31xx;
+       struct cvmx_pko_mem_debug9_cn38xx {
+               u64 reserved_28_63 : 36;
+               u64 doorbell : 20;
+               u64 reserved_6_7 : 2;
+               u64 static_p : 1;
+               u64 s_tail : 1;
+               u64 static_q : 1;
+               u64 qos : 3;
+       } cn38xx;
+       struct cvmx_pko_mem_debug9_cn38xx cn38xxp2;
+       struct cvmx_pko_mem_debug9_cn50xx {
+               u64 reserved_49_63 : 15;
+               u64 ptrs0 : 17;
+               u64 reserved_17_31 : 15;
+               u64 ptrs3 : 17;
+       } cn50xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn52xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn52xxp1;
+       struct cvmx_pko_mem_debug9_cn50xx cn56xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn56xxp1;
+       struct cvmx_pko_mem_debug9_cn50xx cn58xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn58xxp1;
+       struct cvmx_pko_mem_debug9_cn50xx cn61xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn63xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn63xxp1;
+       struct cvmx_pko_mem_debug9_cn50xx cn66xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn68xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn68xxp1;
+       struct cvmx_pko_mem_debug9_cn50xx cn70xx;
+       struct cvmx_pko_mem_debug9_cn50xx cn70xxp1;
+       struct cvmx_pko_mem_debug9_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_debug9 cvmx_pko_mem_debug9_t;
+
+/**
+ * cvmx_pko_mem_iport_ptrs
+ *
+ * Notes:
+ * This CSR is a memory of 128 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  The index to this CSR is an IPORT.  A read of any
+ * entry that has not been previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_iport_ptrs {
+       u64 u64;
+       struct cvmx_pko_mem_iport_ptrs_s {
+               u64 reserved_63_63 : 1;
+               u64 crc : 1;
+               u64 static_p : 1;
+               u64 qos_mask : 8;
+               u64 min_pkt : 3;
+               u64 reserved_31_49 : 19;
+               u64 pipe : 7;
+               u64 reserved_21_23 : 3;
+               u64 intr : 5;
+               u64 reserved_13_15 : 3;
+               u64 eid : 5;
+               u64 reserved_7_7 : 1;
+               u64 ipid : 7;
+       } s;
+       struct cvmx_pko_mem_iport_ptrs_s cn68xx;
+       struct cvmx_pko_mem_iport_ptrs_s cn68xxp1;
+};
+
+typedef union cvmx_pko_mem_iport_ptrs cvmx_pko_mem_iport_ptrs_t;
+
+/**
+ * cvmx_pko_mem_iport_qos
+ *
+ * Notes:
+ * Sets the QOS mask, per port.  These QOS_MASK bits are logically and physically the same QOS_MASK
+ * bits in PKO_MEM_IPORT_PTRS.  This CSR address allows the QOS_MASK bits to be written during PKO
+ * operation without affecting any other port state.  The engine to which port PID is mapped is engine
+ * EID.  Note that the port to engine mapping must be the same as was previously programmed via the
+ * PKO_MEM_IPORT_PTRS CSR.
+ * This CSR is a memory of 128 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  The index to this CSR is an IPORT.  A read of
+ * any entry that has not been previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_iport_qos {
+       u64 u64;
+       struct cvmx_pko_mem_iport_qos_s {
+               u64 reserved_61_63 : 3;
+               u64 qos_mask : 8;
+               u64 reserved_13_52 : 40;
+               u64 eid : 5;
+               u64 reserved_7_7 : 1;
+               u64 ipid : 7;
+       } s;
+       struct cvmx_pko_mem_iport_qos_s cn68xx;
+       struct cvmx_pko_mem_iport_qos_s cn68xxp1;
+};
+
+typedef union cvmx_pko_mem_iport_qos cvmx_pko_mem_iport_qos_t;
+
+/**
+ * cvmx_pko_mem_iqueue_ptrs
+ *
+ * Notes:
+ * Sets the queue to port mapping and the initial command buffer pointer, per queue.  Unused queues must
+ * set BUF_PTR=0.  Each queue may map to at most one port.  No more than 32 queues may map to a port.
+ * The set of queues that is mapped to a port must be a contiguous array of queues.  The port to which
+ * queue QID is mapped is port IPID.  The index of queue QID in port IPID's queue list is IDX.  The last
+ * queue in port IPID's queue array must have its TAIL bit set.
+ * STATIC_Q marks queue QID as having static priority.  STATIC_P marks the port IPID to which QID is
+ * mapped as having at least one queue with static priority.  If any QID that maps to IPID has static
+ * priority, then all QID that map to IPID must have STATIC_P set.  Queues marked as static priority
+ * must be contiguous and begin at IDX 0.  The last queue that is marked as having static priority
+ * must have its S_TAIL bit set.
+ * This CSR is a memory of 256 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  The index to this CSR is an IQUEUE.  A read of any
+ * entry that has not been previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_iqueue_ptrs {
+       u64 u64;
+       struct cvmx_pko_mem_iqueue_ptrs_s {
+               u64 s_tail : 1;
+               u64 static_p : 1;
+               u64 static_q : 1;
+               u64 qos_mask : 8;
+               u64 buf_ptr : 31;
+               u64 tail : 1;
+               u64 index : 5;
+               u64 reserved_15_15 : 1;
+               u64 ipid : 7;
+               u64 qid : 8;
+       } s;
+       struct cvmx_pko_mem_iqueue_ptrs_s cn68xx;
+       struct cvmx_pko_mem_iqueue_ptrs_s cn68xxp1;
+};
+
+typedef union cvmx_pko_mem_iqueue_ptrs cvmx_pko_mem_iqueue_ptrs_t;
+
+/**
+ * cvmx_pko_mem_iqueue_qos
+ *
+ * Notes:
+ * Sets the QOS mask, per queue.  These QOS_MASK bits are logically and physically the same QOS_MASK
+ * bits in PKO_MEM_IQUEUE_PTRS.  This CSR address allows the QOS_MASK bits to be written during PKO
+ * operation without affecting any other queue state.  The port to which queue QID is mapped is port
+ * IPID.  Note that the queue to port mapping must be the same as was previously programmed via the
+ * PKO_MEM_IQUEUE_PTRS CSR.
+ * This CSR is a memory of 256 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  The index to this CSR is an IQUEUE.  A read of any
+ * entry that has not been previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_iqueue_qos {
+       u64 u64;
+       struct cvmx_pko_mem_iqueue_qos_s {
+               u64 reserved_61_63 : 3;
+               u64 qos_mask : 8;
+               u64 reserved_15_52 : 38;
+               u64 ipid : 7;
+               u64 qid : 8;
+       } s;
+       struct cvmx_pko_mem_iqueue_qos_s cn68xx;
+       struct cvmx_pko_mem_iqueue_qos_s cn68xxp1;
+};
+
+typedef union cvmx_pko_mem_iqueue_qos cvmx_pko_mem_iqueue_qos_t;
+
+/**
+ * cvmx_pko_mem_port_ptrs
+ *
+ * Notes:
+ * Sets the port to engine mapping, per port.  Ports marked as static priority need not be contiguous,
+ * but they must be the lowest numbered PIDs mapped to this EID and must have QOS_MASK=0xff.  If EID==8
+ * or EID==9, then PID[1:0] is used to direct the packet to the correct port on that interface.
+ * EID==15 can be used for unused PKO-internal ports.
+ * The reset configuration is the following:
+ *   PID EID(ext port) BP_PORT QOS_MASK STATIC_P
+ *   -------------------------------------------
+ *     0   0( 0)             0     0xff        0
+ *     1   1( 1)             1     0xff        0
+ *     2   2( 2)             2     0xff        0
+ *     3   3( 3)             3     0xff        0
+ *     4   0( 0)             4     0xff        0
+ *     5   1( 1)             5     0xff        0
+ *     6   2( 2)             6     0xff        0
+ *     7   3( 3)             7     0xff        0
+ *     8   0( 0)             8     0xff        0
+ *     9   1( 1)             9     0xff        0
+ *    10   2( 2)            10     0xff        0
+ *    11   3( 3)            11     0xff        0
+ *    12   0( 0)            12     0xff        0
+ *    13   1( 1)            13     0xff        0
+ *    14   2( 2)            14     0xff        0
+ *    15   3( 3)            15     0xff        0
+ *   -------------------------------------------
+ *    16   4(16)            16     0xff        0
+ *    17   5(17)            17     0xff        0
+ *    18   6(18)            18     0xff        0
+ *    19   7(19)            19     0xff        0
+ *    20   4(16)            20     0xff        0
+ *    21   5(17)            21     0xff        0
+ *    22   6(18)            22     0xff        0
+ *    23   7(19)            23     0xff        0
+ *    24   4(16)            24     0xff        0
+ *    25   5(17)            25     0xff        0
+ *    26   6(18)            26     0xff        0
+ *    27   7(19)            27     0xff        0
+ *    28   4(16)            28     0xff        0
+ *    29   5(17)            29     0xff        0
+ *    30   6(18)            30     0xff        0
+ *    31   7(19)            31     0xff        0
+ *   -------------------------------------------
+ *    32   8(32)            32     0xff        0
+ *    33   8(33)            33     0xff        0
+ *    34   8(34)            34     0xff        0
+ *    35   8(35)            35     0xff        0
+ *   -------------------------------------------
+ *    36   9(36)            36     0xff        0
+ *    37   9(37)            37     0xff        0
+ *    38   9(38)            38     0xff        0
+ *    39   9(39)            39     0xff        0
+ *
+ * This CSR is a memory of 48 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_port_ptrs {
+       u64 u64;
+       struct cvmx_pko_mem_port_ptrs_s {
+               u64 reserved_62_63 : 2;
+               u64 static_p : 1;
+               u64 qos_mask : 8;
+               u64 reserved_16_52 : 37;
+               u64 bp_port : 6;
+               u64 eid : 4;
+               u64 pid : 6;
+       } s;
+       struct cvmx_pko_mem_port_ptrs_s cn52xx;
+       struct cvmx_pko_mem_port_ptrs_s cn52xxp1;
+       struct cvmx_pko_mem_port_ptrs_s cn56xx;
+       struct cvmx_pko_mem_port_ptrs_s cn56xxp1;
+       struct cvmx_pko_mem_port_ptrs_s cn61xx;
+       struct cvmx_pko_mem_port_ptrs_s cn63xx;
+       struct cvmx_pko_mem_port_ptrs_s cn63xxp1;
+       struct cvmx_pko_mem_port_ptrs_s cn66xx;
+       struct cvmx_pko_mem_port_ptrs_s cn70xx;
+       struct cvmx_pko_mem_port_ptrs_s cn70xxp1;
+       struct cvmx_pko_mem_port_ptrs_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_port_ptrs cvmx_pko_mem_port_ptrs_t;
+
+/**
+ * cvmx_pko_mem_port_qos
+ *
+ * Notes:
+ * Sets the QOS mask, per port.  These QOS_MASK bits are logically and physically the same QOS_MASK
+ * bits in PKO_MEM_PORT_PTRS.  This CSR address allows the QOS_MASK bits to be written during PKO
+ * operation without affecting any other port state.  The engine to which port PID is mapped is engine
+ * EID.  Note that the port to engine mapping must be the same as was previously programmed via the
+ * PKO_MEM_PORT_PTRS CSR.
+ * This CSR is a memory of 44 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_port_qos {
+       u64 u64;
+       struct cvmx_pko_mem_port_qos_s {
+               u64 reserved_61_63 : 3;
+               u64 qos_mask : 8;
+               u64 reserved_10_52 : 43;
+               u64 eid : 4;
+               u64 pid : 6;
+       } s;
+       struct cvmx_pko_mem_port_qos_s cn52xx;
+       struct cvmx_pko_mem_port_qos_s cn52xxp1;
+       struct cvmx_pko_mem_port_qos_s cn56xx;
+       struct cvmx_pko_mem_port_qos_s cn56xxp1;
+       struct cvmx_pko_mem_port_qos_s cn61xx;
+       struct cvmx_pko_mem_port_qos_s cn63xx;
+       struct cvmx_pko_mem_port_qos_s cn63xxp1;
+       struct cvmx_pko_mem_port_qos_s cn66xx;
+       struct cvmx_pko_mem_port_qos_s cn70xx;
+       struct cvmx_pko_mem_port_qos_s cn70xxp1;
+       struct cvmx_pko_mem_port_qos_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_port_qos cvmx_pko_mem_port_qos_t;
+
+/**
+ * cvmx_pko_mem_port_rate0
+ *
+ * Notes:
+ * This CSR is a memory of 44 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_port_rate0 {
+       u64 u64;
+       struct cvmx_pko_mem_port_rate0_s {
+               u64 reserved_51_63 : 13;
+               u64 rate_word : 19;
+               u64 rate_pkt : 24;
+               u64 reserved_7_7 : 1;
+               u64 pid : 7;
+       } s;
+       struct cvmx_pko_mem_port_rate0_cn52xx {
+               u64 reserved_51_63 : 13;
+               u64 rate_word : 19;
+               u64 rate_pkt : 24;
+               u64 reserved_6_7 : 2;
+               u64 pid : 6;
+       } cn52xx;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn56xx;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn61xx;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn63xx;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn63xxp1;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn66xx;
+       struct cvmx_pko_mem_port_rate0_s cn68xx;
+       struct cvmx_pko_mem_port_rate0_s cn68xxp1;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn70xx;
+       struct cvmx_pko_mem_port_rate0_cn52xx cn70xxp1;
+       struct cvmx_pko_mem_port_rate0_cn52xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_port_rate0 cvmx_pko_mem_port_rate0_t;
+
+/**
+ * cvmx_pko_mem_port_rate1
+ *
+ * Notes:
+ * Writing PKO_MEM_PORT_RATE1[PID,RATE_LIM] has the side effect of setting the corresponding
+ * accumulator to zero.
+ * This CSR is a memory of 44 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_port_rate1 {
+       u64 u64;
+       struct cvmx_pko_mem_port_rate1_s {
+               u64 reserved_32_63 : 32;
+               u64 rate_lim : 24;
+               u64 reserved_7_7 : 1;
+               u64 pid : 7;
+       } s;
+       struct cvmx_pko_mem_port_rate1_cn52xx {
+               u64 reserved_32_63 : 32;
+               u64 rate_lim : 24;
+               u64 reserved_6_7 : 2;
+               u64 pid : 6;
+       } cn52xx;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn52xxp1;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn56xx;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn56xxp1;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn61xx;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn63xx;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn63xxp1;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn66xx;
+       struct cvmx_pko_mem_port_rate1_s cn68xx;
+       struct cvmx_pko_mem_port_rate1_s cn68xxp1;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn70xx;
+       struct cvmx_pko_mem_port_rate1_cn52xx cn70xxp1;
+       struct cvmx_pko_mem_port_rate1_cn52xx cnf71xx;
+};
+
+typedef union cvmx_pko_mem_port_rate1 cvmx_pko_mem_port_rate1_t;
+
+/**
+ * cvmx_pko_mem_queue_ptrs
+ *
+ * Notes:
+ * Sets the queue to port mapping and the initial command buffer pointer, per queue
+ * Each queue may map to at most one port.  No more than 16 queues may map to a port.  The set of
+ * queues that is mapped to a port must be a contiguous array of queues.  The port to which queue QID
+ * is mapped is port PID.  The index of queue QID in port PID's queue list is IDX.  The last queue in
+ * port PID's queue array must have its TAIL bit set.  Unused queues must be mapped to port 63.
+ * STATIC_Q marks queue QID as having static priority.  STATIC_P marks the port PID to which QID is
+ * mapped as having at least one queue with static priority.  If any QID that maps to PID has static
+ * priority, then all QID that map to PID must have STATIC_P set.  Queues marked as static priority
+ * must be contiguous and begin at IDX 0.  The last queue that is marked as having static priority
+ * must have its S_TAIL bit set.
+ * This CSR is a memory of 256 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_queue_ptrs {
+       u64 u64;
+       struct cvmx_pko_mem_queue_ptrs_s {
+               u64 s_tail : 1;
+               u64 static_p : 1;
+               u64 static_q : 1;
+               u64 qos_mask : 8;
+               u64 buf_ptr : 36;
+               u64 tail : 1;
+               u64 index : 3;
+               u64 port : 6;
+               u64 queue : 7;
+       } s;
+       struct cvmx_pko_mem_queue_ptrs_s cn30xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn31xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn38xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn38xxp2;
+       struct cvmx_pko_mem_queue_ptrs_s cn50xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn52xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn52xxp1;
+       struct cvmx_pko_mem_queue_ptrs_s cn56xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn56xxp1;
+       struct cvmx_pko_mem_queue_ptrs_s cn58xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn58xxp1;
+       struct cvmx_pko_mem_queue_ptrs_s cn61xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn63xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn63xxp1;
+       struct cvmx_pko_mem_queue_ptrs_s cn66xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn70xx;
+       struct cvmx_pko_mem_queue_ptrs_s cn70xxp1;
+       struct cvmx_pko_mem_queue_ptrs_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_queue_ptrs cvmx_pko_mem_queue_ptrs_t;
+
+/**
+ * cvmx_pko_mem_queue_qos
+ *
+ * Notes:
+ * Sets the QOS mask, per queue.  These QOS_MASK bits are logically and physically the same QOS_MASK
+ * bits in PKO_MEM_QUEUE_PTRS.  This CSR address allows the QOS_MASK bits to be written during PKO
+ * operation without affecting any other queue state.  The port to which queue QID is mapped is port
+ * PID.  Note that the queue to port mapping must be the same as was previously programmed via the
+ * PKO_MEM_QUEUE_PTRS CSR.
+ * This CSR is a memory of 256 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  A read of any entry that has not been
+ * previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_queue_qos {
+       u64 u64;
+       struct cvmx_pko_mem_queue_qos_s {
+               u64 reserved_61_63 : 3;
+               u64 qos_mask : 8;
+               u64 reserved_13_52 : 40;
+               u64 pid : 6;
+               u64 qid : 7;
+       } s;
+       struct cvmx_pko_mem_queue_qos_s cn30xx;
+       struct cvmx_pko_mem_queue_qos_s cn31xx;
+       struct cvmx_pko_mem_queue_qos_s cn38xx;
+       struct cvmx_pko_mem_queue_qos_s cn38xxp2;
+       struct cvmx_pko_mem_queue_qos_s cn50xx;
+       struct cvmx_pko_mem_queue_qos_s cn52xx;
+       struct cvmx_pko_mem_queue_qos_s cn52xxp1;
+       struct cvmx_pko_mem_queue_qos_s cn56xx;
+       struct cvmx_pko_mem_queue_qos_s cn56xxp1;
+       struct cvmx_pko_mem_queue_qos_s cn58xx;
+       struct cvmx_pko_mem_queue_qos_s cn58xxp1;
+       struct cvmx_pko_mem_queue_qos_s cn61xx;
+       struct cvmx_pko_mem_queue_qos_s cn63xx;
+       struct cvmx_pko_mem_queue_qos_s cn63xxp1;
+       struct cvmx_pko_mem_queue_qos_s cn66xx;
+       struct cvmx_pko_mem_queue_qos_s cn70xx;
+       struct cvmx_pko_mem_queue_qos_s cn70xxp1;
+       struct cvmx_pko_mem_queue_qos_s cnf71xx;
+};
+
+typedef union cvmx_pko_mem_queue_qos cvmx_pko_mem_queue_qos_t;
+
+/**
+ * cvmx_pko_mem_throttle_int
+ *
+ * Notes:
+ * Writing PACKET and WORD with 0 resets both counts for INT to 0 rather than add 0.
+ * Otherwise, writes to this CSR add to the existing WORD/PACKET counts for the interface INT.
+ *
+ * PKO tracks the number of (8-byte) WORD's and PACKET's in-flight (sum total in both PKO
+ * and the interface MAC) on the interface. (When PKO first selects a packet from a PKO queue, it
+ * increments the counts appropriately. When the interface MAC has (largely) completed sending
+ * the words/packet, PKO decrements the count appropriately.) When PKO_REG_FLAGS[ENA_THROTTLE]
+ * is set and the most-significant bit of the WORD or packet count for a interface is set,
+ * PKO will not transfer any packets over the interface. Software can limit the amount of
+ * packet data and/or the number of packets that OCTEON can send out the chip after receiving backpressure
+ * from the interface/pipe via these per-pipe throttle counts when PKO_REG_FLAGS[ENA_THROTTLE]=1.
+ * For example, to limit the number of packets outstanding in the interface to N, preset PACKET for
+ * the pipe to the value 0x20-N (0x20 is the smallest PACKET value with the most-significant bit set).
+ *
+ * This CSR is a memory of 32 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  The index to this CSR is an INTERFACE.  A read of any
+ * entry that has not been previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_throttle_int {
+       u64 u64;
+       struct cvmx_pko_mem_throttle_int_s {
+               u64 reserved_47_63 : 17;
+               u64 word : 15;
+               u64 reserved_14_31 : 18;
+               u64 packet : 6;
+               u64 reserved_5_7 : 3;
+               u64 intr : 5;
+       } s;
+       struct cvmx_pko_mem_throttle_int_s cn68xx;
+       struct cvmx_pko_mem_throttle_int_s cn68xxp1;
+};
+
+typedef union cvmx_pko_mem_throttle_int cvmx_pko_mem_throttle_int_t;
+
+/**
+ * cvmx_pko_mem_throttle_pipe
+ *
+ * Notes:
+ * Writing PACKET and WORD with 0 resets both counts for PIPE to 0 rather than add 0.
+ * Otherwise, writes to this CSR add to the existing WORD/PACKET counts for the PKO pipe PIPE.
+ *
+ * PKO tracks the number of (8-byte) WORD's and PACKET's in-flight (sum total in both PKO
+ * and the interface MAC) on the pipe. (When PKO first selects a packet from a PKO queue, it
+ * increments the counts appropriately. When the interface MAC has (largely) completed sending
+ * the words/packet, PKO decrements the count appropriately.) When PKO_REG_FLAGS[ENA_THROTTLE]
+ * is set and the most-significant bit of the WORD or packet count for a PKO pipe is set,
+ * PKO will not transfer any packets over the PKO pipe. Software can limit the amount of
+ * packet data and/or the number of packets that OCTEON can send out the chip after receiving backpressure
+ * from the interface/pipe via these per-pipe throttle counts when PKO_REG_FLAGS[ENA_THROTTLE]=1.
+ * For example, to limit the number of packets outstanding in the pipe to N, preset PACKET for
+ * the pipe to the value 0x20-N (0x20 is the smallest PACKET value with the most-significant bit set).
+ *
+ * This CSR is a memory of 128 entries, and thus, the PKO_REG_READ_IDX CSR must be written before any
+ * CSR read operations to this address can be performed.  The index to this CSR is a PIPE.  A read of any
+ * entry that has not been previously written is illegal and will result in unpredictable CSR read data.
+ */
+union cvmx_pko_mem_throttle_pipe {
+       u64 u64;
+       struct cvmx_pko_mem_throttle_pipe_s {
+               u64 reserved_47_63 : 17;
+               u64 word : 15;
+               u64 reserved_14_31 : 18;
+               u64 packet : 6;
+               u64 reserved_7_7 : 1;
+               u64 pipe : 7;
+       } s;
+       struct cvmx_pko_mem_throttle_pipe_s cn68xx;
+       struct cvmx_pko_mem_throttle_pipe_s cn68xxp1;
+};
+
+typedef union cvmx_pko_mem_throttle_pipe cvmx_pko_mem_throttle_pipe_t;
+
+/**
+ * cvmx_pko_ncb_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_ncb_bist_status {
+       u64 u64;
+       struct cvmx_pko_ncb_bist_status_s {
+               u64 ncbi_l2_out_ram_bist_status : 1;
+               u64 ncbi_pp_out_ram_bist_status : 1;
+               u64 ncbo_pdm_cmd_dat_ram_bist_status : 1;
+               u64 ncbi_l2_pdm_pref_ram_bist_status : 1;
+               u64 ncbo_pp_fif_ram_bist_status : 1;
+               u64 ncbo_skid_fif_ram_bist_status : 1;
+               u64 reserved_0_57 : 58;
+       } s;
+       struct cvmx_pko_ncb_bist_status_s cn73xx;
+       struct cvmx_pko_ncb_bist_status_s cn78xx;
+       struct cvmx_pko_ncb_bist_status_s cn78xxp1;
+       struct cvmx_pko_ncb_bist_status_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_bist_status cvmx_pko_ncb_bist_status_t;
+
+/**
+ * cvmx_pko_ncb_ecc_ctl0
+ */
+union cvmx_pko_ncb_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_ncb_ecc_ctl0_s {
+               u64 ncbi_l2_out_ram_flip : 2;
+               u64 ncbi_l2_out_ram_cdis : 1;
+               u64 ncbi_pp_out_ram_flip : 2;
+               u64 ncbi_pp_out_ram_cdis : 1;
+               u64 ncbo_pdm_cmd_dat_ram_flip : 2;
+               u64 ncbo_pdm_cmd_dat_ram_cdis : 1;
+               u64 ncbi_l2_pdm_pref_ram_flip : 2;
+               u64 ncbi_l2_pdm_pref_ram_cdis : 1;
+               u64 ncbo_pp_fif_ram_flip : 2;
+               u64 ncbo_pp_fif_ram_cdis : 1;
+               u64 ncbo_skid_fif_ram_flip : 2;
+               u64 ncbo_skid_fif_ram_cdis : 1;
+               u64 reserved_0_45 : 46;
+       } s;
+       struct cvmx_pko_ncb_ecc_ctl0_s cn73xx;
+       struct cvmx_pko_ncb_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_ncb_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_ncb_ecc_ctl0_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_ecc_ctl0 cvmx_pko_ncb_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_ncb_ecc_dbe_sts0
+ */
+union cvmx_pko_ncb_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_ncb_ecc_dbe_sts0_s {
+               u64 ncbi_l2_out_ram_dbe : 1;
+               u64 ncbi_pp_out_ram_dbe : 1;
+               u64 ncbo_pdm_cmd_dat_ram_dbe : 1;
+               u64 ncbi_l2_pdm_pref_ram_dbe : 1;
+               u64 ncbo_pp_fif_ram_dbe : 1;
+               u64 ncbo_skid_fif_ram_dbe : 1;
+               u64 reserved_0_57 : 58;
+       } s;
+       struct cvmx_pko_ncb_ecc_dbe_sts0_s cn73xx;
+       struct cvmx_pko_ncb_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_ncb_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_ncb_ecc_dbe_sts0_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_ecc_dbe_sts0 cvmx_pko_ncb_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_ncb_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_ncb_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_ncb_ecc_dbe_sts_cmb0_s {
+               u64 ncb_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_ncb_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_ncb_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_ncb_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_ncb_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_ecc_dbe_sts_cmb0 cvmx_pko_ncb_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_ncb_ecc_sbe_sts0
+ */
+union cvmx_pko_ncb_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_ncb_ecc_sbe_sts0_s {
+               u64 ncbi_l2_out_ram_sbe : 1;
+               u64 ncbi_pp_out_ram_sbe : 1;
+               u64 ncbo_pdm_cmd_dat_ram_sbe : 1;
+               u64 ncbi_l2_pdm_pref_ram_sbe : 1;
+               u64 ncbo_pp_fif_ram_sbe : 1;
+               u64 ncbo_skid_fif_ram_sbe : 1;
+               u64 reserved_0_57 : 58;
+       } s;
+       struct cvmx_pko_ncb_ecc_sbe_sts0_s cn73xx;
+       struct cvmx_pko_ncb_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_ncb_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_ncb_ecc_sbe_sts0_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_ecc_sbe_sts0 cvmx_pko_ncb_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_ncb_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_ncb_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_ncb_ecc_sbe_sts_cmb0_s {
+               u64 ncb_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_ncb_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_ncb_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_ncb_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_ncb_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_ecc_sbe_sts_cmb0 cvmx_pko_ncb_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_ncb_int
+ */
+union cvmx_pko_ncb_int {
+       u64 u64;
+       struct cvmx_pko_ncb_int_s {
+               u64 reserved_2_63 : 62;
+               u64 tso_segment_cnt : 1;
+               u64 ncb_tx_error : 1;
+       } s;
+       struct cvmx_pko_ncb_int_s cn73xx;
+       struct cvmx_pko_ncb_int_s cn78xx;
+       struct cvmx_pko_ncb_int_s cn78xxp1;
+       struct cvmx_pko_ncb_int_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_int cvmx_pko_ncb_int_t;
+
+/**
+ * cvmx_pko_ncb_tx_err_info
+ */
+union cvmx_pko_ncb_tx_err_info {
+       u64 u64;
+       struct cvmx_pko_ncb_tx_err_info_s {
+               u64 reserved_32_63 : 32;
+               u64 wcnt : 5;
+               u64 src : 12;
+               u64 dst : 8;
+               u64 tag : 4;
+               u64 eot : 1;
+               u64 sot : 1;
+               u64 valid : 1;
+       } s;
+       struct cvmx_pko_ncb_tx_err_info_s cn73xx;
+       struct cvmx_pko_ncb_tx_err_info_s cn78xx;
+       struct cvmx_pko_ncb_tx_err_info_s cn78xxp1;
+       struct cvmx_pko_ncb_tx_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_tx_err_info cvmx_pko_ncb_tx_err_info_t;
+
+/**
+ * cvmx_pko_ncb_tx_err_word
+ */
+union cvmx_pko_ncb_tx_err_word {
+       u64 u64;
+       struct cvmx_pko_ncb_tx_err_word_s {
+               u64 err_word : 64;
+       } s;
+       struct cvmx_pko_ncb_tx_err_word_s cn73xx;
+       struct cvmx_pko_ncb_tx_err_word_s cn78xx;
+       struct cvmx_pko_ncb_tx_err_word_s cn78xxp1;
+       struct cvmx_pko_ncb_tx_err_word_s cnf75xx;
+};
+
+typedef union cvmx_pko_ncb_tx_err_word cvmx_pko_ncb_tx_err_word_t;
+
+/**
+ * cvmx_pko_pdm_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pdm_bist_status {
+       u64 u64;
+       struct cvmx_pko_pdm_bist_status_s {
+               u64 flshb_cache_lo_ram_bist_status : 1;
+               u64 flshb_cache_hi_ram_bist_status : 1;
+               u64 isrm_ca_iinst_ram_bist_status : 1;
+               u64 isrm_ca_cm_ram_bist_status : 1;
+               u64 isrm_st_ram2_bist_status : 1;
+               u64 isrm_st_ram1_bist_status : 1;
+               u64 isrm_st_ram0_bist_status : 1;
+               u64 isrd_st_ram3_bist_status : 1;
+               u64 isrd_st_ram2_bist_status : 1;
+               u64 isrd_st_ram1_bist_status : 1;
+               u64 isrd_st_ram0_bist_status : 1;
+               u64 drp_hi_ram_bist_status : 1;
+               u64 drp_lo_ram_bist_status : 1;
+               u64 dwp_hi_ram_bist_status : 1;
+               u64 dwp_lo_ram_bist_status : 1;
+               u64 mwp_hi_ram_bist_status : 1;
+               u64 mwp_lo_ram_bist_status : 1;
+               u64 fillb_m_rsp_ram_hi_bist_status : 1;
+               u64 fillb_m_rsp_ram_lo_bist_status : 1;
+               u64 fillb_d_rsp_ram_hi_bist_status : 1;
+               u64 fillb_d_rsp_ram_lo_bist_status : 1;
+               u64 fillb_d_rsp_dat_fifo_bist_status : 1;
+               u64 fillb_m_rsp_dat_fifo_bist_status : 1;
+               u64 flshb_m_dat_ram_bist_status : 1;
+               u64 flshb_d_dat_ram_bist_status : 1;
+               u64 minpad_ram_bist_status : 1;
+               u64 mwp_hi_spt_ram_bist_status : 1;
+               u64 mwp_lo_spt_ram_bist_status : 1;
+               u64 buf_wm_ram_bist_status : 1;
+               u64 reserved_0_34 : 35;
+       } s;
+       struct cvmx_pko_pdm_bist_status_s cn73xx;
+       struct cvmx_pko_pdm_bist_status_s cn78xx;
+       struct cvmx_pko_pdm_bist_status_s cn78xxp1;
+       struct cvmx_pko_pdm_bist_status_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_bist_status cvmx_pko_pdm_bist_status_t;
+
+/**
+ * cvmx_pko_pdm_cfg
+ */
+union cvmx_pko_pdm_cfg {
+       u64 u64;
+       struct cvmx_pko_pdm_cfg_s {
+               u64 reserved_13_63 : 51;
+               u64 dis_lpd_w2r_fill : 1;
+               u64 en_fr_w2r_ptr_swp : 1;
+               u64 dis_flsh_cache : 1;
+               u64 pko_pad_minlen : 7;
+               u64 diag_mode : 1;
+               u64 alloc_lds : 1;
+               u64 alloc_sts : 1;
+       } s;
+       struct cvmx_pko_pdm_cfg_s cn73xx;
+       struct cvmx_pko_pdm_cfg_s cn78xx;
+       struct cvmx_pko_pdm_cfg_s cn78xxp1;
+       struct cvmx_pko_pdm_cfg_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_cfg cvmx_pko_pdm_cfg_t;
+
+/**
+ * cvmx_pko_pdm_cfg_dbg
+ */
+union cvmx_pko_pdm_cfg_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_cfg_dbg_s {
+               u64 reserved_32_63 : 32;
+               u64 cp_stall_thrshld : 32;
+       } s;
+       struct cvmx_pko_pdm_cfg_dbg_s cn73xx;
+       struct cvmx_pko_pdm_cfg_dbg_s cn78xx;
+       struct cvmx_pko_pdm_cfg_dbg_s cn78xxp1;
+       struct cvmx_pko_pdm_cfg_dbg_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_cfg_dbg cvmx_pko_pdm_cfg_dbg_t;
+
+/**
+ * cvmx_pko_pdm_cp_dbg
+ */
+union cvmx_pko_pdm_cp_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_cp_dbg_s {
+               u64 reserved_16_63 : 48;
+               u64 stateless_fif_cnt : 6;
+               u64 reserved_5_9 : 5;
+               u64 op_fif_not_full : 5;
+       } s;
+       struct cvmx_pko_pdm_cp_dbg_s cn73xx;
+       struct cvmx_pko_pdm_cp_dbg_s cn78xx;
+       struct cvmx_pko_pdm_cp_dbg_s cn78xxp1;
+       struct cvmx_pko_pdm_cp_dbg_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_cp_dbg cvmx_pko_pdm_cp_dbg_t;
+
+/**
+ * cvmx_pko_pdm_dq#_minpad
+ */
+union cvmx_pko_pdm_dqx_minpad {
+       u64 u64;
+       struct cvmx_pko_pdm_dqx_minpad_s {
+               u64 reserved_1_63 : 63;
+               u64 minpad : 1;
+       } s;
+       struct cvmx_pko_pdm_dqx_minpad_s cn73xx;
+       struct cvmx_pko_pdm_dqx_minpad_s cn78xx;
+       struct cvmx_pko_pdm_dqx_minpad_s cn78xxp1;
+       struct cvmx_pko_pdm_dqx_minpad_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_dqx_minpad cvmx_pko_pdm_dqx_minpad_t;
+
+/**
+ * cvmx_pko_pdm_drpbuf_dbg
+ */
+union cvmx_pko_pdm_drpbuf_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_drpbuf_dbg_s {
+               u64 reserved_43_63 : 21;
+               u64 sel_nxt_ptr : 1;
+               u64 load_val : 1;
+               u64 rdy : 1;
+               u64 cur_state : 3;
+               u64 reserved_33_36 : 4;
+               u64 track_rd_cnt : 6;
+               u64 track_wr_cnt : 6;
+               u64 reserved_17_20 : 4;
+               u64 mem_addr : 13;
+               u64 mem_en : 4;
+       } s;
+       struct cvmx_pko_pdm_drpbuf_dbg_s cn73xx;
+       struct cvmx_pko_pdm_drpbuf_dbg_s cn78xx;
+       struct cvmx_pko_pdm_drpbuf_dbg_s cn78xxp1;
+       struct cvmx_pko_pdm_drpbuf_dbg_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_drpbuf_dbg cvmx_pko_pdm_drpbuf_dbg_t;
+
+/**
+ * cvmx_pko_pdm_dwpbuf_dbg
+ */
+union cvmx_pko_pdm_dwpbuf_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_dwpbuf_dbg_s {
+               u64 reserved_48_63 : 16;
+               u64 cmd_proc : 1;
+               u64 reserved_46_46 : 1;
+               u64 mem_data_val : 1;
+               u64 insert_np : 1;
+               u64 reserved_43_43 : 1;
+               u64 sel_nxt_ptr : 1;
+               u64 load_val : 1;
+               u64 rdy : 1;
+               u64 cur_state : 3;
+               u64 mem_rdy : 1;
+               u64 reserved_33_35 : 3;
+               u64 track_rd_cnt : 6;
+               u64 track_wr_cnt : 6;
+               u64 reserved_19_20 : 2;
+               u64 insert_dp : 2;
+               u64 mem_addr : 13;
+               u64 mem_en : 4;
+       } s;
+       struct cvmx_pko_pdm_dwpbuf_dbg_cn73xx {
+               u64 reserved_48_63 : 16;
+               u64 cmd_proc : 1;
+               u64 reserved_46_46 : 1;
+               u64 mem_data_val : 1;
+               u64 insert_np : 1;
+               u64 reserved_43_43 : 1;
+               u64 sel_nxt_ptr : 1;
+               u64 load_val : 1;
+               u64 rdy : 1;
+               u64 reserved_37_39 : 3;
+               u64 mem_rdy : 1;
+               u64 reserved_19_35 : 17;
+               u64 insert_dp : 2;
+               u64 reserved_15_16 : 2;
+               u64 mem_addr : 11;
+               u64 mem_en : 4;
+       } cn73xx;
+       struct cvmx_pko_pdm_dwpbuf_dbg_s cn78xx;
+       struct cvmx_pko_pdm_dwpbuf_dbg_s cn78xxp1;
+       struct cvmx_pko_pdm_dwpbuf_dbg_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_dwpbuf_dbg cvmx_pko_pdm_dwpbuf_dbg_t;
+
+/**
+ * cvmx_pko_pdm_ecc_ctl0
+ */
+union cvmx_pko_pdm_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pdm_ecc_ctl0_s {
+               u64 flshb_cache_lo_ram_flip : 2;
+               u64 flshb_cache_lo_ram_cdis : 1;
+               u64 flshb_cache_hi_ram_flip : 2;
+               u64 flshb_cache_hi_ram_cdis : 1;
+               u64 isrm_ca_iinst_ram_flip : 2;
+               u64 isrm_ca_iinst_ram_cdis : 1;
+               u64 isrm_ca_cm_ram_flip : 2;
+               u64 isrm_ca_cm_ram_cdis : 1;
+               u64 isrm_st_ram2_flip : 2;
+               u64 isrm_st_ram2_cdis : 1;
+               u64 isrm_st_ram1_flip : 2;
+               u64 isrm_st_ram1_cdis : 1;
+               u64 isrm_st_ram0_flip : 2;
+               u64 isrm_st_ram0_cdis : 1;
+               u64 isrd_st_ram3_flip : 2;
+               u64 isrd_st_ram3_cdis : 1;
+               u64 isrd_st_ram2_flip : 2;
+               u64 isrd_st_ram2_cdis : 1;
+               u64 isrd_st_ram1_flip : 2;
+               u64 isrd_st_ram1_cdis : 1;
+               u64 isrd_st_ram0_flip : 2;
+               u64 isrd_st_ram0_cdis : 1;
+               u64 drp_hi_ram_flip : 2;
+               u64 drp_hi_ram_cdis : 1;
+               u64 drp_lo_ram_flip : 2;
+               u64 drp_lo_ram_cdis : 1;
+               u64 dwp_hi_ram_flip : 2;
+               u64 dwp_hi_ram_cdis : 1;
+               u64 dwp_lo_ram_flip : 2;
+               u64 dwp_lo_ram_cdis : 1;
+               u64 mwp_hi_ram_flip : 2;
+               u64 mwp_hi_ram_cdis : 1;
+               u64 mwp_lo_ram_flip : 2;
+               u64 mwp_lo_ram_cdis : 1;
+               u64 fillb_m_rsp_ram_hi_flip : 2;
+               u64 fillb_m_rsp_ram_hi_cdis : 1;
+               u64 fillb_m_rsp_ram_lo_flip : 2;
+               u64 fillb_m_rsp_ram_lo_cdis : 1;
+               u64 fillb_d_rsp_ram_hi_flip : 2;
+               u64 fillb_d_rsp_ram_hi_cdis : 1;
+               u64 fillb_d_rsp_ram_lo_flip : 2;
+               u64 fillb_d_rsp_ram_lo_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_pdm_ecc_ctl0_cn73xx {
+               u64 flshb_cache_lo_ram_flip : 2;
+               u64 flshb_cache_lo_ram_cdis : 1;
+               u64 flshb_cache_hi_ram_flip : 2;
+               u64 flshb_cache_hi_ram_cdis : 1;
+               u64 isrm_ca_iinst_ram_flip : 2;
+               u64 isrm_ca_iinst_ram_cdis : 1;
+               u64 isrm_ca_cm_ram_flip : 2;
+               u64 isrm_ca_cm_ram_cdis : 1;
+               u64 isrm_st_ram2_flip : 2;
+               u64 isrm_st_ram2_cdis : 1;
+               u64 isrm_st_ram1_flip : 2;
+               u64 isrm_st_ram1_cdis : 1;
+               u64 isrm_st_ram0_flip : 2;
+               u64 isrm_st_ram0_cdis : 1;
+               u64 isrd_st_ram3_flip : 2;
+               u64 isrd_st_ram3_cdis : 1;
+               u64 isrd_st_ram2_flip : 2;
+               u64 isrd_st_ram2_cdis : 1;
+               u64 isrd_st_ram1_flip : 2;
+               u64 isrd_st_ram1_cdis : 1;
+               u64 isrd_st_ram0_flip : 2;
+               u64 isrd_st_ram0_cdis : 1;
+               u64 drp_hi_ram_flip : 2;
+               u64 drp_hi_ram_cdis : 1;
+               u64 drp_lo_ram_flip : 2;
+               u64 drp_lo_ram_cdis : 1;
+               u64 dwp_hi_ram_flip : 2;
+               u64 dwp_hi_ram_cdis : 1;
+               u64 dwp_lo_ram_flip : 2;
+               u64 dwp_lo_ram_cdis : 1;
+               u64 reserved_13_18 : 6;
+               u64 fillb_m_rsp_ram_hi_flip : 2;
+               u64 fillb_m_rsp_ram_hi_cdis : 1;
+               u64 fillb_m_rsp_ram_lo_flip : 2;
+               u64 fillb_m_rsp_ram_lo_cdis : 1;
+               u64 fillb_d_rsp_ram_hi_flip : 2;
+               u64 fillb_d_rsp_ram_hi_cdis : 1;
+               u64 fillb_d_rsp_ram_lo_flip : 2;
+               u64 fillb_d_rsp_ram_lo_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_pdm_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pdm_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_pdm_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_ecc_ctl0 cvmx_pko_pdm_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pdm_ecc_ctl1
+ */
+union cvmx_pko_pdm_ecc_ctl1 {
+       u64 u64;
+       struct cvmx_pko_pdm_ecc_ctl1_s {
+               u64 reserved_15_63 : 49;
+               u64 buf_wm_ram_flip : 2;
+               u64 buf_wm_ram_cdis : 1;
+               u64 mwp_mem0_ram_flip : 2;
+               u64 mwp_mem1_ram_flip : 2;
+               u64 mwp_mem2_ram_flip : 2;
+               u64 mwp_mem3_ram_flip : 2;
+               u64 mwp_ram_cdis : 1;
+               u64 minpad_ram_flip : 2;
+               u64 minpad_ram_cdis : 1;
+       } s;
+       struct cvmx_pko_pdm_ecc_ctl1_s cn73xx;
+       struct cvmx_pko_pdm_ecc_ctl1_s cn78xx;
+       struct cvmx_pko_pdm_ecc_ctl1_s cn78xxp1;
+       struct cvmx_pko_pdm_ecc_ctl1_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_ecc_ctl1 cvmx_pko_pdm_ecc_ctl1_t;
+
+/**
+ * cvmx_pko_pdm_ecc_dbe_sts0
+ */
+union cvmx_pko_pdm_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pdm_ecc_dbe_sts0_s {
+               u64 flshb_cache_lo_ram_dbe : 1;
+               u64 flshb_cache_hi_ram_dbe : 1;
+               u64 isrm_ca_iinst_ram_dbe : 1;
+               u64 isrm_ca_cm_ram_dbe : 1;
+               u64 isrm_st_ram2_dbe : 1;
+               u64 isrm_st_ram1_dbe : 1;
+               u64 isrm_st_ram0_dbe : 1;
+               u64 isrd_st_ram3_dbe : 1;
+               u64 isrd_st_ram2_dbe : 1;
+               u64 isrd_st_ram1_dbe : 1;
+               u64 isrd_st_ram0_dbe : 1;
+               u64 drp_hi_ram_dbe : 1;
+               u64 drp_lo_ram_dbe : 1;
+               u64 dwp_hi_ram_dbe : 1;
+               u64 dwp_lo_ram_dbe : 1;
+               u64 mwp_hi_ram_dbe : 1;
+               u64 mwp_lo_ram_dbe : 1;
+               u64 fillb_m_rsp_ram_hi_dbe : 1;
+               u64 fillb_m_rsp_ram_lo_dbe : 1;
+               u64 fillb_d_rsp_ram_hi_dbe : 1;
+               u64 fillb_d_rsp_ram_lo_dbe : 1;
+               u64 minpad_ram_dbe : 1;
+               u64 mwp_hi_spt_ram_dbe : 1;
+               u64 mwp_lo_spt_ram_dbe : 1;
+               u64 buf_wm_ram_dbe : 1;
+               u64 reserved_0_38 : 39;
+       } s;
+       struct cvmx_pko_pdm_ecc_dbe_sts0_s cn73xx;
+       struct cvmx_pko_pdm_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pdm_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pdm_ecc_dbe_sts0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_ecc_dbe_sts0 cvmx_pko_pdm_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pdm_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pdm_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pdm_ecc_dbe_sts_cmb0_s {
+               u64 pdm_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pdm_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pdm_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pdm_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pdm_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_ecc_dbe_sts_cmb0 cvmx_pko_pdm_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pdm_ecc_sbe_sts0
+ */
+union cvmx_pko_pdm_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pdm_ecc_sbe_sts0_s {
+               u64 flshb_cache_lo_ram_sbe : 1;
+               u64 flshb_cache_hi_ram_sbe : 1;
+               u64 isrm_ca_iinst_ram_sbe : 1;
+               u64 isrm_ca_cm_ram_sbe : 1;
+               u64 isrm_st_ram2_sbe : 1;
+               u64 isrm_st_ram1_sbe : 1;
+               u64 isrm_st_ram0_sbe : 1;
+               u64 isrd_st_ram3_sbe : 1;
+               u64 isrd_st_ram2_sbe : 1;
+               u64 isrd_st_ram1_sbe : 1;
+               u64 isrd_st_ram0_sbe : 1;
+               u64 drp_hi_ram_sbe : 1;
+               u64 drp_lo_ram_sbe : 1;
+               u64 dwp_hi_ram_sbe : 1;
+               u64 dwp_lo_ram_sbe : 1;
+               u64 mwp_hi_ram_sbe : 1;
+               u64 mwp_lo_ram_sbe : 1;
+               u64 fillb_m_rsp_ram_hi_sbe : 1;
+               u64 fillb_m_rsp_ram_lo_sbe : 1;
+               u64 fillb_d_rsp_ram_hi_sbe : 1;
+               u64 fillb_d_rsp_ram_lo_sbe : 1;
+               u64 minpad_ram_sbe : 1;
+               u64 mwp_hi_spt_ram_sbe : 1;
+               u64 mwp_lo_spt_ram_sbe : 1;
+               u64 buf_wm_ram_sbe : 1;
+               u64 reserved_0_38 : 39;
+       } s;
+       struct cvmx_pko_pdm_ecc_sbe_sts0_s cn73xx;
+       struct cvmx_pko_pdm_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pdm_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pdm_ecc_sbe_sts0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_ecc_sbe_sts0 cvmx_pko_pdm_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pdm_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pdm_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pdm_ecc_sbe_sts_cmb0_s {
+               u64 pdm_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pdm_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pdm_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pdm_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pdm_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_ecc_sbe_sts_cmb0 cvmx_pko_pdm_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pdm_fillb_dbg0
+ */
+union cvmx_pko_pdm_fillb_dbg0 {
+       u64 u64;
+       struct cvmx_pko_pdm_fillb_dbg0_s {
+               u64 reserved_57_63 : 7;
+               u64 pd_seq : 5;
+               u64 resp_pd_seq : 5;
+               u64 d_rsp_lo_ram_addr_sel : 2;
+               u64 d_rsp_hi_ram_addr_sel : 2;
+               u64 d_rsp_rd_seq : 5;
+               u64 d_rsp_fifo_rd_seq : 5;
+               u64 d_fill_req_fifo_val : 1;
+               u64 d_rsp_ram_valid : 32;
+       } s;
+       struct cvmx_pko_pdm_fillb_dbg0_s cn73xx;
+       struct cvmx_pko_pdm_fillb_dbg0_s cn78xx;
+       struct cvmx_pko_pdm_fillb_dbg0_s cn78xxp1;
+       struct cvmx_pko_pdm_fillb_dbg0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_fillb_dbg0 cvmx_pko_pdm_fillb_dbg0_t;
+
+/**
+ * cvmx_pko_pdm_fillb_dbg1
+ */
+union cvmx_pko_pdm_fillb_dbg1 {
+       u64 u64;
+       struct cvmx_pko_pdm_fillb_dbg1_s {
+               u64 reserved_57_63 : 7;
+               u64 mp_seq : 5;
+               u64 resp_mp_seq : 5;
+               u64 m_rsp_lo_ram_addr_sel : 2;
+               u64 m_rsp_hi_ram_addr_sel : 2;
+               u64 m_rsp_rd_seq : 5;
+               u64 m_rsp_fifo_rd_seq : 5;
+               u64 m_fill_req_fifo_val : 1;
+               u64 m_rsp_ram_valid : 32;
+       } s;
+       struct cvmx_pko_pdm_fillb_dbg1_s cn73xx;
+       struct cvmx_pko_pdm_fillb_dbg1_s cn78xx;
+       struct cvmx_pko_pdm_fillb_dbg1_s cn78xxp1;
+       struct cvmx_pko_pdm_fillb_dbg1_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_fillb_dbg1 cvmx_pko_pdm_fillb_dbg1_t;
+
+/**
+ * cvmx_pko_pdm_fillb_dbg2
+ */
+union cvmx_pko_pdm_fillb_dbg2 {
+       u64 u64;
+       struct cvmx_pko_pdm_fillb_dbg2_s {
+               u64 reserved_9_63 : 55;
+               u64 fillb_sm : 5;
+               u64 reserved_3_3 : 1;
+               u64 iobp0_credit_cntr : 3;
+       } s;
+       struct cvmx_pko_pdm_fillb_dbg2_s cn73xx;
+       struct cvmx_pko_pdm_fillb_dbg2_s cn78xx;
+       struct cvmx_pko_pdm_fillb_dbg2_s cn78xxp1;
+       struct cvmx_pko_pdm_fillb_dbg2_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_fillb_dbg2 cvmx_pko_pdm_fillb_dbg2_t;
+
+/**
+ * cvmx_pko_pdm_flshb_dbg0
+ */
+union cvmx_pko_pdm_flshb_dbg0 {
+       u64 u64;
+       struct cvmx_pko_pdm_flshb_dbg0_s {
+               u64 reserved_44_63 : 20;
+               u64 flshb_sm : 7;
+               u64 flshb_ctl_sm : 9;
+               u64 cam_hptr : 5;
+               u64 cam_tptr : 5;
+               u64 expected_stdns : 6;
+               u64 d_flshb_eot_cntr : 3;
+               u64 m_flshb_eot_cntr : 3;
+               u64 ncbi_credit_cntr : 6;
+       } s;
+       struct cvmx_pko_pdm_flshb_dbg0_s cn73xx;
+       struct cvmx_pko_pdm_flshb_dbg0_s cn78xx;
+       struct cvmx_pko_pdm_flshb_dbg0_s cn78xxp1;
+       struct cvmx_pko_pdm_flshb_dbg0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_flshb_dbg0 cvmx_pko_pdm_flshb_dbg0_t;
+
+/**
+ * cvmx_pko_pdm_flshb_dbg1
+ */
+union cvmx_pko_pdm_flshb_dbg1 {
+       u64 u64;
+       struct cvmx_pko_pdm_flshb_dbg1_s {
+               u64 cam_stdn : 32;
+               u64 cam_valid : 32;
+       } s;
+       struct cvmx_pko_pdm_flshb_dbg1_s cn73xx;
+       struct cvmx_pko_pdm_flshb_dbg1_s cn78xx;
+       struct cvmx_pko_pdm_flshb_dbg1_s cn78xxp1;
+       struct cvmx_pko_pdm_flshb_dbg1_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_flshb_dbg1 cvmx_pko_pdm_flshb_dbg1_t;
+
+/**
+ * cvmx_pko_pdm_intf_dbg_rd
+ *
+ * For diagnostic use only.
+ *
+ */
+union cvmx_pko_pdm_intf_dbg_rd {
+       u64 u64;
+       struct cvmx_pko_pdm_intf_dbg_rd_s {
+               u64 reserved_48_63 : 16;
+               u64 in_flight : 8;
+               u64 pdm_req_cred_cnt : 8;
+               u64 pse_buf_waddr : 8;
+               u64 pse_buf_raddr : 8;
+               u64 resp_buf_waddr : 8;
+               u64 resp_buf_raddr : 8;
+       } s;
+       struct cvmx_pko_pdm_intf_dbg_rd_s cn73xx;
+       struct cvmx_pko_pdm_intf_dbg_rd_s cn78xx;
+       struct cvmx_pko_pdm_intf_dbg_rd_s cn78xxp1;
+       struct cvmx_pko_pdm_intf_dbg_rd_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_intf_dbg_rd cvmx_pko_pdm_intf_dbg_rd_t;
+
+/**
+ * cvmx_pko_pdm_isrd_dbg
+ */
+union cvmx_pko_pdm_isrd_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_isrd_dbg_s {
+               u64 isrd_vals_in : 4;
+               u64 reserved_59_59 : 1;
+               u64 req_hptr : 6;
+               u64 rdy_hptr : 6;
+               u64 reserved_44_46 : 3;
+               u64 in_arb_reqs : 8;
+               u64 in_arb_gnts : 7;
+               u64 cmt_arb_reqs : 7;
+               u64 cmt_arb_gnts : 7;
+               u64 in_use : 4;
+               u64 has_cred : 4;
+               u64 val_exec : 7;
+       } s;
+       struct cvmx_pko_pdm_isrd_dbg_s cn73xx;
+       struct cvmx_pko_pdm_isrd_dbg_s cn78xx;
+       struct cvmx_pko_pdm_isrd_dbg_cn78xxp1 {
+               u64 reserved_44_63 : 20;
+               u64 in_arb_reqs : 8;
+               u64 in_arb_gnts : 7;
+               u64 cmt_arb_reqs : 7;
+               u64 cmt_arb_gnts : 7;
+               u64 in_use : 4;
+               u64 has_cred : 4;
+               u64 val_exec : 7;
+       } cn78xxp1;
+       struct cvmx_pko_pdm_isrd_dbg_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_isrd_dbg cvmx_pko_pdm_isrd_dbg_t;
+
+/**
+ * cvmx_pko_pdm_isrd_dbg_dq
+ */
+union cvmx_pko_pdm_isrd_dbg_dq {
+       u64 u64;
+       struct cvmx_pko_pdm_isrd_dbg_dq_s {
+               u64 reserved_46_63 : 18;
+               u64 pebrd_sic_dq : 10;
+               u64 reserved_34_35 : 2;
+               u64 pebfill_sic_dq : 10;
+               u64 reserved_22_23 : 2;
+               u64 fr_sic_dq : 10;
+               u64 reserved_10_11 : 2;
+               u64 cp_sic_dq : 10;
+       } s;
+       struct cvmx_pko_pdm_isrd_dbg_dq_s cn73xx;
+       struct cvmx_pko_pdm_isrd_dbg_dq_s cn78xx;
+       struct cvmx_pko_pdm_isrd_dbg_dq_s cn78xxp1;
+       struct cvmx_pko_pdm_isrd_dbg_dq_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_isrd_dbg_dq cvmx_pko_pdm_isrd_dbg_dq_t;
+
+/**
+ * cvmx_pko_pdm_isrm_dbg
+ */
+union cvmx_pko_pdm_isrm_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_isrm_dbg_s {
+               u64 val_in : 3;
+               u64 reserved_34_60 : 27;
+               u64 in_arb_reqs : 7;
+               u64 in_arb_gnts : 6;
+               u64 cmt_arb_reqs : 6;
+               u64 cmt_arb_gnts : 6;
+               u64 in_use : 3;
+               u64 has_cred : 3;
+               u64 val_exec : 3;
+       } s;
+       struct cvmx_pko_pdm_isrm_dbg_s cn73xx;
+       struct cvmx_pko_pdm_isrm_dbg_s cn78xx;
+       struct cvmx_pko_pdm_isrm_dbg_cn78xxp1 {
+               u64 reserved_34_63 : 30;
+               u64 in_arb_reqs : 7;
+               u64 in_arb_gnts : 6;
+               u64 cmt_arb_reqs : 6;
+               u64 cmt_arb_gnts : 6;
+               u64 in_use : 3;
+               u64 has_cred : 3;
+               u64 val_exec : 3;
+       } cn78xxp1;
+       struct cvmx_pko_pdm_isrm_dbg_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_isrm_dbg cvmx_pko_pdm_isrm_dbg_t;
+
+/**
+ * cvmx_pko_pdm_isrm_dbg_dq
+ */
+union cvmx_pko_pdm_isrm_dbg_dq {
+       u64 u64;
+       struct cvmx_pko_pdm_isrm_dbg_dq_s {
+               u64 reserved_34_63 : 30;
+               u64 ack_sic_dq : 10;
+               u64 reserved_22_23 : 2;
+               u64 fr_sic_dq : 10;
+               u64 reserved_10_11 : 2;
+               u64 cp_sic_dq : 10;
+       } s;
+       struct cvmx_pko_pdm_isrm_dbg_dq_s cn73xx;
+       struct cvmx_pko_pdm_isrm_dbg_dq_s cn78xx;
+       struct cvmx_pko_pdm_isrm_dbg_dq_s cn78xxp1;
+       struct cvmx_pko_pdm_isrm_dbg_dq_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_isrm_dbg_dq cvmx_pko_pdm_isrm_dbg_dq_t;
+
+/**
+ * cvmx_pko_pdm_mem_addr
+ */
+union cvmx_pko_pdm_mem_addr {
+       u64 u64;
+       struct cvmx_pko_pdm_mem_addr_s {
+               u64 memsel : 3;
+               u64 reserved_17_60 : 44;
+               u64 memaddr : 14;
+               u64 reserved_2_2 : 1;
+               u64 membanksel : 2;
+       } s;
+       struct cvmx_pko_pdm_mem_addr_s cn73xx;
+       struct cvmx_pko_pdm_mem_addr_s cn78xx;
+       struct cvmx_pko_pdm_mem_addr_s cn78xxp1;
+       struct cvmx_pko_pdm_mem_addr_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_mem_addr cvmx_pko_pdm_mem_addr_t;
+
+/**
+ * cvmx_pko_pdm_mem_data
+ */
+union cvmx_pko_pdm_mem_data {
+       u64 u64;
+       struct cvmx_pko_pdm_mem_data_s {
+               u64 data : 64;
+       } s;
+       struct cvmx_pko_pdm_mem_data_s cn73xx;
+       struct cvmx_pko_pdm_mem_data_s cn78xx;
+       struct cvmx_pko_pdm_mem_data_s cn78xxp1;
+       struct cvmx_pko_pdm_mem_data_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_mem_data cvmx_pko_pdm_mem_data_t;
+
+/**
+ * cvmx_pko_pdm_mem_rw_ctl
+ */
+union cvmx_pko_pdm_mem_rw_ctl {
+       u64 u64;
+       struct cvmx_pko_pdm_mem_rw_ctl_s {
+               u64 reserved_2_63 : 62;
+               u64 read : 1;
+               u64 write : 1;
+       } s;
+       struct cvmx_pko_pdm_mem_rw_ctl_s cn73xx;
+       struct cvmx_pko_pdm_mem_rw_ctl_s cn78xx;
+       struct cvmx_pko_pdm_mem_rw_ctl_s cn78xxp1;
+       struct cvmx_pko_pdm_mem_rw_ctl_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_mem_rw_ctl cvmx_pko_pdm_mem_rw_ctl_t;
+
+/**
+ * cvmx_pko_pdm_mem_rw_sts
+ */
+union cvmx_pko_pdm_mem_rw_sts {
+       u64 u64;
+       struct cvmx_pko_pdm_mem_rw_sts_s {
+               u64 reserved_1_63 : 63;
+               u64 readdone : 1;
+       } s;
+       struct cvmx_pko_pdm_mem_rw_sts_s cn73xx;
+       struct cvmx_pko_pdm_mem_rw_sts_s cn78xx;
+       struct cvmx_pko_pdm_mem_rw_sts_s cn78xxp1;
+       struct cvmx_pko_pdm_mem_rw_sts_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_mem_rw_sts cvmx_pko_pdm_mem_rw_sts_t;
+
+/**
+ * cvmx_pko_pdm_mwpbuf_dbg
+ */
+union cvmx_pko_pdm_mwpbuf_dbg {
+       u64 u64;
+       struct cvmx_pko_pdm_mwpbuf_dbg_s {
+               u64 reserved_49_63 : 15;
+               u64 str_proc : 1;
+               u64 cmd_proc : 1;
+               u64 str_val : 1;
+               u64 mem_data_val : 1;
+               u64 insert_np : 1;
+               u64 insert_mp : 1;
+               u64 sel_nxt_ptr : 1;
+               u64 load_val : 1;
+               u64 rdy : 1;
+               u64 cur_state : 3;
+               u64 mem_rdy : 1;
+               u64 str_rdy : 1;
+               u64 contention_type : 2;
+               u64 track_rd_cnt : 6;
+               u64 track_wr_cnt : 6;
+               u64 mem_wen : 4;
+               u64 mem_addr : 13;
+               u64 mem_en : 4;
+       } s;
+       struct cvmx_pko_pdm_mwpbuf_dbg_cn73xx {
+               u64 reserved_49_63 : 15;
+               u64 str_proc : 1;
+               u64 cmd_proc : 1;
+               u64 str_val : 1;
+               u64 mem_data_val : 1;
+               u64 insert_np : 1;
+               u64 insert_mp : 1;
+               u64 sel_nxt_ptr : 1;
+               u64 load_val : 1;
+               u64 rdy : 1;
+               u64 cur_state : 3;
+               u64 mem_rdy : 1;
+               u64 str_rdy : 1;
+               u64 contention_type : 2;
+               u64 reserved_21_32 : 12;
+               u64 mem_wen : 4;
+               u64 reserved_15_16 : 2;
+               u64 mem_addr : 11;
+               u64 mem_en : 4;
+       } cn73xx;
+       struct cvmx_pko_pdm_mwpbuf_dbg_s cn78xx;
+       struct cvmx_pko_pdm_mwpbuf_dbg_s cn78xxp1;
+       struct cvmx_pko_pdm_mwpbuf_dbg_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_mwpbuf_dbg cvmx_pko_pdm_mwpbuf_dbg_t;
+
+/**
+ * cvmx_pko_pdm_sts
+ */
+union cvmx_pko_pdm_sts {
+       u64 u64;
+       struct cvmx_pko_pdm_sts_s {
+               u64 reserved_38_63 : 26;
+               u64 cp_stalled_thrshld_hit : 1;
+               u64 reserved_35_36 : 2;
+               u64 mwpbuf_data_val_err : 1;
+               u64 drpbuf_data_val_err : 1;
+               u64 dwpbuf_data_val_err : 1;
+               u64 reserved_30_31 : 2;
+               u64 qcmd_iobx_err_sts : 4;
+               u64 qcmd_iobx_err : 1;
+               u64 sendpkt_lmtdma_err_sts : 4;
+               u64 sendpkt_lmtdma_err : 1;
+               u64 sendpkt_lmtst_err_sts : 4;
+               u64 sendpkt_lmtst_err : 1;
+               u64 fpa_no_ptrs : 1;
+               u64 reserved_12_13 : 2;
+               u64 cp_sendpkt_err_no_drp_code : 2;
+               u64 cp_sendpkt_err_no_drp : 1;
+               u64 reserved_7_8 : 2;
+               u64 cp_sendpkt_err_drop_code : 3;
+               u64 cp_sendpkt_err_drop : 1;
+               u64 reserved_1_2 : 2;
+               u64 desc_crc_err : 1;
+       } s;
+       struct cvmx_pko_pdm_sts_s cn73xx;
+       struct cvmx_pko_pdm_sts_s cn78xx;
+       struct cvmx_pko_pdm_sts_s cn78xxp1;
+       struct cvmx_pko_pdm_sts_s cnf75xx;
+};
+
+typedef union cvmx_pko_pdm_sts cvmx_pko_pdm_sts_t;
+
+/**
+ * cvmx_pko_peb_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_peb_bist_status {
+       u64 u64;
+       struct cvmx_pko_peb_bist_status_s {
+               u64 reserved_26_63 : 38;
+               u64 add_work_fifo : 1;
+               u64 pdm_pse_buf_ram : 1;
+               u64 iobp0_fifo_ram : 1;
+               u64 iobp1_fifo_ram : 1;
+               u64 state_mem0 : 1;
+               u64 reserved_19_20 : 2;
+               u64 state_mem3 : 1;
+               u64 iobp1_uid_fifo_ram : 1;
+               u64 nxt_link_ptr_ram : 1;
+               u64 pd_bank0_ram : 1;
+               u64 pd_bank1_ram : 1;
+               u64 pd_bank2_ram : 1;
+               u64 pd_bank3_ram : 1;
+               u64 pd_var_bank_ram : 1;
+               u64 pdm_resp_buf_ram : 1;
+               u64 tx_fifo_pkt_ram : 1;
+               u64 tx_fifo_hdr_ram : 1;
+               u64 tx_fifo_crc_ram : 1;
+               u64 ts_addwork_ram : 1;
+               u64 send_mem_ts_fifo : 1;
+               u64 send_mem_stdn_fifo : 1;
+               u64 send_mem_fifo : 1;
+               u64 pkt_mrk_ram : 1;
+               u64 peb_st_inf_ram : 1;
+               u64 peb_sm_jmp_ram : 1;
+       } s;
+       struct cvmx_pko_peb_bist_status_cn73xx {
+               u64 reserved_26_63 : 38;
+               u64 add_work_fifo : 1;
+               u64 pdm_pse_buf_ram : 1;
+               u64 iobp0_fifo_ram : 1;
+               u64 iobp1_fifo_ram : 1;
+               u64 state_mem0 : 1;
+               u64 reserved_19_20 : 2;
+               u64 state_mem3 : 1;
+               u64 iobp1_uid_fifo_ram : 1;
+               u64 nxt_link_ptr_ram : 1;
+               u64 pd_bank0_ram : 1;
+               u64 reserved_13_14 : 2;
+               u64 pd_bank3_ram : 1;
+               u64 pd_var_bank_ram : 1;
+               u64 pdm_resp_buf_ram : 1;
+               u64 tx_fifo_pkt_ram : 1;
+               u64 tx_fifo_hdr_ram : 1;
+               u64 tx_fifo_crc_ram : 1;
+               u64 ts_addwork_ram : 1;
+               u64 send_mem_ts_fifo : 1;
+               u64 send_mem_stdn_fifo : 1;
+               u64 send_mem_fifo : 1;
+               u64 pkt_mrk_ram : 1;
+               u64 peb_st_inf_ram : 1;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_peb_bist_status_cn73xx cn78xx;
+       struct cvmx_pko_peb_bist_status_s cn78xxp1;
+       struct cvmx_pko_peb_bist_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_peb_bist_status cvmx_pko_peb_bist_status_t;
+
+/**
+ * cvmx_pko_peb_ecc_ctl0
+ */
+union cvmx_pko_peb_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_peb_ecc_ctl0_s {
+               u64 iobp1_uid_fifo_ram_flip : 2;
+               u64 iobp1_uid_fifo_ram_cdis : 1;
+               u64 iobp0_fifo_ram_flip : 2;
+               u64 iobp0_fifo_ram_cdis : 1;
+               u64 iobp1_fifo_ram_flip : 2;
+               u64 iobp1_fifo_ram_cdis : 1;
+               u64 pdm_resp_buf_ram_flip : 2;
+               u64 pdm_resp_buf_ram_cdis : 1;
+               u64 pdm_pse_buf_ram_flip : 2;
+               u64 pdm_pse_buf_ram_cdis : 1;
+               u64 peb_sm_jmp_ram_flip : 2;
+               u64 peb_sm_jmp_ram_cdis : 1;
+               u64 peb_st_inf_ram_flip : 2;
+               u64 peb_st_inf_ram_cdis : 1;
+               u64 pd_bank3_ram_flip : 2;
+               u64 pd_bank3_ram_cdis : 1;
+               u64 pd_bank2_ram_flip : 2;
+               u64 pd_bank2_ram_cdis : 1;
+               u64 pd_bank1_ram_flip : 2;
+               u64 pd_bank1_ram_cdis : 1;
+               u64 pd_bank0_ram_flip : 2;
+               u64 pd_bank0_ram_cdis : 1;
+               u64 pd_var_bank_ram_flip : 2;
+               u64 pd_var_bank_ram_cdis : 1;
+               u64 tx_fifo_crc_ram_flip : 2;
+               u64 tx_fifo_crc_ram_cdis : 1;
+               u64 tx_fifo_hdr_ram_flip : 2;
+               u64 tx_fifo_hdr_ram_cdis : 1;
+               u64 tx_fifo_pkt_ram_flip : 2;
+               u64 tx_fifo_pkt_ram_cdis : 1;
+               u64 add_work_fifo_flip : 2;
+               u64 add_work_fifo_cdis : 1;
+               u64 send_mem_fifo_flip : 2;
+               u64 send_mem_fifo_cdis : 1;
+               u64 send_mem_stdn_fifo_flip : 2;
+               u64 send_mem_stdn_fifo_cdis : 1;
+               u64 send_mem_ts_fifo_flip : 2;
+               u64 send_mem_ts_fifo_cdis : 1;
+               u64 nxt_link_ptr_ram_flip : 2;
+               u64 nxt_link_ptr_ram_cdis : 1;
+               u64 pkt_mrk_ram_flip : 2;
+               u64 pkt_mrk_ram_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_peb_ecc_ctl0_cn73xx {
+               u64 iobp1_uid_fifo_ram_flip : 2;
+               u64 iobp1_uid_fifo_ram_cdis : 1;
+               u64 iobp0_fifo_ram_flip : 2;
+               u64 iobp0_fifo_ram_cdis : 1;
+               u64 iobp1_fifo_ram_flip : 2;
+               u64 iobp1_fifo_ram_cdis : 1;
+               u64 pdm_resp_buf_ram_flip : 2;
+               u64 pdm_resp_buf_ram_cdis : 1;
+               u64 pdm_pse_buf_ram_flip : 2;
+               u64 pdm_pse_buf_ram_cdis : 1;
+               u64 reserved_46_48 : 3;
+               u64 peb_st_inf_ram_flip : 2;
+               u64 peb_st_inf_ram_cdis : 1;
+               u64 pd_bank3_ram_flip : 2;
+               u64 pd_bank3_ram_cdis : 1;
+               u64 reserved_34_39 : 6;
+               u64 pd_bank0_ram_flip : 2;
+               u64 pd_bank0_ram_cdis : 1;
+               u64 pd_var_bank_ram_flip : 2;
+               u64 pd_var_bank_ram_cdis : 1;
+               u64 tx_fifo_crc_ram_flip : 2;
+               u64 tx_fifo_crc_ram_cdis : 1;
+               u64 tx_fifo_hdr_ram_flip : 2;
+               u64 tx_fifo_hdr_ram_cdis : 1;
+               u64 tx_fifo_pkt_ram_flip : 2;
+               u64 tx_fifo_pkt_ram_cdis : 1;
+               u64 add_work_fifo_flip : 2;
+               u64 add_work_fifo_cdis : 1;
+               u64 send_mem_fifo_flip : 2;
+               u64 send_mem_fifo_cdis : 1;
+               u64 send_mem_stdn_fifo_flip : 2;
+               u64 send_mem_stdn_fifo_cdis : 1;
+               u64 send_mem_ts_fifo_flip : 2;
+               u64 send_mem_ts_fifo_cdis : 1;
+               u64 nxt_link_ptr_ram_flip : 2;
+               u64 nxt_link_ptr_ram_cdis : 1;
+               u64 pkt_mrk_ram_flip : 2;
+               u64 pkt_mrk_ram_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_peb_ecc_ctl0_cn73xx cn78xx;
+       struct cvmx_pko_peb_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_peb_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ecc_ctl0 cvmx_pko_peb_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_peb_ecc_ctl1
+ */
+union cvmx_pko_peb_ecc_ctl1 {
+       u64 u64;
+       struct cvmx_pko_peb_ecc_ctl1_s {
+               u64 ts_addwork_ram_flip : 2;
+               u64 ts_addwork_ram_cdis : 1;
+               u64 state_mem0_flip : 2;
+               u64 state_mem0_cdis : 1;
+               u64 reserved_52_57 : 6;
+               u64 state_mem3_flip : 2;
+               u64 state_mem3_cdis : 1;
+               u64 reserved_0_48 : 49;
+       } s;
+       struct cvmx_pko_peb_ecc_ctl1_s cn73xx;
+       struct cvmx_pko_peb_ecc_ctl1_cn78xx {
+               u64 ts_addwork_ram_flip : 2;
+               u64 ts_addwork_ram_cdis : 1;
+               u64 reserved_0_60 : 61;
+       } cn78xx;
+       struct cvmx_pko_peb_ecc_ctl1_cn78xx cn78xxp1;
+       struct cvmx_pko_peb_ecc_ctl1_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ecc_ctl1 cvmx_pko_peb_ecc_ctl1_t;
+
+/**
+ * cvmx_pko_peb_ecc_dbe_sts0
+ */
+union cvmx_pko_peb_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_peb_ecc_dbe_sts0_s {
+               u64 iobp1_uid_fifo_ram_dbe : 1;
+               u64 iobp0_fifo_ram_dbe : 1;
+               u64 iobp1_fifo_ram_dbe : 1;
+               u64 pdm_resp_buf_ram_dbe : 1;
+               u64 pdm_pse_buf_ram_dbe : 1;
+               u64 peb_sm_jmp_ram_dbe : 1;
+               u64 peb_st_inf_ram_dbe : 1;
+               u64 pd_bank3_ram_dbe : 1;
+               u64 pd_bank2_ram_dbe : 1;
+               u64 pd_bank1_ram_dbe : 1;
+               u64 pd_bank0_ram_dbe : 1;
+               u64 pd_var_bank_ram_dbe : 1;
+               u64 tx_fifo_crc_ram_dbe : 1;
+               u64 tx_fifo_hdr_ram_dbe : 1;
+               u64 tx_fifo_pkt_ram_dbe : 1;
+               u64 add_work_fifo_dbe : 1;
+               u64 send_mem_fifo_dbe : 1;
+               u64 send_mem_stdn_fifo_dbe : 1;
+               u64 send_mem_ts_fifo_dbe : 1;
+               u64 nxt_link_ptr_ram_dbe : 1;
+               u64 pkt_mrk_ram_dbe : 1;
+               u64 ts_addwork_ram_dbe : 1;
+               u64 state_mem0_dbe : 1;
+               u64 reserved_39_40 : 2;
+               u64 state_mem3_dbe : 1;
+               u64 reserved_0_37 : 38;
+       } s;
+       struct cvmx_pko_peb_ecc_dbe_sts0_cn73xx {
+               u64 iobp1_uid_fifo_ram_dbe : 1;
+               u64 iobp0_fifo_ram_dbe : 1;
+               u64 iobp1_fifo_ram_dbe : 1;
+               u64 pdm_resp_buf_ram_dbe : 1;
+               u64 pdm_pse_buf_ram_dbe : 1;
+               u64 reserved_58_58 : 1;
+               u64 peb_st_inf_ram_dbe : 1;
+               u64 pd_bank3_ram_dbe : 1;
+               u64 reserved_54_55 : 2;
+               u64 pd_bank0_ram_dbe : 1;
+               u64 pd_var_bank_ram_dbe : 1;
+               u64 tx_fifo_crc_ram_dbe : 1;
+               u64 tx_fifo_hdr_ram_dbe : 1;
+               u64 tx_fifo_pkt_ram_dbe : 1;
+               u64 add_work_fifo_dbe : 1;
+               u64 send_mem_fifo_dbe : 1;
+               u64 send_mem_stdn_fifo_dbe : 1;
+               u64 send_mem_ts_fifo_dbe : 1;
+               u64 nxt_link_ptr_ram_dbe : 1;
+               u64 pkt_mrk_ram_dbe : 1;
+               u64 ts_addwork_ram_dbe : 1;
+               u64 state_mem0_dbe : 1;
+               u64 reserved_39_40 : 2;
+               u64 state_mem3_dbe : 1;
+               u64 reserved_0_37 : 38;
+       } cn73xx;
+       struct cvmx_pko_peb_ecc_dbe_sts0_cn78xx {
+               u64 iobp1_uid_fifo_ram_dbe : 1;
+               u64 iobp0_fifo_ram_dbe : 1;
+               u64 iobp1_fifo_ram_dbe : 1;
+               u64 pdm_resp_buf_ram_dbe : 1;
+               u64 pdm_pse_buf_ram_dbe : 1;
+               u64 reserved_58_58 : 1;
+               u64 peb_st_inf_ram_dbe : 1;
+               u64 pd_bank3_ram_dbe : 1;
+               u64 reserved_54_55 : 2;
+               u64 pd_bank0_ram_dbe : 1;
+               u64 pd_var_bank_ram_dbe : 1;
+               u64 tx_fifo_crc_ram_dbe : 1;
+               u64 tx_fifo_hdr_ram_dbe : 1;
+               u64 tx_fifo_pkt_ram_dbe : 1;
+               u64 add_work_fifo_dbe : 1;
+               u64 send_mem_fifo_dbe : 1;
+               u64 send_mem_stdn_fifo_dbe : 1;
+               u64 send_mem_ts_fifo_dbe : 1;
+               u64 nxt_link_ptr_ram_dbe : 1;
+               u64 pkt_mrk_ram_dbe : 1;
+               u64 ts_addwork_ram_dbe : 1;
+               u64 reserved_0_41 : 42;
+       } cn78xx;
+       struct cvmx_pko_peb_ecc_dbe_sts0_cn78xxp1 {
+               u64 iobp1_uid_fifo_ram_dbe : 1;
+               u64 iobp0_fifo_ram_dbe : 1;
+               u64 iobp1_fifo_ram_dbe : 1;
+               u64 pdm_resp_buf_ram_dbe : 1;
+               u64 pdm_pse_buf_ram_dbe : 1;
+               u64 peb_sm_jmp_ram_dbe : 1;
+               u64 peb_st_inf_ram_dbe : 1;
+               u64 pd_bank3_ram_dbe : 1;
+               u64 pd_bank2_ram_dbe : 1;
+               u64 pd_bank1_ram_dbe : 1;
+               u64 pd_bank0_ram_dbe : 1;
+               u64 pd_var_bank_ram_dbe : 1;
+               u64 tx_fifo_crc_ram_dbe : 1;
+               u64 tx_fifo_hdr_ram_dbe : 1;
+               u64 tx_fifo_pkt_ram_dbe : 1;
+               u64 add_work_fifo_dbe : 1;
+               u64 send_mem_fifo_dbe : 1;
+               u64 send_mem_stdn_fifo_dbe : 1;
+               u64 send_mem_ts_fifo_dbe : 1;
+               u64 nxt_link_ptr_ram_dbe : 1;
+               u64 pkt_mrk_ram_dbe : 1;
+               u64 ts_addwork_ram_dbe : 1;
+               u64 reserved_0_41 : 42;
+       } cn78xxp1;
+       struct cvmx_pko_peb_ecc_dbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ecc_dbe_sts0 cvmx_pko_peb_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_peb_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_peb_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_peb_ecc_dbe_sts_cmb0_s {
+               u64 peb_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_peb_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_peb_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_peb_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_peb_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ecc_dbe_sts_cmb0 cvmx_pko_peb_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_peb_ecc_sbe_sts0
+ */
+union cvmx_pko_peb_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_peb_ecc_sbe_sts0_s {
+               u64 iobp1_uid_fifo_ram_sbe : 1;
+               u64 iobp0_fifo_ram_sbe : 1;
+               u64 iobp1_fifo_ram_sbe : 1;
+               u64 pdm_resp_buf_ram_sbe : 1;
+               u64 pdm_pse_buf_ram_sbe : 1;
+               u64 peb_sm_jmp_ram_sbe : 1;
+               u64 peb_st_inf_ram_sbe : 1;
+               u64 pd_bank3_ram_sbe : 1;
+               u64 pd_bank2_ram_sbe : 1;
+               u64 pd_bank1_ram_sbe : 1;
+               u64 pd_bank0_ram_sbe : 1;
+               u64 pd_var_bank_ram_sbe : 1;
+               u64 tx_fifo_crc_ram_sbe : 1;
+               u64 tx_fifo_hdr_ram_sbe : 1;
+               u64 tx_fifo_pkt_ram_sbe : 1;
+               u64 add_work_fifo_sbe : 1;
+               u64 send_mem_fifo_sbe : 1;
+               u64 send_mem_stdn_fifo_sbe : 1;
+               u64 send_mem_ts_fifo_sbe : 1;
+               u64 nxt_link_ptr_ram_sbe : 1;
+               u64 pkt_mrk_ram_sbe : 1;
+               u64 ts_addwork_ram_sbe : 1;
+               u64 state_mem0_sbe : 1;
+               u64 reserved_39_40 : 2;
+               u64 state_mem3_sbe : 1;
+               u64 reserved_0_37 : 38;
+       } s;
+       struct cvmx_pko_peb_ecc_sbe_sts0_cn73xx {
+               u64 iobp1_uid_fifo_ram_sbe : 1;
+               u64 iobp0_fifo_ram_sbe : 1;
+               u64 iobp1_fifo_ram_sbe : 1;
+               u64 pdm_resp_buf_ram_sbe : 1;
+               u64 pdm_pse_buf_ram_sbe : 1;
+               u64 reserved_58_58 : 1;
+               u64 peb_st_inf_ram_sbe : 1;
+               u64 pd_bank3_ram_sbe : 1;
+               u64 reserved_54_55 : 2;
+               u64 pd_bank0_ram_sbe : 1;
+               u64 pd_var_bank_ram_sbe : 1;
+               u64 tx_fifo_crc_ram_sbe : 1;
+               u64 tx_fifo_hdr_ram_sbe : 1;
+               u64 tx_fifo_pkt_ram_sbe : 1;
+               u64 add_work_fifo_sbe : 1;
+               u64 send_mem_fifo_sbe : 1;
+               u64 send_mem_stdn_fifo_sbe : 1;
+               u64 send_mem_ts_fifo_sbe : 1;
+               u64 nxt_link_ptr_ram_sbe : 1;
+               u64 pkt_mrk_ram_sbe : 1;
+               u64 ts_addwork_ram_sbe : 1;
+               u64 state_mem0_sbe : 1;
+               u64 reserved_39_40 : 2;
+               u64 state_mem3_sbe : 1;
+               u64 reserved_0_37 : 38;
+       } cn73xx;
+       struct cvmx_pko_peb_ecc_sbe_sts0_cn78xx {
+               u64 iobp1_uid_fifo_ram_sbe : 1;
+               u64 iobp0_fifo_ram_sbe : 1;
+               u64 iobp1_fifo_ram_sbe : 1;
+               u64 pdm_resp_buf_ram_sbe : 1;
+               u64 pdm_pse_buf_ram_sbe : 1;
+               u64 reserved_58_58 : 1;
+               u64 peb_st_inf_ram_sbe : 1;
+               u64 pd_bank3_ram_sbe : 1;
+               u64 reserved_54_55 : 2;
+               u64 pd_bank0_ram_sbe : 1;
+               u64 pd_var_bank_ram_sbe : 1;
+               u64 tx_fifo_crc_ram_sbe : 1;
+               u64 tx_fifo_hdr_ram_sbe : 1;
+               u64 tx_fifo_pkt_ram_sbe : 1;
+               u64 add_work_fifo_sbe : 1;
+               u64 send_mem_fifo_sbe : 1;
+               u64 send_mem_stdn_fifo_sbe : 1;
+               u64 send_mem_ts_fifo_sbe : 1;
+               u64 nxt_link_ptr_ram_sbe : 1;
+               u64 pkt_mrk_ram_sbe : 1;
+               u64 ts_addwork_ram_sbe : 1;
+               u64 reserved_0_41 : 42;
+       } cn78xx;
+       struct cvmx_pko_peb_ecc_sbe_sts0_cn78xxp1 {
+               u64 iobp1_uid_fifo_ram_sbe : 1;
+               u64 iobp0_fifo_ram_sbe : 1;
+               u64 iobp1_fifo_ram_sbe : 1;
+               u64 pdm_resp_buf_ram_sbe : 1;
+               u64 pdm_pse_buf_ram_sbe : 1;
+               u64 peb_sm_jmp_ram_sbe : 1;
+               u64 peb_st_inf_ram_sbe : 1;
+               u64 pd_bank3_ram_sbe : 1;
+               u64 pd_bank2_ram_sbe : 1;
+               u64 pd_bank1_ram_sbe : 1;
+               u64 pd_bank0_ram_sbe : 1;
+               u64 pd_var_bank_ram_sbe : 1;
+               u64 tx_fifo_crc_ram_sbe : 1;
+               u64 tx_fifo_hdr_ram_sbe : 1;
+               u64 tx_fifo_pkt_ram_sbe : 1;
+               u64 add_work_fifo_sbe : 1;
+               u64 send_mem_fifo_sbe : 1;
+               u64 send_mem_stdn_fifo_sbe : 1;
+               u64 send_mem_ts_fifo_sbe : 1;
+               u64 nxt_link_ptr_ram_sbe : 1;
+               u64 pkt_mrk_ram_sbe : 1;
+               u64 ts_addwork_ram_sbe : 1;
+               u64 reserved_0_41 : 42;
+       } cn78xxp1;
+       struct cvmx_pko_peb_ecc_sbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ecc_sbe_sts0 cvmx_pko_peb_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_peb_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_peb_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_peb_ecc_sbe_sts_cmb0_s {
+               u64 peb_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_peb_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_peb_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_peb_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_peb_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ecc_sbe_sts_cmb0 cvmx_pko_peb_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_peb_eco
+ */
+union cvmx_pko_peb_eco {
+       u64 u64;
+       struct cvmx_pko_peb_eco_s {
+               u64 reserved_32_63 : 32;
+               u64 eco_rw : 32;
+       } s;
+       struct cvmx_pko_peb_eco_s cn73xx;
+       struct cvmx_pko_peb_eco_s cn78xx;
+       struct cvmx_pko_peb_eco_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_eco cvmx_pko_peb_eco_t;
+
+/**
+ * cvmx_pko_peb_err_int
+ */
+union cvmx_pko_peb_err_int {
+       u64 u64;
+       struct cvmx_pko_peb_err_int_s {
+               u64 reserved_10_63 : 54;
+               u64 peb_macx_cfg_wr_err : 1;
+               u64 peb_max_link_err : 1;
+               u64 peb_subd_size_err : 1;
+               u64 peb_subd_addr_err : 1;
+               u64 peb_trunc_err : 1;
+               u64 peb_pad_err : 1;
+               u64 peb_pse_fifo_err : 1;
+               u64 peb_fcs_sop_err : 1;
+               u64 peb_jump_def_err : 1;
+               u64 peb_ext_hdr_def_err : 1;
+       } s;
+       struct cvmx_pko_peb_err_int_s cn73xx;
+       struct cvmx_pko_peb_err_int_s cn78xx;
+       struct cvmx_pko_peb_err_int_s cn78xxp1;
+       struct cvmx_pko_peb_err_int_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_err_int cvmx_pko_peb_err_int_t;
+
+/**
+ * cvmx_pko_peb_ext_hdr_def_err_info
+ */
+union cvmx_pko_peb_ext_hdr_def_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_ext_hdr_def_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_ext_hdr_def_err_info_s cn73xx;
+       struct cvmx_pko_peb_ext_hdr_def_err_info_s cn78xx;
+       struct cvmx_pko_peb_ext_hdr_def_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_ext_hdr_def_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ext_hdr_def_err_info cvmx_pko_peb_ext_hdr_def_err_info_t;
+
+/**
+ * cvmx_pko_peb_fcs_sop_err_info
+ */
+union cvmx_pko_peb_fcs_sop_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_fcs_sop_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_fcs_sop_err_info_s cn73xx;
+       struct cvmx_pko_peb_fcs_sop_err_info_s cn78xx;
+       struct cvmx_pko_peb_fcs_sop_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_fcs_sop_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_fcs_sop_err_info cvmx_pko_peb_fcs_sop_err_info_t;
+
+/**
+ * cvmx_pko_peb_jump_def_err_info
+ */
+union cvmx_pko_peb_jump_def_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_jump_def_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_jump_def_err_info_s cn73xx;
+       struct cvmx_pko_peb_jump_def_err_info_s cn78xx;
+       struct cvmx_pko_peb_jump_def_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_jump_def_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_jump_def_err_info cvmx_pko_peb_jump_def_err_info_t;
+
+/**
+ * cvmx_pko_peb_macx_cfg_wr_err_info
+ */
+union cvmx_pko_peb_macx_cfg_wr_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_macx_cfg_wr_err_info_s {
+               u64 reserved_8_63 : 56;
+               u64 val : 1;
+               u64 mac : 7;
+       } s;
+       struct cvmx_pko_peb_macx_cfg_wr_err_info_s cn73xx;
+       struct cvmx_pko_peb_macx_cfg_wr_err_info_s cn78xx;
+       struct cvmx_pko_peb_macx_cfg_wr_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_macx_cfg_wr_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_macx_cfg_wr_err_info cvmx_pko_peb_macx_cfg_wr_err_info_t;
+
+/**
+ * cvmx_pko_peb_max_link_err_info
+ */
+union cvmx_pko_peb_max_link_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_max_link_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_max_link_err_info_s cn73xx;
+       struct cvmx_pko_peb_max_link_err_info_s cn78xx;
+       struct cvmx_pko_peb_max_link_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_max_link_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_max_link_err_info cvmx_pko_peb_max_link_err_info_t;
+
+/**
+ * cvmx_pko_peb_ncb_cfg
+ */
+union cvmx_pko_peb_ncb_cfg {
+       u64 u64;
+       struct cvmx_pko_peb_ncb_cfg_s {
+               u64 reserved_1_63 : 63;
+               u64 rstp : 1;
+       } s;
+       struct cvmx_pko_peb_ncb_cfg_s cn73xx;
+       struct cvmx_pko_peb_ncb_cfg_s cn78xx;
+       struct cvmx_pko_peb_ncb_cfg_s cn78xxp1;
+       struct cvmx_pko_peb_ncb_cfg_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_ncb_cfg cvmx_pko_peb_ncb_cfg_t;
+
+/**
+ * cvmx_pko_peb_pad_err_info
+ */
+union cvmx_pko_peb_pad_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_pad_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_pad_err_info_s cn73xx;
+       struct cvmx_pko_peb_pad_err_info_s cn78xx;
+       struct cvmx_pko_peb_pad_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_pad_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_pad_err_info cvmx_pko_peb_pad_err_info_t;
+
+/**
+ * cvmx_pko_peb_pse_fifo_err_info
+ */
+union cvmx_pko_peb_pse_fifo_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_pse_fifo_err_info_s {
+               u64 reserved_25_63 : 39;
+               u64 link : 5;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_pse_fifo_err_info_cn73xx {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } cn73xx;
+       struct cvmx_pko_peb_pse_fifo_err_info_s cn78xx;
+       struct cvmx_pko_peb_pse_fifo_err_info_cn73xx cn78xxp1;
+       struct cvmx_pko_peb_pse_fifo_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_pse_fifo_err_info cvmx_pko_peb_pse_fifo_err_info_t;
+
+/**
+ * cvmx_pko_peb_subd_addr_err_info
+ */
+union cvmx_pko_peb_subd_addr_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_subd_addr_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_subd_addr_err_info_s cn73xx;
+       struct cvmx_pko_peb_subd_addr_err_info_s cn78xx;
+       struct cvmx_pko_peb_subd_addr_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_subd_addr_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_subd_addr_err_info cvmx_pko_peb_subd_addr_err_info_t;
+
+/**
+ * cvmx_pko_peb_subd_size_err_info
+ */
+union cvmx_pko_peb_subd_size_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_subd_size_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_subd_size_err_info_s cn73xx;
+       struct cvmx_pko_peb_subd_size_err_info_s cn78xx;
+       struct cvmx_pko_peb_subd_size_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_subd_size_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_subd_size_err_info cvmx_pko_peb_subd_size_err_info_t;
+
+/**
+ * cvmx_pko_peb_trunc_err_info
+ */
+union cvmx_pko_peb_trunc_err_info {
+       u64 u64;
+       struct cvmx_pko_peb_trunc_err_info_s {
+               u64 reserved_20_63 : 44;
+               u64 val : 1;
+               u64 fifo : 7;
+               u64 chan : 12;
+       } s;
+       struct cvmx_pko_peb_trunc_err_info_s cn73xx;
+       struct cvmx_pko_peb_trunc_err_info_s cn78xx;
+       struct cvmx_pko_peb_trunc_err_info_s cn78xxp1;
+       struct cvmx_pko_peb_trunc_err_info_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_trunc_err_info cvmx_pko_peb_trunc_err_info_t;
+
+/**
+ * cvmx_pko_peb_tso_cfg
+ */
+union cvmx_pko_peb_tso_cfg {
+       u64 u64;
+       struct cvmx_pko_peb_tso_cfg_s {
+               u64 reserved_44_63 : 20;
+               u64 fsf : 12;
+               u64 reserved_28_31 : 4;
+               u64 msf : 12;
+               u64 reserved_12_15 : 4;
+               u64 lsf : 12;
+       } s;
+       struct cvmx_pko_peb_tso_cfg_s cn73xx;
+       struct cvmx_pko_peb_tso_cfg_s cn78xx;
+       struct cvmx_pko_peb_tso_cfg_s cn78xxp1;
+       struct cvmx_pko_peb_tso_cfg_s cnf75xx;
+};
+
+typedef union cvmx_pko_peb_tso_cfg cvmx_pko_peb_tso_cfg_t;
+
+/**
+ * cvmx_pko_pq_csr_bus_debug
+ */
+union cvmx_pko_pq_csr_bus_debug {
+       u64 u64;
+       struct cvmx_pko_pq_csr_bus_debug_s {
+               u64 csr_bus_debug : 64;
+       } s;
+       struct cvmx_pko_pq_csr_bus_debug_s cn73xx;
+       struct cvmx_pko_pq_csr_bus_debug_s cn78xx;
+       struct cvmx_pko_pq_csr_bus_debug_s cn78xxp1;
+       struct cvmx_pko_pq_csr_bus_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_pq_csr_bus_debug cvmx_pko_pq_csr_bus_debug_t;
+
+/**
+ * cvmx_pko_pq_debug_green
+ */
+union cvmx_pko_pq_debug_green {
+       u64 u64;
+       struct cvmx_pko_pq_debug_green_s {
+               u64 g_valid : 32;
+               u64 cred_ok_n : 32;
+       } s;
+       struct cvmx_pko_pq_debug_green_s cn73xx;
+       struct cvmx_pko_pq_debug_green_s cn78xx;
+       struct cvmx_pko_pq_debug_green_s cn78xxp1;
+       struct cvmx_pko_pq_debug_green_s cnf75xx;
+};
+
+typedef union cvmx_pko_pq_debug_green cvmx_pko_pq_debug_green_t;
+
+/**
+ * cvmx_pko_pq_debug_links
+ */
+union cvmx_pko_pq_debug_links {
+       u64 u64;
+       struct cvmx_pko_pq_debug_links_s {
+               u64 links_ready : 32;
+               u64 peb_lnk_rdy_ir : 32;
+       } s;
+       struct cvmx_pko_pq_debug_links_s cn73xx;
+       struct cvmx_pko_pq_debug_links_s cn78xx;
+       struct cvmx_pko_pq_debug_links_s cn78xxp1;
+       struct cvmx_pko_pq_debug_links_s cnf75xx;
+};
+
+typedef union cvmx_pko_pq_debug_links cvmx_pko_pq_debug_links_t;
+
+/**
+ * cvmx_pko_pq_debug_yellow
+ */
+union cvmx_pko_pq_debug_yellow {
+       u64 u64;
+       struct cvmx_pko_pq_debug_yellow_s {
+               u64 y_valid : 32;
+               u64 reserved_28_31 : 4;
+               u64 link_vv : 28;
+       } s;
+       struct cvmx_pko_pq_debug_yellow_s cn73xx;
+       struct cvmx_pko_pq_debug_yellow_s cn78xx;
+       struct cvmx_pko_pq_debug_yellow_s cn78xxp1;
+       struct cvmx_pko_pq_debug_yellow_s cnf75xx;
+};
+
+typedef union cvmx_pko_pq_debug_yellow cvmx_pko_pq_debug_yellow_t;
+
+/**
+ * cvmx_pko_pqa_debug
+ */
+union cvmx_pko_pqa_debug {
+       u64 u64;
+       struct cvmx_pko_pqa_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_pqa_debug_s cn73xx;
+       struct cvmx_pko_pqa_debug_s cn78xx;
+       struct cvmx_pko_pqa_debug_s cn78xxp1;
+       struct cvmx_pko_pqa_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_pqa_debug cvmx_pko_pqa_debug_t;
+
+/**
+ * cvmx_pko_pqb_debug
+ *
+ * This register has the same bit fields as PKO_PQA_DEBUG.
+ *
+ */
+union cvmx_pko_pqb_debug {
+       u64 u64;
+       struct cvmx_pko_pqb_debug_s {
+               u64 dbg_vec : 64;
+       } s;
+       struct cvmx_pko_pqb_debug_s cn73xx;
+       struct cvmx_pko_pqb_debug_s cn78xx;
+       struct cvmx_pko_pqb_debug_s cn78xxp1;
+       struct cvmx_pko_pqb_debug_s cnf75xx;
+};
+
+typedef union cvmx_pko_pqb_debug cvmx_pko_pqb_debug_t;
+
+/**
+ * cvmx_pko_pse_dq_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_dq_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_dq_bist_status_s {
+               u64 reserved_8_63 : 56;
+               u64 rt7_sram : 1;
+               u64 rt6_sram : 1;
+               u64 rt5_sram : 1;
+               u64 reserved_4_4 : 1;
+               u64 rt3_sram : 1;
+               u64 rt2_sram : 1;
+               u64 rt1_sram : 1;
+               u64 rt0_sram : 1;
+       } s;
+       struct cvmx_pko_pse_dq_bist_status_cn73xx {
+               u64 reserved_5_63 : 59;
+               u64 wt_sram : 1;
+               u64 reserved_2_3 : 2;
+               u64 rt1_sram : 1;
+               u64 rt0_sram : 1;
+       } cn73xx;
+       struct cvmx_pko_pse_dq_bist_status_cn78xx {
+               u64 reserved_9_63 : 55;
+               u64 wt_sram : 1;
+               u64 rt7_sram : 1;
+               u64 rt6_sram : 1;
+               u64 rt5_sram : 1;
+               u64 rt4_sram : 1;
+               u64 rt3_sram : 1;
+               u64 rt2_sram : 1;
+               u64 rt1_sram : 1;
+               u64 rt0_sram : 1;
+       } cn78xx;
+       struct cvmx_pko_pse_dq_bist_status_cn78xx cn78xxp1;
+       struct cvmx_pko_pse_dq_bist_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_dq_bist_status cvmx_pko_pse_dq_bist_status_t;
+
+/**
+ * cvmx_pko_pse_dq_ecc_ctl0
+ */
+union cvmx_pko_pse_dq_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_dq_ecc_ctl0_s {
+               u64 dq_wt_ram_flip : 2;
+               u64 dq_wt_ram_cdis : 1;
+               u64 dq_rt7_flip : 2;
+               u64 dq_rt7_cdis : 1;
+               u64 dq_rt6_flip : 2;
+               u64 dq_rt6_cdis : 1;
+               u64 dq_rt5_flip : 2;
+               u64 dq_rt5_cdis : 1;
+               u64 dq_rt4_flip : 2;
+               u64 dq_rt4_cdis : 1;
+               u64 dq_rt3_flip : 2;
+               u64 dq_rt3_cdis : 1;
+               u64 dq_rt2_flip : 2;
+               u64 dq_rt2_cdis : 1;
+               u64 dq_rt1_flip : 2;
+               u64 dq_rt1_cdis : 1;
+               u64 dq_rt0_flip : 2;
+               u64 dq_rt0_cdis : 1;
+               u64 reserved_0_36 : 37;
+       } s;
+       struct cvmx_pko_pse_dq_ecc_ctl0_cn73xx {
+               u64 dq_wt_ram_flip : 2;
+               u64 dq_wt_ram_cdis : 1;
+               u64 reserved_43_60 : 18;
+               u64 dq_rt1_flip : 2;
+               u64 dq_rt1_cdis : 1;
+               u64 dq_rt0_flip : 2;
+               u64 dq_rt0_cdis : 1;
+               u64 reserved_0_36 : 37;
+       } cn73xx;
+       struct cvmx_pko_pse_dq_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_dq_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_pse_dq_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_dq_ecc_ctl0 cvmx_pko_pse_dq_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_dq_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_dq_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts0_s {
+               u64 dq_wt_ram_dbe : 1;
+               u64 dq_rt7_dbe : 1;
+               u64 dq_rt6_dbe : 1;
+               u64 dq_rt5_dbe : 1;
+               u64 dq_rt4_dbe : 1;
+               u64 dq_rt3_dbe : 1;
+               u64 dq_rt2_dbe : 1;
+               u64 dq_rt1_dbe : 1;
+               u64 dq_rt0_dbe : 1;
+               u64 reserved_0_54 : 55;
+       } s;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts0_cn73xx {
+               u64 dq_wt_ram_dbe : 1;
+               u64 reserved_57_62 : 6;
+               u64 dq_rt1_dbe : 1;
+               u64 dq_rt0_dbe : 1;
+               u64 reserved_0_54 : 55;
+       } cn73xx;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_dq_ecc_dbe_sts0 cvmx_pko_pse_dq_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_dq_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_dq_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts_cmb0_s {
+               u64 pse_dq_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_dq_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_dq_ecc_dbe_sts_cmb0 cvmx_pko_pse_dq_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_dq_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_dq_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts0_s {
+               u64 dq_wt_ram_sbe : 1;
+               u64 dq_rt7_sbe : 1;
+               u64 dq_rt6_sbe : 1;
+               u64 dq_rt5_sbe : 1;
+               u64 dq_rt4_sbe : 1;
+               u64 dq_rt3_sbe : 1;
+               u64 dq_rt2_sbe : 1;
+               u64 dq_rt1_sbe : 1;
+               u64 dq_rt0_sbe : 1;
+               u64 reserved_0_54 : 55;
+       } s;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts0_cn73xx {
+               u64 dq_wt_ram_sbe : 1;
+               u64 reserved_57_62 : 6;
+               u64 dq_rt1_sbe : 1;
+               u64 dq_rt0_sbe : 1;
+               u64 reserved_0_54 : 55;
+       } cn73xx;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_dq_ecc_sbe_sts0 cvmx_pko_pse_dq_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_dq_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_dq_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts_cmb0_s {
+               u64 pse_dq_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_dq_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_dq_ecc_sbe_sts_cmb0 cvmx_pko_pse_dq_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_pq_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_pq_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_pq_bist_status_s {
+               u64 reserved_15_63 : 49;
+               u64 tp_sram : 1;
+               u64 irq_fifo_sram : 1;
+               u64 wmd_sram : 1;
+               u64 wms_sram : 1;
+               u64 cxd_sram : 1;
+               u64 dqd_sram : 1;
+               u64 dqs_sram : 1;
+               u64 pqd_sram : 1;
+               u64 pqr_sram : 1;
+               u64 pqy_sram : 1;
+               u64 pqg_sram : 1;
+               u64 std_sram : 1;
+               u64 st_sram : 1;
+               u64 reserved_1_1 : 1;
+               u64 cxs_sram : 1;
+       } s;
+       struct cvmx_pko_pse_pq_bist_status_cn73xx {
+               u64 reserved_15_63 : 49;
+               u64 tp_sram : 1;
+               u64 reserved_13_13 : 1;
+               u64 wmd_sram : 1;
+               u64 reserved_11_11 : 1;
+               u64 cxd_sram : 1;
+               u64 dqd_sram : 1;
+               u64 dqs_sram : 1;
+               u64 pqd_sram : 1;
+               u64 pqr_sram : 1;
+               u64 pqy_sram : 1;
+               u64 pqg_sram : 1;
+               u64 std_sram : 1;
+               u64 st_sram : 1;
+               u64 reserved_1_1 : 1;
+               u64 cxs_sram : 1;
+       } cn73xx;
+       struct cvmx_pko_pse_pq_bist_status_s cn78xx;
+       struct cvmx_pko_pse_pq_bist_status_s cn78xxp1;
+       struct cvmx_pko_pse_pq_bist_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_pq_bist_status cvmx_pko_pse_pq_bist_status_t;
+
+/**
+ * cvmx_pko_pse_pq_ecc_ctl0
+ */
+union cvmx_pko_pse_pq_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_pq_ecc_ctl0_s {
+               u64 pq_cxs_ram_flip : 2;
+               u64 pq_cxs_ram_cdis : 1;
+               u64 pq_cxd_ram_flip : 2;
+               u64 pq_cxd_ram_cdis : 1;
+               u64 irq_fifo_sram_flip : 2;
+               u64 irq_fifo_sram_cdis : 1;
+               u64 tp_sram_flip : 2;
+               u64 tp_sram_cdis : 1;
+               u64 pq_std_ram_flip : 2;
+               u64 pq_std_ram_cdis : 1;
+               u64 pq_st_ram_flip : 2;
+               u64 pq_st_ram_cdis : 1;
+               u64 pq_wmd_ram_flip : 2;
+               u64 pq_wmd_ram_cdis : 1;
+               u64 pq_wms_ram_flip : 2;
+               u64 pq_wms_ram_cdis : 1;
+               u64 reserved_0_39 : 40;
+       } s;
+       struct cvmx_pko_pse_pq_ecc_ctl0_cn73xx {
+               u64 pq_cxs_ram_flip : 2;
+               u64 pq_cxs_ram_cdis : 1;
+               u64 pq_cxd_ram_flip : 2;
+               u64 pq_cxd_ram_cdis : 1;
+               u64 reserved_55_57 : 3;
+               u64 tp_sram_flip : 2;
+               u64 tp_sram_cdis : 1;
+               u64 pq_std_ram_flip : 2;
+               u64 pq_std_ram_cdis : 1;
+               u64 pq_st_ram_flip : 2;
+               u64 pq_st_ram_cdis : 1;
+               u64 pq_wmd_ram_flip : 2;
+               u64 pq_wmd_ram_cdis : 1;
+               u64 reserved_0_42 : 43;
+       } cn73xx;
+       struct cvmx_pko_pse_pq_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_pq_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_pse_pq_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_pq_ecc_ctl0 cvmx_pko_pse_pq_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_pq_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_pq_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts0_s {
+               u64 pq_cxs_ram_dbe : 1;
+               u64 pq_cxd_ram_dbe : 1;
+               u64 irq_fifo_sram_dbe : 1;
+               u64 tp_sram_dbe : 1;
+               u64 pq_std_ram_dbe : 1;
+               u64 pq_st_ram_dbe : 1;
+               u64 pq_wmd_ram_dbe : 1;
+               u64 pq_wms_ram_dbe : 1;
+               u64 reserved_0_55 : 56;
+       } s;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts0_cn73xx {
+               u64 pq_cxs_ram_dbe : 1;
+               u64 pq_cxd_ram_dbe : 1;
+               u64 reserved_61_61 : 1;
+               u64 tp_sram_dbe : 1;
+               u64 pq_std_ram_dbe : 1;
+               u64 pq_st_ram_dbe : 1;
+               u64 pq_wmd_ram_dbe : 1;
+               u64 reserved_0_56 : 57;
+       } cn73xx;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_pq_ecc_dbe_sts0 cvmx_pko_pse_pq_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_pq_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_pq_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts_cmb0_s {
+               u64 pse_pq_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_pq_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_pq_ecc_dbe_sts_cmb0 cvmx_pko_pse_pq_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_pq_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_pq_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts0_s {
+               u64 pq_cxs_ram_sbe : 1;
+               u64 pq_cxd_ram_sbe : 1;
+               u64 irq_fifo_sram_sbe : 1;
+               u64 tp_sram_sbe : 1;
+               u64 pq_std_ram_sbe : 1;
+               u64 pq_st_ram_sbe : 1;
+               u64 pq_wmd_ram_sbe : 1;
+               u64 pq_wms_ram_sbe : 1;
+               u64 reserved_0_55 : 56;
+       } s;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts0_cn73xx {
+               u64 pq_cxs_ram_sbe : 1;
+               u64 pq_cxd_ram_sbe : 1;
+               u64 reserved_61_61 : 1;
+               u64 tp_sram_sbe : 1;
+               u64 pq_std_ram_sbe : 1;
+               u64 pq_st_ram_sbe : 1;
+               u64 pq_wmd_ram_sbe : 1;
+               u64 reserved_0_56 : 57;
+       } cn73xx;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_pq_ecc_sbe_sts0 cvmx_pko_pse_pq_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_pq_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_pq_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts_cmb0_s {
+               u64 pse_pq_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_pq_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_pq_ecc_sbe_sts_cmb0 cvmx_pko_pse_pq_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq1_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_sq1_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_sq1_bist_status_s {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 pc_sram : 1;
+               u64 xon_sram : 1;
+               u64 cc_sram : 1;
+               u64 vc1_sram : 1;
+               u64 vc0_sram : 1;
+               u64 reserved_21_22 : 2;
+               u64 tp1_sram : 1;
+               u64 tp0_sram : 1;
+               u64 xo_sram : 1;
+               u64 rt_sram : 1;
+               u64 reserved_9_16 : 8;
+               u64 tw1_cmd_fifo : 1;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 cxd_sram : 1;
+               u64 cxs_sram : 1;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } s;
+       struct cvmx_pko_pse_sq1_bist_status_cn73xx {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 pc_sram : 1;
+               u64 xon_sram : 1;
+               u64 cc_sram : 1;
+               u64 vc1_sram : 1;
+               u64 vc0_sram : 1;
+               u64 reserved_20_22 : 3;
+               u64 tp0_sram : 1;
+               u64 xo_sram : 1;
+               u64 rt_sram : 1;
+               u64 reserved_9_16 : 8;
+               u64 tw1_cmd_fifo : 1;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 cxd_sram : 1;
+               u64 cxs_sram : 1;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } cn73xx;
+       struct cvmx_pko_pse_sq1_bist_status_s cn78xx;
+       struct cvmx_pko_pse_sq1_bist_status_s cn78xxp1;
+       struct cvmx_pko_pse_sq1_bist_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq1_bist_status cvmx_pko_pse_sq1_bist_status_t;
+
+/**
+ * cvmx_pko_pse_sq1_ecc_ctl0
+ */
+union cvmx_pko_pse_sq1_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq1_ecc_ctl0_s {
+               u64 cxs_ram_flip : 2;
+               u64 cxs_ram_cdis : 1;
+               u64 cxd_ram_flip : 2;
+               u64 cxd_ram_cdis : 1;
+               u64 vc1_sram_flip : 2;
+               u64 vc1_sram_cdis : 1;
+               u64 vc0_sram_flip : 2;
+               u64 vc0_sram_cdis : 1;
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 pc_ram_flip : 2;
+               u64 pc_ram_cdis : 1;
+               u64 tw1_cmd_fifo_ram_flip : 2;
+               u64 tw1_cmd_fifo_ram_cdis : 1;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 tp1_sram_flip : 2;
+               u64 tp1_sram_cdis : 1;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 sts1_ram_flip : 2;
+               u64 sts1_ram_cdis : 1;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 std1_ram_flip : 2;
+               u64 std1_ram_cdis : 1;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_9 : 10;
+       } s;
+       struct cvmx_pko_pse_sq1_ecc_ctl0_cn73xx {
+               u64 cxs_ram_flip : 2;
+               u64 cxs_ram_cdis : 1;
+               u64 cxd_ram_flip : 2;
+               u64 cxd_ram_cdis : 1;
+               u64 reserved_55_57 : 3;
+               u64 vc0_sram_flip : 2;
+               u64 vc0_sram_cdis : 1;
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 pc_ram_flip : 2;
+               u64 pc_ram_cdis : 1;
+               u64 reserved_37_39 : 3;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 reserved_31_33 : 3;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 reserved_25_27 : 3;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 reserved_19_21 : 3;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_9 : 10;
+       } cn73xx;
+       struct cvmx_pko_pse_sq1_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_sq1_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_pse_sq1_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq1_ecc_ctl0 cvmx_pko_pse_sq1_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_sq1_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_sq1_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts0_s {
+               u64 cxs_ram_dbe : 1;
+               u64 cxd_ram_dbe : 1;
+               u64 vc1_sram_dbe : 1;
+               u64 vc0_sram_dbe : 1;
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 pc_ram_dbe : 1;
+               u64 tw1_cmd_fifo_ram_dbe : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 tp1_sram_dbe : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 sts1_ram_dbe : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 std1_ram_dbe : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_45 : 46;
+       } s;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts0_cn73xx {
+               u64 cxs_ram_dbe : 1;
+               u64 cxd_ram_dbe : 1;
+               u64 reserved_61_61 : 1;
+               u64 vc0_sram_dbe : 1;
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 pc_ram_dbe : 1;
+               u64 reserved_55_55 : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 reserved_53_53 : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 reserved_51_51 : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 reserved_49_49 : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_45 : 46;
+       } cn73xx;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq1_ecc_dbe_sts0 cvmx_pko_pse_sq1_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0_s {
+               u64 pse_sq1_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0 cvmx_pko_pse_sq1_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq1_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_sq1_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts0_s {
+               u64 cxs_ram_sbe : 1;
+               u64 cxd_ram_sbe : 1;
+               u64 vc1_sram_sbe : 1;
+               u64 vc0_sram_sbe : 1;
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 pc_ram_sbe : 1;
+               u64 tw1_cmd_fifo_ram_sbe : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 tp1_sram_sbe : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 sts1_ram_sbe : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 std1_ram_sbe : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_45 : 46;
+       } s;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts0_cn73xx {
+               u64 cxs_ram_sbe : 1;
+               u64 cxd_ram_sbe : 1;
+               u64 reserved_61_61 : 1;
+               u64 vc0_sram_sbe : 1;
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 pc_ram_sbe : 1;
+               u64 reserved_55_55 : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 reserved_53_53 : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 reserved_51_51 : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 reserved_49_49 : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_45 : 46;
+       } cn73xx;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq1_ecc_sbe_sts0 cvmx_pko_pse_sq1_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0_s {
+               u64 pse_sq1_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0 cvmx_pko_pse_sq1_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq2_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_sq2_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_sq2_bist_status_s {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 reserved_21_27 : 7;
+               u64 tp1_sram : 1;
+               u64 tp0_sram : 1;
+               u64 reserved_18_18 : 1;
+               u64 rt_sram : 1;
+               u64 reserved_9_16 : 8;
+               u64 tw1_cmd_fifo : 1;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 reserved_3_4 : 2;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } s;
+       struct cvmx_pko_pse_sq2_bist_status_cn73xx {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 reserved_20_27 : 8;
+               u64 tp0_sram : 1;
+               u64 reserved_18_18 : 1;
+               u64 rt_sram : 1;
+               u64 reserved_8_16 : 9;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 reserved_3_4 : 2;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } cn73xx;
+       struct cvmx_pko_pse_sq2_bist_status_s cn78xx;
+       struct cvmx_pko_pse_sq2_bist_status_s cn78xxp1;
+       struct cvmx_pko_pse_sq2_bist_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq2_bist_status cvmx_pko_pse_sq2_bist_status_t;
+
+/**
+ * cvmx_pko_pse_sq2_ecc_ctl0
+ */
+union cvmx_pko_pse_sq2_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq2_ecc_ctl0_s {
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 tw1_cmd_fifo_ram_flip : 2;
+               u64 tw1_cmd_fifo_ram_cdis : 1;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 tp1_sram_flip : 2;
+               u64 tp1_sram_cdis : 1;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 sts1_ram_flip : 2;
+               u64 sts1_ram_cdis : 1;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 std1_ram_flip : 2;
+               u64 std1_ram_cdis : 1;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_24 : 25;
+       } s;
+       struct cvmx_pko_pse_sq2_ecc_ctl0_cn73xx {
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 reserved_52_54 : 3;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 reserved_46_48 : 3;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 reserved_40_42 : 3;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 reserved_34_36 : 3;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_24 : 25;
+       } cn73xx;
+       struct cvmx_pko_pse_sq2_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_sq2_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_pse_sq2_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq2_ecc_ctl0 cvmx_pko_pse_sq2_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_sq2_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_sq2_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts0_s {
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 tw1_cmd_fifo_ram_dbe : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 tp1_sram_dbe : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 sts1_ram_dbe : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 std1_ram_dbe : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_50 : 51;
+       } s;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts0_cn73xx {
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 reserved_60_60 : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 reserved_58_58 : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 reserved_56_56 : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 reserved_54_54 : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_50 : 51;
+       } cn73xx;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq2_ecc_dbe_sts0 cvmx_pko_pse_sq2_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0_s {
+               u64 pse_sq2_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0 cvmx_pko_pse_sq2_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq2_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_sq2_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts0_s {
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 tw1_cmd_fifo_ram_sbe : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 tp1_sram_sbe : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 sts1_ram_sbe : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 std1_ram_sbe : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_50 : 51;
+       } s;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts0_cn73xx {
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 reserved_60_60 : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 reserved_58_58 : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 reserved_56_56 : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 reserved_54_54 : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_50 : 51;
+       } cn73xx;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq2_ecc_sbe_sts0 cvmx_pko_pse_sq2_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0_s {
+               u64 pse_sq2_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0 cvmx_pko_pse_sq2_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq3_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_sq3_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_sq3_bist_status_s {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 reserved_23_27 : 5;
+               u64 tp3_sram : 1;
+               u64 tp2_sram : 1;
+               u64 tp1_sram : 1;
+               u64 tp0_sram : 1;
+               u64 reserved_18_18 : 1;
+               u64 rt_sram : 1;
+               u64 reserved_15_16 : 2;
+               u64 tw3_cmd_fifo : 1;
+               u64 reserved_12_13 : 2;
+               u64 tw2_cmd_fifo : 1;
+               u64 reserved_9_10 : 2;
+               u64 tw1_cmd_fifo : 1;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 reserved_3_4 : 2;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } s;
+       struct cvmx_pko_pse_sq3_bist_status_cn73xx {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 reserved_20_27 : 8;
+               u64 tp0_sram : 1;
+               u64 reserved_18_18 : 1;
+               u64 rt_sram : 1;
+               u64 reserved_8_16 : 9;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 reserved_3_4 : 2;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } cn73xx;
+       struct cvmx_pko_pse_sq3_bist_status_s cn78xx;
+       struct cvmx_pko_pse_sq3_bist_status_s cn78xxp1;
+       struct cvmx_pko_pse_sq3_bist_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq3_bist_status cvmx_pko_pse_sq3_bist_status_t;
+
+/**
+ * cvmx_pko_pse_sq3_ecc_ctl0
+ */
+union cvmx_pko_pse_sq3_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq3_ecc_ctl0_s {
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 tw3_cmd_fifo_ram_flip : 2;
+               u64 tw3_cmd_fifo_ram_cdis : 1;
+               u64 tw2_cmd_fifo_ram_flip : 2;
+               u64 tw2_cmd_fifo_ram_cdis : 1;
+               u64 tw1_cmd_fifo_ram_flip : 2;
+               u64 tw1_cmd_fifo_ram_cdis : 1;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 tp3_sram_flip : 2;
+               u64 tp3_sram_cdis : 1;
+               u64 tp2_sram_flip : 2;
+               u64 tp2_sram_cdis : 1;
+               u64 tp1_sram_flip : 2;
+               u64 tp1_sram_cdis : 1;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 sts3_ram_flip : 2;
+               u64 sts3_ram_cdis : 1;
+               u64 sts2_ram_flip : 2;
+               u64 sts2_ram_cdis : 1;
+               u64 sts1_ram_flip : 2;
+               u64 sts1_ram_cdis : 1;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 std3_ram_flip : 2;
+               u64 std3_ram_cdis : 1;
+               u64 std2_ram_flip : 2;
+               u64 std2_ram_cdis : 1;
+               u64 std1_ram_flip : 2;
+               u64 std1_ram_cdis : 1;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_pse_sq3_ecc_ctl0_cn73xx {
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 reserved_46_54 : 9;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 reserved_34_42 : 9;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 reserved_22_30 : 9;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 reserved_10_18 : 9;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } cn73xx;
+       struct cvmx_pko_pse_sq3_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_sq3_ecc_ctl0_s cn78xxp1;
+       struct cvmx_pko_pse_sq3_ecc_ctl0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq3_ecc_ctl0 cvmx_pko_pse_sq3_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_sq3_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_sq3_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts0_s {
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 tw3_cmd_fifo_ram_dbe : 1;
+               u64 tw2_cmd_fifo_ram_dbe : 1;
+               u64 tw1_cmd_fifo_ram_dbe : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 tp3_sram_dbe : 1;
+               u64 tp2_sram_dbe : 1;
+               u64 tp1_sram_dbe : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 sts3_ram_dbe : 1;
+               u64 sts2_ram_dbe : 1;
+               u64 sts1_ram_dbe : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 std3_ram_dbe : 1;
+               u64 std2_ram_dbe : 1;
+               u64 std1_ram_dbe : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_42 : 43;
+       } s;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts0_cn73xx {
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 reserved_58_60 : 3;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 reserved_54_56 : 3;
+               u64 tp0_sram_dbe : 1;
+               u64 reserved_50_52 : 3;
+               u64 sts0_ram_dbe : 1;
+               u64 reserved_46_48 : 3;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_42 : 43;
+       } cn73xx;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq3_ecc_dbe_sts0 cvmx_pko_pse_sq3_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0_s {
+               u64 pse_sq3_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0 cvmx_pko_pse_sq3_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq3_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_sq3_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts0_s {
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 tw3_cmd_fifo_ram_sbe : 1;
+               u64 tw2_cmd_fifo_ram_sbe : 1;
+               u64 tw1_cmd_fifo_ram_sbe : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 tp3_sram_sbe : 1;
+               u64 tp2_sram_sbe : 1;
+               u64 tp1_sram_sbe : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 sts3_ram_sbe : 1;
+               u64 sts2_ram_sbe : 1;
+               u64 sts1_ram_sbe : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 std3_ram_sbe : 1;
+               u64 std2_ram_sbe : 1;
+               u64 std1_ram_sbe : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_42 : 43;
+       } s;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts0_cn73xx {
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 reserved_58_60 : 3;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 reserved_54_56 : 3;
+               u64 tp0_sram_sbe : 1;
+               u64 reserved_50_52 : 3;
+               u64 sts0_ram_sbe : 1;
+               u64 reserved_46_48 : 3;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_42 : 43;
+       } cn73xx;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts0_s cn78xxp1;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts0_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq3_ecc_sbe_sts0 cvmx_pko_pse_sq3_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0_s {
+               u64 pse_sq3_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0_s cn73xx;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0_s cn78xxp1;
+       struct cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0_s cnf75xx;
+};
+
+typedef union cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0 cvmx_pko_pse_sq3_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq4_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_sq4_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_sq4_bist_status_s {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 reserved_23_27 : 5;
+               u64 tp3_sram : 1;
+               u64 tp2_sram : 1;
+               u64 tp1_sram : 1;
+               u64 tp0_sram : 1;
+               u64 reserved_18_18 : 1;
+               u64 rt_sram : 1;
+               u64 reserved_15_16 : 2;
+               u64 tw3_cmd_fifo : 1;
+               u64 reserved_12_13 : 2;
+               u64 tw2_cmd_fifo : 1;
+               u64 reserved_9_10 : 2;
+               u64 tw1_cmd_fifo : 1;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 reserved_3_4 : 2;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } s;
+       struct cvmx_pko_pse_sq4_bist_status_s cn78xx;
+       struct cvmx_pko_pse_sq4_bist_status_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq4_bist_status cvmx_pko_pse_sq4_bist_status_t;
+
+/**
+ * cvmx_pko_pse_sq4_ecc_ctl0
+ */
+union cvmx_pko_pse_sq4_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq4_ecc_ctl0_s {
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 tw3_cmd_fifo_ram_flip : 2;
+               u64 tw3_cmd_fifo_ram_cdis : 1;
+               u64 tw2_cmd_fifo_ram_flip : 2;
+               u64 tw2_cmd_fifo_ram_cdis : 1;
+               u64 tw1_cmd_fifo_ram_flip : 2;
+               u64 tw1_cmd_fifo_ram_cdis : 1;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 tp3_sram_flip : 2;
+               u64 tp3_sram_cdis : 1;
+               u64 tp2_sram_flip : 2;
+               u64 tp2_sram_cdis : 1;
+               u64 tp1_sram_flip : 2;
+               u64 tp1_sram_cdis : 1;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 sts3_ram_flip : 2;
+               u64 sts3_ram_cdis : 1;
+               u64 sts2_ram_flip : 2;
+               u64 sts2_ram_cdis : 1;
+               u64 sts1_ram_flip : 2;
+               u64 sts1_ram_cdis : 1;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 std3_ram_flip : 2;
+               u64 std3_ram_cdis : 1;
+               u64 std2_ram_flip : 2;
+               u64 std2_ram_cdis : 1;
+               u64 std1_ram_flip : 2;
+               u64 std1_ram_cdis : 1;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_pse_sq4_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_sq4_ecc_ctl0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq4_ecc_ctl0 cvmx_pko_pse_sq4_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_sq4_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_sq4_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq4_ecc_dbe_sts0_s {
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 tw3_cmd_fifo_ram_dbe : 1;
+               u64 tw2_cmd_fifo_ram_dbe : 1;
+               u64 tw1_cmd_fifo_ram_dbe : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 tp3_sram_dbe : 1;
+               u64 tp2_sram_dbe : 1;
+               u64 tp1_sram_dbe : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 sts3_ram_dbe : 1;
+               u64 sts2_ram_dbe : 1;
+               u64 sts1_ram_dbe : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 std3_ram_dbe : 1;
+               u64 std2_ram_dbe : 1;
+               u64 std1_ram_dbe : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_42 : 43;
+       } s;
+       struct cvmx_pko_pse_sq4_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq4_ecc_dbe_sts0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq4_ecc_dbe_sts0 cvmx_pko_pse_sq4_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0_s {
+               u64 pse_sq4_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0 cvmx_pko_pse_sq4_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq4_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_sq4_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq4_ecc_sbe_sts0_s {
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 tw3_cmd_fifo_ram_sbe : 1;
+               u64 tw2_cmd_fifo_ram_sbe : 1;
+               u64 tw1_cmd_fifo_ram_sbe : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 tp3_sram_sbe : 1;
+               u64 tp2_sram_sbe : 1;
+               u64 tp1_sram_sbe : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 sts3_ram_sbe : 1;
+               u64 sts2_ram_sbe : 1;
+               u64 sts1_ram_sbe : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 std3_ram_sbe : 1;
+               u64 std2_ram_sbe : 1;
+               u64 std1_ram_sbe : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_42 : 43;
+       } s;
+       struct cvmx_pko_pse_sq4_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq4_ecc_sbe_sts0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq4_ecc_sbe_sts0 cvmx_pko_pse_sq4_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0_s {
+               u64 pse_sq4_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0 cvmx_pko_pse_sq4_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq5_bist_status
+ *
+ * Each bit is the BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
+ *
+ */
+union cvmx_pko_pse_sq5_bist_status {
+       u64 u64;
+       struct cvmx_pko_pse_sq5_bist_status_s {
+               u64 reserved_29_63 : 35;
+               u64 sc_sram : 1;
+               u64 reserved_23_27 : 5;
+               u64 tp3_sram : 1;
+               u64 tp2_sram : 1;
+               u64 tp1_sram : 1;
+               u64 tp0_sram : 1;
+               u64 reserved_18_18 : 1;
+               u64 rt_sram : 1;
+               u64 reserved_15_16 : 2;
+               u64 tw3_cmd_fifo : 1;
+               u64 reserved_12_13 : 2;
+               u64 tw2_cmd_fifo : 1;
+               u64 reserved_9_10 : 2;
+               u64 tw1_cmd_fifo : 1;
+               u64 std_sram : 1;
+               u64 sts_sram : 1;
+               u64 tw0_cmd_fifo : 1;
+               u64 reserved_3_4 : 2;
+               u64 nt_sram : 1;
+               u64 pt_sram : 1;
+               u64 wt_sram : 1;
+       } s;
+       struct cvmx_pko_pse_sq5_bist_status_s cn78xx;
+       struct cvmx_pko_pse_sq5_bist_status_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq5_bist_status cvmx_pko_pse_sq5_bist_status_t;
+
+/**
+ * cvmx_pko_pse_sq5_ecc_ctl0
+ */
+union cvmx_pko_pse_sq5_ecc_ctl0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq5_ecc_ctl0_s {
+               u64 sq_pt_ram_flip : 2;
+               u64 sq_pt_ram_cdis : 1;
+               u64 sq_nt_ram_flip : 2;
+               u64 sq_nt_ram_cdis : 1;
+               u64 rt_ram_flip : 2;
+               u64 rt_ram_cdis : 1;
+               u64 tw3_cmd_fifo_ram_flip : 2;
+               u64 tw3_cmd_fifo_ram_cdis : 1;
+               u64 tw2_cmd_fifo_ram_flip : 2;
+               u64 tw2_cmd_fifo_ram_cdis : 1;
+               u64 tw1_cmd_fifo_ram_flip : 2;
+               u64 tw1_cmd_fifo_ram_cdis : 1;
+               u64 tw0_cmd_fifo_ram_flip : 2;
+               u64 tw0_cmd_fifo_ram_cdis : 1;
+               u64 tp3_sram_flip : 2;
+               u64 tp3_sram_cdis : 1;
+               u64 tp2_sram_flip : 2;
+               u64 tp2_sram_cdis : 1;
+               u64 tp1_sram_flip : 2;
+               u64 tp1_sram_cdis : 1;
+               u64 tp0_sram_flip : 2;
+               u64 tp0_sram_cdis : 1;
+               u64 sts3_ram_flip : 2;
+               u64 sts3_ram_cdis : 1;
+               u64 sts2_ram_flip : 2;
+               u64 sts2_ram_cdis : 1;
+               u64 sts1_ram_flip : 2;
+               u64 sts1_ram_cdis : 1;
+               u64 sts0_ram_flip : 2;
+               u64 sts0_ram_cdis : 1;
+               u64 std3_ram_flip : 2;
+               u64 std3_ram_cdis : 1;
+               u64 std2_ram_flip : 2;
+               u64 std2_ram_cdis : 1;
+               u64 std1_ram_flip : 2;
+               u64 std1_ram_cdis : 1;
+               u64 std0_ram_flip : 2;
+               u64 std0_ram_cdis : 1;
+               u64 wt_ram_flip : 2;
+               u64 wt_ram_cdis : 1;
+               u64 sc_ram_flip : 2;
+               u64 sc_ram_cdis : 1;
+               u64 reserved_0_0 : 1;
+       } s;
+       struct cvmx_pko_pse_sq5_ecc_ctl0_s cn78xx;
+       struct cvmx_pko_pse_sq5_ecc_ctl0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq5_ecc_ctl0 cvmx_pko_pse_sq5_ecc_ctl0_t;
+
+/**
+ * cvmx_pko_pse_sq5_ecc_dbe_sts0
+ */
+union cvmx_pko_pse_sq5_ecc_dbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq5_ecc_dbe_sts0_s {
+               u64 sq_pt_ram_dbe : 1;
+               u64 sq_nt_ram_dbe : 1;
+               u64 rt_ram_dbe : 1;
+               u64 tw3_cmd_fifo_ram_dbe : 1;
+               u64 tw2_cmd_fifo_ram_dbe : 1;
+               u64 tw1_cmd_fifo_ram_dbe : 1;
+               u64 tw0_cmd_fifo_ram_dbe : 1;
+               u64 tp3_sram_dbe : 1;
+               u64 tp2_sram_dbe : 1;
+               u64 tp1_sram_dbe : 1;
+               u64 tp0_sram_dbe : 1;
+               u64 sts3_ram_dbe : 1;
+               u64 sts2_ram_dbe : 1;
+               u64 sts1_ram_dbe : 1;
+               u64 sts0_ram_dbe : 1;
+               u64 std3_ram_dbe : 1;
+               u64 std2_ram_dbe : 1;
+               u64 std1_ram_dbe : 1;
+               u64 std0_ram_dbe : 1;
+               u64 wt_ram_dbe : 1;
+               u64 sc_ram_dbe : 1;
+               u64 reserved_0_42 : 43;
+       } s;
+       struct cvmx_pko_pse_sq5_ecc_dbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq5_ecc_dbe_sts0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq5_ecc_dbe_sts0 cvmx_pko_pse_sq5_ecc_dbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0_s {
+               u64 pse_sq5_dbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0 cvmx_pko_pse_sq5_ecc_dbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_pse_sq5_ecc_sbe_sts0
+ */
+union cvmx_pko_pse_sq5_ecc_sbe_sts0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq5_ecc_sbe_sts0_s {
+               u64 sq_pt_ram_sbe : 1;
+               u64 sq_nt_ram_sbe : 1;
+               u64 rt_ram_sbe : 1;
+               u64 tw3_cmd_fifo_ram_sbe : 1;
+               u64 tw2_cmd_fifo_ram_sbe : 1;
+               u64 tw1_cmd_fifo_ram_sbe : 1;
+               u64 tw0_cmd_fifo_ram_sbe : 1;
+               u64 tp3_sram_sbe : 1;
+               u64 tp2_sram_sbe : 1;
+               u64 tp1_sram_sbe : 1;
+               u64 tp0_sram_sbe : 1;
+               u64 sts3_ram_sbe : 1;
+               u64 sts2_ram_sbe : 1;
+               u64 sts1_ram_sbe : 1;
+               u64 sts0_ram_sbe : 1;
+               u64 std3_ram_sbe : 1;
+               u64 std2_ram_sbe : 1;
+               u64 std1_ram_sbe : 1;
+               u64 std0_ram_sbe : 1;
+               u64 wt_ram_sbe : 1;
+               u64 sc_ram_sbe : 1;
+               u64 reserved_0_42 : 43;
+       } s;
+       struct cvmx_pko_pse_sq5_ecc_sbe_sts0_s cn78xx;
+       struct cvmx_pko_pse_sq5_ecc_sbe_sts0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq5_ecc_sbe_sts0 cvmx_pko_pse_sq5_ecc_sbe_sts0_t;
+
+/**
+ * cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0
+ */
+union cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0 {
+       u64 u64;
+       struct cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0_s {
+               u64 pse_sq5_sbe_cmb0 : 1;
+               u64 reserved_0_62 : 63;
+       } s;
+       struct cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0_s cn78xx;
+       struct cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0_s cn78xxp1;
+};
+
+typedef union cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0 cvmx_pko_pse_sq5_ecc_sbe_sts_cmb0_t;
+
+/**
+ * cvmx_pko_ptf#_status
+ */
+union cvmx_pko_ptfx_status {
+       u64 u64;
+       struct cvmx_pko_ptfx_status_s {
+               u64 reserved_30_63 : 34;
+               u64 tx_fifo_pkt_credit_cnt : 10;
+               u64 total_in_flight_cnt : 8;
+               u64 in_flight_cnt : 7;
+               u64 mac_num : 5;
+       } s;
+       struct cvmx_pko_ptfx_status_s cn73xx;
+       struct cvmx_pko_ptfx_status_s cn78xx;
+       struct cvmx_pko_ptfx_status_s cn78xxp1;
+       struct cvmx_pko_ptfx_status_s cnf75xx;
+};
+
+typedef union cvmx_pko_ptfx_status cvmx_pko_ptfx_status_t;
+
+/**
+ * cvmx_pko_ptf_iobp_cfg
+ */
+union cvmx_pko_ptf_iobp_cfg {
+       u64 u64;
+       struct cvmx_pko_ptf_iobp_cfg_s {
+               u64 reserved_44_63 : 20;
+               u64 iobp1_ds_opt : 1;
+               u64 iobp0_l2_allocate : 1;
+               u64 iobp1_magic_addr : 35;
+               u64 max_read_size : 7;
+       } s;
+       struct cvmx_pko_ptf_iobp_cfg_s cn73xx;
+       struct cvmx_pko_ptf_iobp_cfg_s cn78xx;
+       struct cvmx_pko_ptf_iobp_cfg_s cn78xxp1;
+       struct cvmx_pko_ptf_iobp_cfg_s cnf75xx;
+};
+
+typedef union cvmx_pko_ptf_iobp_cfg cvmx_pko_ptf_iobp_cfg_t;
+
+/**
+ * cvmx_pko_ptgf#_cfg
+ *
+ * This register configures a PKO TX FIFO group. PKO supports up to 17 independent
+ * TX FIFOs, where 0-15 are physical and 16 is Virtual/NULL. (PKO drops packets
+ * targeting the NULL FIFO, returning their buffers to the FPA.) PKO puts each
+ * FIFO into one of five groups:
+ *
+ * <pre>
+ *    CSR Name       FIFO's in FIFO Group
+ *   ------------------------------------
+ *   PKO_PTGF0_CFG      0,  1,  2,  3
+ *   PKO_PTGF1_CFG      4,  5,  6,  7
+ *   PKO_PTGF2_CFG      8,  9, 10, 11
+ *   PKO_PTGF3_CFG     12, 13, 14, 15
+ *   PKO_PTGF4_CFG      Virtual/NULL
+ * </pre>
+ */
+union cvmx_pko_ptgfx_cfg {
+       u64 u64;
+       struct cvmx_pko_ptgfx_cfg_s {
+               u64 reserved_7_63 : 57;
+               u64 reset : 1;
+               u64 rate : 3;
+               u64 size : 3;
+       } s;
+       struct cvmx_pko_ptgfx_cfg_cn73xx {
+               u64 reserved_7_63 : 57;
+               u64 reset : 1;
+               u64 reserved_5_5 : 1;
+               u64 rate : 2;
+               u64 size : 3;
+       } cn73xx;
+       struct cvmx_pko_ptgfx_cfg_s cn78xx;
+       struct cvmx_pko_ptgfx_cfg_s cn78xxp1;
+       struct cvmx_pko_ptgfx_cfg_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_ptgfx_cfg cvmx_pko_ptgfx_cfg_t;
+
+/**
+ * cvmx_pko_reg_bist_result
+ *
+ * Notes:
+ * Access to the internal BiST results
+ * Each bit is the BiST result of an individual memory (per bit, 0=pass and 1=fail).
+ */
+union cvmx_pko_reg_bist_result {
+       u64 u64;
+       struct cvmx_pko_reg_bist_result_s {
+               u64 reserved_0_63 : 64;
+       } s;
+       struct cvmx_pko_reg_bist_result_cn30xx {
+               u64 reserved_27_63 : 37;
+               u64 psb2 : 5;
+               u64 count : 1;
+               u64 rif : 1;
+               u64 wif : 1;
+               u64 ncb : 1;
+               u64 out : 1;
+               u64 crc : 1;
+               u64 chk : 1;
+               u64 qsb : 2;
+               u64 qcb : 2;
+               u64 pdb : 4;
+               u64 psb : 7;
+       } cn30xx;
+       struct cvmx_pko_reg_bist_result_cn30xx cn31xx;
+       struct cvmx_pko_reg_bist_result_cn30xx cn38xx;
+       struct cvmx_pko_reg_bist_result_cn30xx cn38xxp2;
+       struct cvmx_pko_reg_bist_result_cn50xx {
+               u64 reserved_33_63 : 31;
+               u64 csr : 1;
+               u64 iob : 1;
+               u64 out_crc : 1;
+               u64 out_ctl : 3;
+               u64 out_sta : 1;
+               u64 out_wif : 1;
+               u64 prt_chk : 3;
+               u64 prt_nxt : 1;
+               u64 prt_psb : 6;
+               u64 ncb_inb : 2;
+               u64 prt_qcb : 2;
+               u64 prt_qsb : 3;
+               u64 dat_dat : 4;
+               u64 dat_ptr : 4;
+       } cn50xx;
+       struct cvmx_pko_reg_bist_result_cn52xx {
+               u64 reserved_35_63 : 29;
+               u64 csr : 1;
+               u64 iob : 1;
+               u64 out_dat : 1;
+               u64 out_ctl : 3;
+               u64 out_sta : 1;
+               u64 out_wif : 1;
+               u64 prt_chk : 3;
+               u64 prt_nxt : 1;
+               u64 prt_psb : 8;
+               u64 ncb_inb : 2;
+               u64 prt_qcb : 2;
+               u64 prt_qsb : 3;
+               u64 prt_ctl : 2;
+               u64 dat_dat : 2;
+               u64 dat_ptr : 4;
+       } cn52xx;
+       struct cvmx_pko_reg_bist_result_cn52xx cn52xxp1;
+       struct cvmx_pko_reg_bist_result_cn52xx cn56xx;
+       struct cvmx_pko_reg_bist_result_cn52xx cn56xxp1;
+       struct cvmx_pko_reg_bist_result_cn50xx cn58xx;
+       struct cvmx_pko_reg_bist_result_cn50xx cn58xxp1;
+       struct cvmx_pko_reg_bist_result_cn52xx cn61xx;
+       struct cvmx_pko_reg_bist_result_cn52xx cn63xx;
+       struct cvmx_pko_reg_bist_result_cn52xx cn63xxp1;
+       struct cvmx_pko_reg_bist_result_cn52xx cn66xx;
+       struct cvmx_pko_reg_bist_result_cn68xx {
+               u64 reserved_36_63 : 28;
+               u64 crc : 1;
+               u64 csr : 1;
+               u64 iob : 1;
+               u64 out_dat : 1;
+               u64 reserved_31_31 : 1;
+               u64 out_ctl : 2;
+               u64 out_sta : 1;
+               u64 out_wif : 1;
+               u64 prt_chk : 3;
+               u64 prt_nxt : 1;
+               u64 prt_psb7 : 1;
+               u64 reserved_21_21 : 1;
+               u64 prt_psb : 6;
+               u64 ncb_inb : 2;
+               u64 prt_qcb : 2;
+               u64 prt_qsb : 3;
+               u64 prt_ctl : 2;
+               u64 dat_dat : 2;
+               u64 dat_ptr : 4;
+       } cn68xx;
+       struct cvmx_pko_reg_bist_result_cn68xxp1 {
+               u64 reserved_35_63 : 29;
+               u64 csr : 1;
+               u64 iob : 1;
+               u64 out_dat : 1;
+               u64 reserved_31_31 : 1;
+               u64 out_ctl : 2;
+               u64 out_sta : 1;
+               u64 out_wif : 1;
+               u64 prt_chk : 3;
+               u64 prt_nxt : 1;
+               u64 prt_psb7 : 1;
+               u64 reserved_21_21 : 1;
+               u64 prt_psb : 6;
+               u64 ncb_inb : 2;
+               u64 prt_qcb : 2;
+               u64 prt_qsb : 3;
+               u64 prt_ctl : 2;
+               u64 dat_dat : 2;
+               u64 dat_ptr : 4;
+       } cn68xxp1;
+       struct cvmx_pko_reg_bist_result_cn70xx {
+               u64 reserved_30_63 : 34;
+               u64 csr : 1;
+               u64 iob : 1;
+               u64 out_dat : 1;
+               u64 out_ctl : 1;
+               u64 out_sta : 1;
+               u64 out_wif : 1;
+               u64 prt_chk : 3;
+               u64 prt_nxt : 1;
+               u64 prt_psb : 8;
+               u64 ncb_inb : 1;
+               u64 prt_qcb : 1;
+               u64 prt_qsb : 2;
+               u64 prt_ctl : 2;
+               u64 dat_dat : 2;
+               u64 dat_ptr : 4;
+       } cn70xx;
+       struct cvmx_pko_reg_bist_result_cn70xx cn70xxp1;
+       struct cvmx_pko_reg_bist_result_cn52xx cnf71xx;
+};
+
+typedef union cvmx_pko_reg_bist_result cvmx_pko_reg_bist_result_t;
+
+/**
+ * cvmx_pko_reg_cmd_buf
+ *
+ * Notes:
+ * Sets the command buffer parameters
+ * The size of the command buffer segments is measured in uint64s.  The pool specifies (1 of 8 free
+ * lists to be used when freeing command buffer segments.
+ */
+union cvmx_pko_reg_cmd_buf {
+       u64 u64;
+       struct cvmx_pko_reg_cmd_buf_s {
+               u64 reserved_23_63 : 41;
+               u64 pool : 3;
+               u64 reserved_13_19 : 7;
+               u64 size : 13;
+       } s;
+       struct cvmx_pko_reg_cmd_buf_s cn30xx;
+       struct cvmx_pko_reg_cmd_buf_s cn31xx;
+       struct cvmx_pko_reg_cmd_buf_s cn38xx;
+       struct cvmx_pko_reg_cmd_buf_s cn38xxp2;
+       struct cvmx_pko_reg_cmd_buf_s cn50xx;
+       struct cvmx_pko_reg_cmd_buf_s cn52xx;
+       struct cvmx_pko_reg_cmd_buf_s cn52xxp1;
+       struct cvmx_pko_reg_cmd_buf_s cn56xx;
+       struct cvmx_pko_reg_cmd_buf_s cn56xxp1;
+       struct cvmx_pko_reg_cmd_buf_s cn58xx;
+       struct cvmx_pko_reg_cmd_buf_s cn58xxp1;
+       struct cvmx_pko_reg_cmd_buf_s cn61xx;
+       struct cvmx_pko_reg_cmd_buf_s cn63xx;
+       struct cvmx_pko_reg_cmd_buf_s cn63xxp1;
+       struct cvmx_pko_reg_cmd_buf_s cn66xx;
+       struct cvmx_pko_reg_cmd_buf_s cn68xx;
+       struct cvmx_pko_reg_cmd_buf_s cn68xxp1;
+       struct cvmx_pko_reg_cmd_buf_cn70xx {
+               u64 reserved_23_63 : 41;
+               u64 pool : 3;
+               u64 reserved_19_13 : 7;
+               u64 size : 13;
+       } cn70xx;
+       struct cvmx_pko_reg_cmd_buf_cn70xx cn70xxp1;
+       struct cvmx_pko_reg_cmd_buf_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_cmd_buf cvmx_pko_reg_cmd_buf_t;
+
+/**
+ * cvmx_pko_reg_crc_ctl#
+ *
+ * Notes:
+ * Controls datapath reflection when calculating CRC
+ *
+ */
+union cvmx_pko_reg_crc_ctlx {
+       u64 u64;
+       struct cvmx_pko_reg_crc_ctlx_s {
+               u64 reserved_2_63 : 62;
+               u64 invres : 1;
+               u64 refin : 1;
+       } s;
+       struct cvmx_pko_reg_crc_ctlx_s cn38xx;
+       struct cvmx_pko_reg_crc_ctlx_s cn38xxp2;
+       struct cvmx_pko_reg_crc_ctlx_s cn58xx;
+       struct cvmx_pko_reg_crc_ctlx_s cn58xxp1;
+};
+
+typedef union cvmx_pko_reg_crc_ctlx cvmx_pko_reg_crc_ctlx_t;
+
+/**
+ * cvmx_pko_reg_crc_enable
+ *
+ * Notes:
+ * Enables CRC for the GMX ports.
+ *
+ */
+union cvmx_pko_reg_crc_enable {
+       u64 u64;
+       struct cvmx_pko_reg_crc_enable_s {
+               u64 reserved_32_63 : 32;
+               u64 enable : 32;
+       } s;
+       struct cvmx_pko_reg_crc_enable_s cn38xx;
+       struct cvmx_pko_reg_crc_enable_s cn38xxp2;
+       struct cvmx_pko_reg_crc_enable_s cn58xx;
+       struct cvmx_pko_reg_crc_enable_s cn58xxp1;
+};
+
+typedef union cvmx_pko_reg_crc_enable cvmx_pko_reg_crc_enable_t;
+
+/**
+ * cvmx_pko_reg_crc_iv#
+ *
+ * Notes:
+ * Determines the IV used by the CRC algorithm
+ * * PKO_CRC_IV
+ *  PKO_CRC_IV controls the initial state of the CRC algorithm.  Octane can
+ *  support a wide range of CRC algorithms and as such, the IV must be
+ *  carefully constructed to meet the specific algorithm.  The code below
+ *  determines the value to program into Octane based on the algorthim's IV
+ *  and width.  In the case of Octane, the width should always be 32.
+ *
+ *  PKO_CRC_IV0 sets the IV for ports 0-15 while PKO_CRC_IV1 sets the IV for
+ *  ports 16-31.
+ *
+ *   @verbatim
+ *   unsigned octane_crc_iv(unsigned algorithm_iv, unsigned poly, unsigned w)
+ *   [
+ *     int i;
+ *     int doit;
+ *     unsigned int current_val = algorithm_iv;
+ *
+ *     for(i = 0; i < w; i++) [
+ *       doit = current_val & 0x1;
+ *
+ *       if(doit) current_val ^= poly;
+ *       assert(!(current_val & 0x1));
+ *
+ *       current_val = (current_val >> 1) | (doit << (w-1));
+ *     ]
+ *
+ *     return current_val;
+ *   ]
+ *   @endverbatim
+ */
+union cvmx_pko_reg_crc_ivx {
+       u64 u64;
+       struct cvmx_pko_reg_crc_ivx_s {
+               u64 reserved_32_63 : 32;
+               u64 iv : 32;
+       } s;
+       struct cvmx_pko_reg_crc_ivx_s cn38xx;
+       struct cvmx_pko_reg_crc_ivx_s cn38xxp2;
+       struct cvmx_pko_reg_crc_ivx_s cn58xx;
+       struct cvmx_pko_reg_crc_ivx_s cn58xxp1;
+};
+
+typedef union cvmx_pko_reg_crc_ivx cvmx_pko_reg_crc_ivx_t;
+
+/**
+ * cvmx_pko_reg_debug0
+ *
+ * Notes:
+ * Note that this CSR is present only in chip revisions beginning with pass2.
+ *
+ */
+union cvmx_pko_reg_debug0 {
+       u64 u64;
+       struct cvmx_pko_reg_debug0_s {
+               u64 asserts : 64;
+       } s;
+       struct cvmx_pko_reg_debug0_cn30xx {
+               u64 reserved_17_63 : 47;
+               u64 asserts : 17;
+       } cn30xx;
+       struct cvmx_pko_reg_debug0_cn30xx cn31xx;
+       struct cvmx_pko_reg_debug0_cn30xx cn38xx;
+       struct cvmx_pko_reg_debug0_cn30xx cn38xxp2;
+       struct cvmx_pko_reg_debug0_s cn50xx;
+       struct cvmx_pko_reg_debug0_s cn52xx;
+       struct cvmx_pko_reg_debug0_s cn52xxp1;
+       struct cvmx_pko_reg_debug0_s cn56xx;
+       struct cvmx_pko_reg_debug0_s cn56xxp1;
+       struct cvmx_pko_reg_debug0_s cn58xx;
+       struct cvmx_pko_reg_debug0_s cn58xxp1;
+       struct cvmx_pko_reg_debug0_s cn61xx;
+       struct cvmx_pko_reg_debug0_s cn63xx;
+       struct cvmx_pko_reg_debug0_s cn63xxp1;
+       struct cvmx_pko_reg_debug0_s cn66xx;
+       struct cvmx_pko_reg_debug0_s cn68xx;
+       struct cvmx_pko_reg_debug0_s cn68xxp1;
+       struct cvmx_pko_reg_debug0_s cn70xx;
+       struct cvmx_pko_reg_debug0_s cn70xxp1;
+       struct cvmx_pko_reg_debug0_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_debug0 cvmx_pko_reg_debug0_t;
+
+/**
+ * cvmx_pko_reg_debug1
+ */
+union cvmx_pko_reg_debug1 {
+       u64 u64;
+       struct cvmx_pko_reg_debug1_s {
+               u64 asserts : 64;
+       } s;
+       struct cvmx_pko_reg_debug1_s cn50xx;
+       struct cvmx_pko_reg_debug1_s cn52xx;
+       struct cvmx_pko_reg_debug1_s cn52xxp1;
+       struct cvmx_pko_reg_debug1_s cn56xx;
+       struct cvmx_pko_reg_debug1_s cn56xxp1;
+       struct cvmx_pko_reg_debug1_s cn58xx;
+       struct cvmx_pko_reg_debug1_s cn58xxp1;
+       struct cvmx_pko_reg_debug1_s cn61xx;
+       struct cvmx_pko_reg_debug1_s cn63xx;
+       struct cvmx_pko_reg_debug1_s cn63xxp1;
+       struct cvmx_pko_reg_debug1_s cn66xx;
+       struct cvmx_pko_reg_debug1_s cn68xx;
+       struct cvmx_pko_reg_debug1_s cn68xxp1;
+       struct cvmx_pko_reg_debug1_s cn70xx;
+       struct cvmx_pko_reg_debug1_s cn70xxp1;
+       struct cvmx_pko_reg_debug1_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_debug1 cvmx_pko_reg_debug1_t;
+
+/**
+ * cvmx_pko_reg_debug2
+ */
+union cvmx_pko_reg_debug2 {
+       u64 u64;
+       struct cvmx_pko_reg_debug2_s {
+               u64 asserts : 64;
+       } s;
+       struct cvmx_pko_reg_debug2_s cn50xx;
+       struct cvmx_pko_reg_debug2_s cn52xx;
+       struct cvmx_pko_reg_debug2_s cn52xxp1;
+       struct cvmx_pko_reg_debug2_s cn56xx;
+       struct cvmx_pko_reg_debug2_s cn56xxp1;
+       struct cvmx_pko_reg_debug2_s cn58xx;
+       struct cvmx_pko_reg_debug2_s cn58xxp1;
+       struct cvmx_pko_reg_debug2_s cn61xx;
+       struct cvmx_pko_reg_debug2_s cn63xx;
+       struct cvmx_pko_reg_debug2_s cn63xxp1;
+       struct cvmx_pko_reg_debug2_s cn66xx;
+       struct cvmx_pko_reg_debug2_s cn68xx;
+       struct cvmx_pko_reg_debug2_s cn68xxp1;
+       struct cvmx_pko_reg_debug2_s cn70xx;
+       struct cvmx_pko_reg_debug2_s cn70xxp1;
+       struct cvmx_pko_reg_debug2_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_debug2 cvmx_pko_reg_debug2_t;
+
+/**
+ * cvmx_pko_reg_debug3
+ */
+union cvmx_pko_reg_debug3 {
+       u64 u64;
+       struct cvmx_pko_reg_debug3_s {
+               u64 asserts : 64;
+       } s;
+       struct cvmx_pko_reg_debug3_s cn50xx;
+       struct cvmx_pko_reg_debug3_s cn52xx;
+       struct cvmx_pko_reg_debug3_s cn52xxp1;
+       struct cvmx_pko_reg_debug3_s cn56xx;
+       struct cvmx_pko_reg_debug3_s cn56xxp1;
+       struct cvmx_pko_reg_debug3_s cn58xx;
+       struct cvmx_pko_reg_debug3_s cn58xxp1;
+       struct cvmx_pko_reg_debug3_s cn61xx;
+       struct cvmx_pko_reg_debug3_s cn63xx;
+       struct cvmx_pko_reg_debug3_s cn63xxp1;
+       struct cvmx_pko_reg_debug3_s cn66xx;
+       struct cvmx_pko_reg_debug3_s cn68xx;
+       struct cvmx_pko_reg_debug3_s cn68xxp1;
+       struct cvmx_pko_reg_debug3_s cn70xx;
+       struct cvmx_pko_reg_debug3_s cn70xxp1;
+       struct cvmx_pko_reg_debug3_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_debug3 cvmx_pko_reg_debug3_t;
+
+/**
+ * cvmx_pko_reg_debug4
+ */
+union cvmx_pko_reg_debug4 {
+       u64 u64;
+       struct cvmx_pko_reg_debug4_s {
+               u64 asserts : 64;
+       } s;
+       struct cvmx_pko_reg_debug4_s cn68xx;
+       struct cvmx_pko_reg_debug4_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_debug4 cvmx_pko_reg_debug4_t;
+
+/**
+ * cvmx_pko_reg_engine_inflight
+ *
+ * Notes:
+ * Sets the maximum number of inflight packets, per engine.  Values greater than 4 are illegal.
+ * Setting an engine's value to 0 effectively stops the engine.
+ */
+union cvmx_pko_reg_engine_inflight {
+       u64 u64;
+       struct cvmx_pko_reg_engine_inflight_s {
+               u64 engine15 : 4;
+               u64 engine14 : 4;
+               u64 engine13 : 4;
+               u64 engine12 : 4;
+               u64 engine11 : 4;
+               u64 engine10 : 4;
+               u64 engine9 : 4;
+               u64 engine8 : 4;
+               u64 engine7 : 4;
+               u64 engine6 : 4;
+               u64 engine5 : 4;
+               u64 engine4 : 4;
+               u64 engine3 : 4;
+               u64 engine2 : 4;
+               u64 engine1 : 4;
+               u64 engine0 : 4;
+       } s;
+       struct cvmx_pko_reg_engine_inflight_cn52xx {
+               u64 reserved_40_63 : 24;
+               u64 engine9 : 4;
+               u64 engine8 : 4;
+               u64 engine7 : 4;
+               u64 engine6 : 4;
+               u64 engine5 : 4;
+               u64 engine4 : 4;
+               u64 engine3 : 4;
+               u64 engine2 : 4;
+               u64 engine1 : 4;
+               u64 engine0 : 4;
+       } cn52xx;
+       struct cvmx_pko_reg_engine_inflight_cn52xx cn52xxp1;
+       struct cvmx_pko_reg_engine_inflight_cn52xx cn56xx;
+       struct cvmx_pko_reg_engine_inflight_cn52xx cn56xxp1;
+       struct cvmx_pko_reg_engine_inflight_cn61xx {
+               u64 reserved_56_63 : 8;
+               u64 engine13 : 4;
+               u64 engine12 : 4;
+               u64 engine11 : 4;
+               u64 engine10 : 4;
+               u64 engine9 : 4;
+               u64 engine8 : 4;
+               u64 engine7 : 4;
+               u64 engine6 : 4;
+               u64 engine5 : 4;
+               u64 engine4 : 4;
+               u64 engine3 : 4;
+               u64 engine2 : 4;
+               u64 engine1 : 4;
+               u64 engine0 : 4;
+       } cn61xx;
+       struct cvmx_pko_reg_engine_inflight_cn63xx {
+               u64 reserved_48_63 : 16;
+               u64 engine11 : 4;
+               u64 engine10 : 4;
+               u64 engine9 : 4;
+               u64 engine8 : 4;
+               u64 engine7 : 4;
+               u64 engine6 : 4;
+               u64 engine5 : 4;
+               u64 engine4 : 4;
+               u64 engine3 : 4;
+               u64 engine2 : 4;
+               u64 engine1 : 4;
+               u64 engine0 : 4;
+       } cn63xx;
+       struct cvmx_pko_reg_engine_inflight_cn63xx cn63xxp1;
+       struct cvmx_pko_reg_engine_inflight_cn61xx cn66xx;
+       struct cvmx_pko_reg_engine_inflight_s cn68xx;
+       struct cvmx_pko_reg_engine_inflight_s cn68xxp1;
+       struct cvmx_pko_reg_engine_inflight_cn61xx cn70xx;
+       struct cvmx_pko_reg_engine_inflight_cn61xx cn70xxp1;
+       struct cvmx_pko_reg_engine_inflight_cn61xx cnf71xx;
+};
+
+typedef union cvmx_pko_reg_engine_inflight cvmx_pko_reg_engine_inflight_t;
+
+/**
+ * cvmx_pko_reg_engine_inflight1
+ *
+ * Notes:
+ * Sets the maximum number of inflight packets, per engine.  Values greater than 8 are illegal.
+ * Setting an engine's value to 0 effectively stops the engine.
+ */
+union cvmx_pko_reg_engine_inflight1 {
+       u64 u64;
+       struct cvmx_pko_reg_engine_inflight1_s {
+               u64 reserved_16_63 : 48;
+               u64 engine19 : 4;
+               u64 engine18 : 4;
+               u64 engine17 : 4;
+               u64 engine16 : 4;
+       } s;
+       struct cvmx_pko_reg_engine_inflight1_s cn68xx;
+       struct cvmx_pko_reg_engine_inflight1_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_engine_inflight1 cvmx_pko_reg_engine_inflight1_t;
+
+/**
+ * cvmx_pko_reg_engine_storage#
+ *
+ * Notes:
+ * The PKO has 40KB of local storage, consisting of 20, 2KB chunks.  Up to 15 contiguous chunks may be mapped per engine.
+ * The total of all mapped storage must not exceed 40KB.
+ */
+union cvmx_pko_reg_engine_storagex {
+       u64 u64;
+       struct cvmx_pko_reg_engine_storagex_s {
+               u64 engine15 : 4;
+               u64 engine14 : 4;
+               u64 engine13 : 4;
+               u64 engine12 : 4;
+               u64 engine11 : 4;
+               u64 engine10 : 4;
+               u64 engine9 : 4;
+               u64 engine8 : 4;
+               u64 engine7 : 4;
+               u64 engine6 : 4;
+               u64 engine5 : 4;
+               u64 engine4 : 4;
+               u64 engine3 : 4;
+               u64 engine2 : 4;
+               u64 engine1 : 4;
+               u64 engine0 : 4;
+       } s;
+       struct cvmx_pko_reg_engine_storagex_s cn68xx;
+       struct cvmx_pko_reg_engine_storagex_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_engine_storagex cvmx_pko_reg_engine_storagex_t;
+
+/**
+ * cvmx_pko_reg_engine_thresh
+ *
+ * Notes:
+ * When not enabled, packet data may be sent as soon as it is written into PKO's internal buffers.
+ * When enabled and the packet fits entirely in the PKO's internal buffer, none of the packet data will
+ * be sent until all of it has been written into the PKO's internal buffer.  Note that a packet is
+ * considered to fit entirely only if the packet's size is <= BUFFER_SIZE-8.  When enabled and the
+ * packet does not fit entirely in the PKO's internal buffer, none of the packet data will be sent until
+ * at least BUFFER_SIZE-256 bytes of the packet have been written into the PKO's internal buffer
+ * (note that BUFFER_SIZE is a function of PKO_REG_GMX_PORT_MODE above)
+ */
+union cvmx_pko_reg_engine_thresh {
+       u64 u64;
+       struct cvmx_pko_reg_engine_thresh_s {
+               u64 reserved_20_63 : 44;
+               u64 mask : 20;
+       } s;
+       struct cvmx_pko_reg_engine_thresh_cn52xx {
+               u64 reserved_10_63 : 54;
+               u64 mask : 10;
+       } cn52xx;
+       struct cvmx_pko_reg_engine_thresh_cn52xx cn52xxp1;
+       struct cvmx_pko_reg_engine_thresh_cn52xx cn56xx;
+       struct cvmx_pko_reg_engine_thresh_cn52xx cn56xxp1;
+       struct cvmx_pko_reg_engine_thresh_cn61xx {
+               u64 reserved_14_63 : 50;
+               u64 mask : 14;
+       } cn61xx;
+       struct cvmx_pko_reg_engine_thresh_cn63xx {
+               u64 reserved_12_63 : 52;
+               u64 mask : 12;
+       } cn63xx;
+       struct cvmx_pko_reg_engine_thresh_cn63xx cn63xxp1;
+       struct cvmx_pko_reg_engine_thresh_cn61xx cn66xx;
+       struct cvmx_pko_reg_engine_thresh_s cn68xx;
+       struct cvmx_pko_reg_engine_thresh_s cn68xxp1;
+       struct cvmx_pko_reg_engine_thresh_cn61xx cn70xx;
+       struct cvmx_pko_reg_engine_thresh_cn61xx cn70xxp1;
+       struct cvmx_pko_reg_engine_thresh_cn61xx cnf71xx;
+};
+
+typedef union cvmx_pko_reg_engine_thresh cvmx_pko_reg_engine_thresh_t;
+
+/**
+ * cvmx_pko_reg_error
+ *
+ * Notes:
+ * Note that this CSR is present only in chip revisions beginning with pass2.
+ *
+ */
+union cvmx_pko_reg_error {
+       u64 u64;
+       struct cvmx_pko_reg_error_s {
+               u64 reserved_4_63 : 60;
+               u64 loopback : 1;
+               u64 currzero : 1;
+               u64 doorbell : 1;
+               u64 parity : 1;
+       } s;
+       struct cvmx_pko_reg_error_cn30xx {
+               u64 reserved_2_63 : 62;
+               u64 doorbell : 1;
+               u64 parity : 1;
+       } cn30xx;
+       struct cvmx_pko_reg_error_cn30xx cn31xx;
+       struct cvmx_pko_reg_error_cn30xx cn38xx;
+       struct cvmx_pko_reg_error_cn30xx cn38xxp2;
+       struct cvmx_pko_reg_error_cn50xx {
+               u64 reserved_3_63 : 61;
+               u64 currzero : 1;
+               u64 doorbell : 1;
+               u64 parity : 1;
+       } cn50xx;
+       struct cvmx_pko_reg_error_cn50xx cn52xx;
+       struct cvmx_pko_reg_error_cn50xx cn52xxp1;
+       struct cvmx_pko_reg_error_cn50xx cn56xx;
+       struct cvmx_pko_reg_error_cn50xx cn56xxp1;
+       struct cvmx_pko_reg_error_cn50xx cn58xx;
+       struct cvmx_pko_reg_error_cn50xx cn58xxp1;
+       struct cvmx_pko_reg_error_cn50xx cn61xx;
+       struct cvmx_pko_reg_error_cn50xx cn63xx;
+       struct cvmx_pko_reg_error_cn50xx cn63xxp1;
+       struct cvmx_pko_reg_error_cn50xx cn66xx;
+       struct cvmx_pko_reg_error_s cn68xx;
+       struct cvmx_pko_reg_error_s cn68xxp1;
+       struct cvmx_pko_reg_error_cn50xx cn70xx;
+       struct cvmx_pko_reg_error_cn50xx cn70xxp1;
+       struct cvmx_pko_reg_error_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_reg_error cvmx_pko_reg_error_t;
+
+/**
+ * cvmx_pko_reg_flags
+ *
+ * Notes:
+ * When set, ENA_PKO enables the PKO picker and places the PKO in normal operation.  When set, ENA_DWB
+ * enables the use of DontWriteBacks during the buffer freeing operations.  When not set, STORE_BE inverts
+ * bits[2:0] of the STORE0 byte write address.  When set, RESET causes a 4-cycle reset pulse to the
+ * entire box.
+ */
+union cvmx_pko_reg_flags {
+       u64 u64;
+       struct cvmx_pko_reg_flags_s {
+               u64 reserved_9_63 : 55;
+               u64 dis_perf3 : 1;
+               u64 dis_perf2 : 1;
+               u64 dis_perf1 : 1;
+               u64 dis_perf0 : 1;
+               u64 ena_throttle : 1;
+               u64 reset : 1;
+               u64 store_be : 1;
+               u64 ena_dwb : 1;
+               u64 ena_pko : 1;
+       } s;
+       struct cvmx_pko_reg_flags_cn30xx {
+               u64 reserved_4_63 : 60;
+               u64 reset : 1;
+               u64 store_be : 1;
+               u64 ena_dwb : 1;
+               u64 ena_pko : 1;
+       } cn30xx;
+       struct cvmx_pko_reg_flags_cn30xx cn31xx;
+       struct cvmx_pko_reg_flags_cn30xx cn38xx;
+       struct cvmx_pko_reg_flags_cn30xx cn38xxp2;
+       struct cvmx_pko_reg_flags_cn30xx cn50xx;
+       struct cvmx_pko_reg_flags_cn30xx cn52xx;
+       struct cvmx_pko_reg_flags_cn30xx cn52xxp1;
+       struct cvmx_pko_reg_flags_cn30xx cn56xx;
+       struct cvmx_pko_reg_flags_cn30xx cn56xxp1;
+       struct cvmx_pko_reg_flags_cn30xx cn58xx;
+       struct cvmx_pko_reg_flags_cn30xx cn58xxp1;
+       struct cvmx_pko_reg_flags_cn61xx {
+               u64 reserved_9_63 : 55;
+               u64 dis_perf3 : 1;
+               u64 dis_perf2 : 1;
+               u64 reserved_4_6 : 3;
+               u64 reset : 1;
+               u64 store_be : 1;
+               u64 ena_dwb : 1;
+               u64 ena_pko : 1;
+       } cn61xx;
+       struct cvmx_pko_reg_flags_cn30xx cn63xx;
+       struct cvmx_pko_reg_flags_cn30xx cn63xxp1;
+       struct cvmx_pko_reg_flags_cn61xx cn66xx;
+       struct cvmx_pko_reg_flags_s cn68xx;
+       struct cvmx_pko_reg_flags_cn68xxp1 {
+               u64 reserved_7_63 : 57;
+               u64 dis_perf1 : 1;
+               u64 dis_perf0 : 1;
+               u64 ena_throttle : 1;
+               u64 reset : 1;
+               u64 store_be : 1;
+               u64 ena_dwb : 1;
+               u64 ena_pko : 1;
+       } cn68xxp1;
+       struct cvmx_pko_reg_flags_cn61xx cn70xx;
+       struct cvmx_pko_reg_flags_cn61xx cn70xxp1;
+       struct cvmx_pko_reg_flags_cn61xx cnf71xx;
+};
+
+typedef union cvmx_pko_reg_flags cvmx_pko_reg_flags_t;
+
+/**
+ * cvmx_pko_reg_gmx_port_mode
+ *
+ * Notes:
+ * The system has a total of 2 + 4 + 4 ports and 2 + 1 + 1 engines (GM0 + PCI + LOOP).
+ * This CSR sets the number of GMX0 ports and amount of local storage per engine.
+ * It has no effect on the number of ports or amount of local storage per engine for PCI and LOOP.
+ * When both GMX ports are used (MODE0=3), each GMX engine has 10kB of local
+ * storage.  Increasing MODE0 to 4 decreases the number of GMX ports to 1 and
+ * increases the local storage for the one remaining PKO GMX engine to 20kB.
+ * MODE0 value 0, 1, and 2, or greater than 4 are illegal.
+ *
+ * MODE0   GMX0  PCI   LOOP  GMX0                       PCI            LOOP
+ *         ports ports ports storage/engine             storage/engine storage/engine
+ * 3       2     4     4      10.0kB                    2.5kB          2.5kB
+ * 4       1     4     4      20.0kB                    2.5kB          2.5kB
+ */
+union cvmx_pko_reg_gmx_port_mode {
+       u64 u64;
+       struct cvmx_pko_reg_gmx_port_mode_s {
+               u64 reserved_6_63 : 58;
+               u64 mode1 : 3;
+               u64 mode0 : 3;
+       } s;
+       struct cvmx_pko_reg_gmx_port_mode_s cn30xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn31xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn38xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn38xxp2;
+       struct cvmx_pko_reg_gmx_port_mode_s cn50xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn52xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn52xxp1;
+       struct cvmx_pko_reg_gmx_port_mode_s cn56xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn56xxp1;
+       struct cvmx_pko_reg_gmx_port_mode_s cn58xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn58xxp1;
+       struct cvmx_pko_reg_gmx_port_mode_s cn61xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn63xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn63xxp1;
+       struct cvmx_pko_reg_gmx_port_mode_s cn66xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn70xx;
+       struct cvmx_pko_reg_gmx_port_mode_s cn70xxp1;
+       struct cvmx_pko_reg_gmx_port_mode_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_gmx_port_mode cvmx_pko_reg_gmx_port_mode_t;
+
+/**
+ * cvmx_pko_reg_int_mask
+ *
+ * Notes:
+ * When a mask bit is set, the corresponding interrupt is enabled.
+ *
+ */
+union cvmx_pko_reg_int_mask {
+       u64 u64;
+       struct cvmx_pko_reg_int_mask_s {
+               u64 reserved_4_63 : 60;
+               u64 loopback : 1;
+               u64 currzero : 1;
+               u64 doorbell : 1;
+               u64 parity : 1;
+       } s;
+       struct cvmx_pko_reg_int_mask_cn30xx {
+               u64 reserved_2_63 : 62;
+               u64 doorbell : 1;
+               u64 parity : 1;
+       } cn30xx;
+       struct cvmx_pko_reg_int_mask_cn30xx cn31xx;
+       struct cvmx_pko_reg_int_mask_cn30xx cn38xx;
+       struct cvmx_pko_reg_int_mask_cn30xx cn38xxp2;
+       struct cvmx_pko_reg_int_mask_cn50xx {
+               u64 reserved_3_63 : 61;
+               u64 currzero : 1;
+               u64 doorbell : 1;
+               u64 parity : 1;
+       } cn50xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn52xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn52xxp1;
+       struct cvmx_pko_reg_int_mask_cn50xx cn56xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn56xxp1;
+       struct cvmx_pko_reg_int_mask_cn50xx cn58xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn58xxp1;
+       struct cvmx_pko_reg_int_mask_cn50xx cn61xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn63xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn63xxp1;
+       struct cvmx_pko_reg_int_mask_cn50xx cn66xx;
+       struct cvmx_pko_reg_int_mask_s cn68xx;
+       struct cvmx_pko_reg_int_mask_s cn68xxp1;
+       struct cvmx_pko_reg_int_mask_cn50xx cn70xx;
+       struct cvmx_pko_reg_int_mask_cn50xx cn70xxp1;
+       struct cvmx_pko_reg_int_mask_cn50xx cnf71xx;
+};
+
+typedef union cvmx_pko_reg_int_mask cvmx_pko_reg_int_mask_t;
+
+/**
+ * cvmx_pko_reg_loopback_bpid
+ *
+ * Notes:
+ * None.
+ *
+ */
+union cvmx_pko_reg_loopback_bpid {
+       u64 u64;
+       struct cvmx_pko_reg_loopback_bpid_s {
+               u64 reserved_59_63 : 5;
+               u64 bpid7 : 6;
+               u64 reserved_52_52 : 1;
+               u64 bpid6 : 6;
+               u64 reserved_45_45 : 1;
+               u64 bpid5 : 6;
+               u64 reserved_38_38 : 1;
+               u64 bpid4 : 6;
+               u64 reserved_31_31 : 1;
+               u64 bpid3 : 6;
+               u64 reserved_24_24 : 1;
+               u64 bpid2 : 6;
+               u64 reserved_17_17 : 1;
+               u64 bpid1 : 6;
+               u64 reserved_10_10 : 1;
+               u64 bpid0 : 6;
+               u64 reserved_0_3 : 4;
+       } s;
+       struct cvmx_pko_reg_loopback_bpid_s cn68xx;
+       struct cvmx_pko_reg_loopback_bpid_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_loopback_bpid cvmx_pko_reg_loopback_bpid_t;
+
+/**
+ * cvmx_pko_reg_loopback_pkind
+ *
+ * Notes:
+ * None.
+ *
+ */
+union cvmx_pko_reg_loopback_pkind {
+       u64 u64;
+       struct cvmx_pko_reg_loopback_pkind_s {
+               u64 reserved_59_63 : 5;
+               u64 pkind7 : 6;
+               u64 reserved_52_52 : 1;
+               u64 pkind6 : 6;
+               u64 reserved_45_45 : 1;
+               u64 pkind5 : 6;
+               u64 reserved_38_38 : 1;
+               u64 pkind4 : 6;
+               u64 reserved_31_31 : 1;
+               u64 pkind3 : 6;
+               u64 reserved_24_24 : 1;
+               u64 pkind2 : 6;
+               u64 reserved_17_17 : 1;
+               u64 pkind1 : 6;
+               u64 reserved_10_10 : 1;
+               u64 pkind0 : 6;
+               u64 num_ports : 4;
+       } s;
+       struct cvmx_pko_reg_loopback_pkind_s cn68xx;
+       struct cvmx_pko_reg_loopback_pkind_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_loopback_pkind cvmx_pko_reg_loopback_pkind_t;
+
+/**
+ * cvmx_pko_reg_min_pkt
+ *
+ * Notes:
+ * This CSR is used with PKO_MEM_IPORT_PTRS[MIN_PKT] to select the minimum packet size.  Packets whose
+ * size in bytes < (SIZEn+1) are zero-padded to (SIZEn+1) bytes.  Note that this does not include CRC bytes.
+ * SIZE0=0 is read-only and is used when no padding is desired.
+ */
+union cvmx_pko_reg_min_pkt {
+       u64 u64;
+       struct cvmx_pko_reg_min_pkt_s {
+               u64 size7 : 8;
+               u64 size6 : 8;
+               u64 size5 : 8;
+               u64 size4 : 8;
+               u64 size3 : 8;
+               u64 size2 : 8;
+               u64 size1 : 8;
+               u64 size0 : 8;
+       } s;
+       struct cvmx_pko_reg_min_pkt_s cn68xx;
+       struct cvmx_pko_reg_min_pkt_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_min_pkt cvmx_pko_reg_min_pkt_t;
+
+/**
+ * cvmx_pko_reg_preempt
+ */
+union cvmx_pko_reg_preempt {
+       u64 u64;
+       struct cvmx_pko_reg_preempt_s {
+               u64 reserved_16_63 : 48;
+               u64 min_size : 16;
+       } s;
+       struct cvmx_pko_reg_preempt_s cn52xx;
+       struct cvmx_pko_reg_preempt_s cn52xxp1;
+       struct cvmx_pko_reg_preempt_s cn56xx;
+       struct cvmx_pko_reg_preempt_s cn56xxp1;
+       struct cvmx_pko_reg_preempt_s cn61xx;
+       struct cvmx_pko_reg_preempt_s cn63xx;
+       struct cvmx_pko_reg_preempt_s cn63xxp1;
+       struct cvmx_pko_reg_preempt_s cn66xx;
+       struct cvmx_pko_reg_preempt_s cn68xx;
+       struct cvmx_pko_reg_preempt_s cn68xxp1;
+       struct cvmx_pko_reg_preempt_s cn70xx;
+       struct cvmx_pko_reg_preempt_s cn70xxp1;
+       struct cvmx_pko_reg_preempt_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_preempt cvmx_pko_reg_preempt_t;
+
+/**
+ * cvmx_pko_reg_queue_mode
+ *
+ * Notes:
+ * Sets the number of queues and amount of local storage per queue
+ * The system has a total of 256 queues and (256*8) words of local command storage.  This CSR sets the
+ * number of queues that are used.  Increasing the value of MODE by 1 decreases the number of queues
+ * by a power of 2 and increases the local storage per queue by a power of 2.
+ * MODEn queues storage/queue
+ * 0     256     64B ( 8 words)
+ * 1     128    128B (16 words)
+ * 2      64    256B (32 words)
+ */
+union cvmx_pko_reg_queue_mode {
+       u64 u64;
+       struct cvmx_pko_reg_queue_mode_s {
+               u64 reserved_2_63 : 62;
+               u64 mode : 2;
+       } s;
+       struct cvmx_pko_reg_queue_mode_s cn30xx;
+       struct cvmx_pko_reg_queue_mode_s cn31xx;
+       struct cvmx_pko_reg_queue_mode_s cn38xx;
+       struct cvmx_pko_reg_queue_mode_s cn38xxp2;
+       struct cvmx_pko_reg_queue_mode_s cn50xx;
+       struct cvmx_pko_reg_queue_mode_s cn52xx;
+       struct cvmx_pko_reg_queue_mode_s cn52xxp1;
+       struct cvmx_pko_reg_queue_mode_s cn56xx;
+       struct cvmx_pko_reg_queue_mode_s cn56xxp1;
+       struct cvmx_pko_reg_queue_mode_s cn58xx;
+       struct cvmx_pko_reg_queue_mode_s cn58xxp1;
+       struct cvmx_pko_reg_queue_mode_s cn61xx;
+       struct cvmx_pko_reg_queue_mode_s cn63xx;
+       struct cvmx_pko_reg_queue_mode_s cn63xxp1;
+       struct cvmx_pko_reg_queue_mode_s cn66xx;
+       struct cvmx_pko_reg_queue_mode_s cn68xx;
+       struct cvmx_pko_reg_queue_mode_s cn68xxp1;
+       struct cvmx_pko_reg_queue_mode_s cn70xx;
+       struct cvmx_pko_reg_queue_mode_s cn70xxp1;
+       struct cvmx_pko_reg_queue_mode_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_queue_mode cvmx_pko_reg_queue_mode_t;
+
+/**
+ * cvmx_pko_reg_queue_preempt
+ *
+ * Notes:
+ * Per QID, setting both PREEMPTER=1 and PREEMPTEE=1 is illegal and sets only PREEMPTER=1.
+ * This CSR is used with PKO_MEM_QUEUE_PTRS and PKO_REG_QUEUE_PTRS1.  When programming queues, the
+ * programming sequence must first write PKO_REG_QUEUE_PREEMPT, then PKO_REG_QUEUE_PTRS1 and then
+ * PKO_MEM_QUEUE_PTRS for each queue.  Preemption is supported only on queues that are ultimately
+ * mapped to engines 0-7.  It is illegal to set preemptee or preempter for a queue that is ultimately
+ * mapped to engines 8-11.
+ *
+ * Also, PKO_REG_ENGINE_INFLIGHT must be at least 2 for any engine on which preemption is enabled.
+ *
+ * See the descriptions of PKO_MEM_QUEUE_PTRS for further explanation of queue programming.
+ */
+union cvmx_pko_reg_queue_preempt {
+       u64 u64;
+       struct cvmx_pko_reg_queue_preempt_s {
+               u64 reserved_2_63 : 62;
+               u64 preemptee : 1;
+               u64 preempter : 1;
+       } s;
+       struct cvmx_pko_reg_queue_preempt_s cn52xx;
+       struct cvmx_pko_reg_queue_preempt_s cn52xxp1;
+       struct cvmx_pko_reg_queue_preempt_s cn56xx;
+       struct cvmx_pko_reg_queue_preempt_s cn56xxp1;
+       struct cvmx_pko_reg_queue_preempt_s cn61xx;
+       struct cvmx_pko_reg_queue_preempt_s cn63xx;
+       struct cvmx_pko_reg_queue_preempt_s cn63xxp1;
+       struct cvmx_pko_reg_queue_preempt_s cn66xx;
+       struct cvmx_pko_reg_queue_preempt_s cn68xx;
+       struct cvmx_pko_reg_queue_preempt_s cn68xxp1;
+       struct cvmx_pko_reg_queue_preempt_s cn70xx;
+       struct cvmx_pko_reg_queue_preempt_s cn70xxp1;
+       struct cvmx_pko_reg_queue_preempt_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_queue_preempt cvmx_pko_reg_queue_preempt_t;
+
+/**
+ * cvmx_pko_reg_queue_ptrs1
+ *
+ * Notes:
+ * This CSR is used with PKO_MEM_QUEUE_PTRS and PKO_MEM_QUEUE_QOS to allow access to queues 128-255
+ * and to allow up mapping of up to 16 queues per port.  When programming queues 128-255, the
+ * programming sequence must first write PKO_REG_QUEUE_PTRS1 and then write PKO_MEM_QUEUE_PTRS or
+ * PKO_MEM_QUEUE_QOS for each queue.
+ * See the descriptions of PKO_MEM_QUEUE_PTRS and PKO_MEM_QUEUE_QOS for further explanation of queue
+ * programming.
+ */
+union cvmx_pko_reg_queue_ptrs1 {
+       u64 u64;
+       struct cvmx_pko_reg_queue_ptrs1_s {
+               u64 reserved_2_63 : 62;
+               u64 idx3 : 1;
+               u64 qid7 : 1;
+       } s;
+       struct cvmx_pko_reg_queue_ptrs1_s cn50xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn52xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn52xxp1;
+       struct cvmx_pko_reg_queue_ptrs1_s cn56xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn56xxp1;
+       struct cvmx_pko_reg_queue_ptrs1_s cn58xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn58xxp1;
+       struct cvmx_pko_reg_queue_ptrs1_s cn61xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn63xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn63xxp1;
+       struct cvmx_pko_reg_queue_ptrs1_s cn66xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn70xx;
+       struct cvmx_pko_reg_queue_ptrs1_s cn70xxp1;
+       struct cvmx_pko_reg_queue_ptrs1_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_queue_ptrs1 cvmx_pko_reg_queue_ptrs1_t;
+
+/**
+ * cvmx_pko_reg_read_idx
+ *
+ * Notes:
+ * Provides the read index during a CSR read operation to any of the CSRs that are physically stored
+ * as memories.  The names of these CSRs begin with the prefix "PKO_MEM_".
+ * IDX[7:0] is the read index.  INC[7:0] is an increment that is added to IDX[7:0] after any CSR read.
+ * The intended use is to initially write this CSR such that IDX=0 and INC=1.  Then, the entire
+ * contents of a CSR memory can be read with consecutive CSR read commands.
+ */
+union cvmx_pko_reg_read_idx {
+       u64 u64;
+       struct cvmx_pko_reg_read_idx_s {
+               u64 reserved_16_63 : 48;
+               u64 inc : 8;
+               u64 index : 8;
+       } s;
+       struct cvmx_pko_reg_read_idx_s cn30xx;
+       struct cvmx_pko_reg_read_idx_s cn31xx;
+       struct cvmx_pko_reg_read_idx_s cn38xx;
+       struct cvmx_pko_reg_read_idx_s cn38xxp2;
+       struct cvmx_pko_reg_read_idx_s cn50xx;
+       struct cvmx_pko_reg_read_idx_s cn52xx;
+       struct cvmx_pko_reg_read_idx_s cn52xxp1;
+       struct cvmx_pko_reg_read_idx_s cn56xx;
+       struct cvmx_pko_reg_read_idx_s cn56xxp1;
+       struct cvmx_pko_reg_read_idx_s cn58xx;
+       struct cvmx_pko_reg_read_idx_s cn58xxp1;
+       struct cvmx_pko_reg_read_idx_s cn61xx;
+       struct cvmx_pko_reg_read_idx_s cn63xx;
+       struct cvmx_pko_reg_read_idx_s cn63xxp1;
+       struct cvmx_pko_reg_read_idx_s cn66xx;
+       struct cvmx_pko_reg_read_idx_s cn68xx;
+       struct cvmx_pko_reg_read_idx_s cn68xxp1;
+       struct cvmx_pko_reg_read_idx_s cn70xx;
+       struct cvmx_pko_reg_read_idx_s cn70xxp1;
+       struct cvmx_pko_reg_read_idx_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_read_idx cvmx_pko_reg_read_idx_t;
+
+/**
+ * cvmx_pko_reg_throttle
+ *
+ * Notes:
+ * This CSR is used with PKO_MEM_THROTTLE_PIPE and PKO_MEM_THROTTLE_INT.  INT_MASK corresponds to the
+ * interfaces listed in the description for PKO_MEM_IPORT_PTRS[INT].  Set INT_MASK[N] to enable the
+ * updating of PKO_MEM_THROTTLE_PIPE and PKO_MEM_THROTTLE_INT counts for packets destined for
+ * interface N.  INT_MASK has no effect on the updates caused by CSR writes to PKO_MEM_THROTTLE_PIPE
+ * and PKO_MEM_THROTTLE_INT.  Note that this does not disable the throttle logic, just the updating of
+ * the interface counts.
+ */
+union cvmx_pko_reg_throttle {
+       u64 u64;
+       struct cvmx_pko_reg_throttle_s {
+               u64 reserved_32_63 : 32;
+               u64 int_mask : 32;
+       } s;
+       struct cvmx_pko_reg_throttle_s cn68xx;
+       struct cvmx_pko_reg_throttle_s cn68xxp1;
+};
+
+typedef union cvmx_pko_reg_throttle cvmx_pko_reg_throttle_t;
+
+/**
+ * cvmx_pko_reg_timestamp
+ *
+ * Notes:
+ * None.
+ *
+ */
+union cvmx_pko_reg_timestamp {
+       u64 u64;
+       struct cvmx_pko_reg_timestamp_s {
+               u64 reserved_4_63 : 60;
+               u64 wqe_word : 4;
+       } s;
+       struct cvmx_pko_reg_timestamp_s cn61xx;
+       struct cvmx_pko_reg_timestamp_s cn63xx;
+       struct cvmx_pko_reg_timestamp_s cn63xxp1;
+       struct cvmx_pko_reg_timestamp_s cn66xx;
+       struct cvmx_pko_reg_timestamp_s cn68xx;
+       struct cvmx_pko_reg_timestamp_s cn68xxp1;
+       struct cvmx_pko_reg_timestamp_s cn70xx;
+       struct cvmx_pko_reg_timestamp_s cn70xxp1;
+       struct cvmx_pko_reg_timestamp_s cnf71xx;
+};
+
+typedef union cvmx_pko_reg_timestamp cvmx_pko_reg_timestamp_t;
+
+/**
+ * cvmx_pko_shaper_cfg
+ */
+union cvmx_pko_shaper_cfg {
+       u64 u64;
+       struct cvmx_pko_shaper_cfg_s {
+               u64 reserved_2_63 : 62;
+               u64 color_aware : 1;
+               u64 red_send_as_yellow : 1;
+       } s;
+       struct cvmx_pko_shaper_cfg_s cn73xx;
+       struct cvmx_pko_shaper_cfg_s cn78xx;
+       struct cvmx_pko_shaper_cfg_s cn78xxp1;
+       struct cvmx_pko_shaper_cfg_s cnf75xx;
+};
+
+typedef union cvmx_pko_shaper_cfg cvmx_pko_shaper_cfg_t;
+
+/**
+ * cvmx_pko_state_uid_in_use#_rd
+ *
+ * For diagnostic use only.
+ *
+ */
+union cvmx_pko_state_uid_in_usex_rd {
+       u64 u64;
+       struct cvmx_pko_state_uid_in_usex_rd_s {
+               u64 in_use : 64;
+       } s;
+       struct cvmx_pko_state_uid_in_usex_rd_s cn73xx;
+       struct cvmx_pko_state_uid_in_usex_rd_s cn78xx;
+       struct cvmx_pko_state_uid_in_usex_rd_s cn78xxp1;
+       struct cvmx_pko_state_uid_in_usex_rd_s cnf75xx;
+};
+
+typedef union cvmx_pko_state_uid_in_usex_rd cvmx_pko_state_uid_in_usex_rd_t;
+
+/**
+ * cvmx_pko_status
+ */
+union cvmx_pko_status {
+       u64 u64;
+       struct cvmx_pko_status_s {
+               u64 pko_rdy : 1;
+               u64 reserved_24_62 : 39;
+               u64 c2qlut_rdy : 1;
+               u64 ppfi_rdy : 1;
+               u64 iobp1_rdy : 1;
+               u64 ncb_rdy : 1;
+               u64 pse_rdy : 1;
+               u64 pdm_rdy : 1;
+               u64 peb_rdy : 1;
+               u64 csi_rdy : 1;
+               u64 reserved_5_15 : 11;
+               u64 ncb_bist_status : 1;
+               u64 c2qlut_bist_status : 1;
+               u64 pdm_bist_status : 1;
+               u64 peb_bist_status : 1;
+               u64 pse_bist_status : 1;
+       } s;
+       struct cvmx_pko_status_cn73xx {
+               u64 pko_rdy : 1;
+               u64 reserved_62_24 : 39;
+               u64 c2qlut_rdy : 1;
+               u64 ppfi_rdy : 1;
+               u64 iobp1_rdy : 1;
+               u64 ncb_rdy : 1;
+               u64 pse_rdy : 1;
+               u64 pdm_rdy : 1;
+               u64 peb_rdy : 1;
+               u64 csi_rdy : 1;
+               u64 reserved_15_5 : 11;
+               u64 ncb_bist_status : 1;
+               u64 c2qlut_bist_status : 1;
+               u64 pdm_bist_status : 1;
+               u64 peb_bist_status : 1;
+               u64 pse_bist_status : 1;
+       } cn73xx;
+       struct cvmx_pko_status_cn73xx cn78xx;
+       struct cvmx_pko_status_cn73xx cn78xxp1;
+       struct cvmx_pko_status_cn73xx cnf75xx;
+};
+
+typedef union cvmx_pko_status cvmx_pko_status_t;
+
+/**
+ * cvmx_pko_txf#_pkt_cnt_rd
+ */
+union cvmx_pko_txfx_pkt_cnt_rd {
+       u64 u64;
+       struct cvmx_pko_txfx_pkt_cnt_rd_s {
+               u64 reserved_8_63 : 56;
+               u64 cnt : 8;
+       } s;
+       struct cvmx_pko_txfx_pkt_cnt_rd_s cn73xx;
+       struct cvmx_pko_txfx_pkt_cnt_rd_s cn78xx;
+       struct cvmx_pko_txfx_pkt_cnt_rd_s cn78xxp1;
+       struct cvmx_pko_txfx_pkt_cnt_rd_s cnf75xx;
+};
+
+typedef union cvmx_pko_txfx_pkt_cnt_rd cvmx_pko_txfx_pkt_cnt_rd_t;
+
+#endif