summaryrefslogtreecommitdiffstats
path: root/sys/contrib/octeon-sdk/cvmx-dpi-defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/octeon-sdk/cvmx-dpi-defs.h')
-rw-r--r--sys/contrib/octeon-sdk/cvmx-dpi-defs.h1305
1 files changed, 1305 insertions, 0 deletions
diff --git a/sys/contrib/octeon-sdk/cvmx-dpi-defs.h b/sys/contrib/octeon-sdk/cvmx-dpi-defs.h
new file mode 100644
index 0000000..564f9b0
--- /dev/null
+++ b/sys/contrib/octeon-sdk/cvmx-dpi-defs.h
@@ -0,0 +1,1305 @@
+/***********************license start***************
+ * Copyright (c) 2003-2010 Cavium Networks (support@cavium.com). All rights
+ * reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+
+ * * Neither the name of Cavium Networks nor the names of
+ * its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+
+ * This Software, including technical data, may be subject to U.S. export control
+ * laws, including the U.S. Export Administration Act and its associated
+ * regulations, and may be subject to export or import regulations in other
+ * countries.
+
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
+ * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
+ * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
+ * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
+ * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
+ * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
+ * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
+ * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+ * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
+ * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
+ ***********************license end**************************************/
+
+
+/**
+ * cvmx-dpi-defs.h
+ *
+ * Configuration and status register (CSR) type definitions for
+ * Octeon dpi.
+ *
+ * This file is auto generated. Do not edit.
+ *
+ * <hr>$Revision$<hr>
+ *
+ */
+#ifndef __CVMX_DPI_TYPEDEFS_H__
+#define __CVMX_DPI_TYPEDEFS_H__
+
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_BIST_STATUS CVMX_DPI_BIST_STATUS_FUNC()
+static inline uint64_t CVMX_DPI_BIST_STATUS_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_BIST_STATUS not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000000ull);
+}
+#else
+#define CVMX_DPI_BIST_STATUS (CVMX_ADD_IO_SEG(0x0001DF0000000000ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_CTL CVMX_DPI_CTL_FUNC()
+static inline uint64_t CVMX_DPI_CTL_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_CTL not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000040ull);
+}
+#else
+#define CVMX_DPI_CTL (CVMX_ADD_IO_SEG(0x0001DF0000000040ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMAX_COUNTS(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7)))))
+ cvmx_warn("CVMX_DPI_DMAX_COUNTS(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMAX_COUNTS(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000300ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMAX_DBELL(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7)))))
+ cvmx_warn("CVMX_DPI_DMAX_DBELL(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMAX_DBELL(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000200ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMAX_IBUFF_SADDR(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7)))))
+ cvmx_warn("CVMX_DPI_DMAX_IBUFF_SADDR(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMAX_IBUFF_SADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000280ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMAX_NADDR(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7)))))
+ cvmx_warn("CVMX_DPI_DMAX_NADDR(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMAX_NADDR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000380ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMAX_REQBNK0(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7)))))
+ cvmx_warn("CVMX_DPI_DMAX_REQBNK0(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMAX_REQBNK0(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000400ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMAX_REQBNK1(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7)))))
+ cvmx_warn("CVMX_DPI_DMAX_REQBNK1(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMAX_REQBNK1(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000480ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_DMA_CONTROL CVMX_DPI_DMA_CONTROL_FUNC()
+static inline uint64_t CVMX_DPI_DMA_CONTROL_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_DMA_CONTROL not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000048ull);
+}
+#else
+#define CVMX_DPI_DMA_CONTROL (CVMX_ADD_IO_SEG(0x0001DF0000000048ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_DMA_ENGX_EN(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 5)))))
+ cvmx_warn("CVMX_DPI_DMA_ENGX_EN(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_DMA_ENGX_EN(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000080ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_ENGX_BUF(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 5)))))
+ cvmx_warn("CVMX_DPI_ENGX_BUF(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8;
+}
+#else
+#define CVMX_DPI_ENGX_BUF(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000880ull) + ((offset) & 7) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_INFO_REG CVMX_DPI_INFO_REG_FUNC()
+static inline uint64_t CVMX_DPI_INFO_REG_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_INFO_REG not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000980ull);
+}
+#else
+#define CVMX_DPI_INFO_REG (CVMX_ADD_IO_SEG(0x0001DF0000000980ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_INT_EN CVMX_DPI_INT_EN_FUNC()
+static inline uint64_t CVMX_DPI_INT_EN_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_INT_EN not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000010ull);
+}
+#else
+#define CVMX_DPI_INT_EN (CVMX_ADD_IO_SEG(0x0001DF0000000010ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_INT_REG CVMX_DPI_INT_REG_FUNC()
+static inline uint64_t CVMX_DPI_INT_REG_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_INT_REG not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000008ull);
+}
+#else
+#define CVMX_DPI_INT_REG (CVMX_ADD_IO_SEG(0x0001DF0000000008ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_PINT_INFO CVMX_DPI_PINT_INFO_FUNC()
+static inline uint64_t CVMX_DPI_PINT_INFO_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_PINT_INFO not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000830ull);
+}
+#else
+#define CVMX_DPI_PINT_INFO (CVMX_ADD_IO_SEG(0x0001DF0000000830ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_PKT_ERR_RSP CVMX_DPI_PKT_ERR_RSP_FUNC()
+static inline uint64_t CVMX_DPI_PKT_ERR_RSP_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_PKT_ERR_RSP not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000078ull);
+}
+#else
+#define CVMX_DPI_PKT_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000078ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_REQ_ERR_RSP CVMX_DPI_REQ_ERR_RSP_FUNC()
+static inline uint64_t CVMX_DPI_REQ_ERR_RSP_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_REQ_ERR_RSP not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000058ull);
+}
+#else
+#define CVMX_DPI_REQ_ERR_RSP (CVMX_ADD_IO_SEG(0x0001DF0000000058ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_REQ_ERR_RSP_EN CVMX_DPI_REQ_ERR_RSP_EN_FUNC()
+static inline uint64_t CVMX_DPI_REQ_ERR_RSP_EN_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_REQ_ERR_RSP_EN not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000068ull);
+}
+#else
+#define CVMX_DPI_REQ_ERR_RSP_EN (CVMX_ADD_IO_SEG(0x0001DF0000000068ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_REQ_ERR_RST CVMX_DPI_REQ_ERR_RST_FUNC()
+static inline uint64_t CVMX_DPI_REQ_ERR_RST_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_REQ_ERR_RST not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000060ull);
+}
+#else
+#define CVMX_DPI_REQ_ERR_RST (CVMX_ADD_IO_SEG(0x0001DF0000000060ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_REQ_ERR_RST_EN CVMX_DPI_REQ_ERR_RST_EN_FUNC()
+static inline uint64_t CVMX_DPI_REQ_ERR_RST_EN_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_REQ_ERR_RST_EN not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000070ull);
+}
+#else
+#define CVMX_DPI_REQ_ERR_RST_EN (CVMX_ADD_IO_SEG(0x0001DF0000000070ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_DPI_REQ_GBL_EN CVMX_DPI_REQ_GBL_EN_FUNC()
+static inline uint64_t CVMX_DPI_REQ_GBL_EN_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
+ cvmx_warn("CVMX_DPI_REQ_GBL_EN not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001DF0000000050ull);
+}
+#else
+#define CVMX_DPI_REQ_GBL_EN (CVMX_ADD_IO_SEG(0x0001DF0000000050ull))
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_SLI_PRTX_CFG(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
+ cvmx_warn("CVMX_DPI_SLI_PRTX_CFG(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 1) * 8;
+}
+#else
+#define CVMX_DPI_SLI_PRTX_CFG(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000900ull) + ((offset) & 1) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
+ cvmx_warn("CVMX_DPI_SLI_PRTX_ERR(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8;
+}
+#else
+#define CVMX_DPI_SLI_PRTX_ERR(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000920ull) + ((offset) & 1) * 8)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_DPI_SLI_PRTX_ERR_INFO(unsigned long offset)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 1)))))
+ cvmx_warn("CVMX_DPI_SLI_PRTX_ERR_INFO(%lu) is invalid on this chip\n", offset);
+ return CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 1) * 8;
+}
+#else
+#define CVMX_DPI_SLI_PRTX_ERR_INFO(offset) (CVMX_ADD_IO_SEG(0x0001DF0000000940ull) + ((offset) & 1) * 8)
+#endif
+
+/**
+ * cvmx_dpi_bist_status
+ */
+union cvmx_dpi_bist_status
+{
+ uint64_t u64;
+ struct cvmx_dpi_bist_status_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_37_63 : 27;
+ uint64_t bist : 37; /**< BIST Results.
+ HW sets a bit in BIST for for memory that fails
+ BIST. */
+#else
+ uint64_t bist : 37;
+ uint64_t reserved_37_63 : 27;
+#endif
+ } s;
+ struct cvmx_dpi_bist_status_s cn63xx;
+ struct cvmx_dpi_bist_status_s cn63xxp1;
+};
+typedef union cvmx_dpi_bist_status cvmx_dpi_bist_status_t;
+
+/**
+ * cvmx_dpi_ctl
+ */
+union cvmx_dpi_ctl
+{
+ uint64_t u64;
+ struct cvmx_dpi_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_2_63 : 62;
+ uint64_t clk : 1; /**< Status bit that indicates that the clks are running */
+ uint64_t en : 1; /**< Turns on the DMA and Packet state machines */
+#else
+ uint64_t en : 1;
+ uint64_t clk : 1;
+ uint64_t reserved_2_63 : 62;
+#endif
+ } s;
+ struct cvmx_dpi_ctl_s cn63xx;
+ struct cvmx_dpi_ctl_s cn63xxp1;
+};
+typedef union cvmx_dpi_ctl cvmx_dpi_ctl_t;
+
+/**
+ * cvmx_dpi_dma#_counts
+ *
+ * DPI_DMA[0..7]_COUNTS = DMA Instruction Counts
+ *
+ * Values for determing the number of instructions for DMA[0..7] in the DPI.
+ */
+union cvmx_dpi_dmax_counts
+{
+ uint64_t u64;
+ struct cvmx_dpi_dmax_counts_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_39_63 : 25;
+ uint64_t fcnt : 7; /**< Number of words in the Instruction FIFO locally
+ cached within DPI. */
+ uint64_t dbell : 32; /**< Number of available words of Instructions to read. */
+#else
+ uint64_t dbell : 32;
+ uint64_t fcnt : 7;
+ uint64_t reserved_39_63 : 25;
+#endif
+ } s;
+ struct cvmx_dpi_dmax_counts_s cn63xx;
+ struct cvmx_dpi_dmax_counts_s cn63xxp1;
+};
+typedef union cvmx_dpi_dmax_counts cvmx_dpi_dmax_counts_t;
+
+/**
+ * cvmx_dpi_dma#_dbell
+ *
+ * DPI_DMA_DBELL[0..7] = DMA Door Bell
+ *
+ * The door bell register for DMA[0..7] queue.
+ */
+union cvmx_dpi_dmax_dbell
+{
+ uint64_t u64;
+ struct cvmx_dpi_dmax_dbell_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_16_63 : 48;
+ uint64_t dbell : 16; /**< The value written to this register is added to the
+ number of 8byte words to be read and processes for
+ the low priority dma queue. */
+#else
+ uint64_t dbell : 16;
+ uint64_t reserved_16_63 : 48;
+#endif
+ } s;
+ struct cvmx_dpi_dmax_dbell_s cn63xx;
+ struct cvmx_dpi_dmax_dbell_s cn63xxp1;
+};
+typedef union cvmx_dpi_dmax_dbell cvmx_dpi_dmax_dbell_t;
+
+/**
+ * cvmx_dpi_dma#_ibuff_saddr
+ *
+ * DPI_DMA[0..7]_IBUFF_SADDR = DMA Instruction Buffer Starting Address
+ *
+ * The address to start reading Instructions from for DMA[0..7].
+ */
+union cvmx_dpi_dmax_ibuff_saddr
+{
+ uint64_t u64;
+ struct cvmx_dpi_dmax_ibuff_saddr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_62_63 : 2;
+ uint64_t csize : 14; /**< The size in 8B words of the DMA Instruction Chunk.
+ This value should only be written at known times
+ in order to prevent corruption of the instruction
+ queue. The minimum CSIZE is 16 (one cacheblock). */
+ uint64_t reserved_41_47 : 7;
+ uint64_t idle : 1; /**< DMA Request Queue is IDLE */
+ uint64_t reserved_36_39 : 4;
+ uint64_t saddr : 29; /**< The 128 byte aligned starting or chunk address.
+ SADDR is address bit 35:7 of the starting
+ instructions address. When new chunks are fetched
+ by the HW, SADDR will be updated to reflect the
+ address of the current chunk.
+ A write to SADDR resets both the queue's doorbell
+ (DPI_DMAx_COUNTS[DBELL) and its tail pointer
+ (DPI_DMAx_NADDR[ADDR]). */
+ uint64_t reserved_0_6 : 7;
+#else
+ uint64_t reserved_0_6 : 7;
+ uint64_t saddr : 29;
+ uint64_t reserved_36_39 : 4;
+ uint64_t idle : 1;
+ uint64_t reserved_41_47 : 7;
+ uint64_t csize : 14;
+ uint64_t reserved_62_63 : 2;
+#endif
+ } s;
+ struct cvmx_dpi_dmax_ibuff_saddr_s cn63xx;
+ struct cvmx_dpi_dmax_ibuff_saddr_s cn63xxp1;
+};
+typedef union cvmx_dpi_dmax_ibuff_saddr cvmx_dpi_dmax_ibuff_saddr_t;
+
+/**
+ * cvmx_dpi_dma#_naddr
+ *
+ * DPI_DMA[0..7]_NADDR = DMA Next Ichunk Address
+ *
+ * Place DPI will read the next Ichunk data from.
+ */
+union cvmx_dpi_dmax_naddr
+{
+ uint64_t u64;
+ struct cvmx_dpi_dmax_naddr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_36_63 : 28;
+ uint64_t addr : 36; /**< The next L2C address to read DMA# instructions
+ from. */
+#else
+ uint64_t addr : 36;
+ uint64_t reserved_36_63 : 28;
+#endif
+ } s;
+ struct cvmx_dpi_dmax_naddr_s cn63xx;
+ struct cvmx_dpi_dmax_naddr_s cn63xxp1;
+};
+typedef union cvmx_dpi_dmax_naddr cvmx_dpi_dmax_naddr_t;
+
+/**
+ * cvmx_dpi_dma#_reqbnk0
+ *
+ * DPI_DMA[0..7]_REQBNK0 = DMA Request State Bank0
+ *
+ * Current contents of the request state machine - bank0
+ */
+union cvmx_dpi_dmax_reqbnk0
+{
+ uint64_t u64;
+ struct cvmx_dpi_dmax_reqbnk0_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t state : 64; /**< State */
+#else
+ uint64_t state : 64;
+#endif
+ } s;
+ struct cvmx_dpi_dmax_reqbnk0_s cn63xx;
+ struct cvmx_dpi_dmax_reqbnk0_s cn63xxp1;
+};
+typedef union cvmx_dpi_dmax_reqbnk0 cvmx_dpi_dmax_reqbnk0_t;
+
+/**
+ * cvmx_dpi_dma#_reqbnk1
+ *
+ * DPI_DMA[0..7]_REQBNK1 = DMA Request State Bank1
+ *
+ * Current contents of the request state machine - bank1
+ */
+union cvmx_dpi_dmax_reqbnk1
+{
+ uint64_t u64;
+ struct cvmx_dpi_dmax_reqbnk1_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t state : 64; /**< State */
+#else
+ uint64_t state : 64;
+#endif
+ } s;
+ struct cvmx_dpi_dmax_reqbnk1_s cn63xx;
+ struct cvmx_dpi_dmax_reqbnk1_s cn63xxp1;
+};
+typedef union cvmx_dpi_dmax_reqbnk1 cvmx_dpi_dmax_reqbnk1_t;
+
+/**
+ * cvmx_dpi_dma_control
+ *
+ * DPI_DMA_CONTROL = DMA Control Register
+ *
+ * Controls operation of the DMA IN/OUT.
+ */
+union cvmx_dpi_dma_control
+{
+ uint64_t u64;
+ struct cvmx_dpi_dma_control_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_61_63 : 3;
+ uint64_t pkt_en1 : 1; /**< Enables the 2nd packet interface.
+ When the packet interface is enabled, engine 4
+ is used for packets and is not available for DMA.
+ The packet interfaces must be enabled in order.
+ When PKT_EN1=1, then PKT_EN=1.
+ When PKT_EN1=1, then DMA_ENB<4>=0. */
+ uint64_t ffp_dis : 1; /**< Force forward progress disable
+ The DMA engines will compete for shared resources.
+ If the HW detects that particular engines are not
+ able to make requests to an interface, the HW
+ will periodically trade-off throughput for
+ fairness. */
+ uint64_t commit_mode : 1; /**< DMA Engine Commit Mode
+
+ When COMMIT_MODE=0, DPI considers an instruction
+ complete when the HW internally generates the
+ final write for the current instruction.
+
+ When COMMIT_MODE=1, DPI additionally waits for
+ the final write to reach the interface coherency
+ point to declare the instructions complete.
+
+ Please note: when COMMIT_MODE == 0, DPI may not
+ follow the HRM ordering rules.
+
+ DPI hardware performance may be better with
+ COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
+ to the relaxed ordering rules.
+
+ If the HRM ordering rules are required, set
+ COMMIT_MODE == 1. */
+ uint64_t pkt_hp : 1; /**< High-Priority Mode for Packet Interface.
+ Engine 5 will be serviced more frequently to
+ deliver more bandwidth to packet interface.
+ When PKT_EN=0, then PKT_HP=0. */
+ uint64_t pkt_en : 1; /**< Enables the packet interface.
+ When the packet interface is enabled, engine 5
+ is used for packets and is not available for DMA.
+ When PKT_EN=1, then DMA_ENB<5>=0.
+ When PKT_EN=0, then PKT_HP=0. */
+ uint64_t reserved_54_55 : 2;
+ uint64_t dma_enb : 6; /**< DMA engine enable. Enables the operation of the
+ DMA engine. After being enabled an engine should
+ not be disabled while processing instructions.
+ When PKT_EN=1, then DMA_ENB<5>=0. */
+ uint64_t reserved_34_47 : 14;
+ uint64_t b0_lend : 1; /**< When set '1' and the DPI is in the mode to write
+ 0 to L2C memory when a DMA is done, the address
+ to be written to will be treated as a Little
+ Endian address. */
+ uint64_t dwb_denb : 1; /**< When set '1', DPI will send a value in the DWB
+ field for a free page operation for the memory
+ that contained the data. */
+ uint64_t dwb_ichk : 9; /**< When Instruction Chunks for DMA operations are
+ freed this value is used for the DWB field of the
+ operation. */
+ uint64_t fpa_que : 3; /**< The FPA queue that the instruction-chunk page will
+ be returned to when used. */
+ uint64_t o_add1 : 1; /**< When set '1' 1 will be added to the DMA counters,
+ if '0' then the number of bytes in the dma
+ transfer will be added to the count register. */
+ uint64_t o_ro : 1; /**< Relaxed Ordering Mode for DMA. */
+ uint64_t o_ns : 1; /**< Nosnoop For DMA. */
+ uint64_t o_es : 2; /**< Endian Swap Mode for DMA. */
+ uint64_t o_mode : 1; /**< Select PCI_POINTER MODE to be used.
+ 0=DPTR format 1 is used
+ use register values for address and pointer
+ values for ES, NS, RO
+ 1=DPTR format 0 is used
+ use pointer values for address and register
+ values for ES, NS, RO */
+ uint64_t reserved_0_13 : 14;
+#else
+ uint64_t reserved_0_13 : 14;
+ uint64_t o_mode : 1;
+ uint64_t o_es : 2;
+ uint64_t o_ns : 1;
+ uint64_t o_ro : 1;
+ uint64_t o_add1 : 1;
+ uint64_t fpa_que : 3;
+ uint64_t dwb_ichk : 9;
+ uint64_t dwb_denb : 1;
+ uint64_t b0_lend : 1;
+ uint64_t reserved_34_47 : 14;
+ uint64_t dma_enb : 6;
+ uint64_t reserved_54_55 : 2;
+ uint64_t pkt_en : 1;
+ uint64_t pkt_hp : 1;
+ uint64_t commit_mode : 1;
+ uint64_t ffp_dis : 1;
+ uint64_t pkt_en1 : 1;
+ uint64_t reserved_61_63 : 3;
+#endif
+ } s;
+ struct cvmx_dpi_dma_control_s cn63xx;
+ struct cvmx_dpi_dma_control_cn63xxp1
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_59_63 : 5;
+ uint64_t commit_mode : 1; /**< DMA Engine Commit Mode
+
+ When COMMIT_MODE=0, DPI considers an instruction
+ complete when the HW internally generates the
+ final write for the current instruction.
+
+ When COMMIT_MODE=1, DPI additionally waits for
+ the final write to reach the interface coherency
+ point to declare the instructions complete.
+
+ Please note: when COMMIT_MODE == 0, DPI may not
+ follow the HRM ordering rules.
+
+ DPI hardware performance may be better with
+ COMMIT_MODE == 0 than with COMMIT_MODE == 1 due
+ to the relaxed ordering rules.
+
+ If the HRM ordering rules are required, set
+ COMMIT_MODE == 1. */
+ uint64_t pkt_hp : 1; /**< High-Priority Mode for Packet Interface.
+ Engine 5 will be serviced more frequently to
+ deliver more bandwidth to packet interface.
+ When PKT_EN=0, then PKT_HP=0. */
+ uint64_t pkt_en : 1; /**< Enables the packet interface.
+ When the packet interface is enabled, engine 5
+ is used for packets and is not available for DMA.
+ When PKT_EN=1, then DMA_ENB<5>=0.
+ When PKT_EN=0, then PKT_HP=0. */
+ uint64_t reserved_54_55 : 2;
+ uint64_t dma_enb : 6; /**< DMA engine enable. Enables the operation of the
+ DMA engine. After being enabled an engine should
+ not be disabled while processing instructions.
+ When PKT_EN=1, then DMA_ENB<5>=0. */
+ uint64_t reserved_34_47 : 14;
+ uint64_t b0_lend : 1; /**< When set '1' and the DPI is in the mode to write
+ 0 to L2C memory when a DMA is done, the address
+ to be written to will be treated as a Little
+ Endian address. */
+ uint64_t dwb_denb : 1; /**< When set '1', DPI will send a value in the DWB
+ field for a free page operation for the memory
+ that contained the data. */
+ uint64_t dwb_ichk : 9; /**< When Instruction Chunks for DMA operations are
+ freed this value is used for the DWB field of the
+ operation. */
+ uint64_t fpa_que : 3; /**< The FPA queue that the instruction-chunk page will
+ be returned to when used. */
+ uint64_t o_add1 : 1; /**< When set '1' 1 will be added to the DMA counters,
+ if '0' then the number of bytes in the dma
+ transfer will be added to the count register. */
+ uint64_t o_ro : 1; /**< Relaxed Ordering Mode for DMA. */
+ uint64_t o_ns : 1; /**< Nosnoop For DMA. */
+ uint64_t o_es : 2; /**< Endian Swap Mode for DMA. */
+ uint64_t o_mode : 1; /**< Select PCI_POINTER MODE to be used.
+ 0=DPTR format 1 is used
+ use register values for address and pointer
+ values for ES, NS, RO
+ 1=DPTR format 0 is used
+ use pointer values for address and register
+ values for ES, NS, RO */
+ uint64_t reserved_0_13 : 14;
+#else
+ uint64_t reserved_0_13 : 14;
+ uint64_t o_mode : 1;
+ uint64_t o_es : 2;
+ uint64_t o_ns : 1;
+ uint64_t o_ro : 1;
+ uint64_t o_add1 : 1;
+ uint64_t fpa_que : 3;
+ uint64_t dwb_ichk : 9;
+ uint64_t dwb_denb : 1;
+ uint64_t b0_lend : 1;
+ uint64_t reserved_34_47 : 14;
+ uint64_t dma_enb : 6;
+ uint64_t reserved_54_55 : 2;
+ uint64_t pkt_en : 1;
+ uint64_t pkt_hp : 1;
+ uint64_t commit_mode : 1;
+ uint64_t reserved_59_63 : 5;
+#endif
+ } cn63xxp1;
+};
+typedef union cvmx_dpi_dma_control cvmx_dpi_dma_control_t;
+
+/**
+ * cvmx_dpi_dma_eng#_en
+ */
+union cvmx_dpi_dma_engx_en
+{
+ uint64_t u64;
+ struct cvmx_dpi_dma_engx_en_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t qen : 8; /**< Controls which logical instruction queues can be
+ serviced by the DMA engine. Setting QEN==0
+ effectively disables the engine.
+ When DPI_DMA_CONTROL[PKT_EN] = 1, then
+ DPI_DMA_ENG5_EN[QEN] must be zero. */
+#else
+ uint64_t qen : 8;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_dma_engx_en_s cn63xx;
+ struct cvmx_dpi_dma_engx_en_s cn63xxp1;
+};
+typedef union cvmx_dpi_dma_engx_en cvmx_dpi_dma_engx_en_t;
+
+/**
+ * cvmx_dpi_eng#_buf
+ *
+ * Notes:
+ * The total amount of storage allocated to the 6 DPI DMA engines (via DPI_ENG*_BUF[BLKS]) must not exceed 8KB.
+ *
+ */
+union cvmx_dpi_engx_buf
+{
+ uint64_t u64;
+ struct cvmx_dpi_engx_buf_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t base : 4; /**< The base address in 512B blocks of the engine fifo */
+ uint64_t blks : 4; /**< The size in 512B blocks of the engine fifo
+ Legal values are 0-8.
+ 0 = Engine is disabled
+ 1 = 0.5KB buffer
+ 2 = 1.0KB buffer
+ 3 = 1.5KB buffer
+ 4 = 2.0KB buffer
+ 5 = 2.5KB buffer
+ 6 = 3.0KB buffer
+ 7 = 3.5KB buffer
+ 8 = 4.0KB buffer */
+#else
+ uint64_t blks : 4;
+ uint64_t base : 4;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_engx_buf_s cn63xx;
+ struct cvmx_dpi_engx_buf_s cn63xxp1;
+};
+typedef union cvmx_dpi_engx_buf cvmx_dpi_engx_buf_t;
+
+/**
+ * cvmx_dpi_info_reg
+ */
+union cvmx_dpi_info_reg
+{
+ uint64_t u64;
+ struct cvmx_dpi_info_reg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t ffp : 4; /**< Force Forward Progress Indicator */
+ uint64_t reserved_2_3 : 2;
+ uint64_t ncb : 1; /**< NCB Register Access
+ This interrupt will fire in normal operation
+ when SW reads a DPI register through the NCB
+ interface. */
+ uint64_t rsl : 1; /**< RSL Register Access
+ This interrupt will fire in normal operation
+ when SW reads a DPI register through the RSL
+ interface. */
+#else
+ uint64_t rsl : 1;
+ uint64_t ncb : 1;
+ uint64_t reserved_2_3 : 2;
+ uint64_t ffp : 4;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_info_reg_s cn63xx;
+ struct cvmx_dpi_info_reg_cn63xxp1
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_2_63 : 62;
+ uint64_t ncb : 1; /**< NCB Register Access
+ This interrupt will fire in normal operation
+ when SW reads a DPI register through the NCB
+ interface. */
+ uint64_t rsl : 1; /**< RSL Register Access
+ This interrupt will fire in normal operation
+ when SW reads a DPI register through the RSL
+ interface. */
+#else
+ uint64_t rsl : 1;
+ uint64_t ncb : 1;
+ uint64_t reserved_2_63 : 62;
+#endif
+ } cn63xxp1;
+};
+typedef union cvmx_dpi_info_reg cvmx_dpi_info_reg_t;
+
+/**
+ * cvmx_dpi_int_en
+ */
+union cvmx_dpi_int_en
+{
+ uint64_t u64;
+ struct cvmx_dpi_int_en_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_26_63 : 38;
+ uint64_t sprt1_rst : 1; /**< DMA instruction was dropped because the source or
+ destination port was in reset.
+ this bit is set. */
+ uint64_t sprt0_rst : 1; /**< DMA instruction was dropped because the source or
+ destination port was in reset.
+ this bit is set. */
+ uint64_t reserved_23_23 : 1;
+ uint64_t req_badfil : 1; /**< DMA instruction unexpected fill */
+ uint64_t req_inull : 1; /**< DMA instruction filled with NULL pointer */
+ uint64_t req_anull : 1; /**< DMA instruction filled with bad instruction */
+ uint64_t req_undflw : 1; /**< DMA instruction FIFO underflow */
+ uint64_t req_ovrflw : 1; /**< DMA instruction FIFO overflow */
+ uint64_t req_badlen : 1; /**< DMA instruction fetch with length */
+ uint64_t req_badadr : 1; /**< DMA instruction fetch with bad pointer */
+ uint64_t dmadbo : 8; /**< DMAx doorbell overflow. */
+ uint64_t reserved_2_7 : 6;
+ uint64_t nfovr : 1; /**< CSR Fifo Overflow */
+ uint64_t nderr : 1; /**< NCB Decode Error */
+#else
+ uint64_t nderr : 1;
+ uint64_t nfovr : 1;
+ uint64_t reserved_2_7 : 6;
+ uint64_t dmadbo : 8;
+ uint64_t req_badadr : 1;
+ uint64_t req_badlen : 1;
+ uint64_t req_ovrflw : 1;
+ uint64_t req_undflw : 1;
+ uint64_t req_anull : 1;
+ uint64_t req_inull : 1;
+ uint64_t req_badfil : 1;
+ uint64_t reserved_23_23 : 1;
+ uint64_t sprt0_rst : 1;
+ uint64_t sprt1_rst : 1;
+ uint64_t reserved_26_63 : 38;
+#endif
+ } s;
+ struct cvmx_dpi_int_en_s cn63xx;
+ struct cvmx_dpi_int_en_s cn63xxp1;
+};
+typedef union cvmx_dpi_int_en cvmx_dpi_int_en_t;
+
+/**
+ * cvmx_dpi_int_reg
+ */
+union cvmx_dpi_int_reg
+{
+ uint64_t u64;
+ struct cvmx_dpi_int_reg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_26_63 : 38;
+ uint64_t sprt1_rst : 1; /**< DMA instruction was dropped because the source or
+ destination port was in reset.
+ this bit is set. */
+ uint64_t sprt0_rst : 1; /**< DMA instruction was dropped because the source or
+ destination port was in reset.
+ this bit is set. */
+ uint64_t reserved_23_23 : 1;
+ uint64_t req_badfil : 1; /**< DMA instruction unexpected fill
+ Instruction fill when none outstanding. */
+ uint64_t req_inull : 1; /**< DMA instruction filled with NULL pointer
+ Next pointer was NULL. */
+ uint64_t req_anull : 1; /**< DMA instruction filled with bad instruction
+ Fetched instruction word was 0. */
+ uint64_t req_undflw : 1; /**< DMA instruction FIFO underflow
+ DPI tracks outstanding instructions fetches.
+ Interrupt will fire when FIFO underflows. */
+ uint64_t req_ovrflw : 1; /**< DMA instruction FIFO overflow
+ DPI tracks outstanding instructions fetches.
+ Interrupt will fire when FIFO overflows. */
+ uint64_t req_badlen : 1; /**< DMA instruction fetch with length
+ Interrupt will fire if DPI forms an instruction
+ fetch with length of zero. */
+ uint64_t req_badadr : 1; /**< DMA instruction fetch with bad pointer
+ Interrupt will fire if DPI forms an instruction
+ fetch to the NULL pointer. */
+ uint64_t dmadbo : 8; /**< DMAx doorbell overflow.
+ DPI has a 32-bit counter for each request's queue
+ outstanding doorbell counts. Interrupt will fire
+ if the count overflows. */
+ uint64_t reserved_2_7 : 6;
+ uint64_t nfovr : 1; /**< CSR Fifo Overflow
+ DPI can store upto 16 CSR request. The FIFO will
+ overflow if that number is exceeded. */
+ uint64_t nderr : 1; /**< NCB Decode Error
+ DPI received a NCB transaction on the outbound
+ bus to the DPI deviceID, but the command was not
+ recognized. */
+#else
+ uint64_t nderr : 1;
+ uint64_t nfovr : 1;
+ uint64_t reserved_2_7 : 6;
+ uint64_t dmadbo : 8;
+ uint64_t req_badadr : 1;
+ uint64_t req_badlen : 1;
+ uint64_t req_ovrflw : 1;
+ uint64_t req_undflw : 1;
+ uint64_t req_anull : 1;
+ uint64_t req_inull : 1;
+ uint64_t req_badfil : 1;
+ uint64_t reserved_23_23 : 1;
+ uint64_t sprt0_rst : 1;
+ uint64_t sprt1_rst : 1;
+ uint64_t reserved_26_63 : 38;
+#endif
+ } s;
+ struct cvmx_dpi_int_reg_s cn63xx;
+ struct cvmx_dpi_int_reg_s cn63xxp1;
+};
+typedef union cvmx_dpi_int_reg cvmx_dpi_int_reg_t;
+
+/**
+ * cvmx_dpi_pint_info
+ *
+ * DPI_PINT_INFO = DPI Packet Interrupt Info
+ *
+ * DPI Packet Interrupt Info.
+ */
+union cvmx_dpi_pint_info
+{
+ uint64_t u64;
+ struct cvmx_dpi_pint_info_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_14_63 : 50;
+ uint64_t iinfo : 6; /**< Packet Instruction Doorbell count overflow info */
+ uint64_t reserved_6_7 : 2;
+ uint64_t sinfo : 6; /**< Packet Scatterlist Doorbell count overflow info */
+#else
+ uint64_t sinfo : 6;
+ uint64_t reserved_6_7 : 2;
+ uint64_t iinfo : 6;
+ uint64_t reserved_14_63 : 50;
+#endif
+ } s;
+ struct cvmx_dpi_pint_info_s cn63xx;
+ struct cvmx_dpi_pint_info_s cn63xxp1;
+};
+typedef union cvmx_dpi_pint_info cvmx_dpi_pint_info_t;
+
+/**
+ * cvmx_dpi_pkt_err_rsp
+ */
+union cvmx_dpi_pkt_err_rsp
+{
+ uint64_t u64;
+ struct cvmx_dpi_pkt_err_rsp_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_1_63 : 63;
+ uint64_t pkterr : 1; /**< Indicates that an ErrorResponse was received from
+ the I/O subsystem. */
+#else
+ uint64_t pkterr : 1;
+ uint64_t reserved_1_63 : 63;
+#endif
+ } s;
+ struct cvmx_dpi_pkt_err_rsp_s cn63xx;
+ struct cvmx_dpi_pkt_err_rsp_s cn63xxp1;
+};
+typedef union cvmx_dpi_pkt_err_rsp cvmx_dpi_pkt_err_rsp_t;
+
+/**
+ * cvmx_dpi_req_err_rsp
+ */
+union cvmx_dpi_req_err_rsp
+{
+ uint64_t u64;
+ struct cvmx_dpi_req_err_rsp_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t qerr : 8; /**< Indicates which instruction queue received an
+ ErrorResponse from the I/O subsystem.
+ SW must clear the bit before the the cooresponding
+ instruction queue will continue processing
+ instructions if DPI_REQ_ERR_RSP_EN[EN] is set. */
+#else
+ uint64_t qerr : 8;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_req_err_rsp_s cn63xx;
+ struct cvmx_dpi_req_err_rsp_s cn63xxp1;
+};
+typedef union cvmx_dpi_req_err_rsp cvmx_dpi_req_err_rsp_t;
+
+/**
+ * cvmx_dpi_req_err_rsp_en
+ */
+union cvmx_dpi_req_err_rsp_en
+{
+ uint64_t u64;
+ struct cvmx_dpi_req_err_rsp_en_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t en : 8; /**< Indicates which instruction queues should stop
+ dispatching instructions when an ErrorResponse
+ is received from the I/O subsystem. */
+#else
+ uint64_t en : 8;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_req_err_rsp_en_s cn63xx;
+ struct cvmx_dpi_req_err_rsp_en_s cn63xxp1;
+};
+typedef union cvmx_dpi_req_err_rsp_en cvmx_dpi_req_err_rsp_en_t;
+
+/**
+ * cvmx_dpi_req_err_rst
+ */
+union cvmx_dpi_req_err_rst
+{
+ uint64_t u64;
+ struct cvmx_dpi_req_err_rst_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t qerr : 8; /**< Indicates which instruction queue dropped an
+ instruction because the source or destination
+ was in reset.
+ SW must clear the bit before the the cooresponding
+ instruction queue will continue processing
+ instructions if DPI_REQ_ERR_RST_EN[EN] is set. */
+#else
+ uint64_t qerr : 8;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_req_err_rst_s cn63xx;
+ struct cvmx_dpi_req_err_rst_s cn63xxp1;
+};
+typedef union cvmx_dpi_req_err_rst cvmx_dpi_req_err_rst_t;
+
+/**
+ * cvmx_dpi_req_err_rst_en
+ */
+union cvmx_dpi_req_err_rst_en
+{
+ uint64_t u64;
+ struct cvmx_dpi_req_err_rst_en_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t en : 8; /**< Indicates which instruction queues should stop
+ dispatching instructions when an instruction
+ is dropped because the source or destination port
+ is in reset. */
+#else
+ uint64_t en : 8;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_req_err_rst_en_s cn63xx;
+ struct cvmx_dpi_req_err_rst_en_s cn63xxp1;
+};
+typedef union cvmx_dpi_req_err_rst_en cvmx_dpi_req_err_rst_en_t;
+
+/**
+ * cvmx_dpi_req_gbl_en
+ */
+union cvmx_dpi_req_gbl_en
+{
+ uint64_t u64;
+ struct cvmx_dpi_req_gbl_en_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_8_63 : 56;
+ uint64_t qen : 8; /**< Indicates which instruction queues are enabled and
+ can dispatch instructions to a requesting engine. */
+#else
+ uint64_t qen : 8;
+ uint64_t reserved_8_63 : 56;
+#endif
+ } s;
+ struct cvmx_dpi_req_gbl_en_s cn63xx;
+ struct cvmx_dpi_req_gbl_en_s cn63xxp1;
+};
+typedef union cvmx_dpi_req_gbl_en cvmx_dpi_req_gbl_en_t;
+
+/**
+ * cvmx_dpi_sli_prt#_cfg
+ *
+ * DPI_SLI_PRTx_CFG = DPI SLI Port Configuration
+ *
+ * Configures the Max Read Request Size, Max Paylod Size, and Max Number of SLI Tags in use
+ */
+union cvmx_dpi_sli_prtx_cfg
+{
+ uint64_t u64;
+ struct cvmx_dpi_sli_prtx_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_25_63 : 39;
+ uint64_t halt : 1; /**< When set, HALT indicates that the MAC has detected
+ a reset condition. No further instructions that
+ reference the MAC from any instruction Q will be
+ issued until the MAC comes out of reset and HALT
+ is cleared in SLI_CTL_PORTx[DIS_PORT]. */
+ uint64_t reserved_21_23 : 3;
+ uint64_t qlm_cfg : 1; /**< Read only copy of the QLM CFG pin
+ 0= MAC is PCIe
+ 1= MAC is SRIO */
+ uint64_t reserved_17_19 : 3;
+ uint64_t rd_mode : 1; /**< Read Mode
+ 0=Exact Read Mode
+ If the port is a PCIe port, the HW reads on a
+ 4B granularity. In this mode, the HW may break
+ a given read into 3 operations to satisify
+ PCIe rules.
+ If the port is a SRIO port, the HW follows the
+ SRIO read rules from the SRIO specification and
+ only issues 32*n, 16, and 8 byte operations
+ on the SRIO bus.
+ 1=Block Mode
+ The HW will read more data than requested in
+ order to minimize the number of operations
+ necessary to complete the operation.
+ The memory region must be memory like. */
+ uint64_t reserved_14_15 : 2;
+ uint64_t molr : 6; /**< Max Outstanding Load Requests
+ Limits the number of oustanding load requests on
+ the port by restricting the number of tags
+ used by the SLI to track load responses. This
+ value can range from 1 to 32. Setting a value of
+ 0 will halt all read traffic to the port. There
+ are no restrictions on when this value
+ can be changed. */
+ uint64_t mps_lim : 1; /**< MAC memory space write requests cannot cross the
+ (naturally-aligned) MPS boundary.
+ When clear, DPI is allowed to issue a MAC memory
+ space read that crosses the naturally-aligned
+ boundary of size defined by MPS. (DPI will still
+ only cross the boundary when it would eliminate a
+ write by doing so.)
+ When set, DPI will never issue a MAC memory space
+ write that crosses the naturally-aligned boundary
+ of size defined by MPS. */
+ uint64_t reserved_5_6 : 2;
+ uint64_t mps : 1; /**< Max Payload Size
+ 0 = 128B
+ 1 = 256B
+ For PCIe MACs, this MPS size must not exceed
+ the size selected by PCIE*_CFG030[MPS].
+ For sRIO MACs, all MPS values are allowed. */
+ uint64_t mrrs_lim : 1; /**< MAC memory space read requests cannot cross the
+ (naturally-aligned) MRRS boundary.
+ When clear, DPI is allowed to issue a MAC memory
+ space read that crosses the naturally-aligned
+ boundary of size defined by MRRS. (DPI will still
+ only cross the boundary when it would eliminate a
+ read by doing so.)
+ When set, DPI will never issue a MAC memory space
+ read that crosses the naturally-aligned boundary
+ of size defined by MRRS. */
+ uint64_t reserved_2_2 : 1;
+ uint64_t mrrs : 2; /**< Max Read Request Size
+ 0 = 128B
+ 1 = 256B
+ 2 = 512B
+ 3 = 1024B
+ For PCIe MACs, this MRRS size must not exceed
+ the size selected by PCIE*_CFG030[MRRS].
+ For sRIO MACs, this MRRS size must be <= 256B. */
+#else
+ uint64_t mrrs : 2;
+ uint64_t reserved_2_2 : 1;
+ uint64_t mrrs_lim : 1;
+ uint64_t mps : 1;
+ uint64_t reserved_5_6 : 2;
+ uint64_t mps_lim : 1;
+ uint64_t molr : 6;
+ uint64_t reserved_14_15 : 2;
+ uint64_t rd_mode : 1;
+ uint64_t reserved_17_19 : 3;
+ uint64_t qlm_cfg : 1;
+ uint64_t reserved_21_23 : 3;
+ uint64_t halt : 1;
+ uint64_t reserved_25_63 : 39;
+#endif
+ } s;
+ struct cvmx_dpi_sli_prtx_cfg_s cn63xx;
+ struct cvmx_dpi_sli_prtx_cfg_s cn63xxp1;
+};
+typedef union cvmx_dpi_sli_prtx_cfg cvmx_dpi_sli_prtx_cfg_t;
+
+/**
+ * cvmx_dpi_sli_prt#_err
+ *
+ * DPI_SLI_PRTx_ERR = DPI SLI Port Error Info
+ *
+ * Logs the Address and Request Queue associated with the reported SLI error response
+ */
+union cvmx_dpi_sli_prtx_err
+{
+ uint64_t u64;
+ struct cvmx_dpi_sli_prtx_err_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t addr : 61; /**< Address of the failed load request. */
+ uint64_t reserved_0_2 : 3;
+#else
+ uint64_t reserved_0_2 : 3;
+ uint64_t addr : 61;
+#endif
+ } s;
+ struct cvmx_dpi_sli_prtx_err_s cn63xx;
+ struct cvmx_dpi_sli_prtx_err_s cn63xxp1;
+};
+typedef union cvmx_dpi_sli_prtx_err cvmx_dpi_sli_prtx_err_t;
+
+/**
+ * cvmx_dpi_sli_prt#_err_info
+ *
+ * DPI_SLI_PRTx_ERR_INFO = DPI SLI Port Error Info
+ *
+ * Logs the Address and Request Queue associated with the reported SLI error response
+ */
+union cvmx_dpi_sli_prtx_err_info
+{
+ uint64_t u64;
+ struct cvmx_dpi_sli_prtx_err_info_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ uint64_t reserved_9_63 : 55;
+ uint64_t lock : 1; /**< DPI_SLI_PRTx_ERR and DPI_SLI_PRTx_ERR_INFO have
+ captured and locked contents. */
+ uint64_t reserved_5_7 : 3;
+ uint64_t type : 1; /**< Type of transaction that caused the ErrorResponse.
+ 0=DMA Instruction
+ 1=PKT Instruction */
+ uint64_t reserved_3_3 : 1;
+ uint64_t reqq : 3; /**< Request queue that made the failed load request. */
+#else
+ uint64_t reqq : 3;
+ uint64_t reserved_3_3 : 1;
+ uint64_t type : 1;
+ uint64_t reserved_5_7 : 3;
+ uint64_t lock : 1;
+ uint64_t reserved_9_63 : 55;
+#endif
+ } s;
+ struct cvmx_dpi_sli_prtx_err_info_s cn63xx;
+ struct cvmx_dpi_sli_prtx_err_info_s cn63xxp1;
+};
+typedef union cvmx_dpi_sli_prtx_err_info cvmx_dpi_sli_prtx_err_info_t;
+
+#endif
OpenPOWER on IntegriCloud