diff options
Diffstat (limited to 'sys/contrib/octeon-sdk/cvmx-npi-defs.h')
-rw-r--r-- | sys/contrib/octeon-sdk/cvmx-npi-defs.h | 4746 |
1 files changed, 4746 insertions, 0 deletions
diff --git a/sys/contrib/octeon-sdk/cvmx-npi-defs.h b/sys/contrib/octeon-sdk/cvmx-npi-defs.h new file mode 100644 index 0000000..f8e18e9 --- /dev/null +++ b/sys/contrib/octeon-sdk/cvmx-npi-defs.h @@ -0,0 +1,4746 @@ +/***********************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-npi-defs.h + * + * Configuration and status register (CSR) type definitions for + * Octeon npi. + * + * This file is auto generated. Do not edit. + * + * <hr>$Revision$<hr> + * + */ +#ifndef __CVMX_NPI_TYPEDEFS_H__ +#define __CVMX_NPI_TYPEDEFS_H__ + +#define CVMX_NPI_BASE_ADDR_INPUT0 CVMX_NPI_BASE_ADDR_INPUTX(0) +#define CVMX_NPI_BASE_ADDR_INPUT1 CVMX_NPI_BASE_ADDR_INPUTX(1) +#define CVMX_NPI_BASE_ADDR_INPUT2 CVMX_NPI_BASE_ADDR_INPUTX(2) +#define CVMX_NPI_BASE_ADDR_INPUT3 CVMX_NPI_BASE_ADDR_INPUTX(3) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_BASE_ADDR_INPUTX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_BASE_ADDR_INPUTX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000000070ull) + ((offset) & 3) * 16; +} +#else +#define CVMX_NPI_BASE_ADDR_INPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000070ull) + ((offset) & 3) * 16) +#endif +#define CVMX_NPI_BASE_ADDR_OUTPUT0 CVMX_NPI_BASE_ADDR_OUTPUTX(0) +#define CVMX_NPI_BASE_ADDR_OUTPUT1 CVMX_NPI_BASE_ADDR_OUTPUTX(1) +#define CVMX_NPI_BASE_ADDR_OUTPUT2 CVMX_NPI_BASE_ADDR_OUTPUTX(2) +#define CVMX_NPI_BASE_ADDR_OUTPUT3 CVMX_NPI_BASE_ADDR_OUTPUTX(3) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_BASE_ADDR_OUTPUTX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_BASE_ADDR_OUTPUTX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F00000000B8ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_BASE_ADDR_OUTPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F00000000B8ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_BIST_STATUS CVMX_NPI_BIST_STATUS_FUNC() +static inline uint64_t CVMX_NPI_BIST_STATUS_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_BIST_STATUS not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000003F8ull); +} +#else +#define CVMX_NPI_BIST_STATUS (CVMX_ADD_IO_SEG(0x00011F00000003F8ull)) +#endif +#define CVMX_NPI_BUFF_SIZE_OUTPUT0 CVMX_NPI_BUFF_SIZE_OUTPUTX(0) +#define CVMX_NPI_BUFF_SIZE_OUTPUT1 CVMX_NPI_BUFF_SIZE_OUTPUTX(1) +#define CVMX_NPI_BUFF_SIZE_OUTPUT2 CVMX_NPI_BUFF_SIZE_OUTPUTX(2) +#define CVMX_NPI_BUFF_SIZE_OUTPUT3 CVMX_NPI_BUFF_SIZE_OUTPUTX(3) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_BUFF_SIZE_OUTPUTX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_BUFF_SIZE_OUTPUTX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F00000000E0ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_BUFF_SIZE_OUTPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F00000000E0ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_COMP_CTL CVMX_NPI_COMP_CTL_FUNC() +static inline uint64_t CVMX_NPI_COMP_CTL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_COMP_CTL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000218ull); +} +#else +#define CVMX_NPI_COMP_CTL (CVMX_ADD_IO_SEG(0x00011F0000000218ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_CTL_STATUS CVMX_NPI_CTL_STATUS_FUNC() +static inline uint64_t CVMX_NPI_CTL_STATUS_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_CTL_STATUS not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000010ull); +} +#else +#define CVMX_NPI_CTL_STATUS (CVMX_ADD_IO_SEG(0x00011F0000000010ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_DBG_SELECT CVMX_NPI_DBG_SELECT_FUNC() +static inline uint64_t CVMX_NPI_DBG_SELECT_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_DBG_SELECT not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000008ull); +} +#else +#define CVMX_NPI_DBG_SELECT (CVMX_ADD_IO_SEG(0x00011F0000000008ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_DMA_CONTROL CVMX_NPI_DMA_CONTROL_FUNC() +static inline uint64_t CVMX_NPI_DMA_CONTROL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_DMA_CONTROL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000128ull); +} +#else +#define CVMX_NPI_DMA_CONTROL (CVMX_ADD_IO_SEG(0x00011F0000000128ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_DMA_HIGHP_COUNTS CVMX_NPI_DMA_HIGHP_COUNTS_FUNC() +static inline uint64_t CVMX_NPI_DMA_HIGHP_COUNTS_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_DMA_HIGHP_COUNTS not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000148ull); +} +#else +#define CVMX_NPI_DMA_HIGHP_COUNTS (CVMX_ADD_IO_SEG(0x00011F0000000148ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_DMA_HIGHP_NADDR CVMX_NPI_DMA_HIGHP_NADDR_FUNC() +static inline uint64_t CVMX_NPI_DMA_HIGHP_NADDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_DMA_HIGHP_NADDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000158ull); +} +#else +#define CVMX_NPI_DMA_HIGHP_NADDR (CVMX_ADD_IO_SEG(0x00011F0000000158ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_DMA_LOWP_COUNTS CVMX_NPI_DMA_LOWP_COUNTS_FUNC() +static inline uint64_t CVMX_NPI_DMA_LOWP_COUNTS_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_DMA_LOWP_COUNTS not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000140ull); +} +#else +#define CVMX_NPI_DMA_LOWP_COUNTS (CVMX_ADD_IO_SEG(0x00011F0000000140ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_DMA_LOWP_NADDR CVMX_NPI_DMA_LOWP_NADDR_FUNC() +static inline uint64_t CVMX_NPI_DMA_LOWP_NADDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_DMA_LOWP_NADDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000150ull); +} +#else +#define CVMX_NPI_DMA_LOWP_NADDR (CVMX_ADD_IO_SEG(0x00011F0000000150ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_HIGHP_DBELL CVMX_NPI_HIGHP_DBELL_FUNC() +static inline uint64_t CVMX_NPI_HIGHP_DBELL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_HIGHP_DBELL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000120ull); +} +#else +#define CVMX_NPI_HIGHP_DBELL (CVMX_ADD_IO_SEG(0x00011F0000000120ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_HIGHP_IBUFF_SADDR CVMX_NPI_HIGHP_IBUFF_SADDR_FUNC() +static inline uint64_t CVMX_NPI_HIGHP_IBUFF_SADDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_HIGHP_IBUFF_SADDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000110ull); +} +#else +#define CVMX_NPI_HIGHP_IBUFF_SADDR (CVMX_ADD_IO_SEG(0x00011F0000000110ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_INPUT_CONTROL CVMX_NPI_INPUT_CONTROL_FUNC() +static inline uint64_t CVMX_NPI_INPUT_CONTROL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_INPUT_CONTROL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000138ull); +} +#else +#define CVMX_NPI_INPUT_CONTROL (CVMX_ADD_IO_SEG(0x00011F0000000138ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_INT_ENB CVMX_NPI_INT_ENB_FUNC() +static inline uint64_t CVMX_NPI_INT_ENB_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_INT_ENB not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000020ull); +} +#else +#define CVMX_NPI_INT_ENB (CVMX_ADD_IO_SEG(0x00011F0000000020ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_INT_SUM CVMX_NPI_INT_SUM_FUNC() +static inline uint64_t CVMX_NPI_INT_SUM_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_INT_SUM not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000018ull); +} +#else +#define CVMX_NPI_INT_SUM (CVMX_ADD_IO_SEG(0x00011F0000000018ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_LOWP_DBELL CVMX_NPI_LOWP_DBELL_FUNC() +static inline uint64_t CVMX_NPI_LOWP_DBELL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_LOWP_DBELL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000118ull); +} +#else +#define CVMX_NPI_LOWP_DBELL (CVMX_ADD_IO_SEG(0x00011F0000000118ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_LOWP_IBUFF_SADDR CVMX_NPI_LOWP_IBUFF_SADDR_FUNC() +static inline uint64_t CVMX_NPI_LOWP_IBUFF_SADDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_LOWP_IBUFF_SADDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000108ull); +} +#else +#define CVMX_NPI_LOWP_IBUFF_SADDR (CVMX_ADD_IO_SEG(0x00011F0000000108ull)) +#endif +#define CVMX_NPI_MEM_ACCESS_SUBID3 CVMX_NPI_MEM_ACCESS_SUBIDX(3) +#define CVMX_NPI_MEM_ACCESS_SUBID4 CVMX_NPI_MEM_ACCESS_SUBIDX(4) +#define CVMX_NPI_MEM_ACCESS_SUBID5 CVMX_NPI_MEM_ACCESS_SUBIDX(5) +#define CVMX_NPI_MEM_ACCESS_SUBID6 CVMX_NPI_MEM_ACCESS_SUBIDX(6) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_MEM_ACCESS_SUBIDX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && (((offset >= 3) && (offset <= 6)))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && (((offset >= 3) && (offset <= 6)))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && (((offset >= 3) && (offset <= 6)))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && (((offset >= 3) && (offset <= 6)))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && (((offset >= 3) && (offset <= 6)))))) + cvmx_warn("CVMX_NPI_MEM_ACCESS_SUBIDX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000000028ull) + ((offset) & 7) * 8 - 8*3; +} +#else +#define CVMX_NPI_MEM_ACCESS_SUBIDX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000028ull) + ((offset) & 7) * 8 - 8*3) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_MSI_RCV CVMX_NPI_MSI_RCV_FUNC() +static inline uint64_t CVMX_NPI_MSI_RCV_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_MSI_RCV not supported on this chip\n"); + return 0x0000000000000190ull; +} +#else +#define CVMX_NPI_MSI_RCV (0x0000000000000190ull) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_NPI_MSI_RCV CVMX_NPI_NPI_MSI_RCV_FUNC() +static inline uint64_t CVMX_NPI_NPI_MSI_RCV_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_NPI_MSI_RCV not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001190ull); +} +#else +#define CVMX_NPI_NPI_MSI_RCV (CVMX_ADD_IO_SEG(0x00011F0000001190ull)) +#endif +#define CVMX_NPI_NUM_DESC_OUTPUT0 CVMX_NPI_NUM_DESC_OUTPUTX(0) +#define CVMX_NPI_NUM_DESC_OUTPUT1 CVMX_NPI_NUM_DESC_OUTPUTX(1) +#define CVMX_NPI_NUM_DESC_OUTPUT2 CVMX_NPI_NUM_DESC_OUTPUTX(2) +#define CVMX_NPI_NUM_DESC_OUTPUT3 CVMX_NPI_NUM_DESC_OUTPUTX(3) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_NUM_DESC_OUTPUTX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_NUM_DESC_OUTPUTX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000000050ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_NUM_DESC_OUTPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000050ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_OUTPUT_CONTROL CVMX_NPI_OUTPUT_CONTROL_FUNC() +static inline uint64_t CVMX_NPI_OUTPUT_CONTROL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_OUTPUT_CONTROL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000100ull); +} +#else +#define CVMX_NPI_OUTPUT_CONTROL (CVMX_ADD_IO_SEG(0x00011F0000000100ull)) +#endif +#define CVMX_NPI_P0_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(0) +#define CVMX_NPI_P0_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(0) +#define CVMX_NPI_P0_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(0) +#define CVMX_NPI_P0_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(0) +#define CVMX_NPI_P1_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(1) +#define CVMX_NPI_P1_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(1) +#define CVMX_NPI_P1_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(1) +#define CVMX_NPI_P1_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(1) +#define CVMX_NPI_P2_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(2) +#define CVMX_NPI_P2_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(2) +#define CVMX_NPI_P2_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(2) +#define CVMX_NPI_P2_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(2) +#define CVMX_NPI_P3_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(3) +#define CVMX_NPI_P3_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(3) +#define CVMX_NPI_P3_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(3) +#define CVMX_NPI_P3_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(3) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_PCI_BAR1_INDEXX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 31))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 31))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 31))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 31))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 31))))) + cvmx_warn("CVMX_NPI_PCI_BAR1_INDEXX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000001100ull) + ((offset) & 31) * 4; +} +#else +#define CVMX_NPI_PCI_BAR1_INDEXX(offset) (CVMX_ADD_IO_SEG(0x00011F0000001100ull) + ((offset) & 31) * 4) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_BIST_REG CVMX_NPI_PCI_BIST_REG_FUNC() +static inline uint64_t CVMX_NPI_PCI_BIST_REG_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN50XX))) + cvmx_warn("CVMX_NPI_PCI_BIST_REG not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000011C0ull); +} +#else +#define CVMX_NPI_PCI_BIST_REG (CVMX_ADD_IO_SEG(0x00011F00000011C0ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_BURST_SIZE CVMX_NPI_PCI_BURST_SIZE_FUNC() +static inline uint64_t CVMX_NPI_PCI_BURST_SIZE_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_BURST_SIZE not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000000D8ull); +} +#else +#define CVMX_NPI_PCI_BURST_SIZE (CVMX_ADD_IO_SEG(0x00011F00000000D8ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG00 CVMX_NPI_PCI_CFG00_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG00_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG00 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001800ull); +} +#else +#define CVMX_NPI_PCI_CFG00 (CVMX_ADD_IO_SEG(0x00011F0000001800ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG01 CVMX_NPI_PCI_CFG01_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG01_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG01 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001804ull); +} +#else +#define CVMX_NPI_PCI_CFG01 (CVMX_ADD_IO_SEG(0x00011F0000001804ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG02 CVMX_NPI_PCI_CFG02_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG02_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG02 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001808ull); +} +#else +#define CVMX_NPI_PCI_CFG02 (CVMX_ADD_IO_SEG(0x00011F0000001808ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG03 CVMX_NPI_PCI_CFG03_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG03_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG03 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F000000180Cull); +} +#else +#define CVMX_NPI_PCI_CFG03 (CVMX_ADD_IO_SEG(0x00011F000000180Cull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG04 CVMX_NPI_PCI_CFG04_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG04_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG04 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001810ull); +} +#else +#define CVMX_NPI_PCI_CFG04 (CVMX_ADD_IO_SEG(0x00011F0000001810ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG05 CVMX_NPI_PCI_CFG05_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG05_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG05 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001814ull); +} +#else +#define CVMX_NPI_PCI_CFG05 (CVMX_ADD_IO_SEG(0x00011F0000001814ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG06 CVMX_NPI_PCI_CFG06_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG06_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG06 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001818ull); +} +#else +#define CVMX_NPI_PCI_CFG06 (CVMX_ADD_IO_SEG(0x00011F0000001818ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG07 CVMX_NPI_PCI_CFG07_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG07_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG07 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F000000181Cull); +} +#else +#define CVMX_NPI_PCI_CFG07 (CVMX_ADD_IO_SEG(0x00011F000000181Cull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG08 CVMX_NPI_PCI_CFG08_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG08_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG08 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001820ull); +} +#else +#define CVMX_NPI_PCI_CFG08 (CVMX_ADD_IO_SEG(0x00011F0000001820ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG09 CVMX_NPI_PCI_CFG09_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG09_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG09 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001824ull); +} +#else +#define CVMX_NPI_PCI_CFG09 (CVMX_ADD_IO_SEG(0x00011F0000001824ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG10 CVMX_NPI_PCI_CFG10_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG10_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG10 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001828ull); +} +#else +#define CVMX_NPI_PCI_CFG10 (CVMX_ADD_IO_SEG(0x00011F0000001828ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG11 CVMX_NPI_PCI_CFG11_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG11_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG11 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F000000182Cull); +} +#else +#define CVMX_NPI_PCI_CFG11 (CVMX_ADD_IO_SEG(0x00011F000000182Cull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG12 CVMX_NPI_PCI_CFG12_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG12_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG12 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001830ull); +} +#else +#define CVMX_NPI_PCI_CFG12 (CVMX_ADD_IO_SEG(0x00011F0000001830ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG13 CVMX_NPI_PCI_CFG13_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG13_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG13 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001834ull); +} +#else +#define CVMX_NPI_PCI_CFG13 (CVMX_ADD_IO_SEG(0x00011F0000001834ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG15 CVMX_NPI_PCI_CFG15_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG15_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG15 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F000000183Cull); +} +#else +#define CVMX_NPI_PCI_CFG15 (CVMX_ADD_IO_SEG(0x00011F000000183Cull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG16 CVMX_NPI_PCI_CFG16_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG16_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG16 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001840ull); +} +#else +#define CVMX_NPI_PCI_CFG16 (CVMX_ADD_IO_SEG(0x00011F0000001840ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG17 CVMX_NPI_PCI_CFG17_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG17_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG17 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001844ull); +} +#else +#define CVMX_NPI_PCI_CFG17 (CVMX_ADD_IO_SEG(0x00011F0000001844ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG18 CVMX_NPI_PCI_CFG18_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG18_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG18 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001848ull); +} +#else +#define CVMX_NPI_PCI_CFG18 (CVMX_ADD_IO_SEG(0x00011F0000001848ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG19 CVMX_NPI_PCI_CFG19_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG19_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG19 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F000000184Cull); +} +#else +#define CVMX_NPI_PCI_CFG19 (CVMX_ADD_IO_SEG(0x00011F000000184Cull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG20 CVMX_NPI_PCI_CFG20_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG20_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG20 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001850ull); +} +#else +#define CVMX_NPI_PCI_CFG20 (CVMX_ADD_IO_SEG(0x00011F0000001850ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG21 CVMX_NPI_PCI_CFG21_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG21_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG21 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001854ull); +} +#else +#define CVMX_NPI_PCI_CFG21 (CVMX_ADD_IO_SEG(0x00011F0000001854ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG22 CVMX_NPI_PCI_CFG22_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG22_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG22 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001858ull); +} +#else +#define CVMX_NPI_PCI_CFG22 (CVMX_ADD_IO_SEG(0x00011F0000001858ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG56 CVMX_NPI_PCI_CFG56_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG56_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG56 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018E0ull); +} +#else +#define CVMX_NPI_PCI_CFG56 (CVMX_ADD_IO_SEG(0x00011F00000018E0ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG57 CVMX_NPI_PCI_CFG57_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG57_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG57 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018E4ull); +} +#else +#define CVMX_NPI_PCI_CFG57 (CVMX_ADD_IO_SEG(0x00011F00000018E4ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG58 CVMX_NPI_PCI_CFG58_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG58_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG58 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018E8ull); +} +#else +#define CVMX_NPI_PCI_CFG58 (CVMX_ADD_IO_SEG(0x00011F00000018E8ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG59 CVMX_NPI_PCI_CFG59_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG59_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG59 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018ECull); +} +#else +#define CVMX_NPI_PCI_CFG59 (CVMX_ADD_IO_SEG(0x00011F00000018ECull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG60 CVMX_NPI_PCI_CFG60_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG60_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG60 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018F0ull); +} +#else +#define CVMX_NPI_PCI_CFG60 (CVMX_ADD_IO_SEG(0x00011F00000018F0ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG61 CVMX_NPI_PCI_CFG61_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG61_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG61 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018F4ull); +} +#else +#define CVMX_NPI_PCI_CFG61 (CVMX_ADD_IO_SEG(0x00011F00000018F4ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG62 CVMX_NPI_PCI_CFG62_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG62_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG62 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018F8ull); +} +#else +#define CVMX_NPI_PCI_CFG62 (CVMX_ADD_IO_SEG(0x00011F00000018F8ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CFG63 CVMX_NPI_PCI_CFG63_FUNC() +static inline uint64_t CVMX_NPI_PCI_CFG63_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CFG63 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000018FCull); +} +#else +#define CVMX_NPI_PCI_CFG63 (CVMX_ADD_IO_SEG(0x00011F00000018FCull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CNT_REG CVMX_NPI_PCI_CNT_REG_FUNC() +static inline uint64_t CVMX_NPI_PCI_CNT_REG_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CNT_REG not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000011B8ull); +} +#else +#define CVMX_NPI_PCI_CNT_REG (CVMX_ADD_IO_SEG(0x00011F00000011B8ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_CTL_STATUS_2 CVMX_NPI_PCI_CTL_STATUS_2_FUNC() +static inline uint64_t CVMX_NPI_PCI_CTL_STATUS_2_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_CTL_STATUS_2 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F000000118Cull); +} +#else +#define CVMX_NPI_PCI_CTL_STATUS_2 (CVMX_ADD_IO_SEG(0x00011F000000118Cull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_INT_ARB_CFG CVMX_NPI_PCI_INT_ARB_CFG_FUNC() +static inline uint64_t CVMX_NPI_PCI_INT_ARB_CFG_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_INT_ARB_CFG not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000130ull); +} +#else +#define CVMX_NPI_PCI_INT_ARB_CFG (CVMX_ADD_IO_SEG(0x00011F0000000130ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_INT_ENB2 CVMX_NPI_PCI_INT_ENB2_FUNC() +static inline uint64_t CVMX_NPI_PCI_INT_ENB2_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_INT_ENB2 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000011A0ull); +} +#else +#define CVMX_NPI_PCI_INT_ENB2 (CVMX_ADD_IO_SEG(0x00011F00000011A0ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_INT_SUM2 CVMX_NPI_PCI_INT_SUM2_FUNC() +static inline uint64_t CVMX_NPI_PCI_INT_SUM2_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_INT_SUM2 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001198ull); +} +#else +#define CVMX_NPI_PCI_INT_SUM2 (CVMX_ADD_IO_SEG(0x00011F0000001198ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_READ_CMD CVMX_NPI_PCI_READ_CMD_FUNC() +static inline uint64_t CVMX_NPI_PCI_READ_CMD_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_READ_CMD not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000048ull); +} +#else +#define CVMX_NPI_PCI_READ_CMD (CVMX_ADD_IO_SEG(0x00011F0000000048ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_READ_CMD_6 CVMX_NPI_PCI_READ_CMD_6_FUNC() +static inline uint64_t CVMX_NPI_PCI_READ_CMD_6_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_READ_CMD_6 not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001180ull); +} +#else +#define CVMX_NPI_PCI_READ_CMD_6 (CVMX_ADD_IO_SEG(0x00011F0000001180ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_READ_CMD_C CVMX_NPI_PCI_READ_CMD_C_FUNC() +static inline uint64_t CVMX_NPI_PCI_READ_CMD_C_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_READ_CMD_C not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001184ull); +} +#else +#define CVMX_NPI_PCI_READ_CMD_C (CVMX_ADD_IO_SEG(0x00011F0000001184ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_READ_CMD_E CVMX_NPI_PCI_READ_CMD_E_FUNC() +static inline uint64_t CVMX_NPI_PCI_READ_CMD_E_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_READ_CMD_E not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000001188ull); +} +#else +#define CVMX_NPI_PCI_READ_CMD_E (CVMX_ADD_IO_SEG(0x00011F0000001188ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_SCM_REG CVMX_NPI_PCI_SCM_REG_FUNC() +static inline uint64_t CVMX_NPI_PCI_SCM_REG_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_SCM_REG not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000011A8ull); +} +#else +#define CVMX_NPI_PCI_SCM_REG (CVMX_ADD_IO_SEG(0x00011F00000011A8ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PCI_TSR_REG CVMX_NPI_PCI_TSR_REG_FUNC() +static inline uint64_t CVMX_NPI_PCI_TSR_REG_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PCI_TSR_REG not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000011B0ull); +} +#else +#define CVMX_NPI_PCI_TSR_REG (CVMX_ADD_IO_SEG(0x00011F00000011B0ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PORT32_INSTR_HDR CVMX_NPI_PORT32_INSTR_HDR_FUNC() +static inline uint64_t CVMX_NPI_PORT32_INSTR_HDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PORT32_INSTR_HDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000001F8ull); +} +#else +#define CVMX_NPI_PORT32_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F00000001F8ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PORT33_INSTR_HDR CVMX_NPI_PORT33_INSTR_HDR_FUNC() +static inline uint64_t CVMX_NPI_PORT33_INSTR_HDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PORT33_INSTR_HDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000200ull); +} +#else +#define CVMX_NPI_PORT33_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F0000000200ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PORT34_INSTR_HDR CVMX_NPI_PORT34_INSTR_HDR_FUNC() +static inline uint64_t CVMX_NPI_PORT34_INSTR_HDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PORT34_INSTR_HDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000208ull); +} +#else +#define CVMX_NPI_PORT34_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F0000000208ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PORT35_INSTR_HDR CVMX_NPI_PORT35_INSTR_HDR_FUNC() +static inline uint64_t CVMX_NPI_PORT35_INSTR_HDR_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PORT35_INSTR_HDR not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000210ull); +} +#else +#define CVMX_NPI_PORT35_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F0000000210ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_PORT_BP_CONTROL CVMX_NPI_PORT_BP_CONTROL_FUNC() +static inline uint64_t CVMX_NPI_PORT_BP_CONTROL_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_PORT_BP_CONTROL not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000001F0ull); +} +#else +#define CVMX_NPI_PORT_BP_CONTROL (CVMX_ADD_IO_SEG(0x00011F00000001F0ull)) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_PX_DBPAIR_ADDR(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_PX_DBPAIR_ADDR(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000000180ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_PX_DBPAIR_ADDR(offset) (CVMX_ADD_IO_SEG(0x00011F0000000180ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_PX_INSTR_ADDR(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_PX_INSTR_ADDR(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F00000001C0ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_PX_INSTR_ADDR(offset) (CVMX_ADD_IO_SEG(0x00011F00000001C0ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_PX_INSTR_CNTS(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_PX_INSTR_CNTS(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F00000001A0ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_PX_INSTR_CNTS(offset) (CVMX_ADD_IO_SEG(0x00011F00000001A0ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_PX_PAIR_CNTS(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_PX_PAIR_CNTS(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000000160ull) + ((offset) & 3) * 8; +} +#else +#define CVMX_NPI_PX_PAIR_CNTS(offset) (CVMX_ADD_IO_SEG(0x00011F0000000160ull) + ((offset) & 3) * 8) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_RSL_INT_BLOCKS CVMX_NPI_RSL_INT_BLOCKS_FUNC() +static inline uint64_t CVMX_NPI_RSL_INT_BLOCKS_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_RSL_INT_BLOCKS not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F0000000000ull); +} +#else +#define CVMX_NPI_RSL_INT_BLOCKS (CVMX_ADD_IO_SEG(0x00011F0000000000ull)) +#endif +#define CVMX_NPI_SIZE_INPUT0 CVMX_NPI_SIZE_INPUTX(0) +#define CVMX_NPI_SIZE_INPUT1 CVMX_NPI_SIZE_INPUTX(1) +#define CVMX_NPI_SIZE_INPUT2 CVMX_NPI_SIZE_INPUTX(2) +#define CVMX_NPI_SIZE_INPUT3 CVMX_NPI_SIZE_INPUTX(3) +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +static inline uint64_t CVMX_NPI_SIZE_INPUTX(unsigned long offset) +{ + if (!( + (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || + (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || + (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || + (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) + cvmx_warn("CVMX_NPI_SIZE_INPUTX(%lu) is invalid on this chip\n", offset); + return CVMX_ADD_IO_SEG(0x00011F0000000078ull) + ((offset) & 3) * 16; +} +#else +#define CVMX_NPI_SIZE_INPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000078ull) + ((offset) & 3) * 16) +#endif +#if CVMX_ENABLE_CSR_ADDRESS_CHECKING +#define CVMX_NPI_WIN_READ_TO CVMX_NPI_WIN_READ_TO_FUNC() +static inline uint64_t CVMX_NPI_WIN_READ_TO_FUNC(void) +{ + if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) + cvmx_warn("CVMX_NPI_WIN_READ_TO not supported on this chip\n"); + return CVMX_ADD_IO_SEG(0x00011F00000001E0ull); +} +#else +#define CVMX_NPI_WIN_READ_TO (CVMX_ADD_IO_SEG(0x00011F00000001E0ull)) +#endif + +/** + * cvmx_npi_base_addr_input# + * + * NPI_BASE_ADDR_INPUT0 = NPI's Base Address Input 0 Register + * + * The address to start reading Instructions from for Input-0. + */ +union cvmx_npi_base_addr_inputx +{ + uint64_t u64; + struct cvmx_npi_base_addr_inputx_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t baddr : 61; /**< The address to read Instruction from for output 0. + This address is 8-byte aligned, for this reason + address bits [2:0] will always be zero. */ + uint64_t reserved_0_2 : 3; +#else + uint64_t reserved_0_2 : 3; + uint64_t baddr : 61; +#endif + } s; + struct cvmx_npi_base_addr_inputx_s cn30xx; + struct cvmx_npi_base_addr_inputx_s cn31xx; + struct cvmx_npi_base_addr_inputx_s cn38xx; + struct cvmx_npi_base_addr_inputx_s cn38xxp2; + struct cvmx_npi_base_addr_inputx_s cn50xx; + struct cvmx_npi_base_addr_inputx_s cn58xx; + struct cvmx_npi_base_addr_inputx_s cn58xxp1; +}; +typedef union cvmx_npi_base_addr_inputx cvmx_npi_base_addr_inputx_t; + +/** + * cvmx_npi_base_addr_output# + * + * NPI_BASE_ADDR_OUTPUT0 = NPI's Base Address Output 0 Register + * + * The address to start reading Instructions from for Output-0. + */ +union cvmx_npi_base_addr_outputx +{ + uint64_t u64; + struct cvmx_npi_base_addr_outputx_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t baddr : 61; /**< The address to read Instruction from for output 0. + This address is 8-byte aligned, for this reason + address bits [2:0] will always be zero. */ + uint64_t reserved_0_2 : 3; +#else + uint64_t reserved_0_2 : 3; + uint64_t baddr : 61; +#endif + } s; + struct cvmx_npi_base_addr_outputx_s cn30xx; + struct cvmx_npi_base_addr_outputx_s cn31xx; + struct cvmx_npi_base_addr_outputx_s cn38xx; + struct cvmx_npi_base_addr_outputx_s cn38xxp2; + struct cvmx_npi_base_addr_outputx_s cn50xx; + struct cvmx_npi_base_addr_outputx_s cn58xx; + struct cvmx_npi_base_addr_outputx_s cn58xxp1; +}; +typedef union cvmx_npi_base_addr_outputx cvmx_npi_base_addr_outputx_t; + +/** + * cvmx_npi_bist_status + * + * NPI_BIST_STATUS = NPI's BIST Status Register + * + * Results from BIST runs of NPI's memories. + */ +union cvmx_npi_bist_status +{ + uint64_t u64; + struct cvmx_npi_bist_status_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_20_63 : 44; + uint64_t csr_bs : 1; /**< BIST Status for the csr_fifo */ + uint64_t dif_bs : 1; /**< BIST Status for the dif_fifo */ + uint64_t rdp_bs : 1; /**< BIST Status for the rdp_fifo */ + uint64_t pcnc_bs : 1; /**< BIST Status for the pcn_cnt_fifo */ + uint64_t pcn_bs : 1; /**< BIST Status for the pcn_fifo */ + uint64_t rdn_bs : 1; /**< BIST Status for the rdn_fifo */ + uint64_t pcac_bs : 1; /**< BIST Status for the pca_cmd_fifo */ + uint64_t pcad_bs : 1; /**< BIST Status for the pca_data_fifo */ + uint64_t rdnl_bs : 1; /**< BIST Status for the rdn_length_fifo */ + uint64_t pgf_bs : 1; /**< BIST Status for the pgf_fifo */ + uint64_t pig_bs : 1; /**< BIST Status for the pig_fifo */ + uint64_t pof0_bs : 1; /**< BIST Status for the pof0_fifo */ + uint64_t pof1_bs : 1; /**< BIST Status for the pof1_fifo */ + uint64_t pof2_bs : 1; /**< BIST Status for the pof2_fifo */ + uint64_t pof3_bs : 1; /**< BIST Status for the pof3_fifo */ + uint64_t pos_bs : 1; /**< BIST Status for the pos_fifo */ + uint64_t nus_bs : 1; /**< BIST Status for the nus_fifo */ + uint64_t dob_bs : 1; /**< BIST Status for the dob_fifo */ + uint64_t pdf_bs : 1; /**< BIST Status for the pdf_fifo */ + uint64_t dpi_bs : 1; /**< BIST Status for the dpi_fifo */ +#else + uint64_t dpi_bs : 1; + uint64_t pdf_bs : 1; + uint64_t dob_bs : 1; + uint64_t nus_bs : 1; + uint64_t pos_bs : 1; + uint64_t pof3_bs : 1; + uint64_t pof2_bs : 1; + uint64_t pof1_bs : 1; + uint64_t pof0_bs : 1; + uint64_t pig_bs : 1; + uint64_t pgf_bs : 1; + uint64_t rdnl_bs : 1; + uint64_t pcad_bs : 1; + uint64_t pcac_bs : 1; + uint64_t rdn_bs : 1; + uint64_t pcn_bs : 1; + uint64_t pcnc_bs : 1; + uint64_t rdp_bs : 1; + uint64_t dif_bs : 1; + uint64_t csr_bs : 1; + uint64_t reserved_20_63 : 44; +#endif + } s; + struct cvmx_npi_bist_status_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_20_63 : 44; + uint64_t csr_bs : 1; /**< BIST Status for the csr_fifo */ + uint64_t dif_bs : 1; /**< BIST Status for the dif_fifo */ + uint64_t rdp_bs : 1; /**< BIST Status for the rdp_fifo */ + uint64_t pcnc_bs : 1; /**< BIST Status for the pcn_cnt_fifo */ + uint64_t pcn_bs : 1; /**< BIST Status for the pcn_fifo */ + uint64_t rdn_bs : 1; /**< BIST Status for the rdn_fifo */ + uint64_t pcac_bs : 1; /**< BIST Status for the pca_cmd_fifo */ + uint64_t pcad_bs : 1; /**< BIST Status for the pca_data_fifo */ + uint64_t rdnl_bs : 1; /**< BIST Status for the rdn_length_fifo */ + uint64_t pgf_bs : 1; /**< BIST Status for the pgf_fifo */ + uint64_t pig_bs : 1; /**< BIST Status for the pig_fifo */ + uint64_t pof0_bs : 1; /**< BIST Status for the pof0_fifo */ + uint64_t reserved_5_7 : 3; + uint64_t pos_bs : 1; /**< BIST Status for the pos_fifo */ + uint64_t nus_bs : 1; /**< BIST Status for the nus_fifo */ + uint64_t dob_bs : 1; /**< BIST Status for the dob_fifo */ + uint64_t pdf_bs : 1; /**< BIST Status for the pdf_fifo */ + uint64_t dpi_bs : 1; /**< BIST Status for the dpi_fifo */ +#else + uint64_t dpi_bs : 1; + uint64_t pdf_bs : 1; + uint64_t dob_bs : 1; + uint64_t nus_bs : 1; + uint64_t pos_bs : 1; + uint64_t reserved_5_7 : 3; + uint64_t pof0_bs : 1; + uint64_t pig_bs : 1; + uint64_t pgf_bs : 1; + uint64_t rdnl_bs : 1; + uint64_t pcad_bs : 1; + uint64_t pcac_bs : 1; + uint64_t rdn_bs : 1; + uint64_t pcn_bs : 1; + uint64_t pcnc_bs : 1; + uint64_t rdp_bs : 1; + uint64_t dif_bs : 1; + uint64_t csr_bs : 1; + uint64_t reserved_20_63 : 44; +#endif + } cn30xx; + struct cvmx_npi_bist_status_s cn31xx; + struct cvmx_npi_bist_status_s cn38xx; + struct cvmx_npi_bist_status_s cn38xxp2; + struct cvmx_npi_bist_status_cn50xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_20_63 : 44; + uint64_t csr_bs : 1; /**< BIST Status for the csr_fifo */ + uint64_t dif_bs : 1; /**< BIST Status for the dif_fifo */ + uint64_t rdp_bs : 1; /**< BIST Status for the rdp_fifo */ + uint64_t pcnc_bs : 1; /**< BIST Status for the pcn_cnt_fifo */ + uint64_t pcn_bs : 1; /**< BIST Status for the pcn_fifo */ + uint64_t rdn_bs : 1; /**< BIST Status for the rdn_fifo */ + uint64_t pcac_bs : 1; /**< BIST Status for the pca_cmd_fifo */ + uint64_t pcad_bs : 1; /**< BIST Status for the pca_data_fifo */ + uint64_t rdnl_bs : 1; /**< BIST Status for the rdn_length_fifo */ + uint64_t pgf_bs : 1; /**< BIST Status for the pgf_fifo */ + uint64_t pig_bs : 1; /**< BIST Status for the pig_fifo */ + uint64_t pof0_bs : 1; /**< BIST Status for the pof0_fifo */ + uint64_t pof1_bs : 1; /**< BIST Status for the pof1_fifo */ + uint64_t reserved_5_6 : 2; + uint64_t pos_bs : 1; /**< BIST Status for the pos_fifo */ + uint64_t nus_bs : 1; /**< BIST Status for the nus_fifo */ + uint64_t dob_bs : 1; /**< BIST Status for the dob_fifo */ + uint64_t pdf_bs : 1; /**< BIST Status for the pdf_fifo */ + uint64_t dpi_bs : 1; /**< BIST Status for the dpi_fifo */ +#else + uint64_t dpi_bs : 1; + uint64_t pdf_bs : 1; + uint64_t dob_bs : 1; + uint64_t nus_bs : 1; + uint64_t pos_bs : 1; + uint64_t reserved_5_6 : 2; + uint64_t pof1_bs : 1; + uint64_t pof0_bs : 1; + uint64_t pig_bs : 1; + uint64_t pgf_bs : 1; + uint64_t rdnl_bs : 1; + uint64_t pcad_bs : 1; + uint64_t pcac_bs : 1; + uint64_t rdn_bs : 1; + uint64_t pcn_bs : 1; + uint64_t pcnc_bs : 1; + uint64_t rdp_bs : 1; + uint64_t dif_bs : 1; + uint64_t csr_bs : 1; + uint64_t reserved_20_63 : 44; +#endif + } cn50xx; + struct cvmx_npi_bist_status_s cn58xx; + struct cvmx_npi_bist_status_s cn58xxp1; +}; +typedef union cvmx_npi_bist_status cvmx_npi_bist_status_t; + +/** + * cvmx_npi_buff_size_output# + * + * NPI_BUFF_SIZE_OUTPUT0 = NPI's D/I Buffer Sizes For Output 0 + * + * The size in bytes of the Data Bufffer and Information Buffer for output 0. + */ +union cvmx_npi_buff_size_outputx +{ + uint64_t u64; + struct cvmx_npi_buff_size_outputx_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_23_63 : 41; + uint64_t isize : 7; /**< The number of bytes to move to the Info-Pointer + from the front of the packet. + Legal values are 0-120. */ + uint64_t bsize : 16; /**< The size in bytes of the area pointed to by + buffer pointer for output packet data. */ +#else + uint64_t bsize : 16; + uint64_t isize : 7; + uint64_t reserved_23_63 : 41; +#endif + } s; + struct cvmx_npi_buff_size_outputx_s cn30xx; + struct cvmx_npi_buff_size_outputx_s cn31xx; + struct cvmx_npi_buff_size_outputx_s cn38xx; + struct cvmx_npi_buff_size_outputx_s cn38xxp2; + struct cvmx_npi_buff_size_outputx_s cn50xx; + struct cvmx_npi_buff_size_outputx_s cn58xx; + struct cvmx_npi_buff_size_outputx_s cn58xxp1; +}; +typedef union cvmx_npi_buff_size_outputx cvmx_npi_buff_size_outputx_t; + +/** + * cvmx_npi_comp_ctl + * + * NPI_COMP_CTL = PCI Compensation Control + * + * PCI Compensation Control + */ +union cvmx_npi_comp_ctl +{ + uint64_t u64; + struct cvmx_npi_comp_ctl_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_10_63 : 54; + uint64_t pctl : 5; /**< Bypass value for PCTL */ + uint64_t nctl : 5; /**< Bypass value for NCTL */ +#else + uint64_t nctl : 5; + uint64_t pctl : 5; + uint64_t reserved_10_63 : 54; +#endif + } s; + struct cvmx_npi_comp_ctl_s cn50xx; + struct cvmx_npi_comp_ctl_s cn58xx; + struct cvmx_npi_comp_ctl_s cn58xxp1; +}; +typedef union cvmx_npi_comp_ctl cvmx_npi_comp_ctl_t; + +/** + * cvmx_npi_ctl_status + * + * NPI_CTL_STATUS = NPI's Control Status Register + * + * Contains control ans status for NPI. + * Writes to this register are not ordered with writes/reads to the PCI Memory space. + * To ensure that a write has completed the user must read the register before + * making an access(i.e. PCI memory space) that requires the value of this register to be updated. + */ +union cvmx_npi_ctl_status +{ + uint64_t u64; + struct cvmx_npi_ctl_status_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_63_63 : 1; + uint64_t chip_rev : 8; /**< The revision of the N3. */ + uint64_t dis_pniw : 1; /**< When asserted '1' access from the PNI Window + Registers are disabled. */ + uint64_t out3_enb : 1; /**< When asserted '1' the output3 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t out2_enb : 1; /**< When asserted '1' the output2 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t out1_enb : 1; /**< When asserted '1' the output1 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t out0_enb : 1; /**< When asserted '1' the output0 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t ins3_enb : 1; /**< When asserted '1' the gather3 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t ins2_enb : 1; /**< When asserted '1' the gather2 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t ins1_enb : 1; /**< When asserted '1' the gather1 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t ins0_enb : 1; /**< When asserted '1' the gather0 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t ins3_64b : 1; /**< When asserted '1' the instructions read by the + gather3 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t ins2_64b : 1; /**< When asserted '1' the instructions read by the + gather2 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t ins1_64b : 1; /**< When asserted '1' the instructions read by the + gather1 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t ins0_64b : 1; /**< When asserted '1' the instructions read by the + gather0 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t pci_wdis : 1; /**< When set '1' disables access to registers in + PNI address range 0x1000 - 0x17FF from the PCI. */ + uint64_t wait_com : 1; /**< When set '1' casues the NPI to wait for a commit + from the L2C before sending additional access to + the L2C from the PCI. */ + uint64_t reserved_37_39 : 3; + uint64_t max_word : 5; /**< The maximum number of words to merge into a single + write operation from the PPs to the PCI. Legal + values are 1 to 32, where a '0' is treated as 32. */ + uint64_t reserved_10_31 : 22; + uint64_t timer : 10; /**< When the NPI starts a PP to PCI write it will wait + no longer than the value of TIMER in eclks to + merge additional writes from the PPs into 1 + large write. The values for this field is 1 to + 1024 where a value of '0' is treated as 1024. */ +#else + uint64_t timer : 10; + uint64_t reserved_10_31 : 22; + uint64_t max_word : 5; + uint64_t reserved_37_39 : 3; + uint64_t wait_com : 1; + uint64_t pci_wdis : 1; + uint64_t ins0_64b : 1; + uint64_t ins1_64b : 1; + uint64_t ins2_64b : 1; + uint64_t ins3_64b : 1; + uint64_t ins0_enb : 1; + uint64_t ins1_enb : 1; + uint64_t ins2_enb : 1; + uint64_t ins3_enb : 1; + uint64_t out0_enb : 1; + uint64_t out1_enb : 1; + uint64_t out2_enb : 1; + uint64_t out3_enb : 1; + uint64_t dis_pniw : 1; + uint64_t chip_rev : 8; + uint64_t reserved_63_63 : 1; +#endif + } s; + struct cvmx_npi_ctl_status_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_63_63 : 1; + uint64_t chip_rev : 8; /**< The revision of the N3. */ + uint64_t dis_pniw : 1; /**< When asserted '1' access from the PNI Window + Registers are disabled. */ + uint64_t reserved_51_53 : 3; + uint64_t out0_enb : 1; /**< When asserted '1' the output0 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t reserved_47_49 : 3; + uint64_t ins0_enb : 1; /**< When asserted '1' the gather0 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t reserved_43_45 : 3; + uint64_t ins0_64b : 1; /**< When asserted '1' the instructions read by the + gather0 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t pci_wdis : 1; /**< When set '1' disables access to registers in + PNI address range 0x1000 - 0x17FF from the PCI. */ + uint64_t wait_com : 1; /**< When set '1' casues the NPI to wait for a commit + from the L2C before sending additional access to + the L2C from the PCI. */ + uint64_t reserved_37_39 : 3; + uint64_t max_word : 5; /**< The maximum number of words to merge into a single + write operation from the PPs to the PCI. Legal + values are 1 to 32, where a '0' is treated as 32. */ + uint64_t reserved_10_31 : 22; + uint64_t timer : 10; /**< When the NPI starts a PP to PCI write it will wait + no longer than the value of TIMER in eclks to + merge additional writes from the PPs into 1 + large write. The values for this field is 1 to + 1024 where a value of '0' is treated as 1024. */ +#else + uint64_t timer : 10; + uint64_t reserved_10_31 : 22; + uint64_t max_word : 5; + uint64_t reserved_37_39 : 3; + uint64_t wait_com : 1; + uint64_t pci_wdis : 1; + uint64_t ins0_64b : 1; + uint64_t reserved_43_45 : 3; + uint64_t ins0_enb : 1; + uint64_t reserved_47_49 : 3; + uint64_t out0_enb : 1; + uint64_t reserved_51_53 : 3; + uint64_t dis_pniw : 1; + uint64_t chip_rev : 8; + uint64_t reserved_63_63 : 1; +#endif + } cn30xx; + struct cvmx_npi_ctl_status_cn31xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_63_63 : 1; + uint64_t chip_rev : 8; /**< The revision of the N3. + 0 => pass1.x, 1 => 2.0 */ + uint64_t dis_pniw : 1; /**< When asserted '1' access from the PNI Window + Registers are disabled. */ + uint64_t reserved_52_53 : 2; + uint64_t out1_enb : 1; /**< When asserted '1' the output1 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t out0_enb : 1; /**< When asserted '1' the output0 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t reserved_48_49 : 2; + uint64_t ins1_enb : 1; /**< When asserted '1' the gather1 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t ins0_enb : 1; /**< When asserted '1' the gather0 engine is enabled. + After enabling the values of the associated + Address and Size Register should not be changed. */ + uint64_t reserved_44_45 : 2; + uint64_t ins1_64b : 1; /**< When asserted '1' the instructions read by the + gather1 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t ins0_64b : 1; /**< When asserted '1' the instructions read by the + gather0 engine are 64-Byte instructions, when + de-asserted '0' instructions are 32-byte. */ + uint64_t pci_wdis : 1; /**< When set '1' disables access to registers in + PNI address range 0x1000 - 0x17FF from the PCI. */ + uint64_t wait_com : 1; /**< When set '1' casues the NPI to wait for a commit + from the L2C before sending additional access to + the L2C from the PCI. */ + uint64_t reserved_37_39 : 3; + uint64_t max_word : 5; /**< The maximum number of words to merge into a single + write operation from the PPs to the PCI. Legal + values are 1 to 32, where a '0' is treated as 32. */ + uint64_t reserved_10_31 : 22; + uint64_t timer : 10; /**< When the NPI starts a PP to PCI write it will wait + no longer than the value of TIMER in eclks to + merge additional writes from the PPs into 1 + large write. The values for this field is 1 to + 1024 where a value of '0' is treated as 1024. */ +#else + uint64_t timer : 10; + uint64_t reserved_10_31 : 22; + uint64_t max_word : 5; + uint64_t reserved_37_39 : 3; + uint64_t wait_com : 1; + uint64_t pci_wdis : 1; + uint64_t ins0_64b : 1; + uint64_t ins1_64b : 1; + uint64_t reserved_44_45 : 2; + uint64_t ins0_enb : 1; + uint64_t ins1_enb : 1; + uint64_t reserved_48_49 : 2; + uint64_t out0_enb : 1; + uint64_t out1_enb : 1; + uint64_t reserved_52_53 : 2; + uint64_t dis_pniw : 1; + uint64_t chip_rev : 8; + uint64_t reserved_63_63 : 1; +#endif + } cn31xx; + struct cvmx_npi_ctl_status_s cn38xx; + struct cvmx_npi_ctl_status_s cn38xxp2; + struct cvmx_npi_ctl_status_cn31xx cn50xx; + struct cvmx_npi_ctl_status_s cn58xx; + struct cvmx_npi_ctl_status_s cn58xxp1; +}; +typedef union cvmx_npi_ctl_status cvmx_npi_ctl_status_t; + +/** + * cvmx_npi_dbg_select + * + * NPI_DBG_SELECT = Debug Select Register + * + * Contains the debug select value in last written to the RSLs. + */ +union cvmx_npi_dbg_select +{ + uint64_t u64; + struct cvmx_npi_dbg_select_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_16_63 : 48; + uint64_t dbg_sel : 16; /**< When this register is written its value is sent to + all RSLs. */ +#else + uint64_t dbg_sel : 16; + uint64_t reserved_16_63 : 48; +#endif + } s; + struct cvmx_npi_dbg_select_s cn30xx; + struct cvmx_npi_dbg_select_s cn31xx; + struct cvmx_npi_dbg_select_s cn38xx; + struct cvmx_npi_dbg_select_s cn38xxp2; + struct cvmx_npi_dbg_select_s cn50xx; + struct cvmx_npi_dbg_select_s cn58xx; + struct cvmx_npi_dbg_select_s cn58xxp1; +}; +typedef union cvmx_npi_dbg_select cvmx_npi_dbg_select_t; + +/** + * cvmx_npi_dma_control + * + * NPI_DMA_CONTROL = DMA Control Register + * + * Controls operation of the DMA IN/OUT of the NPI. + */ +union cvmx_npi_dma_control +{ + uint64_t u64; + struct cvmx_npi_dma_control_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_36_63 : 28; + uint64_t b0_lend : 1; /**< When set '1' and the NPI 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. This field is new to PASS-2. */ + uint64_t dwb_denb : 1; /**< When set '1' the NPI will send a value in the DWB + field for a free page operation for the memory + that contained the data in N3. */ + 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. + '1' use pointer values for address and register + values for RO, ES, and NS, '0' use register + values for address and pointer values for + RO, ES, and NS. */ + uint64_t hp_enb : 1; /**< Enables the High Priority DMA. + While this bit is disabled '0' then the value + in the NPI_HIGHP_IBUFF_SADDR is re-loaded to the + starting address of the High Priority DMA engine. + CSIZE field will be reloaded, for the High Priority + DMA Engine. */ + uint64_t lp_enb : 1; /**< Enables the Low Priority DMA. + While this bit is disabled '0' then the value + in the NPI_LOWP_IBUFF_SADDR is re-loaded to the + starting address of the Low Priority DMA engine. + PASS-2: When this bit is '0' the value in the + CSIZE field will be reloaded, for the Low Priority + DMA Engine. */ + uint64_t csize : 14; /**< The size in words of the DMA Instruction Chunk. + This value should only be written once. After + writing this value a new value will not be + recognized until the end of the DMA I-Chunk is + reached. */ +#else + uint64_t csize : 14; + uint64_t lp_enb : 1; + uint64_t hp_enb : 1; + 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_36_63 : 28; +#endif + } s; + struct cvmx_npi_dma_control_s cn30xx; + struct cvmx_npi_dma_control_s cn31xx; + struct cvmx_npi_dma_control_s cn38xx; + struct cvmx_npi_dma_control_s cn38xxp2; + struct cvmx_npi_dma_control_s cn50xx; + struct cvmx_npi_dma_control_s cn58xx; + struct cvmx_npi_dma_control_s cn58xxp1; +}; +typedef union cvmx_npi_dma_control cvmx_npi_dma_control_t; + +/** + * cvmx_npi_dma_highp_counts + * + * NPI_DMA_HIGHP_COUNTS = NPI's High Priority DMA Counts + * + * Values for determing the number of instructions for High Priority DMA in the NPI. + */ +union cvmx_npi_dma_highp_counts +{ + uint64_t u64; + struct cvmx_npi_dma_highp_counts_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_39_63 : 25; + uint64_t fcnt : 7; /**< Number of words in the Instruction FIFO. */ + 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_npi_dma_highp_counts_s cn30xx; + struct cvmx_npi_dma_highp_counts_s cn31xx; + struct cvmx_npi_dma_highp_counts_s cn38xx; + struct cvmx_npi_dma_highp_counts_s cn38xxp2; + struct cvmx_npi_dma_highp_counts_s cn50xx; + struct cvmx_npi_dma_highp_counts_s cn58xx; + struct cvmx_npi_dma_highp_counts_s cn58xxp1; +}; +typedef union cvmx_npi_dma_highp_counts cvmx_npi_dma_highp_counts_t; + +/** + * cvmx_npi_dma_highp_naddr + * + * NPI_DMA_HIGHP_NADDR = NPI's High Priority DMA Next Ichunk Address + * + * Place NPI will read the next Ichunk data from. This is valid when state is 0 + */ +union cvmx_npi_dma_highp_naddr +{ + uint64_t u64; + struct cvmx_npi_dma_highp_naddr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_40_63 : 24; + uint64_t state : 4; /**< The DMA instruction engine state vector. + Typical value is 0 (IDLE). */ + uint64_t addr : 36; /**< The next L2C address to read DMA instructions + from for the High Priority DMA engine. */ +#else + uint64_t addr : 36; + uint64_t state : 4; + uint64_t reserved_40_63 : 24; +#endif + } s; + struct cvmx_npi_dma_highp_naddr_s cn30xx; + struct cvmx_npi_dma_highp_naddr_s cn31xx; + struct cvmx_npi_dma_highp_naddr_s cn38xx; + struct cvmx_npi_dma_highp_naddr_s cn38xxp2; + struct cvmx_npi_dma_highp_naddr_s cn50xx; + struct cvmx_npi_dma_highp_naddr_s cn58xx; + struct cvmx_npi_dma_highp_naddr_s cn58xxp1; +}; +typedef union cvmx_npi_dma_highp_naddr cvmx_npi_dma_highp_naddr_t; + +/** + * cvmx_npi_dma_lowp_counts + * + * NPI_DMA_LOWP_COUNTS = NPI's Low Priority DMA Counts + * + * Values for determing the number of instructions for Low Priority DMA in the NPI. + */ +union cvmx_npi_dma_lowp_counts +{ + uint64_t u64; + struct cvmx_npi_dma_lowp_counts_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_39_63 : 25; + uint64_t fcnt : 7; /**< Number of words in the Instruction FIFO. */ + 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_npi_dma_lowp_counts_s cn30xx; + struct cvmx_npi_dma_lowp_counts_s cn31xx; + struct cvmx_npi_dma_lowp_counts_s cn38xx; + struct cvmx_npi_dma_lowp_counts_s cn38xxp2; + struct cvmx_npi_dma_lowp_counts_s cn50xx; + struct cvmx_npi_dma_lowp_counts_s cn58xx; + struct cvmx_npi_dma_lowp_counts_s cn58xxp1; +}; +typedef union cvmx_npi_dma_lowp_counts cvmx_npi_dma_lowp_counts_t; + +/** + * cvmx_npi_dma_lowp_naddr + * + * NPI_DMA_LOWP_NADDR = NPI's Low Priority DMA Next Ichunk Address + * + * Place NPI will read the next Ichunk data from. This is valid when state is 0 + */ +union cvmx_npi_dma_lowp_naddr +{ + uint64_t u64; + struct cvmx_npi_dma_lowp_naddr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_40_63 : 24; + uint64_t state : 4; /**< The DMA instruction engine state vector. + Typical value is 0 (IDLE). */ + uint64_t addr : 36; /**< The next L2C address to read DMA instructions + from for the Low Priority DMA engine. */ +#else + uint64_t addr : 36; + uint64_t state : 4; + uint64_t reserved_40_63 : 24; +#endif + } s; + struct cvmx_npi_dma_lowp_naddr_s cn30xx; + struct cvmx_npi_dma_lowp_naddr_s cn31xx; + struct cvmx_npi_dma_lowp_naddr_s cn38xx; + struct cvmx_npi_dma_lowp_naddr_s cn38xxp2; + struct cvmx_npi_dma_lowp_naddr_s cn50xx; + struct cvmx_npi_dma_lowp_naddr_s cn58xx; + struct cvmx_npi_dma_lowp_naddr_s cn58xxp1; +}; +typedef union cvmx_npi_dma_lowp_naddr cvmx_npi_dma_lowp_naddr_t; + +/** + * cvmx_npi_highp_dbell + * + * NPI_HIGHP_DBELL = High Priority Door Bell + * + * The door bell register for the high priority DMA queue. + */ +union cvmx_npi_highp_dbell +{ + uint64_t u64; + struct cvmx_npi_highp_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 high priority dma queue. */ +#else + uint64_t dbell : 16; + uint64_t reserved_16_63 : 48; +#endif + } s; + struct cvmx_npi_highp_dbell_s cn30xx; + struct cvmx_npi_highp_dbell_s cn31xx; + struct cvmx_npi_highp_dbell_s cn38xx; + struct cvmx_npi_highp_dbell_s cn38xxp2; + struct cvmx_npi_highp_dbell_s cn50xx; + struct cvmx_npi_highp_dbell_s cn58xx; + struct cvmx_npi_highp_dbell_s cn58xxp1; +}; +typedef union cvmx_npi_highp_dbell cvmx_npi_highp_dbell_t; + +/** + * cvmx_npi_highp_ibuff_saddr + * + * NPI_HIGHP_IBUFF_SADDR = DMA High Priority Instruction Buffer Starting Address + * + * The address to start reading Instructions from for HIGHP. + */ +union cvmx_npi_highp_ibuff_saddr +{ + uint64_t u64; + struct cvmx_npi_highp_ibuff_saddr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_36_63 : 28; + uint64_t saddr : 36; /**< The starting address to read the first instruction. */ +#else + uint64_t saddr : 36; + uint64_t reserved_36_63 : 28; +#endif + } s; + struct cvmx_npi_highp_ibuff_saddr_s cn30xx; + struct cvmx_npi_highp_ibuff_saddr_s cn31xx; + struct cvmx_npi_highp_ibuff_saddr_s cn38xx; + struct cvmx_npi_highp_ibuff_saddr_s cn38xxp2; + struct cvmx_npi_highp_ibuff_saddr_s cn50xx; + struct cvmx_npi_highp_ibuff_saddr_s cn58xx; + struct cvmx_npi_highp_ibuff_saddr_s cn58xxp1; +}; +typedef union cvmx_npi_highp_ibuff_saddr cvmx_npi_highp_ibuff_saddr_t; + +/** + * cvmx_npi_input_control + * + * NPI_INPUT_CONTROL = NPI's Input Control Register + * + * Control for reads for gather list and instructions. + */ +union cvmx_npi_input_control +{ + uint64_t u64; + struct cvmx_npi_input_control_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_23_63 : 41; + uint64_t pkt_rr : 1; /**< When set '1' the input packet selection will be + made with a Round Robin arbitration. When '0' + the input packet port is fixed in priority, + where the lower port number has higher priority. + PASS3 Field */ + uint64_t pbp_dhi : 13; /**< Field when in [PBP] is set to be used in + calculating a DPTR. */ + uint64_t d_nsr : 1; /**< Enables '1' NoSnoop for reading of + gather data. */ + uint64_t d_esr : 2; /**< The Endian-Swap-Mode for reading of + gather data. */ + uint64_t d_ror : 1; /**< Enables '1' Relaxed Ordering for reading of + gather data. */ + uint64_t use_csr : 1; /**< When set '1' the csr value will be used for + ROR, ESR, and NSR. When clear '0' the value in + DPTR will be used. In turn the bits not used for + ROR, ESR, and NSR, will be used for bits [63:60] + of the address used to fetch packet data. */ + uint64_t nsr : 1; /**< Enables '1' NoSnoop for reading of + gather list and gather instruction. */ + uint64_t esr : 2; /**< The Endian-Swap-Mode for reading of + gather list and gather instruction. */ + uint64_t ror : 1; /**< Enables '1' Relaxed Ordering for reading of + gather list and gather instruction. */ +#else + uint64_t ror : 1; + uint64_t esr : 2; + uint64_t nsr : 1; + uint64_t use_csr : 1; + uint64_t d_ror : 1; + uint64_t d_esr : 2; + uint64_t d_nsr : 1; + uint64_t pbp_dhi : 13; + uint64_t pkt_rr : 1; + uint64_t reserved_23_63 : 41; +#endif + } s; + struct cvmx_npi_input_control_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_22_63 : 42; + uint64_t pbp_dhi : 13; /**< Field when in [PBP] is set to be used in + calculating a DPTR. */ + uint64_t d_nsr : 1; /**< Enables '1' NoSnoop for reading of + gather data. */ + uint64_t d_esr : 2; /**< The Endian-Swap-Mode for reading of + gather data. */ + uint64_t d_ror : 1; /**< Enables '1' Relaxed Ordering for reading of + gather data. */ + uint64_t use_csr : 1; /**< When set '1' the csr value will be used for + ROR, ESR, and NSR. When clear '0' the value in + DPTR will be used. In turn the bits not used for + ROR, ESR, and NSR, will be used for bits [63:60] + of the address used to fetch packet data. */ + uint64_t nsr : 1; /**< Enables '1' NoSnoop for reading of + gather list and gather instruction. */ + uint64_t esr : 2; /**< The Endian-Swap-Mode for reading of + gather list and gather instruction. */ + uint64_t ror : 1; /**< Enables '1' Relaxed Ordering for reading of + gather list and gather instruction. */ +#else + uint64_t ror : 1; + uint64_t esr : 2; + uint64_t nsr : 1; + uint64_t use_csr : 1; + uint64_t d_ror : 1; + uint64_t d_esr : 2; + uint64_t d_nsr : 1; + uint64_t pbp_dhi : 13; + uint64_t reserved_22_63 : 42; +#endif + } cn30xx; + struct cvmx_npi_input_control_cn30xx cn31xx; + struct cvmx_npi_input_control_s cn38xx; + struct cvmx_npi_input_control_cn30xx cn38xxp2; + struct cvmx_npi_input_control_s cn50xx; + struct cvmx_npi_input_control_s cn58xx; + struct cvmx_npi_input_control_s cn58xxp1; +}; +typedef union cvmx_npi_input_control cvmx_npi_input_control_t; + +/** + * cvmx_npi_int_enb + * + * NPI_INTERRUPT_ENB = NPI's Interrupt Enable Register + * + * Used to enable the various interrupting conditions of NPI + */ +union cvmx_npi_int_enb +{ + uint64_t u64; + struct cvmx_npi_int_enb_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_62_63 : 2; + uint64_t q1_a_f : 1; /**< Enables NPI_INT_SUM[Q1_A_F] to generate an + interrupt. */ + uint64_t q1_s_e : 1; /**< Enables NPI_INT_SUM[Q1_S_E] to generate an + interrupt. */ + uint64_t pdf_p_f : 1; /**< Enables NPI_INT_SUM[PDF_P_F] to generate an + interrupt. */ + uint64_t pdf_p_e : 1; /**< Enables NPI_INT_SUM[PDF_P_E] to generate an + interrupt. */ + uint64_t pcf_p_f : 1; /**< Enables NPI_INT_SUM[PCF_P_F] to generate an + interrupt. */ + uint64_t pcf_p_e : 1; /**< Enables NPI_INT_SUM[PCF_P_E] to generate an + interrupt. */ + uint64_t rdx_s_e : 1; /**< Enables NPI_INT_SUM[RDX_S_E] to generate an + interrupt. */ + uint64_t rwx_s_e : 1; /**< Enables NPI_INT_SUM[RWX_S_E] to generate an + interrupt. */ + uint64_t pnc_a_f : 1; /**< Enables NPI_INT_SUM[PNC_A_F] to generate an + interrupt. */ + uint64_t pnc_s_e : 1; /**< Enables NPI_INT_SUM[PNC_S_E] to generate an + interrupt. */ + uint64_t com_a_f : 1; /**< Enables NPI_INT_SUM[COM_A_F] to generate an + interrupt. */ + uint64_t com_s_e : 1; /**< Enables NPI_INT_SUM[COM_S_E] to generate an + interrupt. */ + uint64_t q3_a_f : 1; /**< Enables NPI_INT_SUM[Q3_A_F] to generate an + interrupt. */ + uint64_t q3_s_e : 1; /**< Enables NPI_INT_SUM[Q3_S_E] to generate an + interrupt. */ + uint64_t q2_a_f : 1; /**< Enables NPI_INT_SUM[Q2_A_F] to generate an + interrupt. */ + uint64_t q2_s_e : 1; /**< Enables NPI_INT_SUM[Q2_S_E] to generate an + interrupt. */ + uint64_t pcr_a_f : 1; /**< Enables NPI_INT_SUM[PCR_A_F] to generate an + interrupt. */ + uint64_t pcr_s_e : 1; /**< Enables NPI_INT_SUM[PCR_S_E] to generate an + interrupt. */ + uint64_t fcr_a_f : 1; /**< Enables NPI_INT_SUM[FCR_A_F] to generate an + interrupt. */ + uint64_t fcr_s_e : 1; /**< Enables NPI_INT_SUM[FCR_S_E] to generate an + interrupt. */ + uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an + interrupt. */ + uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an + interrupt. */ + uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an + interrupt. */ + uint64_t i3_pperr : 1; /**< Enables NPI_INT_SUM[I3_PPERR] to generate an + interrupt. */ + uint64_t i2_pperr : 1; /**< Enables NPI_INT_SUM[I2_PPERR] to generate an + interrupt. */ + uint64_t i1_pperr : 1; /**< Enables NPI_INT_SUM[I1_PPERR] to generate an + interrupt. */ + uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an + interrupt. */ + uint64_t p3_ptout : 1; /**< Enables NPI_INT_SUM[P3_PTOUT] to generate an + interrupt. */ + uint64_t p2_ptout : 1; /**< Enables NPI_INT_SUM[P2_PTOUT] to generate an + interrupt. */ + uint64_t p1_ptout : 1; /**< Enables NPI_INT_SUM[P1_PTOUT] to generate an + interrupt. */ + uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an + interrupt. */ + uint64_t p3_pperr : 1; /**< Enables NPI_INT_SUM[P3_PPERR] to generate an + interrupt. */ + uint64_t p2_pperr : 1; /**< Enables NPI_INT_SUM[P2_PPERR] to generate an + interrupt. */ + uint64_t p1_pperr : 1; /**< Enables NPI_INT_SUM[P1_PPERR] to generate an + interrupt. */ + uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an + interrupt. */ + uint64_t g3_rtout : 1; /**< Enables NPI_INT_SUM[G3_RTOUT] to generate an + interrupt. */ + uint64_t g2_rtout : 1; /**< Enables NPI_INT_SUM[G2_RTOUT] to generate an + interrupt. */ + uint64_t g1_rtout : 1; /**< Enables NPI_INT_SUM[G1_RTOUT] to generate an + interrupt. */ + uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an + interrupt. */ + uint64_t p3_perr : 1; /**< Enables NPI_INT_SUM[P3_PERR] to generate an + interrupt. */ + uint64_t p2_perr : 1; /**< Enables NPI_INT_SUM[P2_PERR] to generate an + interrupt. */ + uint64_t p1_perr : 1; /**< Enables NPI_INT_SUM[P1_PERR] to generate an + interrupt. */ + uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an + interrupt. */ + uint64_t p3_rtout : 1; /**< Enables NPI_INT_SUM[P3_RTOUT] to generate an + interrupt. */ + uint64_t p2_rtout : 1; /**< Enables NPI_INT_SUM[P2_RTOUT] to generate an + interrupt. */ + uint64_t p1_rtout : 1; /**< Enables NPI_INT_SUM[P1_RTOUT] to generate an + interrupt. */ + uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an + interrupt. */ + uint64_t i3_overf : 1; /**< Enables NPI_INT_SUM[I3_OVERF] to generate an + interrupt. */ + uint64_t i2_overf : 1; /**< Enables NPI_INT_SUM[I2_OVERF] to generate an + interrupt. */ + uint64_t i1_overf : 1; /**< Enables NPI_INT_SUM[I1_OVERF] to generate an + interrupt. */ + uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an + interrupt. */ + uint64_t i3_rtout : 1; /**< Enables NPI_INT_SUM[I3_RTOUT] to generate an + interrupt. */ + uint64_t i2_rtout : 1; /**< Enables NPI_INT_SUM[I2_RTOUT] to generate an + interrupt. */ + uint64_t i1_rtout : 1; /**< Enables NPI_INT_SUM[I1_RTOUT] to generate an + interrupt. */ + uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an + interrupt. */ + uint64_t po3_2sml : 1; /**< Enables NPI_INT_SUM[PO3_2SML] to generate an + interrupt. */ + uint64_t po2_2sml : 1; /**< Enables NPI_INT_SUM[PO2_2SML] to generate an + interrupt. */ + uint64_t po1_2sml : 1; /**< Enables NPI_INT_SUM[PO1_2SML] to generate an + interrupt. */ + uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an + interrupt. */ + uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an + interrupt. */ + uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an + interrupt. */ + uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an + interrupt. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t po1_2sml : 1; + uint64_t po2_2sml : 1; + uint64_t po3_2sml : 1; + uint64_t i0_rtout : 1; + uint64_t i1_rtout : 1; + uint64_t i2_rtout : 1; + uint64_t i3_rtout : 1; + uint64_t i0_overf : 1; + uint64_t i1_overf : 1; + uint64_t i2_overf : 1; + uint64_t i3_overf : 1; + uint64_t p0_rtout : 1; + uint64_t p1_rtout : 1; + uint64_t p2_rtout : 1; + uint64_t p3_rtout : 1; + uint64_t p0_perr : 1; + uint64_t p1_perr : 1; + uint64_t p2_perr : 1; + uint64_t p3_perr : 1; + uint64_t g0_rtout : 1; + uint64_t g1_rtout : 1; + uint64_t g2_rtout : 1; + uint64_t g3_rtout : 1; + uint64_t p0_pperr : 1; + uint64_t p1_pperr : 1; + uint64_t p2_pperr : 1; + uint64_t p3_pperr : 1; + uint64_t p0_ptout : 1; + uint64_t p1_ptout : 1; + uint64_t p2_ptout : 1; + uint64_t p3_ptout : 1; + uint64_t i0_pperr : 1; + uint64_t i1_pperr : 1; + uint64_t i2_pperr : 1; + uint64_t i3_pperr : 1; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t fcr_s_e : 1; + uint64_t fcr_a_f : 1; + uint64_t pcr_s_e : 1; + uint64_t pcr_a_f : 1; + uint64_t q2_s_e : 1; + uint64_t q2_a_f : 1; + uint64_t q3_s_e : 1; + uint64_t q3_a_f : 1; + uint64_t com_s_e : 1; + uint64_t com_a_f : 1; + uint64_t pnc_s_e : 1; + uint64_t pnc_a_f : 1; + uint64_t rwx_s_e : 1; + uint64_t rdx_s_e : 1; + uint64_t pcf_p_e : 1; + uint64_t pcf_p_f : 1; + uint64_t pdf_p_e : 1; + uint64_t pdf_p_f : 1; + uint64_t q1_s_e : 1; + uint64_t q1_a_f : 1; + uint64_t reserved_62_63 : 2; +#endif + } s; + struct cvmx_npi_int_enb_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_62_63 : 2; + uint64_t q1_a_f : 1; /**< Enables NPI_INT_SUM[Q1_A_F] to generate an + interrupt. */ + uint64_t q1_s_e : 1; /**< Enables NPI_INT_SUM[Q1_S_E] to generate an + interrupt. */ + uint64_t pdf_p_f : 1; /**< Enables NPI_INT_SUM[PDF_P_F] to generate an + interrupt. */ + uint64_t pdf_p_e : 1; /**< Enables NPI_INT_SUM[PDF_P_E] to generate an + interrupt. */ + uint64_t pcf_p_f : 1; /**< Enables NPI_INT_SUM[PCF_P_F] to generate an + interrupt. */ + uint64_t pcf_p_e : 1; /**< Enables NPI_INT_SUM[PCF_P_E] to generate an + interrupt. */ + uint64_t rdx_s_e : 1; /**< Enables NPI_INT_SUM[RDX_S_E] to generate an + interrupt. */ + uint64_t rwx_s_e : 1; /**< Enables NPI_INT_SUM[RWX_S_E] to generate an + interrupt. */ + uint64_t pnc_a_f : 1; /**< Enables NPI_INT_SUM[PNC_A_F] to generate an + interrupt. */ + uint64_t pnc_s_e : 1; /**< Enables NPI_INT_SUM[PNC_S_E] to generate an + interrupt. */ + uint64_t com_a_f : 1; /**< Enables NPI_INT_SUM[COM_A_F] to generate an + interrupt. */ + uint64_t com_s_e : 1; /**< Enables NPI_INT_SUM[COM_S_E] to generate an + interrupt. */ + uint64_t q3_a_f : 1; /**< Enables NPI_INT_SUM[Q3_A_F] to generate an + interrupt. */ + uint64_t q3_s_e : 1; /**< Enables NPI_INT_SUM[Q3_S_E] to generate an + interrupt. */ + uint64_t q2_a_f : 1; /**< Enables NPI_INT_SUM[Q2_A_F] to generate an + interrupt. */ + uint64_t q2_s_e : 1; /**< Enables NPI_INT_SUM[Q2_S_E] to generate an + interrupt. */ + uint64_t pcr_a_f : 1; /**< Enables NPI_INT_SUM[PCR_A_F] to generate an + interrupt. */ + uint64_t pcr_s_e : 1; /**< Enables NPI_INT_SUM[PCR_S_E] to generate an + interrupt. */ + uint64_t fcr_a_f : 1; /**< Enables NPI_INT_SUM[FCR_A_F] to generate an + interrupt. */ + uint64_t fcr_s_e : 1; /**< Enables NPI_INT_SUM[FCR_S_E] to generate an + interrupt. */ + uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an + interrupt. */ + uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an + interrupt. */ + uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an + interrupt. */ + uint64_t reserved_36_38 : 3; + uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an + interrupt. */ + uint64_t reserved_32_34 : 3; + uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an + interrupt. */ + uint64_t reserved_28_30 : 3; + uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an + interrupt. */ + uint64_t reserved_24_26 : 3; + uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an + interrupt. */ + uint64_t reserved_20_22 : 3; + uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an + interrupt. */ + uint64_t reserved_16_18 : 3; + uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an + interrupt. */ + uint64_t reserved_12_14 : 3; + uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an + interrupt. */ + uint64_t reserved_8_10 : 3; + uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an + interrupt. */ + uint64_t reserved_4_6 : 3; + uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an + interrupt. */ + uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an + interrupt. */ + uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an + interrupt. */ + uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an + interrupt. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t reserved_4_6 : 3; + uint64_t i0_rtout : 1; + uint64_t reserved_8_10 : 3; + uint64_t i0_overf : 1; + uint64_t reserved_12_14 : 3; + uint64_t p0_rtout : 1; + uint64_t reserved_16_18 : 3; + uint64_t p0_perr : 1; + uint64_t reserved_20_22 : 3; + uint64_t g0_rtout : 1; + uint64_t reserved_24_26 : 3; + uint64_t p0_pperr : 1; + uint64_t reserved_28_30 : 3; + uint64_t p0_ptout : 1; + uint64_t reserved_32_34 : 3; + uint64_t i0_pperr : 1; + uint64_t reserved_36_38 : 3; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t fcr_s_e : 1; + uint64_t fcr_a_f : 1; + uint64_t pcr_s_e : 1; + uint64_t pcr_a_f : 1; + uint64_t q2_s_e : 1; + uint64_t q2_a_f : 1; + uint64_t q3_s_e : 1; + uint64_t q3_a_f : 1; + uint64_t com_s_e : 1; + uint64_t com_a_f : 1; + uint64_t pnc_s_e : 1; + uint64_t pnc_a_f : 1; + uint64_t rwx_s_e : 1; + uint64_t rdx_s_e : 1; + uint64_t pcf_p_e : 1; + uint64_t pcf_p_f : 1; + uint64_t pdf_p_e : 1; + uint64_t pdf_p_f : 1; + uint64_t q1_s_e : 1; + uint64_t q1_a_f : 1; + uint64_t reserved_62_63 : 2; +#endif + } cn30xx; + struct cvmx_npi_int_enb_cn31xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_62_63 : 2; + uint64_t q1_a_f : 1; /**< Enables NPI_INT_SUM[Q1_A_F] to generate an + interrupt. */ + uint64_t q1_s_e : 1; /**< Enables NPI_INT_SUM[Q1_S_E] to generate an + interrupt. */ + uint64_t pdf_p_f : 1; /**< Enables NPI_INT_SUM[PDF_P_F] to generate an + interrupt. */ + uint64_t pdf_p_e : 1; /**< Enables NPI_INT_SUM[PDF_P_E] to generate an + interrupt. */ + uint64_t pcf_p_f : 1; /**< Enables NPI_INT_SUM[PCF_P_F] to generate an + interrupt. */ + uint64_t pcf_p_e : 1; /**< Enables NPI_INT_SUM[PCF_P_E] to generate an + interrupt. */ + uint64_t rdx_s_e : 1; /**< Enables NPI_INT_SUM[RDX_S_E] to generate an + interrupt. */ + uint64_t rwx_s_e : 1; /**< Enables NPI_INT_SUM[RWX_S_E] to generate an + interrupt. */ + uint64_t pnc_a_f : 1; /**< Enables NPI_INT_SUM[PNC_A_F] to generate an + interrupt. */ + uint64_t pnc_s_e : 1; /**< Enables NPI_INT_SUM[PNC_S_E] to generate an + interrupt. */ + uint64_t com_a_f : 1; /**< Enables NPI_INT_SUM[COM_A_F] to generate an + interrupt. */ + uint64_t com_s_e : 1; /**< Enables NPI_INT_SUM[COM_S_E] to generate an + interrupt. */ + uint64_t q3_a_f : 1; /**< Enables NPI_INT_SUM[Q3_A_F] to generate an + interrupt. */ + uint64_t q3_s_e : 1; /**< Enables NPI_INT_SUM[Q3_S_E] to generate an + interrupt. */ + uint64_t q2_a_f : 1; /**< Enables NPI_INT_SUM[Q2_A_F] to generate an + interrupt. */ + uint64_t q2_s_e : 1; /**< Enables NPI_INT_SUM[Q2_S_E] to generate an + interrupt. */ + uint64_t pcr_a_f : 1; /**< Enables NPI_INT_SUM[PCR_A_F] to generate an + interrupt. */ + uint64_t pcr_s_e : 1; /**< Enables NPI_INT_SUM[PCR_S_E] to generate an + interrupt. */ + uint64_t fcr_a_f : 1; /**< Enables NPI_INT_SUM[FCR_A_F] to generate an + interrupt. */ + uint64_t fcr_s_e : 1; /**< Enables NPI_INT_SUM[FCR_S_E] to generate an + interrupt. */ + uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an + interrupt. */ + uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an + interrupt. */ + uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an + interrupt. */ + uint64_t reserved_37_38 : 2; + uint64_t i1_pperr : 1; /**< Enables NPI_INT_SUM[I1_PPERR] to generate an + interrupt. */ + uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an + interrupt. */ + uint64_t reserved_33_34 : 2; + uint64_t p1_ptout : 1; /**< Enables NPI_INT_SUM[P1_PTOUT] to generate an + interrupt. */ + uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an + interrupt. */ + uint64_t reserved_29_30 : 2; + uint64_t p1_pperr : 1; /**< Enables NPI_INT_SUM[P1_PPERR] to generate an + interrupt. */ + uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an + interrupt. */ + uint64_t reserved_25_26 : 2; + uint64_t g1_rtout : 1; /**< Enables NPI_INT_SUM[G1_RTOUT] to generate an + interrupt. */ + uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an + interrupt. */ + uint64_t reserved_21_22 : 2; + uint64_t p1_perr : 1; /**< Enables NPI_INT_SUM[P1_PERR] to generate an + interrupt. */ + uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an + interrupt. */ + uint64_t reserved_17_18 : 2; + uint64_t p1_rtout : 1; /**< Enables NPI_INT_SUM[P1_RTOUT] to generate an + interrupt. */ + uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an + interrupt. */ + uint64_t reserved_13_14 : 2; + uint64_t i1_overf : 1; /**< Enables NPI_INT_SUM[I1_OVERF] to generate an + interrupt. */ + uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an + interrupt. */ + uint64_t reserved_9_10 : 2; + uint64_t i1_rtout : 1; /**< Enables NPI_INT_SUM[I1_RTOUT] to generate an + interrupt. */ + uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an + interrupt. */ + uint64_t reserved_5_6 : 2; + uint64_t po1_2sml : 1; /**< Enables NPI_INT_SUM[PO1_2SML] to generate an + interrupt. */ + uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an + interrupt. */ + uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an + interrupt. */ + uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an + interrupt. */ + uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an + interrupt. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t po1_2sml : 1; + uint64_t reserved_5_6 : 2; + uint64_t i0_rtout : 1; + uint64_t i1_rtout : 1; + uint64_t reserved_9_10 : 2; + uint64_t i0_overf : 1; + uint64_t i1_overf : 1; + uint64_t reserved_13_14 : 2; + uint64_t p0_rtout : 1; + uint64_t p1_rtout : 1; + uint64_t reserved_17_18 : 2; + uint64_t p0_perr : 1; + uint64_t p1_perr : 1; + uint64_t reserved_21_22 : 2; + uint64_t g0_rtout : 1; + uint64_t g1_rtout : 1; + uint64_t reserved_25_26 : 2; + uint64_t p0_pperr : 1; + uint64_t p1_pperr : 1; + uint64_t reserved_29_30 : 2; + uint64_t p0_ptout : 1; + uint64_t p1_ptout : 1; + uint64_t reserved_33_34 : 2; + uint64_t i0_pperr : 1; + uint64_t i1_pperr : 1; + uint64_t reserved_37_38 : 2; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t fcr_s_e : 1; + uint64_t fcr_a_f : 1; + uint64_t pcr_s_e : 1; + uint64_t pcr_a_f : 1; + uint64_t q2_s_e : 1; + uint64_t q2_a_f : 1; + uint64_t q3_s_e : 1; + uint64_t q3_a_f : 1; + uint64_t com_s_e : 1; + uint64_t com_a_f : 1; + uint64_t pnc_s_e : 1; + uint64_t pnc_a_f : 1; + uint64_t rwx_s_e : 1; + uint64_t rdx_s_e : 1; + uint64_t pcf_p_e : 1; + uint64_t pcf_p_f : 1; + uint64_t pdf_p_e : 1; + uint64_t pdf_p_f : 1; + uint64_t q1_s_e : 1; + uint64_t q1_a_f : 1; + uint64_t reserved_62_63 : 2; +#endif + } cn31xx; + struct cvmx_npi_int_enb_s cn38xx; + struct cvmx_npi_int_enb_cn38xxp2 + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_42_63 : 22; + uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an + interrupt. */ + uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an + interrupt. */ + uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an + interrupt. */ + uint64_t i3_pperr : 1; /**< Enables NPI_INT_SUM[I3_PPERR] to generate an + interrupt. */ + uint64_t i2_pperr : 1; /**< Enables NPI_INT_SUM[I2_PPERR] to generate an + interrupt. */ + uint64_t i1_pperr : 1; /**< Enables NPI_INT_SUM[I1_PPERR] to generate an + interrupt. */ + uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an + interrupt. */ + uint64_t p3_ptout : 1; /**< Enables NPI_INT_SUM[P3_PTOUT] to generate an + interrupt. */ + uint64_t p2_ptout : 1; /**< Enables NPI_INT_SUM[P2_PTOUT] to generate an + interrupt. */ + uint64_t p1_ptout : 1; /**< Enables NPI_INT_SUM[P1_PTOUT] to generate an + interrupt. */ + uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an + interrupt. */ + uint64_t p3_pperr : 1; /**< Enables NPI_INT_SUM[P3_PPERR] to generate an + interrupt. */ + uint64_t p2_pperr : 1; /**< Enables NPI_INT_SUM[P2_PPERR] to generate an + interrupt. */ + uint64_t p1_pperr : 1; /**< Enables NPI_INT_SUM[P1_PPERR] to generate an + interrupt. */ + uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an + interrupt. */ + uint64_t g3_rtout : 1; /**< Enables NPI_INT_SUM[G3_RTOUT] to generate an + interrupt. */ + uint64_t g2_rtout : 1; /**< Enables NPI_INT_SUM[G2_RTOUT] to generate an + interrupt. */ + uint64_t g1_rtout : 1; /**< Enables NPI_INT_SUM[G1_RTOUT] to generate an + interrupt. */ + uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an + interrupt. */ + uint64_t p3_perr : 1; /**< Enables NPI_INT_SUM[P3_PERR] to generate an + interrupt. */ + uint64_t p2_perr : 1; /**< Enables NPI_INT_SUM[P2_PERR] to generate an + interrupt. */ + uint64_t p1_perr : 1; /**< Enables NPI_INT_SUM[P1_PERR] to generate an + interrupt. */ + uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an + interrupt. */ + uint64_t p3_rtout : 1; /**< Enables NPI_INT_SUM[P3_RTOUT] to generate an + interrupt. */ + uint64_t p2_rtout : 1; /**< Enables NPI_INT_SUM[P2_RTOUT] to generate an + interrupt. */ + uint64_t p1_rtout : 1; /**< Enables NPI_INT_SUM[P1_RTOUT] to generate an + interrupt. */ + uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an + interrupt. */ + uint64_t i3_overf : 1; /**< Enables NPI_INT_SUM[I3_OVERF] to generate an + interrupt. */ + uint64_t i2_overf : 1; /**< Enables NPI_INT_SUM[I2_OVERF] to generate an + interrupt. */ + uint64_t i1_overf : 1; /**< Enables NPI_INT_SUM[I1_OVERF] to generate an + interrupt. */ + uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an + interrupt. */ + uint64_t i3_rtout : 1; /**< Enables NPI_INT_SUM[I3_RTOUT] to generate an + interrupt. */ + uint64_t i2_rtout : 1; /**< Enables NPI_INT_SUM[I2_RTOUT] to generate an + interrupt. */ + uint64_t i1_rtout : 1; /**< Enables NPI_INT_SUM[I1_RTOUT] to generate an + interrupt. */ + uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an + interrupt. */ + uint64_t po3_2sml : 1; /**< Enables NPI_INT_SUM[PO3_2SML] to generate an + interrupt. */ + uint64_t po2_2sml : 1; /**< Enables NPI_INT_SUM[PO2_2SML] to generate an + interrupt. */ + uint64_t po1_2sml : 1; /**< Enables NPI_INT_SUM[PO1_2SML] to generate an + interrupt. */ + uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an + interrupt. */ + uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an + interrupt. */ + uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an + interrupt. */ + uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an + interrupt. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t po1_2sml : 1; + uint64_t po2_2sml : 1; + uint64_t po3_2sml : 1; + uint64_t i0_rtout : 1; + uint64_t i1_rtout : 1; + uint64_t i2_rtout : 1; + uint64_t i3_rtout : 1; + uint64_t i0_overf : 1; + uint64_t i1_overf : 1; + uint64_t i2_overf : 1; + uint64_t i3_overf : 1; + uint64_t p0_rtout : 1; + uint64_t p1_rtout : 1; + uint64_t p2_rtout : 1; + uint64_t p3_rtout : 1; + uint64_t p0_perr : 1; + uint64_t p1_perr : 1; + uint64_t p2_perr : 1; + uint64_t p3_perr : 1; + uint64_t g0_rtout : 1; + uint64_t g1_rtout : 1; + uint64_t g2_rtout : 1; + uint64_t g3_rtout : 1; + uint64_t p0_pperr : 1; + uint64_t p1_pperr : 1; + uint64_t p2_pperr : 1; + uint64_t p3_pperr : 1; + uint64_t p0_ptout : 1; + uint64_t p1_ptout : 1; + uint64_t p2_ptout : 1; + uint64_t p3_ptout : 1; + uint64_t i0_pperr : 1; + uint64_t i1_pperr : 1; + uint64_t i2_pperr : 1; + uint64_t i3_pperr : 1; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t reserved_42_63 : 22; +#endif + } cn38xxp2; + struct cvmx_npi_int_enb_cn31xx cn50xx; + struct cvmx_npi_int_enb_s cn58xx; + struct cvmx_npi_int_enb_s cn58xxp1; +}; +typedef union cvmx_npi_int_enb cvmx_npi_int_enb_t; + +/** + * cvmx_npi_int_sum + * + * NPI_INTERRUPT_SUM = NPI Interrupt Summary Register + * + * Set when an interrupt condition occurs, write '1' to clear. + */ +union cvmx_npi_int_sum +{ + uint64_t u64; + struct cvmx_npi_int_sum_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_62_63 : 2; + uint64_t q1_a_f : 1; /**< Attempted to add when Queue-1 FIFO is full. + PASS3 Field. */ + uint64_t q1_s_e : 1; /**< Attempted to subtract when Queue-1 FIFO is empty. + PASS3 Field. */ + uint64_t pdf_p_f : 1; /**< Attempted to push a full PCN-DATA-FIFO. + PASS3 Field. */ + uint64_t pdf_p_e : 1; /**< Attempted to pop an empty PCN-DATA-FIFO. + PASS3 Field. */ + uint64_t pcf_p_f : 1; /**< Attempted to push a full PCN-CNT-FIFO. + PASS3 Field. */ + uint64_t pcf_p_e : 1; /**< Attempted to pop an empty PCN-CNT-FIFO. + PASS3 Field. */ + uint64_t rdx_s_e : 1; /**< Attempted to subtract when DPI-XFR-Wait count is 0. + PASS3 Field. */ + uint64_t rwx_s_e : 1; /**< Attempted to subtract when RDN-XFR-Wait count is 0. + PASS3 Field. */ + uint64_t pnc_a_f : 1; /**< Attempted to add when PNI-NPI Credits are max. + PASS3 Field. */ + uint64_t pnc_s_e : 1; /**< Attempted to subtract when PNI-NPI Credits are 0. + PASS3 Field. */ + uint64_t com_a_f : 1; /**< Attempted to add when PCN-Commit Counter is max. + PASS3 Field. */ + uint64_t com_s_e : 1; /**< Attempted to subtract when PCN-Commit Counter is 0. + PASS3 Field. */ + uint64_t q3_a_f : 1; /**< Attempted to add when Queue-3 FIFO is full. + PASS3 Field. */ + uint64_t q3_s_e : 1; /**< Attempted to subtract when Queue-3 FIFO is empty. + PASS3 Field. */ + uint64_t q2_a_f : 1; /**< Attempted to add when Queue-2 FIFO is full. + PASS3 Field. */ + uint64_t q2_s_e : 1; /**< Attempted to subtract when Queue-2 FIFO is empty. + PASS3 Field. */ + uint64_t pcr_a_f : 1; /**< Attempted to add when POW Credits is full. + PASS3 Field. */ + uint64_t pcr_s_e : 1; /**< Attempted to subtract when POW Credits is empty. + PASS3 Field. */ + uint64_t fcr_a_f : 1; /**< Attempted to add when FPA Credits is full. + PASS3 Field. */ + uint64_t fcr_s_e : 1; /**< Attempted to subtract when FPA Credits is empty. + PASS3 Field. */ + uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ + uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C + from the PCI this bit may be set. */ + uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ + uint64_t i3_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i2_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i1_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t p3_ptout : 1; /**< Port-3 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p2_ptout : 1; /**< Port-2 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p1_ptout : 1; /**< Port-1 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p3_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p2_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p1_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t g3_rtout : 1; /**< Port-3 had a read timeout while attempting to + read a gather list. */ + uint64_t g2_rtout : 1; /**< Port-2 had a read timeout while attempting to + read a gather list. */ + uint64_t g1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read a gather list. */ + uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read a gather list. */ + uint64_t p3_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p2_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p1_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p3_rtout : 1; /**< Port-3 had a read timeout while attempting to + read packet data. */ + uint64_t p2_rtout : 1; /**< Port-2 had a read timeout while attempting to + read packet data. */ + uint64_t p1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read packet data. */ + uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read packet data. */ + uint64_t i3_overf : 1; /**< Port-3 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i2_overf : 1; /**< Port-2 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i1_overf : 1; /**< Port-1 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i3_rtout : 1; /**< Port-3 had a read timeout while attempting to + read instructions. */ + uint64_t i2_rtout : 1; /**< Port-2 had a read timeout while attempting to + read instructions. */ + uint64_t i1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read instructions. */ + uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read instructions. */ + uint64_t po3_2sml : 1; /**< The packet being sent out on Port3 is smaller + than the NPI_BUFF_SIZE_OUTPUT3[ISIZE] field. */ + uint64_t po2_2sml : 1; /**< The packet being sent out on Port2 is smaller + than the NPI_BUFF_SIZE_OUTPUT2[ISIZE] field. */ + uint64_t po1_2sml : 1; /**< The packet being sent out on Port1 is smaller + than the NPI_BUFF_SIZE_OUTPUT1[ISIZE] field. */ + uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller + than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ + uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the + corresponding bit in the PCI_INT_ENB2 is SET. */ + uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit + back from a RSL after sending a write command to + a RSL. */ + uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data + back from a RSL after sending a read command to + a RSL. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t po1_2sml : 1; + uint64_t po2_2sml : 1; + uint64_t po3_2sml : 1; + uint64_t i0_rtout : 1; + uint64_t i1_rtout : 1; + uint64_t i2_rtout : 1; + uint64_t i3_rtout : 1; + uint64_t i0_overf : 1; + uint64_t i1_overf : 1; + uint64_t i2_overf : 1; + uint64_t i3_overf : 1; + uint64_t p0_rtout : 1; + uint64_t p1_rtout : 1; + uint64_t p2_rtout : 1; + uint64_t p3_rtout : 1; + uint64_t p0_perr : 1; + uint64_t p1_perr : 1; + uint64_t p2_perr : 1; + uint64_t p3_perr : 1; + uint64_t g0_rtout : 1; + uint64_t g1_rtout : 1; + uint64_t g2_rtout : 1; + uint64_t g3_rtout : 1; + uint64_t p0_pperr : 1; + uint64_t p1_pperr : 1; + uint64_t p2_pperr : 1; + uint64_t p3_pperr : 1; + uint64_t p0_ptout : 1; + uint64_t p1_ptout : 1; + uint64_t p2_ptout : 1; + uint64_t p3_ptout : 1; + uint64_t i0_pperr : 1; + uint64_t i1_pperr : 1; + uint64_t i2_pperr : 1; + uint64_t i3_pperr : 1; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t fcr_s_e : 1; + uint64_t fcr_a_f : 1; + uint64_t pcr_s_e : 1; + uint64_t pcr_a_f : 1; + uint64_t q2_s_e : 1; + uint64_t q2_a_f : 1; + uint64_t q3_s_e : 1; + uint64_t q3_a_f : 1; + uint64_t com_s_e : 1; + uint64_t com_a_f : 1; + uint64_t pnc_s_e : 1; + uint64_t pnc_a_f : 1; + uint64_t rwx_s_e : 1; + uint64_t rdx_s_e : 1; + uint64_t pcf_p_e : 1; + uint64_t pcf_p_f : 1; + uint64_t pdf_p_e : 1; + uint64_t pdf_p_f : 1; + uint64_t q1_s_e : 1; + uint64_t q1_a_f : 1; + uint64_t reserved_62_63 : 2; +#endif + } s; + struct cvmx_npi_int_sum_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_62_63 : 2; + uint64_t q1_a_f : 1; /**< Attempted to add when Queue-1 FIFO is full. */ + uint64_t q1_s_e : 1; /**< Attempted to subtract when Queue-1 FIFO is empty. */ + uint64_t pdf_p_f : 1; /**< Attempted to push a full PCN-DATA-FIFO. */ + uint64_t pdf_p_e : 1; /**< Attempted to pop an empty PCN-DATA-FIFO. */ + uint64_t pcf_p_f : 1; /**< Attempted to push a full PCN-CNT-FIFO. */ + uint64_t pcf_p_e : 1; /**< Attempted to pop an empty PCN-CNT-FIFO. */ + uint64_t rdx_s_e : 1; /**< Attempted to subtract when DPI-XFR-Wait count is 0. */ + uint64_t rwx_s_e : 1; /**< Attempted to subtract when RDN-XFR-Wait count is 0. */ + uint64_t pnc_a_f : 1; /**< Attempted to add when PNI-NPI Credits are max. */ + uint64_t pnc_s_e : 1; /**< Attempted to subtract when PNI-NPI Credits are 0. */ + uint64_t com_a_f : 1; /**< Attempted to add when PCN-Commit Counter is max. */ + uint64_t com_s_e : 1; /**< Attempted to subtract when PCN-Commit Counter is 0. */ + uint64_t q3_a_f : 1; /**< Attempted to add when Queue-3 FIFO is full. */ + uint64_t q3_s_e : 1; /**< Attempted to subtract when Queue-3 FIFO is empty. */ + uint64_t q2_a_f : 1; /**< Attempted to add when Queue-2 FIFO is full. */ + uint64_t q2_s_e : 1; /**< Attempted to subtract when Queue-2 FIFO is empty. */ + uint64_t pcr_a_f : 1; /**< Attempted to add when POW Credits is full. */ + uint64_t pcr_s_e : 1; /**< Attempted to subtract when POW Credits is empty. */ + uint64_t fcr_a_f : 1; /**< Attempted to add when FPA Credits is full. */ + uint64_t fcr_s_e : 1; /**< Attempted to subtract when FPA Credits is empty. */ + uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ + uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C + from the PCI this bit may be set. */ + uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ + uint64_t reserved_36_38 : 3; + uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t reserved_32_34 : 3; + uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO + pair. */ + uint64_t reserved_28_30 : 3; + uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t reserved_24_26 : 3; + uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read a gather list. */ + uint64_t reserved_20_22 : 3; + uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t reserved_16_18 : 3; + uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read packet data. */ + uint64_t reserved_12_14 : 3; + uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t reserved_8_10 : 3; + uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read instructions. */ + uint64_t reserved_4_6 : 3; + uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller + than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ + uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the + corresponding bit in the PCI_INT_ENB2 is SET. */ + uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit + back from a RSL after sending a write command to + a RSL. */ + uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data + back from a RSL after sending a read command to + a RSL. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t reserved_4_6 : 3; + uint64_t i0_rtout : 1; + uint64_t reserved_8_10 : 3; + uint64_t i0_overf : 1; + uint64_t reserved_12_14 : 3; + uint64_t p0_rtout : 1; + uint64_t reserved_16_18 : 3; + uint64_t p0_perr : 1; + uint64_t reserved_20_22 : 3; + uint64_t g0_rtout : 1; + uint64_t reserved_24_26 : 3; + uint64_t p0_pperr : 1; + uint64_t reserved_28_30 : 3; + uint64_t p0_ptout : 1; + uint64_t reserved_32_34 : 3; + uint64_t i0_pperr : 1; + uint64_t reserved_36_38 : 3; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t fcr_s_e : 1; + uint64_t fcr_a_f : 1; + uint64_t pcr_s_e : 1; + uint64_t pcr_a_f : 1; + uint64_t q2_s_e : 1; + uint64_t q2_a_f : 1; + uint64_t q3_s_e : 1; + uint64_t q3_a_f : 1; + uint64_t com_s_e : 1; + uint64_t com_a_f : 1; + uint64_t pnc_s_e : 1; + uint64_t pnc_a_f : 1; + uint64_t rwx_s_e : 1; + uint64_t rdx_s_e : 1; + uint64_t pcf_p_e : 1; + uint64_t pcf_p_f : 1; + uint64_t pdf_p_e : 1; + uint64_t pdf_p_f : 1; + uint64_t q1_s_e : 1; + uint64_t q1_a_f : 1; + uint64_t reserved_62_63 : 2; +#endif + } cn30xx; + struct cvmx_npi_int_sum_cn31xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_62_63 : 2; + uint64_t q1_a_f : 1; /**< Attempted to add when Queue-1 FIFO is full. */ + uint64_t q1_s_e : 1; /**< Attempted to subtract when Queue-1 FIFO is empty. */ + uint64_t pdf_p_f : 1; /**< Attempted to push a full PCN-DATA-FIFO. */ + uint64_t pdf_p_e : 1; /**< Attempted to pop an empty PCN-DATA-FIFO. */ + uint64_t pcf_p_f : 1; /**< Attempted to push a full PCN-CNT-FIFO. */ + uint64_t pcf_p_e : 1; /**< Attempted to pop an empty PCN-CNT-FIFO. */ + uint64_t rdx_s_e : 1; /**< Attempted to subtract when DPI-XFR-Wait count is 0. */ + uint64_t rwx_s_e : 1; /**< Attempted to subtract when RDN-XFR-Wait count is 0. */ + uint64_t pnc_a_f : 1; /**< Attempted to add when PNI-NPI Credits are max. */ + uint64_t pnc_s_e : 1; /**< Attempted to subtract when PNI-NPI Credits are 0. */ + uint64_t com_a_f : 1; /**< Attempted to add when PCN-Commit Counter is max. */ + uint64_t com_s_e : 1; /**< Attempted to subtract when PCN-Commit Counter is 0. */ + uint64_t q3_a_f : 1; /**< Attempted to add when Queue-3 FIFO is full. */ + uint64_t q3_s_e : 1; /**< Attempted to subtract when Queue-3 FIFO is empty. */ + uint64_t q2_a_f : 1; /**< Attempted to add when Queue-2 FIFO is full. */ + uint64_t q2_s_e : 1; /**< Attempted to subtract when Queue-2 FIFO is empty. */ + uint64_t pcr_a_f : 1; /**< Attempted to add when POW Credits is full. */ + uint64_t pcr_s_e : 1; /**< Attempted to subtract when POW Credits is empty. */ + uint64_t fcr_a_f : 1; /**< Attempted to add when FPA Credits is full. */ + uint64_t fcr_s_e : 1; /**< Attempted to subtract when FPA Credits is empty. */ + uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ + uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C + from the PCI this bit may be set. */ + uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ + uint64_t reserved_37_38 : 2; + uint64_t i1_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t reserved_33_34 : 2; + uint64_t p1_ptout : 1; /**< Port-1 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO + pair. */ + uint64_t reserved_29_30 : 2; + uint64_t p1_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t reserved_25_26 : 2; + uint64_t g1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read a gather list. */ + uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read a gather list. */ + uint64_t reserved_21_22 : 2; + uint64_t p1_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t reserved_17_18 : 2; + uint64_t p1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read packet data. */ + uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read packet data. */ + uint64_t reserved_13_14 : 2; + uint64_t i1_overf : 1; /**< Port-1 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t reserved_9_10 : 2; + uint64_t i1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read instructions. */ + uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read instructions. */ + uint64_t reserved_5_6 : 2; + uint64_t po1_2sml : 1; /**< The packet being sent out on Port1 is smaller + than the NPI_BUFF_SIZE_OUTPUT1[ISIZE] field. */ + uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller + than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ + uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the + corresponding bit in the PCI_INT_ENB2 is SET. */ + uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit + back from a RSL after sending a write command to + a RSL. */ + uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data + back from a RSL after sending a read command to + a RSL. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t po1_2sml : 1; + uint64_t reserved_5_6 : 2; + uint64_t i0_rtout : 1; + uint64_t i1_rtout : 1; + uint64_t reserved_9_10 : 2; + uint64_t i0_overf : 1; + uint64_t i1_overf : 1; + uint64_t reserved_13_14 : 2; + uint64_t p0_rtout : 1; + uint64_t p1_rtout : 1; + uint64_t reserved_17_18 : 2; + uint64_t p0_perr : 1; + uint64_t p1_perr : 1; + uint64_t reserved_21_22 : 2; + uint64_t g0_rtout : 1; + uint64_t g1_rtout : 1; + uint64_t reserved_25_26 : 2; + uint64_t p0_pperr : 1; + uint64_t p1_pperr : 1; + uint64_t reserved_29_30 : 2; + uint64_t p0_ptout : 1; + uint64_t p1_ptout : 1; + uint64_t reserved_33_34 : 2; + uint64_t i0_pperr : 1; + uint64_t i1_pperr : 1; + uint64_t reserved_37_38 : 2; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t fcr_s_e : 1; + uint64_t fcr_a_f : 1; + uint64_t pcr_s_e : 1; + uint64_t pcr_a_f : 1; + uint64_t q2_s_e : 1; + uint64_t q2_a_f : 1; + uint64_t q3_s_e : 1; + uint64_t q3_a_f : 1; + uint64_t com_s_e : 1; + uint64_t com_a_f : 1; + uint64_t pnc_s_e : 1; + uint64_t pnc_a_f : 1; + uint64_t rwx_s_e : 1; + uint64_t rdx_s_e : 1; + uint64_t pcf_p_e : 1; + uint64_t pcf_p_f : 1; + uint64_t pdf_p_e : 1; + uint64_t pdf_p_f : 1; + uint64_t q1_s_e : 1; + uint64_t q1_a_f : 1; + uint64_t reserved_62_63 : 2; +#endif + } cn31xx; + struct cvmx_npi_int_sum_s cn38xx; + struct cvmx_npi_int_sum_cn38xxp2 + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_42_63 : 22; + uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ + uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C + from the PCI this bit may be set. */ + uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ + uint64_t i3_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i2_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i1_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction + this bit may be set. */ + uint64_t p3_ptout : 1; /**< Port-3 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p2_ptout : 1; /**< Port-2 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p1_ptout : 1; /**< Port-1 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO + pair. */ + uint64_t p3_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p2_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p1_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO + pointer-pair, this bit may be set. */ + uint64_t g3_rtout : 1; /**< Port-3 had a read timeout while attempting to + read a gather list. */ + uint64_t g2_rtout : 1; /**< Port-2 had a read timeout while attempting to + read a gather list. */ + uint64_t g1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read a gather list. */ + uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read a gather list. */ + uint64_t p3_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p2_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p1_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet + data this bit may be set. */ + uint64_t p3_rtout : 1; /**< Port-3 had a read timeout while attempting to + read packet data. */ + uint64_t p2_rtout : 1; /**< Port-2 had a read timeout while attempting to + read packet data. */ + uint64_t p1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read packet data. */ + uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read packet data. */ + uint64_t i3_overf : 1; /**< Port-3 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i2_overf : 1; /**< Port-2 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i1_overf : 1; /**< Port-1 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the + doorbell count was set. */ + uint64_t i3_rtout : 1; /**< Port-3 had a read timeout while attempting to + read instructions. */ + uint64_t i2_rtout : 1; /**< Port-2 had a read timeout while attempting to + read instructions. */ + uint64_t i1_rtout : 1; /**< Port-1 had a read timeout while attempting to + read instructions. */ + uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to + read instructions. */ + uint64_t po3_2sml : 1; /**< The packet being sent out on Port3 is smaller + than the NPI_BUFF_SIZE_OUTPUT3[ISIZE] field. */ + uint64_t po2_2sml : 1; /**< The packet being sent out on Port2 is smaller + than the NPI_BUFF_SIZE_OUTPUT2[ISIZE] field. */ + uint64_t po1_2sml : 1; /**< The packet being sent out on Port1 is smaller + than the NPI_BUFF_SIZE_OUTPUT1[ISIZE] field. */ + uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller + than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ + uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the + corresponding bit in the PCI_INT_ENB2 is SET. */ + uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit + back from a RSL after sending a write command to + a RSL. */ + uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data + back from a RSL after sending a read command to + a RSL. */ +#else + uint64_t rml_rto : 1; + uint64_t rml_wto : 1; + uint64_t pci_rsl : 1; + uint64_t po0_2sml : 1; + uint64_t po1_2sml : 1; + uint64_t po2_2sml : 1; + uint64_t po3_2sml : 1; + uint64_t i0_rtout : 1; + uint64_t i1_rtout : 1; + uint64_t i2_rtout : 1; + uint64_t i3_rtout : 1; + uint64_t i0_overf : 1; + uint64_t i1_overf : 1; + uint64_t i2_overf : 1; + uint64_t i3_overf : 1; + uint64_t p0_rtout : 1; + uint64_t p1_rtout : 1; + uint64_t p2_rtout : 1; + uint64_t p3_rtout : 1; + uint64_t p0_perr : 1; + uint64_t p1_perr : 1; + uint64_t p2_perr : 1; + uint64_t p3_perr : 1; + uint64_t g0_rtout : 1; + uint64_t g1_rtout : 1; + uint64_t g2_rtout : 1; + uint64_t g3_rtout : 1; + uint64_t p0_pperr : 1; + uint64_t p1_pperr : 1; + uint64_t p2_pperr : 1; + uint64_t p3_pperr : 1; + uint64_t p0_ptout : 1; + uint64_t p1_ptout : 1; + uint64_t p2_ptout : 1; + uint64_t p3_ptout : 1; + uint64_t i0_pperr : 1; + uint64_t i1_pperr : 1; + uint64_t i2_pperr : 1; + uint64_t i3_pperr : 1; + uint64_t win_rto : 1; + uint64_t p_dperr : 1; + uint64_t iobdma : 1; + uint64_t reserved_42_63 : 22; +#endif + } cn38xxp2; + struct cvmx_npi_int_sum_cn31xx cn50xx; + struct cvmx_npi_int_sum_s cn58xx; + struct cvmx_npi_int_sum_s cn58xxp1; +}; +typedef union cvmx_npi_int_sum cvmx_npi_int_sum_t; + +/** + * cvmx_npi_lowp_dbell + * + * NPI_LOWP_DBELL = Low Priority Door Bell + * + * The door bell register for the low priority DMA queue. + */ +union cvmx_npi_lowp_dbell +{ + uint64_t u64; + struct cvmx_npi_lowp_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_npi_lowp_dbell_s cn30xx; + struct cvmx_npi_lowp_dbell_s cn31xx; + struct cvmx_npi_lowp_dbell_s cn38xx; + struct cvmx_npi_lowp_dbell_s cn38xxp2; + struct cvmx_npi_lowp_dbell_s cn50xx; + struct cvmx_npi_lowp_dbell_s cn58xx; + struct cvmx_npi_lowp_dbell_s cn58xxp1; +}; +typedef union cvmx_npi_lowp_dbell cvmx_npi_lowp_dbell_t; + +/** + * cvmx_npi_lowp_ibuff_saddr + * + * NPI_LOWP_IBUFF_SADDR = DMA Low Priority's Instruction Buffer Starting Address + * + * The address to start reading Instructions from for LOWP. + */ +union cvmx_npi_lowp_ibuff_saddr +{ + uint64_t u64; + struct cvmx_npi_lowp_ibuff_saddr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_36_63 : 28; + uint64_t saddr : 36; /**< The starting address to read the first instruction. */ +#else + uint64_t saddr : 36; + uint64_t reserved_36_63 : 28; +#endif + } s; + struct cvmx_npi_lowp_ibuff_saddr_s cn30xx; + struct cvmx_npi_lowp_ibuff_saddr_s cn31xx; + struct cvmx_npi_lowp_ibuff_saddr_s cn38xx; + struct cvmx_npi_lowp_ibuff_saddr_s cn38xxp2; + struct cvmx_npi_lowp_ibuff_saddr_s cn50xx; + struct cvmx_npi_lowp_ibuff_saddr_s cn58xx; + struct cvmx_npi_lowp_ibuff_saddr_s cn58xxp1; +}; +typedef union cvmx_npi_lowp_ibuff_saddr cvmx_npi_lowp_ibuff_saddr_t; + +/** + * cvmx_npi_mem_access_subid# + * + * NPI_MEM_ACCESS_SUBID3 = Memory Access SubId 3Register + * + * Carries Read/Write parameters for PP access to PCI memory that use NPI SubId3. + * Writes to this register are not ordered with writes/reads to the PCI Memory space. + * To ensure that a write has completed the user must read the register before + * making an access(i.e. PCI memory space) that requires the value of this register to be updated. + */ +union cvmx_npi_mem_access_subidx +{ + uint64_t u64; + struct cvmx_npi_mem_access_subidx_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_38_63 : 26; + uint64_t shortl : 1; /**< Generate CMD-6 on PCI(x) when '1'. + Loads from the cores to the corresponding subid + that are 32-bits or smaller: + - Will generate the PCI-X "Memory Read DWORD" + command in PCI-X mode. (Note that "Memory + Read DWORD" appears much like an IO read on + the PCI-X bus.) + - Will generate the PCI "Memory Read" command + in PCI-X mode, irrespective of the + NPI_PCI_READ_CMD[CMD_SIZE] value. + NOT IN PASS 1 NOR PASS 2 */ + uint64_t nmerge : 1; /**< No Merge. (NOT IN PASS 1 NOR PASS 2) */ + uint64_t esr : 2; /**< Endian-Swap on read. */ + uint64_t esw : 2; /**< Endian-Swap on write. */ + uint64_t nsr : 1; /**< No-Snoop on read. */ + uint64_t nsw : 1; /**< No-Snoop on write. */ + uint64_t ror : 1; /**< Relax Read on read. */ + uint64_t row : 1; /**< Relax Order on write. */ + uint64_t ba : 28; /**< PCI Address bits [63:36]. */ +#else + uint64_t ba : 28; + uint64_t row : 1; + uint64_t ror : 1; + uint64_t nsw : 1; + uint64_t nsr : 1; + uint64_t esw : 2; + uint64_t esr : 2; + uint64_t nmerge : 1; + uint64_t shortl : 1; + uint64_t reserved_38_63 : 26; +#endif + } s; + struct cvmx_npi_mem_access_subidx_s cn30xx; + struct cvmx_npi_mem_access_subidx_cn31xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_36_63 : 28; + uint64_t esr : 2; /**< Endian-Swap on read. */ + uint64_t esw : 2; /**< Endian-Swap on write. */ + uint64_t nsr : 1; /**< No-Snoop on read. */ + uint64_t nsw : 1; /**< No-Snoop on write. */ + uint64_t ror : 1; /**< Relax Read on read. */ + uint64_t row : 1; /**< Relax Order on write. */ + uint64_t ba : 28; /**< PCI Address bits [63:36]. */ +#else + uint64_t ba : 28; + uint64_t row : 1; + uint64_t ror : 1; + uint64_t nsw : 1; + uint64_t nsr : 1; + uint64_t esw : 2; + uint64_t esr : 2; + uint64_t reserved_36_63 : 28; +#endif + } cn31xx; + struct cvmx_npi_mem_access_subidx_s cn38xx; + struct cvmx_npi_mem_access_subidx_cn31xx cn38xxp2; + struct cvmx_npi_mem_access_subidx_s cn50xx; + struct cvmx_npi_mem_access_subidx_s cn58xx; + struct cvmx_npi_mem_access_subidx_s cn58xxp1; +}; +typedef union cvmx_npi_mem_access_subidx cvmx_npi_mem_access_subidx_t; + +/** + * cvmx_npi_msi_rcv + * + * NPI_MSI_RCV = NPI MSI Receive Vector Register + * + * A bit is set in this register relative to the vector received during a MSI. And cleared by a W1 to the register. + */ +union cvmx_npi_msi_rcv +{ + uint64_t u64; + struct cvmx_npi_msi_rcv_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t int_vec : 64; /**< Refer to PCI_MSI_RCV */ +#else + uint64_t int_vec : 64; +#endif + } s; + struct cvmx_npi_msi_rcv_s cn30xx; + struct cvmx_npi_msi_rcv_s cn31xx; + struct cvmx_npi_msi_rcv_s cn38xx; + struct cvmx_npi_msi_rcv_s cn38xxp2; + struct cvmx_npi_msi_rcv_s cn50xx; + struct cvmx_npi_msi_rcv_s cn58xx; + struct cvmx_npi_msi_rcv_s cn58xxp1; +}; +typedef union cvmx_npi_msi_rcv cvmx_npi_msi_rcv_t; + +/** + * cvmx_npi_num_desc_output# + * + * NUM_DESC_OUTPUT0 = Number Of Descriptors Available For Output 0 + * + * The size of the Buffer/Info Pointer Pair ring for Output-0. + */ +union cvmx_npi_num_desc_outputx +{ + uint64_t u64; + struct cvmx_npi_num_desc_outputx_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_32_63 : 32; + uint64_t size : 32; /**< The size of the Buffer/Info Pointer Pair ring. */ +#else + uint64_t size : 32; + uint64_t reserved_32_63 : 32; +#endif + } s; + struct cvmx_npi_num_desc_outputx_s cn30xx; + struct cvmx_npi_num_desc_outputx_s cn31xx; + struct cvmx_npi_num_desc_outputx_s cn38xx; + struct cvmx_npi_num_desc_outputx_s cn38xxp2; + struct cvmx_npi_num_desc_outputx_s cn50xx; + struct cvmx_npi_num_desc_outputx_s cn58xx; + struct cvmx_npi_num_desc_outputx_s cn58xxp1; +}; +typedef union cvmx_npi_num_desc_outputx cvmx_npi_num_desc_outputx_t; + +/** + * cvmx_npi_output_control + * + * NPI_OUTPUT_CONTROL = NPI's Output Control Register + * + * The address to start reading Instructions from for Output-3. + */ +union cvmx_npi_output_control +{ + uint64_t u64; + struct cvmx_npi_output_control_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_49_63 : 15; + uint64_t pkt_rr : 1; /**< When set '1' the output packet selection will be + made with a Round Robin arbitration. When '0' + the output packet port is fixed in priority, + where the lower port number has higher priority. + PASS3 Field */ + uint64_t p3_bmode : 1; /**< When set '1' PCI_PKTS_SENT3 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p2_bmode : 1; /**< When set '1' PCI_PKTS_SENT2 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t o3_es : 2; /**< Endian Swap for Output3 Data. */ + uint64_t o3_ns : 1; /**< NoSnoop Enable for Output3 Data. */ + uint64_t o3_ro : 1; /**< Relaxed Ordering Enable for Output3 Data. */ + uint64_t o2_es : 2; /**< Endian Swap for Output2 Data. */ + uint64_t o2_ns : 1; /**< NoSnoop Enable for Output2 Data. */ + uint64_t o2_ro : 1; /**< Relaxed Ordering Enable for Output2 Data. */ + uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ + uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ + uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ + uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ + uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ + uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ + uint64_t o3_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O3_ES, + O3_NS, O3_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O3_ES[1:0], O3_NS, O3_RO. For Output Port-3. */ + uint64_t o2_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O2_ES, + O2_NS, O2_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O2_ES[1:0], O2_NS, O2_RO. For Output Port-2. */ + uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O1_ES, + O1_NS, O1_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ + uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O0_ES, + O0_NS, O0_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ + uint64_t reserved_20_23 : 4; + uint64_t iptr_o3 : 1; /**< Uses the Info-Pointer to store length and data + for output-3. */ + uint64_t iptr_o2 : 1; /**< Uses the Info-Pointer to store length and data + for output-2. */ + uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data + for output-1. */ + uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data + for output-0. */ + uint64_t esr_sl3 : 2; /**< The Endian-Swap-Mode for Slist3 reads. */ + uint64_t nsr_sl3 : 1; /**< Enables '1' NoSnoop for Slist3 reads. */ + uint64_t ror_sl3 : 1; /**< Enables '1' Relaxed Ordering for Slist3 reads. */ + uint64_t esr_sl2 : 2; /**< The Endian-Swap-Mode for Slist2 reads. */ + uint64_t nsr_sl2 : 1; /**< Enables '1' NoSnoop for Slist2 reads. */ + uint64_t ror_sl2 : 1; /**< Enables '1' Relaxed Ordering for Slist2 reads. */ + uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ + uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ + uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ + uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ + uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ + uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ +#else + uint64_t ror_sl0 : 1; + uint64_t nsr_sl0 : 1; + uint64_t esr_sl0 : 2; + uint64_t ror_sl1 : 1; + uint64_t nsr_sl1 : 1; + uint64_t esr_sl1 : 2; + uint64_t ror_sl2 : 1; + uint64_t nsr_sl2 : 1; + uint64_t esr_sl2 : 2; + uint64_t ror_sl3 : 1; + uint64_t nsr_sl3 : 1; + uint64_t esr_sl3 : 2; + uint64_t iptr_o0 : 1; + uint64_t iptr_o1 : 1; + uint64_t iptr_o2 : 1; + uint64_t iptr_o3 : 1; + uint64_t reserved_20_23 : 4; + uint64_t o0_csrm : 1; + uint64_t o1_csrm : 1; + uint64_t o2_csrm : 1; + uint64_t o3_csrm : 1; + uint64_t o0_ro : 1; + uint64_t o0_ns : 1; + uint64_t o0_es : 2; + uint64_t o1_ro : 1; + uint64_t o1_ns : 1; + uint64_t o1_es : 2; + uint64_t o2_ro : 1; + uint64_t o2_ns : 1; + uint64_t o2_es : 2; + uint64_t o3_ro : 1; + uint64_t o3_ns : 1; + uint64_t o3_es : 2; + uint64_t p0_bmode : 1; + uint64_t p1_bmode : 1; + uint64_t p2_bmode : 1; + uint64_t p3_bmode : 1; + uint64_t pkt_rr : 1; + uint64_t reserved_49_63 : 15; +#endif + } s; + struct cvmx_npi_output_control_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_45_63 : 19; + uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t reserved_32_43 : 12; + uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ + uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ + uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ + uint64_t reserved_25_27 : 3; + uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O0_ES, + O0_NS, O0_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ + uint64_t reserved_17_23 : 7; + uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data + for output-0. */ + uint64_t reserved_4_15 : 12; + uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ + uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ + uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ +#else + uint64_t ror_sl0 : 1; + uint64_t nsr_sl0 : 1; + uint64_t esr_sl0 : 2; + uint64_t reserved_4_15 : 12; + uint64_t iptr_o0 : 1; + uint64_t reserved_17_23 : 7; + uint64_t o0_csrm : 1; + uint64_t reserved_25_27 : 3; + uint64_t o0_ro : 1; + uint64_t o0_ns : 1; + uint64_t o0_es : 2; + uint64_t reserved_32_43 : 12; + uint64_t p0_bmode : 1; + uint64_t reserved_45_63 : 19; +#endif + } cn30xx; + struct cvmx_npi_output_control_cn31xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_46_63 : 18; + uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t reserved_36_43 : 8; + uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ + uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ + uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ + uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ + uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ + uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ + uint64_t reserved_26_27 : 2; + uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O1_ES, + O1_NS, O1_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ + uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O0_ES, + O0_NS, O0_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ + uint64_t reserved_18_23 : 6; + uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data + for output-1. */ + uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data + for output-0. */ + uint64_t reserved_8_15 : 8; + uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ + uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ + uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ + uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ + uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ + uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ +#else + uint64_t ror_sl0 : 1; + uint64_t nsr_sl0 : 1; + uint64_t esr_sl0 : 2; + uint64_t ror_sl1 : 1; + uint64_t nsr_sl1 : 1; + uint64_t esr_sl1 : 2; + uint64_t reserved_8_15 : 8; + uint64_t iptr_o0 : 1; + uint64_t iptr_o1 : 1; + uint64_t reserved_18_23 : 6; + uint64_t o0_csrm : 1; + uint64_t o1_csrm : 1; + uint64_t reserved_26_27 : 2; + uint64_t o0_ro : 1; + uint64_t o0_ns : 1; + uint64_t o0_es : 2; + uint64_t o1_ro : 1; + uint64_t o1_ns : 1; + uint64_t o1_es : 2; + uint64_t reserved_36_43 : 8; + uint64_t p0_bmode : 1; + uint64_t p1_bmode : 1; + uint64_t reserved_46_63 : 18; +#endif + } cn31xx; + struct cvmx_npi_output_control_s cn38xx; + struct cvmx_npi_output_control_cn38xxp2 + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_48_63 : 16; + uint64_t p3_bmode : 1; /**< When set '1' PCI_PKTS_SENT3 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p2_bmode : 1; /**< When set '1' PCI_PKTS_SENT2 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t o3_es : 2; /**< Endian Swap for Output3 Data. */ + uint64_t o3_ns : 1; /**< NoSnoop Enable for Output3 Data. */ + uint64_t o3_ro : 1; /**< Relaxed Ordering Enable for Output3 Data. */ + uint64_t o2_es : 2; /**< Endian Swap for Output2 Data. */ + uint64_t o2_ns : 1; /**< NoSnoop Enable for Output2 Data. */ + uint64_t o2_ro : 1; /**< Relaxed Ordering Enable for Output2 Data. */ + uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ + uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ + uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ + uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ + uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ + uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ + uint64_t o3_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O3_ES, + O3_NS, O3_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O3_ES[1:0], O3_NS, O3_RO. For Output Port-3. */ + uint64_t o2_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O2_ES, + O2_NS, O2_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O2_ES[1:0], O2_NS, O2_RO. For Output Port-2. */ + uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O1_ES, + O1_NS, O1_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ + uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O0_ES, + O0_NS, O0_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ + uint64_t reserved_20_23 : 4; + uint64_t iptr_o3 : 1; /**< Uses the Info-Pointer to store length and data + for output-3. */ + uint64_t iptr_o2 : 1; /**< Uses the Info-Pointer to store length and data + for output-2. */ + uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data + for output-1. */ + uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data + for output-0. */ + uint64_t esr_sl3 : 2; /**< The Endian-Swap-Mode for Slist3 reads. */ + uint64_t nsr_sl3 : 1; /**< Enables '1' NoSnoop for Slist3 reads. */ + uint64_t ror_sl3 : 1; /**< Enables '1' Relaxed Ordering for Slist3 reads. */ + uint64_t esr_sl2 : 2; /**< The Endian-Swap-Mode for Slist2 reads. */ + uint64_t nsr_sl2 : 1; /**< Enables '1' NoSnoop for Slist2 reads. */ + uint64_t ror_sl2 : 1; /**< Enables '1' Relaxed Ordering for Slist2 reads. */ + uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ + uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ + uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ + uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ + uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ + uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ +#else + uint64_t ror_sl0 : 1; + uint64_t nsr_sl0 : 1; + uint64_t esr_sl0 : 2; + uint64_t ror_sl1 : 1; + uint64_t nsr_sl1 : 1; + uint64_t esr_sl1 : 2; + uint64_t ror_sl2 : 1; + uint64_t nsr_sl2 : 1; + uint64_t esr_sl2 : 2; + uint64_t ror_sl3 : 1; + uint64_t nsr_sl3 : 1; + uint64_t esr_sl3 : 2; + uint64_t iptr_o0 : 1; + uint64_t iptr_o1 : 1; + uint64_t iptr_o2 : 1; + uint64_t iptr_o3 : 1; + uint64_t reserved_20_23 : 4; + uint64_t o0_csrm : 1; + uint64_t o1_csrm : 1; + uint64_t o2_csrm : 1; + uint64_t o3_csrm : 1; + uint64_t o0_ro : 1; + uint64_t o0_ns : 1; + uint64_t o0_es : 2; + uint64_t o1_ro : 1; + uint64_t o1_ns : 1; + uint64_t o1_es : 2; + uint64_t o2_ro : 1; + uint64_t o2_ns : 1; + uint64_t o2_es : 2; + uint64_t o3_ro : 1; + uint64_t o3_ns : 1; + uint64_t o3_es : 2; + uint64_t p0_bmode : 1; + uint64_t p1_bmode : 1; + uint64_t p2_bmode : 1; + uint64_t p3_bmode : 1; + uint64_t reserved_48_63 : 16; +#endif + } cn38xxp2; + struct cvmx_npi_output_control_cn50xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_49_63 : 15; + uint64_t pkt_rr : 1; /**< When set '1' the output packet selection will be + made with a Round Robin arbitration. When '0' + the output packet port is fixed in priority, + where the lower port number has higher priority. + PASS2 Field */ + uint64_t reserved_46_47 : 2; + uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be + updated with the number of bytes in the packet + sent, when '0' the register will have a value + of '1' added. */ + uint64_t reserved_36_43 : 8; + uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ + uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ + uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ + uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ + uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ + uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ + uint64_t reserved_26_27 : 2; + uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O1_ES, + O1_NS, O1_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ + uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, + comes from the DPTR[63:60] in the scatter-list pair, + and the RO, NS, ES values come from the O0_ES, + O0_NS, O0_RO. When '0' the RO == DPTR[60], + NS == DPTR[61], ES == DPTR[63:62], the address the + packet will be written to is ADDR[63:60] == + O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ + uint64_t reserved_18_23 : 6; + uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data + for output-1. */ + uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data + for output-0. */ + uint64_t reserved_8_15 : 8; + uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ + uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ + uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ + uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ + uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ + uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ +#else + uint64_t ror_sl0 : 1; + uint64_t nsr_sl0 : 1; + uint64_t esr_sl0 : 2; + uint64_t ror_sl1 : 1; + uint64_t nsr_sl1 : 1; + uint64_t esr_sl1 : 2; + uint64_t reserved_8_15 : 8; + uint64_t iptr_o0 : 1; + uint64_t iptr_o1 : 1; + uint64_t reserved_18_23 : 6; + uint64_t o0_csrm : 1; + uint64_t o1_csrm : 1; + uint64_t reserved_26_27 : 2; + uint64_t o0_ro : 1; + uint64_t o0_ns : 1; + uint64_t o0_es : 2; + uint64_t o1_ro : 1; + uint64_t o1_ns : 1; + uint64_t o1_es : 2; + uint64_t reserved_36_43 : 8; + uint64_t p0_bmode : 1; + uint64_t p1_bmode : 1; + uint64_t reserved_46_47 : 2; + uint64_t pkt_rr : 1; + uint64_t reserved_49_63 : 15; +#endif + } cn50xx; + struct cvmx_npi_output_control_s cn58xx; + struct cvmx_npi_output_control_s cn58xxp1; +}; +typedef union cvmx_npi_output_control cvmx_npi_output_control_t; + +/** + * cvmx_npi_p#_dbpair_addr + * + * NPI_P0_DBPAIR_ADDR = NPI's Port-0 DATA-BUFFER Pair Next Read Address. + * + * Contains the next address to read for Port's-0 Data/Buffer Pair. + */ +union cvmx_npi_px_dbpair_addr +{ + uint64_t u64; + struct cvmx_npi_px_dbpair_addr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_63_63 : 1; + uint64_t state : 2; /**< POS state machine vector. Used to tell when NADDR + is valid (when STATE == 0). */ + uint64_t naddr : 61; /**< Bits [63:3] of the next Data-Info Pair to read. + Value is only valid when STATE == 0. */ +#else + uint64_t naddr : 61; + uint64_t state : 2; + uint64_t reserved_63_63 : 1; +#endif + } s; + struct cvmx_npi_px_dbpair_addr_s cn30xx; + struct cvmx_npi_px_dbpair_addr_s cn31xx; + struct cvmx_npi_px_dbpair_addr_s cn38xx; + struct cvmx_npi_px_dbpair_addr_s cn38xxp2; + struct cvmx_npi_px_dbpair_addr_s cn50xx; + struct cvmx_npi_px_dbpair_addr_s cn58xx; + struct cvmx_npi_px_dbpair_addr_s cn58xxp1; +}; +typedef union cvmx_npi_px_dbpair_addr cvmx_npi_px_dbpair_addr_t; + +/** + * cvmx_npi_p#_instr_addr + * + * NPI_P0_INSTR_ADDR = NPI's Port-0 Instruction Next Read Address. + * + * Contains the next address to read for Port's-0 Instructions. + */ +union cvmx_npi_px_instr_addr +{ + uint64_t u64; + struct cvmx_npi_px_instr_addr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t state : 3; /**< Gather engine state vector. Used to tell when + NADDR is valid (when STATE == 0). */ + uint64_t naddr : 61; /**< Bits [63:3] of the next Instruction to read. + Value is only valid when STATE == 0. */ +#else + uint64_t naddr : 61; + uint64_t state : 3; +#endif + } s; + struct cvmx_npi_px_instr_addr_s cn30xx; + struct cvmx_npi_px_instr_addr_s cn31xx; + struct cvmx_npi_px_instr_addr_s cn38xx; + struct cvmx_npi_px_instr_addr_s cn38xxp2; + struct cvmx_npi_px_instr_addr_s cn50xx; + struct cvmx_npi_px_instr_addr_s cn58xx; + struct cvmx_npi_px_instr_addr_s cn58xxp1; +}; +typedef union cvmx_npi_px_instr_addr cvmx_npi_px_instr_addr_t; + +/** + * cvmx_npi_p#_instr_cnts + * + * NPI_P0_INSTR_CNTS = NPI's Port-0 Instruction Counts For Packets In. + * + * Used to determine the number of instruction in the NPI and to be fetched for Input-Packets. + */ +union cvmx_npi_px_instr_cnts +{ + uint64_t u64; + struct cvmx_npi_px_instr_cnts_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_38_63 : 26; + uint64_t fcnt : 6; /**< Number entries in the Instruction FIFO. */ + uint64_t avail : 32; /**< Doorbell count to be read. */ +#else + uint64_t avail : 32; + uint64_t fcnt : 6; + uint64_t reserved_38_63 : 26; +#endif + } s; + struct cvmx_npi_px_instr_cnts_s cn30xx; + struct cvmx_npi_px_instr_cnts_s cn31xx; + struct cvmx_npi_px_instr_cnts_s cn38xx; + struct cvmx_npi_px_instr_cnts_s cn38xxp2; + struct cvmx_npi_px_instr_cnts_s cn50xx; + struct cvmx_npi_px_instr_cnts_s cn58xx; + struct cvmx_npi_px_instr_cnts_s cn58xxp1; +}; +typedef union cvmx_npi_px_instr_cnts cvmx_npi_px_instr_cnts_t; + +/** + * cvmx_npi_p#_pair_cnts + * + * NPI_P0_PAIR_CNTS = NPI's Port-0 Instruction Counts For Packets Out. + * + * Used to determine the number of instruction in the NPI and to be fetched for Output-Packets. + */ +union cvmx_npi_px_pair_cnts +{ + uint64_t u64; + struct cvmx_npi_px_pair_cnts_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_37_63 : 27; + uint64_t fcnt : 5; /**< 16 - number entries in the D/I Pair FIFO. */ + uint64_t avail : 32; /**< Doorbell count to be read. */ +#else + uint64_t avail : 32; + uint64_t fcnt : 5; + uint64_t reserved_37_63 : 27; +#endif + } s; + struct cvmx_npi_px_pair_cnts_s cn30xx; + struct cvmx_npi_px_pair_cnts_s cn31xx; + struct cvmx_npi_px_pair_cnts_s cn38xx; + struct cvmx_npi_px_pair_cnts_s cn38xxp2; + struct cvmx_npi_px_pair_cnts_s cn50xx; + struct cvmx_npi_px_pair_cnts_s cn58xx; + struct cvmx_npi_px_pair_cnts_s cn58xxp1; +}; +typedef union cvmx_npi_px_pair_cnts cvmx_npi_px_pair_cnts_t; + +/** + * cvmx_npi_pci_burst_size + * + * NPI_PCI_BURST_SIZE = NPI PCI Burst Size Register + * + * Control the number of words the NPI will attempt to read / write to/from the PCI. + */ +union cvmx_npi_pci_burst_size +{ + uint64_t u64; + struct cvmx_npi_pci_burst_size_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_14_63 : 50; + uint64_t wr_brst : 7; /**< The number of 8B words to write to PCI in any one + write operation. A zero is equal to 128. This + value is used the packet reads and is clamped at + a max of 112 for dma writes. */ + uint64_t rd_brst : 7; /**< Number of 8B words to read from PCI in any one + read operation. Legal values are 1 to 127, where + a 0 will be treated as a 1. + "For reading of packet data value is limited to 64 + in PASS-2." + This value does not control the size of a read + caused by an IOBDMA from a PP. */ +#else + uint64_t rd_brst : 7; + uint64_t wr_brst : 7; + uint64_t reserved_14_63 : 50; +#endif + } s; + struct cvmx_npi_pci_burst_size_s cn30xx; + struct cvmx_npi_pci_burst_size_s cn31xx; + struct cvmx_npi_pci_burst_size_s cn38xx; + struct cvmx_npi_pci_burst_size_s cn38xxp2; + struct cvmx_npi_pci_burst_size_s cn50xx; + struct cvmx_npi_pci_burst_size_s cn58xx; + struct cvmx_npi_pci_burst_size_s cn58xxp1; +}; +typedef union cvmx_npi_pci_burst_size cvmx_npi_pci_burst_size_t; + +/** + * cvmx_npi_pci_int_arb_cfg + * + * NPI_PCI_INT_ARB_CFG = Configuration For PCI Arbiter + * + * Controls operation of the Internal PCI Arbiter. This register should + * only be written when PRST# is asserted. NPI_PCI_INT_ARB_CFG[EN] should + * only be set when Octane is a host. + */ +union cvmx_npi_pci_int_arb_cfg +{ + uint64_t u64; + struct cvmx_npi_pci_int_arb_cfg_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_13_63 : 51; + uint64_t hostmode : 1; /**< PCI Host Mode Pin (sampled for use by software). + This bit reflects the sampled PCI_HOSTMODE pin. + In HOST Mode, OCTEON drives the PCI_CLK_OUT and + PCI initialization pattern during PCI_RST_N deassertion). */ + uint64_t pci_ovr : 4; /**< PCI Host Mode Bus Speed/Type Override + When in Host Mode(PCI_HOSTMODE pin =1), OCTEON acting + as the PCI Central Agent, samples the PCI_PCI100, + PCI_M66EN and PCI_PCIXCAP pins to determine the + 'sampled' PCI Bus speed and Bus Type (PCI or PCIX). + (see: PCI_CNT_REG[HM_SPEED,HM_PCIX]) + However, in some cases, SW may want to override the + the 'sampled' PCI Bus Type/Speed, and use some + SLOWER Bus frequency. + The PCI_OVR field encoding represents the 'override' + PCI Bus Type/Speed which will be used to generate the + PCI_CLK_OUT and determines the PCI initialization pattern + driven during PCI_RST_N deassertion. + PCI_OVR[3]: OVERRIDE (0:DISABLE/1:ENABLE) + PCI_OVR[2]: BUS TYPE(0:PCI/1:PCIX) + PCI_OVR[1:0]: BUS SPEED(0:33/1:66/2:100/3:133) + OVERRIDE TYPE SPEED | Override Configuration + [3] [2] [1:0] | TYPE SPEED + ------------------+------------------------------- + 0 x xx | No override(uses 'sampled' + | Bus Speed(HM_SPEED) and Bus Type(HM_PCIX) + 1 0 00 | PCI Mode 33MHz + 1 0 01 | PCI Mode 66MHz + 1 0 10 | RESERVED (DO NOT USE) + 1 0 11 | RESERVED (DO NOT USE) + 1 1 00 | RESERVED (DO NOT USE) + 1 1 01 | PCIX Mode 66MHz + 1 1 10 | PCIX Mode 100MHz + 1 1 11 | PCIX Mode 133MHz + NOTES: + - NPI_PCI_INT_ARB_CFG[PCI_OVR] has NO EFFECT on + PCI_CNT_REG[HM_SPEED,HM_PCIX] (ie: the sampled PCI Bus + Type/Speed), but WILL EFFECT PCI_CTL_STATUS_2[AP_PCIX] + which reflects the actual PCI Bus Type(0:PCI/1:PCIX). + - Software should never 'up' configure the recommended values. + In other words, if the 'sampled' Bus Type=PCI(HM_PCIX=0), + then SW should NOT attempt to set TYPE[2]=1 for PCIX Mode. + Likewise, if the sampled Bus Speed=66MHz(HM_SPEED=01), + then SW should NOT attempt to 'speed up' the bus [ie: + SPEED[1:0]=10(100MHz)]. + - If PCI_OVR<3> is set prior to PCI reset de-assertion + in host mode, NPI_PCI_INT_ARB_CFG[PCI_OVR] + indicates the Bus Type/Speed that OCTEON drove on the + DEVSEL/STOP/TRDY pins during reset de-assertion. (user + should then ignore the 'sampled' Bus Type/Speed + contained in the PCI_CNT_REG[HM_PCIX, HM_SPEED]) fields. + - If PCI_OVR<3> is clear prior to PCI reset de-assertion + in host mode, PCI_CNT_REG[HM_PCIX,HM_SPEED]) + indicates the Bus Type/Speed that OCTEON drove on the + DEVSEL/STOP/TRDY pins during reset de-assertion. */ + uint64_t reserved_5_7 : 3; + uint64_t en : 1; /**< Internal arbiter enable. */ + uint64_t park_mod : 1; /**< Bus park mode. 0=park on last, 1=park on device. */ + uint64_t park_dev : 3; /**< Bus park device. 0-3 External device, 4 = Octane. */ +#else + uint64_t park_dev : 3; + uint64_t park_mod : 1; + uint64_t en : 1; + uint64_t reserved_5_7 : 3; + uint64_t pci_ovr : 4; + uint64_t hostmode : 1; + uint64_t reserved_13_63 : 51; +#endif + } s; + struct cvmx_npi_pci_int_arb_cfg_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_5_63 : 59; + uint64_t en : 1; /**< Internal arbiter enable. */ + uint64_t park_mod : 1; /**< Bus park mode. 0=park on last, 1=park on device. */ + uint64_t park_dev : 3; /**< Bus park device. 0-3 External device, 4 = Octane. */ +#else + uint64_t park_dev : 3; + uint64_t park_mod : 1; + uint64_t en : 1; + uint64_t reserved_5_63 : 59; +#endif + } cn30xx; + struct cvmx_npi_pci_int_arb_cfg_cn30xx cn31xx; + struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xx; + struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xxp2; + struct cvmx_npi_pci_int_arb_cfg_s cn50xx; + struct cvmx_npi_pci_int_arb_cfg_s cn58xx; + struct cvmx_npi_pci_int_arb_cfg_s cn58xxp1; +}; +typedef union cvmx_npi_pci_int_arb_cfg cvmx_npi_pci_int_arb_cfg_t; + +/** + * cvmx_npi_pci_read_cmd + * + * NPI_PCI_READ_CMD = NPI PCI Read Command Register + * + * Controls the type of read command sent. + * Writes to this register are not ordered with writes/reads to the PCI Memory space. + * To ensure that a write has completed the user must read the register before + * making an access(i.e. PCI memory space) that requires the value of this register to be updated. + * Also any previously issued reads/writes to PCI memory space, still stored in the outbound + * FIFO will use the value of this register after it has been updated. + */ +union cvmx_npi_pci_read_cmd +{ + uint64_t u64; + struct cvmx_npi_pci_read_cmd_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_11_63 : 53; + uint64_t cmd_size : 11; /**< Number bytes to be read is equal to or exceeds this + size will cause the PCI in PCI mode to use a + Memory-Read-Multiple. This register has a value + from 8 to 2048. A value of 0-7 will be treated as + a value of 2048. */ +#else + uint64_t cmd_size : 11; + uint64_t reserved_11_63 : 53; +#endif + } s; + struct cvmx_npi_pci_read_cmd_s cn30xx; + struct cvmx_npi_pci_read_cmd_s cn31xx; + struct cvmx_npi_pci_read_cmd_s cn38xx; + struct cvmx_npi_pci_read_cmd_s cn38xxp2; + struct cvmx_npi_pci_read_cmd_s cn50xx; + struct cvmx_npi_pci_read_cmd_s cn58xx; + struct cvmx_npi_pci_read_cmd_s cn58xxp1; +}; +typedef union cvmx_npi_pci_read_cmd cvmx_npi_pci_read_cmd_t; + +/** + * cvmx_npi_port32_instr_hdr + * + * NPI_PORT32_INSTR_HDR = NPI Port 32 Instruction Header + * + * Contains bits [62:42] of the Instruction Header for port 32. + */ +union cvmx_npi_port32_instr_hdr +{ + uint64_t u64; + struct cvmx_npi_port32_instr_hdr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_44_63 : 20; + uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ + uint64_t rsv_f : 5; /**< Reserved */ + uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ + uint64_t rsv_e : 1; /**< Reserved */ + uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ + uint64_t rsv_d : 6; /**< Reserved */ + uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent + as part of the packet data, regardless of the + value of bit [63] of the instruction header. + USE_IHDR must be set whenever PBP is set. */ + uint64_t rsv_c : 5; /**< Reserved */ + uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_b : 1; /**< Reserved + instruction header sent to IPD. */ + uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_a : 6; /**< Reserved */ +#else + uint64_t rsv_a : 6; + uint64_t skp_len : 7; + uint64_t rsv_b : 1; + uint64_t par_mode : 2; + uint64_t rsv_c : 5; + uint64_t use_ihdr : 1; + uint64_t rsv_d : 6; + uint64_t rskp_len : 7; + uint64_t rsv_e : 1; + uint64_t rparmode : 2; + uint64_t rsv_f : 5; + uint64_t pbp : 1; + uint64_t reserved_44_63 : 20; +#endif + } s; + struct cvmx_npi_port32_instr_hdr_s cn30xx; + struct cvmx_npi_port32_instr_hdr_s cn31xx; + struct cvmx_npi_port32_instr_hdr_s cn38xx; + struct cvmx_npi_port32_instr_hdr_s cn38xxp2; + struct cvmx_npi_port32_instr_hdr_s cn50xx; + struct cvmx_npi_port32_instr_hdr_s cn58xx; + struct cvmx_npi_port32_instr_hdr_s cn58xxp1; +}; +typedef union cvmx_npi_port32_instr_hdr cvmx_npi_port32_instr_hdr_t; + +/** + * cvmx_npi_port33_instr_hdr + * + * NPI_PORT33_INSTR_HDR = NPI Port 33 Instruction Header + * + * Contains bits [62:42] of the Instruction Header for port 33. + */ +union cvmx_npi_port33_instr_hdr +{ + uint64_t u64; + struct cvmx_npi_port33_instr_hdr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_44_63 : 20; + uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ + uint64_t rsv_f : 5; /**< Reserved */ + uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ + uint64_t rsv_e : 1; /**< Reserved */ + uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ + uint64_t rsv_d : 6; /**< Reserved */ + uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent + as part of the packet data, regardless of the + value of bit [63] of the instruction header. + USE_IHDR must be set whenever PBP is set. */ + uint64_t rsv_c : 5; /**< Reserved */ + uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_b : 1; /**< Reserved + instruction header sent to IPD. */ + uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_a : 6; /**< Reserved */ +#else + uint64_t rsv_a : 6; + uint64_t skp_len : 7; + uint64_t rsv_b : 1; + uint64_t par_mode : 2; + uint64_t rsv_c : 5; + uint64_t use_ihdr : 1; + uint64_t rsv_d : 6; + uint64_t rskp_len : 7; + uint64_t rsv_e : 1; + uint64_t rparmode : 2; + uint64_t rsv_f : 5; + uint64_t pbp : 1; + uint64_t reserved_44_63 : 20; +#endif + } s; + struct cvmx_npi_port33_instr_hdr_s cn31xx; + struct cvmx_npi_port33_instr_hdr_s cn38xx; + struct cvmx_npi_port33_instr_hdr_s cn38xxp2; + struct cvmx_npi_port33_instr_hdr_s cn50xx; + struct cvmx_npi_port33_instr_hdr_s cn58xx; + struct cvmx_npi_port33_instr_hdr_s cn58xxp1; +}; +typedef union cvmx_npi_port33_instr_hdr cvmx_npi_port33_instr_hdr_t; + +/** + * cvmx_npi_port34_instr_hdr + * + * NPI_PORT34_INSTR_HDR = NPI Port 34 Instruction Header + * + * Contains bits [62:42] of the Instruction Header for port 34. Added for PASS-2. + */ +union cvmx_npi_port34_instr_hdr +{ + uint64_t u64; + struct cvmx_npi_port34_instr_hdr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_44_63 : 20; + uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ + uint64_t rsv_f : 5; /**< Reserved */ + uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ + uint64_t rsv_e : 1; /**< Reserved */ + uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ + uint64_t rsv_d : 6; /**< Reserved */ + uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent + as part of the packet data, regardless of the + value of bit [63] of the instruction header. + USE_IHDR must be set whenever PBP is set. */ + uint64_t rsv_c : 5; /**< Reserved */ + uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_b : 1; /**< Reserved + instruction header sent to IPD. */ + uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_a : 6; /**< Reserved */ +#else + uint64_t rsv_a : 6; + uint64_t skp_len : 7; + uint64_t rsv_b : 1; + uint64_t par_mode : 2; + uint64_t rsv_c : 5; + uint64_t use_ihdr : 1; + uint64_t rsv_d : 6; + uint64_t rskp_len : 7; + uint64_t rsv_e : 1; + uint64_t rparmode : 2; + uint64_t rsv_f : 5; + uint64_t pbp : 1; + uint64_t reserved_44_63 : 20; +#endif + } s; + struct cvmx_npi_port34_instr_hdr_s cn38xx; + struct cvmx_npi_port34_instr_hdr_s cn38xxp2; + struct cvmx_npi_port34_instr_hdr_s cn58xx; + struct cvmx_npi_port34_instr_hdr_s cn58xxp1; +}; +typedef union cvmx_npi_port34_instr_hdr cvmx_npi_port34_instr_hdr_t; + +/** + * cvmx_npi_port35_instr_hdr + * + * NPI_PORT35_INSTR_HDR = NPI Port 35 Instruction Header + * + * Contains bits [62:42] of the Instruction Header for port 35. Added for PASS-2. + */ +union cvmx_npi_port35_instr_hdr +{ + uint64_t u64; + struct cvmx_npi_port35_instr_hdr_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_44_63 : 20; + uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ + uint64_t rsv_f : 5; /**< Reserved */ + uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ + uint64_t rsv_e : 1; /**< Reserved */ + uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ + uint64_t rsv_d : 6; /**< Reserved */ + uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent + as part of the packet data, regardless of the + value of bit [63] of the instruction header. + USE_IHDR must be set whenever PBP is set. */ + uint64_t rsv_c : 5; /**< Reserved */ + uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_b : 1; /**< Reserved + instruction header sent to IPD. */ + uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet + is not raw and PBP is not set. */ + uint64_t rsv_a : 6; /**< Reserved */ +#else + uint64_t rsv_a : 6; + uint64_t skp_len : 7; + uint64_t rsv_b : 1; + uint64_t par_mode : 2; + uint64_t rsv_c : 5; + uint64_t use_ihdr : 1; + uint64_t rsv_d : 6; + uint64_t rskp_len : 7; + uint64_t rsv_e : 1; + uint64_t rparmode : 2; + uint64_t rsv_f : 5; + uint64_t pbp : 1; + uint64_t reserved_44_63 : 20; +#endif + } s; + struct cvmx_npi_port35_instr_hdr_s cn38xx; + struct cvmx_npi_port35_instr_hdr_s cn38xxp2; + struct cvmx_npi_port35_instr_hdr_s cn58xx; + struct cvmx_npi_port35_instr_hdr_s cn58xxp1; +}; +typedef union cvmx_npi_port35_instr_hdr cvmx_npi_port35_instr_hdr_t; + +/** + * cvmx_npi_port_bp_control + * + * NPI_PORT_BP_CONTROL = Port Backpressure Control + * + * Enables Port Level Backpressure + */ +union cvmx_npi_port_bp_control +{ + uint64_t u64; + struct cvmx_npi_port_bp_control_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_8_63 : 56; + uint64_t bp_on : 4; /**< Port 35-32 port level backpressure applied. */ + uint64_t enb : 4; /**< Enables port level backpressure from the IPD. */ +#else + uint64_t enb : 4; + uint64_t bp_on : 4; + uint64_t reserved_8_63 : 56; +#endif + } s; + struct cvmx_npi_port_bp_control_s cn30xx; + struct cvmx_npi_port_bp_control_s cn31xx; + struct cvmx_npi_port_bp_control_s cn38xx; + struct cvmx_npi_port_bp_control_s cn38xxp2; + struct cvmx_npi_port_bp_control_s cn50xx; + struct cvmx_npi_port_bp_control_s cn58xx; + struct cvmx_npi_port_bp_control_s cn58xxp1; +}; +typedef union cvmx_npi_port_bp_control cvmx_npi_port_bp_control_t; + +/** + * cvmx_npi_rsl_int_blocks + * + * RSL_INT_BLOCKS = RSL Interrupt Blocks Register + * + * Reading this register will return a vector with a bit set '1' for a corresponding RSL block + * that presently has an interrupt pending. The Field Description below supplies the name of the + * register that software should read to find out why that intterupt bit is set. + */ +union cvmx_npi_rsl_int_blocks +{ + uint64_t u64; + struct cvmx_npi_rsl_int_blocks_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_32_63 : 32; + uint64_t rint_31 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t iob : 1; /**< IOB_INT_SUM */ + uint64_t reserved_28_29 : 2; + uint64_t rint_27 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_26 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_25 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_24 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t asx1 : 1; /**< ASX1_INT_REG */ + uint64_t asx0 : 1; /**< ASX0_INT_REG */ + uint64_t rint_21 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t pip : 1; /**< PIP_INT_REG. */ + uint64_t spx1 : 1; /**< SPX1_INT_REG & STX1_INT_REG */ + uint64_t spx0 : 1; /**< SPX0_INT_REG & STX0_INT_REG */ + uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ + uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ + uint64_t rint_15 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t reserved_13_14 : 2; + uint64_t pow : 1; /**< POW_ECC_ERR */ + uint64_t tim : 1; /**< TIM_REG_ERROR */ + uint64_t pko : 1; /**< PKO_REG_ERROR */ + uint64_t ipd : 1; /**< IPD_INT_SUM */ + uint64_t rint_8 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t zip : 1; /**< ZIP_ERROR */ + uint64_t dfa : 1; /**< DFA_ERR */ + uint64_t fpa : 1; /**< FPA_INT_SUM */ + uint64_t key : 1; /**< KEY_INT_SUM */ + uint64_t npi : 1; /**< NPI_INT_SUM */ + uint64_t gmx1 : 1; /**< GMX1_RX*_INT_REG & GMX1_TX_INT_REG */ + uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ + uint64_t mio : 1; /**< MIO_BOOT_ERR */ +#else + uint64_t mio : 1; + uint64_t gmx0 : 1; + uint64_t gmx1 : 1; + uint64_t npi : 1; + uint64_t key : 1; + uint64_t fpa : 1; + uint64_t dfa : 1; + uint64_t zip : 1; + uint64_t rint_8 : 1; + uint64_t ipd : 1; + uint64_t pko : 1; + uint64_t tim : 1; + uint64_t pow : 1; + uint64_t reserved_13_14 : 2; + uint64_t rint_15 : 1; + uint64_t l2c : 1; + uint64_t lmc : 1; + uint64_t spx0 : 1; + uint64_t spx1 : 1; + uint64_t pip : 1; + uint64_t rint_21 : 1; + uint64_t asx0 : 1; + uint64_t asx1 : 1; + uint64_t rint_24 : 1; + uint64_t rint_25 : 1; + uint64_t rint_26 : 1; + uint64_t rint_27 : 1; + uint64_t reserved_28_29 : 2; + uint64_t iob : 1; + uint64_t rint_31 : 1; + uint64_t reserved_32_63 : 32; +#endif + } s; + struct cvmx_npi_rsl_int_blocks_cn30xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_32_63 : 32; + uint64_t rint_31 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t iob : 1; /**< IOB_INT_SUM */ + uint64_t rint_29 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_28 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_27 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_26 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_25 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_24 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t asx1 : 1; /**< ASX1_INT_REG */ + uint64_t asx0 : 1; /**< ASX0_INT_REG */ + uint64_t rint_21 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t pip : 1; /**< PIP_INT_REG. */ + uint64_t spx1 : 1; /**< SPX1_INT_REG & STX1_INT_REG */ + uint64_t spx0 : 1; /**< SPX0_INT_REG & STX0_INT_REG */ + uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ + uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ + uint64_t rint_15 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_14 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t usb : 1; /**< USBN_INT_SUM */ + uint64_t pow : 1; /**< POW_ECC_ERR */ + uint64_t tim : 1; /**< TIM_REG_ERROR */ + uint64_t pko : 1; /**< PKO_REG_ERROR */ + uint64_t ipd : 1; /**< IPD_INT_SUM */ + uint64_t rint_8 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t zip : 1; /**< ZIP_ERROR */ + uint64_t dfa : 1; /**< DFA_ERR */ + uint64_t fpa : 1; /**< FPA_INT_SUM */ + uint64_t key : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t npi : 1; /**< NPI_INT_SUM */ + uint64_t gmx1 : 1; /**< GMX1_RX*_INT_REG & GMX1_TX_INT_REG */ + uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ + uint64_t mio : 1; /**< MIO_BOOT_ERR */ +#else + uint64_t mio : 1; + uint64_t gmx0 : 1; + uint64_t gmx1 : 1; + uint64_t npi : 1; + uint64_t key : 1; + uint64_t fpa : 1; + uint64_t dfa : 1; + uint64_t zip : 1; + uint64_t rint_8 : 1; + uint64_t ipd : 1; + uint64_t pko : 1; + uint64_t tim : 1; + uint64_t pow : 1; + uint64_t usb : 1; + uint64_t rint_14 : 1; + uint64_t rint_15 : 1; + uint64_t l2c : 1; + uint64_t lmc : 1; + uint64_t spx0 : 1; + uint64_t spx1 : 1; + uint64_t pip : 1; + uint64_t rint_21 : 1; + uint64_t asx0 : 1; + uint64_t asx1 : 1; + uint64_t rint_24 : 1; + uint64_t rint_25 : 1; + uint64_t rint_26 : 1; + uint64_t rint_27 : 1; + uint64_t rint_28 : 1; + uint64_t rint_29 : 1; + uint64_t iob : 1; + uint64_t rint_31 : 1; + uint64_t reserved_32_63 : 32; +#endif + } cn30xx; + struct cvmx_npi_rsl_int_blocks_cn30xx cn31xx; + struct cvmx_npi_rsl_int_blocks_cn38xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_32_63 : 32; + uint64_t rint_31 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t iob : 1; /**< IOB_INT_SUM */ + uint64_t rint_29 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_28 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_27 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_26 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_25 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_24 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t asx1 : 1; /**< ASX1_INT_REG */ + uint64_t asx0 : 1; /**< ASX0_INT_REG */ + uint64_t rint_21 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t pip : 1; /**< PIP_INT_REG. */ + uint64_t spx1 : 1; /**< SPX1_INT_REG & STX1_INT_REG */ + uint64_t spx0 : 1; /**< SPX0_INT_REG & STX0_INT_REG */ + uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ + uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ + uint64_t rint_15 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_14 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t rint_13 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t pow : 1; /**< POW_ECC_ERR */ + uint64_t tim : 1; /**< TIM_REG_ERROR */ + uint64_t pko : 1; /**< PKO_REG_ERROR */ + uint64_t ipd : 1; /**< IPD_INT_SUM */ + uint64_t rint_8 : 1; /**< Set '1' when RSL bLock has an interrupt. */ + uint64_t zip : 1; /**< ZIP_ERROR */ + uint64_t dfa : 1; /**< DFA_ERR */ + uint64_t fpa : 1; /**< FPA_INT_SUM */ + uint64_t key : 1; /**< KEY_INT_SUM */ + uint64_t npi : 1; /**< NPI_INT_SUM */ + uint64_t gmx1 : 1; /**< GMX1_RX*_INT_REG & GMX1_TX_INT_REG */ + uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ + uint64_t mio : 1; /**< MIO_BOOT_ERR */ +#else + uint64_t mio : 1; + uint64_t gmx0 : 1; + uint64_t gmx1 : 1; + uint64_t npi : 1; + uint64_t key : 1; + uint64_t fpa : 1; + uint64_t dfa : 1; + uint64_t zip : 1; + uint64_t rint_8 : 1; + uint64_t ipd : 1; + uint64_t pko : 1; + uint64_t tim : 1; + uint64_t pow : 1; + uint64_t rint_13 : 1; + uint64_t rint_14 : 1; + uint64_t rint_15 : 1; + uint64_t l2c : 1; + uint64_t lmc : 1; + uint64_t spx0 : 1; + uint64_t spx1 : 1; + uint64_t pip : 1; + uint64_t rint_21 : 1; + uint64_t asx0 : 1; + uint64_t asx1 : 1; + uint64_t rint_24 : 1; + uint64_t rint_25 : 1; + uint64_t rint_26 : 1; + uint64_t rint_27 : 1; + uint64_t rint_28 : 1; + uint64_t rint_29 : 1; + uint64_t iob : 1; + uint64_t rint_31 : 1; + uint64_t reserved_32_63 : 32; +#endif + } cn38xx; + struct cvmx_npi_rsl_int_blocks_cn38xx cn38xxp2; + struct cvmx_npi_rsl_int_blocks_cn50xx + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_31_63 : 33; + uint64_t iob : 1; /**< IOB_INT_SUM */ + uint64_t lmc1 : 1; /**< Always reads as zero */ + uint64_t agl : 1; /**< Always reads as zero */ + uint64_t reserved_24_27 : 4; + uint64_t asx1 : 1; /**< Always reads as zero */ + uint64_t asx0 : 1; /**< ASX0_INT_REG */ + uint64_t reserved_21_21 : 1; + uint64_t pip : 1; /**< PIP_INT_REG. */ + uint64_t spx1 : 1; /**< Always reads as zero */ + uint64_t spx0 : 1; /**< Always reads as zero */ + uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ + uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ + uint64_t reserved_15_15 : 1; + uint64_t rad : 1; /**< Always reads as zero */ + uint64_t usb : 1; /**< USBN_INT_SUM */ + uint64_t pow : 1; /**< POW_ECC_ERR */ + uint64_t tim : 1; /**< TIM_REG_ERROR */ + uint64_t pko : 1; /**< PKO_REG_ERROR */ + uint64_t ipd : 1; /**< IPD_INT_SUM */ + uint64_t reserved_8_8 : 1; + uint64_t zip : 1; /**< Always reads as zero */ + uint64_t dfa : 1; /**< Always reads as zero */ + uint64_t fpa : 1; /**< FPA_INT_SUM */ + uint64_t key : 1; /**< Always reads as zero */ + uint64_t npi : 1; /**< NPI_INT_SUM */ + uint64_t gmx1 : 1; /**< Always reads as zero */ + uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ + uint64_t mio : 1; /**< MIO_BOOT_ERR */ +#else + uint64_t mio : 1; + uint64_t gmx0 : 1; + uint64_t gmx1 : 1; + uint64_t npi : 1; + uint64_t key : 1; + uint64_t fpa : 1; + uint64_t dfa : 1; + uint64_t zip : 1; + uint64_t reserved_8_8 : 1; + uint64_t ipd : 1; + uint64_t pko : 1; + uint64_t tim : 1; + uint64_t pow : 1; + uint64_t usb : 1; + uint64_t rad : 1; + uint64_t reserved_15_15 : 1; + uint64_t l2c : 1; + uint64_t lmc : 1; + uint64_t spx0 : 1; + uint64_t spx1 : 1; + uint64_t pip : 1; + uint64_t reserved_21_21 : 1; + uint64_t asx0 : 1; + uint64_t asx1 : 1; + uint64_t reserved_24_27 : 4; + uint64_t agl : 1; + uint64_t lmc1 : 1; + uint64_t iob : 1; + uint64_t reserved_31_63 : 33; +#endif + } cn50xx; + struct cvmx_npi_rsl_int_blocks_cn38xx cn58xx; + struct cvmx_npi_rsl_int_blocks_cn38xx cn58xxp1; +}; +typedef union cvmx_npi_rsl_int_blocks cvmx_npi_rsl_int_blocks_t; + +/** + * cvmx_npi_size_input# + * + * NPI_SIZE_INPUT0 = NPI's Size for Input 0 Register + * + * The size (in instructions) of Instruction Queue-0. + */ +union cvmx_npi_size_inputx +{ + uint64_t u64; + struct cvmx_npi_size_inputx_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_32_63 : 32; + uint64_t size : 32; /**< The size of the Instruction Queue used by Octane. + The value [SIZE] is in Instructions. + A value of 0 in this field is illegal. */ +#else + uint64_t size : 32; + uint64_t reserved_32_63 : 32; +#endif + } s; + struct cvmx_npi_size_inputx_s cn30xx; + struct cvmx_npi_size_inputx_s cn31xx; + struct cvmx_npi_size_inputx_s cn38xx; + struct cvmx_npi_size_inputx_s cn38xxp2; + struct cvmx_npi_size_inputx_s cn50xx; + struct cvmx_npi_size_inputx_s cn58xx; + struct cvmx_npi_size_inputx_s cn58xxp1; +}; +typedef union cvmx_npi_size_inputx cvmx_npi_size_inputx_t; + +/** + * cvmx_npi_win_read_to + * + * NPI_WIN_READ_TO = NPI WINDOW READ Timeout Register + * + * Number of core clocks to wait before timing out on a WINDOW-READ to the NCB. + */ +union cvmx_npi_win_read_to +{ + uint64_t u64; + struct cvmx_npi_win_read_to_s + { +#if __BYTE_ORDER == __BIG_ENDIAN + uint64_t reserved_32_63 : 32; + uint64_t time : 32; /**< Time to wait in core clocks. A value of 0 will + cause no timeouts. */ +#else + uint64_t time : 32; + uint64_t reserved_32_63 : 32; +#endif + } s; + struct cvmx_npi_win_read_to_s cn30xx; + struct cvmx_npi_win_read_to_s cn31xx; + struct cvmx_npi_win_read_to_s cn38xx; + struct cvmx_npi_win_read_to_s cn38xxp2; + struct cvmx_npi_win_read_to_s cn50xx; + struct cvmx_npi_win_read_to_s cn58xx; + struct cvmx_npi_win_read_to_s cn58xxp1; +}; +typedef union cvmx_npi_win_read_to cvmx_npi_win_read_to_t; + +#endif |