/***********************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. * *
$Revision$
* */ #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