aboutsummaryrefslogtreecommitdiffstats
path: root/cvmx-pemx-defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'cvmx-pemx-defs.h')
-rw-r--r--cvmx-pemx-defs.h504
1 files changed, 375 insertions, 129 deletions
diff --git a/cvmx-pemx-defs.h b/cvmx-pemx-defs.h
index bb0269a277ea..fb5c4e640a53 100644
--- a/cvmx-pemx-defs.h
+++ b/cvmx-pemx-defs.h
@@ -1,5 +1,5 @@
/***********************license start***************
- * Copyright (c) 2003-2010 Cavium Networks (support@cavium.com). All rights
+ * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights
* reserved.
*
*
@@ -15,7 +15,7 @@
* disclaimer in the documentation and/or other materials provided
* with the distribution.
- * * Neither the name of Cavium Networks nor the names of
+ * * Neither the name of Cavium Inc. nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
@@ -26,7 +26,7 @@
* 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
+ * AND WITH ALL FAULTS AND CAVIUM INC. 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
@@ -49,14 +49,18 @@
* <hr>$Revision$<hr>
*
*/
-#ifndef __CVMX_PEMX_TYPEDEFS_H__
-#define __CVMX_PEMX_TYPEDEFS_H__
+#ifndef __CVMX_PEMX_DEFS_H__
+#define __CVMX_PEMX_DEFS_H__
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
static inline uint64_t CVMX_PEMX_BAR1_INDEXX(unsigned long offset, unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 15)) && ((block_id <= 1))))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset <= 15)) && ((block_id <= 1))))))
cvmx_warn("CVMX_PEMX_BAR1_INDEXX(%lu,%lu) is invalid on this chip\n", offset, block_id);
return CVMX_ADD_IO_SEG(0x00011800C00000A8ull) + (((offset) & 15) + ((block_id) & 1) * 0x200000ull) * 8;
}
@@ -64,10 +68,28 @@ static inline uint64_t CVMX_PEMX_BAR1_INDEXX(unsigned long offset, unsigned long
#define CVMX_PEMX_BAR1_INDEXX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C00000A8ull) + (((offset) & 15) + ((block_id) & 1) * 0x200000ull) * 8)
#endif
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_PEMX_BAR2_MASK(unsigned long block_id)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
+ cvmx_warn("CVMX_PEMX_BAR2_MASK(%lu) is invalid on this chip\n", block_id);
+ return CVMX_ADD_IO_SEG(0x00011800C0000130ull) + ((block_id) & 1) * 0x1000000ull;
+}
+#else
+#define CVMX_PEMX_BAR2_MASK(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000130ull) + ((block_id) & 1) * 0x1000000ull)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
static inline uint64_t CVMX_PEMX_BAR_CTL(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_BAR_CTL(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000128ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -78,7 +100,11 @@ static inline uint64_t CVMX_PEMX_BAR_CTL(unsigned long block_id)
static inline uint64_t CVMX_PEMX_BIST_STATUS(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_BIST_STATUS(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000018ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -89,7 +115,11 @@ static inline uint64_t CVMX_PEMX_BIST_STATUS(unsigned long block_id)
static inline uint64_t CVMX_PEMX_BIST_STATUS2(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_BIST_STATUS2(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000420ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -100,7 +130,11 @@ static inline uint64_t CVMX_PEMX_BIST_STATUS2(unsigned long block_id)
static inline uint64_t CVMX_PEMX_CFG_RD(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_CFG_RD(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000030ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -111,7 +145,11 @@ static inline uint64_t CVMX_PEMX_CFG_RD(unsigned long block_id)
static inline uint64_t CVMX_PEMX_CFG_WR(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_CFG_WR(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000028ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -122,7 +160,11 @@ static inline uint64_t CVMX_PEMX_CFG_WR(unsigned long block_id)
static inline uint64_t CVMX_PEMX_CPL_LUT_VALID(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_CPL_LUT_VALID(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000098ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -133,7 +175,11 @@ static inline uint64_t CVMX_PEMX_CPL_LUT_VALID(unsigned long block_id)
static inline uint64_t CVMX_PEMX_CTL_STATUS(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_CTL_STATUS(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000000ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -144,7 +190,11 @@ static inline uint64_t CVMX_PEMX_CTL_STATUS(unsigned long block_id)
static inline uint64_t CVMX_PEMX_DBG_INFO(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_DBG_INFO(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000008ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -155,7 +205,11 @@ static inline uint64_t CVMX_PEMX_DBG_INFO(unsigned long block_id)
static inline uint64_t CVMX_PEMX_DBG_INFO_EN(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_DBG_INFO_EN(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C00000A0ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -166,7 +220,11 @@ static inline uint64_t CVMX_PEMX_DBG_INFO_EN(unsigned long block_id)
static inline uint64_t CVMX_PEMX_DIAG_STATUS(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_DIAG_STATUS(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000020ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -174,10 +232,28 @@ static inline uint64_t CVMX_PEMX_DIAG_STATUS(unsigned long block_id)
#define CVMX_PEMX_DIAG_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000020ull) + ((block_id) & 1) * 0x1000000ull)
#endif
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+static inline uint64_t CVMX_PEMX_INB_READ_CREDITS(unsigned long block_id)
+{
+ if (!(
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
+ cvmx_warn("CVMX_PEMX_INB_READ_CREDITS(%lu) is invalid on this chip\n", block_id);
+ return CVMX_ADD_IO_SEG(0x00011800C0000138ull) + ((block_id) & 1) * 0x1000000ull;
+}
+#else
+#define CVMX_PEMX_INB_READ_CREDITS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000138ull) + ((block_id) & 1) * 0x1000000ull)
+#endif
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
static inline uint64_t CVMX_PEMX_INT_ENB(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_INT_ENB(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000410ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -188,7 +264,11 @@ static inline uint64_t CVMX_PEMX_INT_ENB(unsigned long block_id)
static inline uint64_t CVMX_PEMX_INT_ENB_INT(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_INT_ENB_INT(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000418ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -199,7 +279,11 @@ static inline uint64_t CVMX_PEMX_INT_ENB_INT(unsigned long block_id)
static inline uint64_t CVMX_PEMX_INT_SUM(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_INT_SUM(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000408ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -210,7 +294,11 @@ static inline uint64_t CVMX_PEMX_INT_SUM(unsigned long block_id)
static inline uint64_t CVMX_PEMX_P2N_BAR0_START(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_P2N_BAR0_START(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000080ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -221,7 +309,11 @@ static inline uint64_t CVMX_PEMX_P2N_BAR0_START(unsigned long block_id)
static inline uint64_t CVMX_PEMX_P2N_BAR1_START(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_P2N_BAR1_START(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000088ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -232,7 +324,11 @@ static inline uint64_t CVMX_PEMX_P2N_BAR1_START(unsigned long block_id)
static inline uint64_t CVMX_PEMX_P2N_BAR2_START(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_P2N_BAR2_START(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000090ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -243,7 +339,9 @@ static inline uint64_t CVMX_PEMX_P2N_BAR2_START(unsigned long block_id)
static inline uint64_t CVMX_PEMX_P2P_BARX_END(unsigned long offset, unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1))))))
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 3)) && ((block_id <= 1))))))
cvmx_warn("CVMX_PEMX_P2P_BARX_END(%lu,%lu) is invalid on this chip\n", offset, block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000048ull) + (((offset) & 3) + ((block_id) & 1) * 0x100000ull) * 16;
}
@@ -254,7 +352,9 @@ static inline uint64_t CVMX_PEMX_P2P_BARX_END(unsigned long offset, unsigned lon
static inline uint64_t CVMX_PEMX_P2P_BARX_START(unsigned long offset, unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1))))))
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 3)) && ((block_id <= 1))))))
cvmx_warn("CVMX_PEMX_P2P_BARX_START(%lu,%lu) is invalid on this chip\n", offset, block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000040ull) + (((offset) & 3) + ((block_id) & 1) * 0x100000ull) * 16;
}
@@ -265,7 +365,11 @@ static inline uint64_t CVMX_PEMX_P2P_BARX_START(unsigned long offset, unsigned l
static inline uint64_t CVMX_PEMX_TLP_CREDITS(unsigned long block_id)
{
if (!(
- (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
+ (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
+ (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
cvmx_warn("CVMX_PEMX_TLP_CREDITS(%lu) is invalid on this chip\n", block_id);
return CVMX_ADD_IO_SEG(0x00011800C0000038ull) + ((block_id) & 1) * 0x1000000ull;
}
@@ -280,12 +384,10 @@ static inline uint64_t CVMX_PEMX_TLP_CREDITS(unsigned long block_id)
*
* Contains address index and control bits for access to memory ranges of BAR-1. Index is build from supplied address [25:22].
*/
-union cvmx_pemx_bar1_indexx
-{
+union cvmx_pemx_bar1_indexx {
uint64_t u64;
- struct cvmx_pemx_bar1_indexx_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_bar1_indexx_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_20_63 : 44;
uint64_t addr_idx : 16; /**< Address bits [37:22] sent to L2C */
uint64_t ca : 1; /**< Set '1' when access is not to be cached in L2. */
@@ -299,24 +401,56 @@ union cvmx_pemx_bar1_indexx
uint64_t reserved_20_63 : 44;
#endif
} s;
+ struct cvmx_pemx_bar1_indexx_s cn61xx;
struct cvmx_pemx_bar1_indexx_s cn63xx;
struct cvmx_pemx_bar1_indexx_s cn63xxp1;
+ struct cvmx_pemx_bar1_indexx_s cn66xx;
+ struct cvmx_pemx_bar1_indexx_s cn68xx;
+ struct cvmx_pemx_bar1_indexx_s cn68xxp1;
+ struct cvmx_pemx_bar1_indexx_s cnf71xx;
};
typedef union cvmx_pemx_bar1_indexx cvmx_pemx_bar1_indexx_t;
/**
+ * cvmx_pem#_bar2_mask
+ *
+ * PEM_BAR2_MASK = PEM BAR2 MASK
+ *
+ * The mask pattern that is ANDED with the address from PCIe core for BAR2 hits.
+ */
+union cvmx_pemx_bar2_mask {
+ uint64_t u64;
+ struct cvmx_pemx_bar2_mask_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_38_63 : 26;
+ uint64_t mask : 35; /**< The value to be ANDED with the address sent to
+ the Octeon memory. */
+ uint64_t reserved_0_2 : 3;
+#else
+ uint64_t reserved_0_2 : 3;
+ uint64_t mask : 35;
+ uint64_t reserved_38_63 : 26;
+#endif
+ } s;
+ struct cvmx_pemx_bar2_mask_s cn61xx;
+ struct cvmx_pemx_bar2_mask_s cn66xx;
+ struct cvmx_pemx_bar2_mask_s cn68xx;
+ struct cvmx_pemx_bar2_mask_s cn68xxp1;
+ struct cvmx_pemx_bar2_mask_s cnf71xx;
+};
+typedef union cvmx_pemx_bar2_mask cvmx_pemx_bar2_mask_t;
+
+/**
* cvmx_pem#_bar_ctl
*
- * PEM_BAR_CTUS = PEM BAR Control
+ * PEM_BAR_CTL = PEM BAR Control
*
* Contains control for BAR accesses.
*/
-union cvmx_pemx_bar_ctl
-{
+union cvmx_pemx_bar_ctl {
uint64_t u64;
- struct cvmx_pemx_bar_ctl_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_bar_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_7_63 : 57;
uint64_t bar1_siz : 3; /**< Pcie-Port0, Bar1 Size. 1 == 64MB, 2 == 128MB,
3 == 256MB, 4 == 512MB, 5 == 1024MB, 6 == 2048MB,
@@ -336,8 +470,13 @@ union cvmx_pemx_bar_ctl
uint64_t reserved_7_63 : 57;
#endif
} s;
+ struct cvmx_pemx_bar_ctl_s cn61xx;
struct cvmx_pemx_bar_ctl_s cn63xx;
struct cvmx_pemx_bar_ctl_s cn63xxp1;
+ struct cvmx_pemx_bar_ctl_s cn66xx;
+ struct cvmx_pemx_bar_ctl_s cn68xx;
+ struct cvmx_pemx_bar_ctl_s cn68xxp1;
+ struct cvmx_pemx_bar_ctl_s cnf71xx;
};
typedef union cvmx_pemx_bar_ctl cvmx_pemx_bar_ctl_t;
@@ -348,12 +487,10 @@ typedef union cvmx_pemx_bar_ctl cvmx_pemx_bar_ctl_t;
*
* Contains the diffrent interrupt summary bits of the PEM.
*/
-union cvmx_pemx_bist_status
-{
+union cvmx_pemx_bist_status {
uint64_t u64;
- struct cvmx_pemx_bist_status_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_bist_status_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_8_63 : 56;
uint64_t retry : 1; /**< Retry Buffer. */
uint64_t rqdata0 : 1; /**< Rx Queue Data Memory0. */
@@ -375,8 +512,13 @@ union cvmx_pemx_bist_status
uint64_t reserved_8_63 : 56;
#endif
} s;
+ struct cvmx_pemx_bist_status_s cn61xx;
struct cvmx_pemx_bist_status_s cn63xx;
struct cvmx_pemx_bist_status_s cn63xxp1;
+ struct cvmx_pemx_bist_status_s cn66xx;
+ struct cvmx_pemx_bist_status_s cn68xx;
+ struct cvmx_pemx_bist_status_s cn68xxp1;
+ struct cvmx_pemx_bist_status_s cnf71xx;
};
typedef union cvmx_pemx_bist_status cvmx_pemx_bist_status_t;
@@ -387,12 +529,10 @@ typedef union cvmx_pemx_bist_status cvmx_pemx_bist_status_t;
*
* Results from BIST runs of PEM's memories.
*/
-union cvmx_pemx_bist_status2
-{
+union cvmx_pemx_bist_status2 {
uint64_t u64;
- struct cvmx_pemx_bist_status2_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_bist_status2_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_10_63 : 54;
uint64_t e2p_cpl : 1; /**< BIST Status for the e2p_cpl_fifo */
uint64_t e2p_n : 1; /**< BIST Status for the e2p_n_fifo */
@@ -418,8 +558,13 @@ union cvmx_pemx_bist_status2
uint64_t reserved_10_63 : 54;
#endif
} s;
+ struct cvmx_pemx_bist_status2_s cn61xx;
struct cvmx_pemx_bist_status2_s cn63xx;
struct cvmx_pemx_bist_status2_s cn63xxp1;
+ struct cvmx_pemx_bist_status2_s cn66xx;
+ struct cvmx_pemx_bist_status2_s cn68xx;
+ struct cvmx_pemx_bist_status2_s cn68xxp1;
+ struct cvmx_pemx_bist_status2_s cnf71xx;
};
typedef union cvmx_pemx_bist_status2 cvmx_pemx_bist_status2_t;
@@ -430,12 +575,10 @@ typedef union cvmx_pemx_bist_status2 cvmx_pemx_bist_status2_t;
*
* Allows read access to the configuration in the PCIe Core.
*/
-union cvmx_pemx_cfg_rd
-{
+union cvmx_pemx_cfg_rd {
uint64_t u64;
- struct cvmx_pemx_cfg_rd_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_cfg_rd_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t data : 32; /**< Data. */
uint64_t addr : 32; /**< Address to read. A write to this register
starts a read operation. */
@@ -444,8 +587,13 @@ union cvmx_pemx_cfg_rd
uint64_t data : 32;
#endif
} s;
+ struct cvmx_pemx_cfg_rd_s cn61xx;
struct cvmx_pemx_cfg_rd_s cn63xx;
struct cvmx_pemx_cfg_rd_s cn63xxp1;
+ struct cvmx_pemx_cfg_rd_s cn66xx;
+ struct cvmx_pemx_cfg_rd_s cn68xx;
+ struct cvmx_pemx_cfg_rd_s cn68xxp1;
+ struct cvmx_pemx_cfg_rd_s cnf71xx;
};
typedef union cvmx_pemx_cfg_rd cvmx_pemx_cfg_rd_t;
@@ -456,12 +604,10 @@ typedef union cvmx_pemx_cfg_rd cvmx_pemx_cfg_rd_t;
*
* Allows write access to the configuration in the PCIe Core.
*/
-union cvmx_pemx_cfg_wr
-{
+union cvmx_pemx_cfg_wr {
uint64_t u64;
- struct cvmx_pemx_cfg_wr_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_cfg_wr_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t data : 32; /**< Data to write. A write to this register starts
a write operation. */
uint64_t addr : 32; /**< Address to write. A write to this register starts
@@ -471,8 +617,13 @@ union cvmx_pemx_cfg_wr
uint64_t data : 32;
#endif
} s;
+ struct cvmx_pemx_cfg_wr_s cn61xx;
struct cvmx_pemx_cfg_wr_s cn63xx;
struct cvmx_pemx_cfg_wr_s cn63xxp1;
+ struct cvmx_pemx_cfg_wr_s cn66xx;
+ struct cvmx_pemx_cfg_wr_s cn68xx;
+ struct cvmx_pemx_cfg_wr_s cn68xxp1;
+ struct cvmx_pemx_cfg_wr_s cnf71xx;
};
typedef union cvmx_pemx_cfg_wr cvmx_pemx_cfg_wr_t;
@@ -483,12 +634,10 @@ typedef union cvmx_pemx_cfg_wr cvmx_pemx_cfg_wr_t;
*
* Bit set for outstanding tag read.
*/
-union cvmx_pemx_cpl_lut_valid
-{
+union cvmx_pemx_cpl_lut_valid {
uint64_t u64;
- struct cvmx_pemx_cpl_lut_valid_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_cpl_lut_valid_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_32_63 : 32;
uint64_t tag : 32; /**< Bit vector set cooresponds to an outstanding tag
expecting a completion. */
@@ -497,24 +646,33 @@ union cvmx_pemx_cpl_lut_valid
uint64_t reserved_32_63 : 32;
#endif
} s;
+ struct cvmx_pemx_cpl_lut_valid_s cn61xx;
struct cvmx_pemx_cpl_lut_valid_s cn63xx;
struct cvmx_pemx_cpl_lut_valid_s cn63xxp1;
+ struct cvmx_pemx_cpl_lut_valid_s cn66xx;
+ struct cvmx_pemx_cpl_lut_valid_s cn68xx;
+ struct cvmx_pemx_cpl_lut_valid_s cn68xxp1;
+ struct cvmx_pemx_cpl_lut_valid_s cnf71xx;
};
typedef union cvmx_pemx_cpl_lut_valid cvmx_pemx_cpl_lut_valid_t;
/**
* cvmx_pem#_ctl_status
*
- * PEM_CTL_STATUS = PEM Control Status
+ * NOTE: Logic Analyzer is enabled with LA_EN for the specified PCS lane only. PKT_SZ is effective only when LA_EN=1
+ * For normal operation(sgmii or 1000Base-X), this bit must be 0.
+ * See pcsx.csr for xaui logic analyzer mode.
+ * For full description see document at .../rtl/pcs/readme_logic_analyzer.txt
+ *
+ *
+ * PEM_CTL_STATUS = PEM Control Status
*
- * General control and status of the PEM.
+ * General control and status of the PEM.
*/
-union cvmx_pemx_ctl_status
-{
+union cvmx_pemx_ctl_status {
uint64_t u64;
- struct cvmx_pemx_ctl_status_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_ctl_status_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_48_63 : 16;
uint64_t auto_sd : 1; /**< Link Hardware Autonomous Speed Disable. */
uint64_t dnum : 5; /**< Primary bus device number. */
@@ -569,8 +727,13 @@ union cvmx_pemx_ctl_status
uint64_t reserved_48_63 : 16;
#endif
} s;
+ struct cvmx_pemx_ctl_status_s cn61xx;
struct cvmx_pemx_ctl_status_s cn63xx;
struct cvmx_pemx_ctl_status_s cn63xxp1;
+ struct cvmx_pemx_ctl_status_s cn66xx;
+ struct cvmx_pemx_ctl_status_s cn68xx;
+ struct cvmx_pemx_ctl_status_s cn68xxp1;
+ struct cvmx_pemx_ctl_status_s cnf71xx;
};
typedef union cvmx_pemx_ctl_status cvmx_pemx_ctl_status_t;
@@ -581,12 +744,10 @@ typedef union cvmx_pemx_ctl_status cvmx_pemx_ctl_status_t;
*
* General debug info.
*/
-union cvmx_pemx_dbg_info
-{
+union cvmx_pemx_dbg_info {
uint64_t u64;
- struct cvmx_pemx_dbg_info_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_dbg_info_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_31_63 : 33;
uint64_t ecrc_e : 1; /**< Received a ECRC error.
radm_ecrc_err */
@@ -698,8 +859,13 @@ union cvmx_pemx_dbg_info
uint64_t reserved_31_63 : 33;
#endif
} s;
+ struct cvmx_pemx_dbg_info_s cn61xx;
struct cvmx_pemx_dbg_info_s cn63xx;
struct cvmx_pemx_dbg_info_s cn63xxp1;
+ struct cvmx_pemx_dbg_info_s cn66xx;
+ struct cvmx_pemx_dbg_info_s cn68xx;
+ struct cvmx_pemx_dbg_info_s cn68xxp1;
+ struct cvmx_pemx_dbg_info_s cnf71xx;
};
typedef union cvmx_pemx_dbg_info cvmx_pemx_dbg_info_t;
@@ -710,12 +876,10 @@ typedef union cvmx_pemx_dbg_info cvmx_pemx_dbg_info_t;
*
* Allows PEM_DBG_INFO to generate interrupts when cooresponding enable bit is set.
*/
-union cvmx_pemx_dbg_info_en
-{
+union cvmx_pemx_dbg_info_en {
uint64_t u64;
- struct cvmx_pemx_dbg_info_en_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_dbg_info_en_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_31_63 : 33;
uint64_t ecrc_e : 1; /**< Allows PEM_DBG_INFO[30] to generate an interrupt. */
uint64_t rawwpp : 1; /**< Allows PEM_DBG_INFO[29] to generate an interrupt. */
@@ -783,8 +947,13 @@ union cvmx_pemx_dbg_info_en
uint64_t reserved_31_63 : 33;
#endif
} s;
+ struct cvmx_pemx_dbg_info_en_s cn61xx;
struct cvmx_pemx_dbg_info_en_s cn63xx;
struct cvmx_pemx_dbg_info_en_s cn63xxp1;
+ struct cvmx_pemx_dbg_info_en_s cn66xx;
+ struct cvmx_pemx_dbg_info_en_s cn68xx;
+ struct cvmx_pemx_dbg_info_en_s cn68xxp1;
+ struct cvmx_pemx_dbg_info_en_s cnf71xx;
};
typedef union cvmx_pemx_dbg_info_en cvmx_pemx_dbg_info_en_t;
@@ -795,12 +964,10 @@ typedef union cvmx_pemx_dbg_info_en cvmx_pemx_dbg_info_en_t;
*
* Selection control for the cores diagnostic bus.
*/
-union cvmx_pemx_diag_status
-{
+union cvmx_pemx_diag_status {
uint64_t u64;
- struct cvmx_pemx_diag_status_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_diag_status_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_4_63 : 60;
uint64_t pm_dst : 1; /**< Current power management DSTATE. */
uint64_t pm_stat : 1; /**< Power Management Status. */
@@ -814,24 +981,54 @@ union cvmx_pemx_diag_status
uint64_t reserved_4_63 : 60;
#endif
} s;
+ struct cvmx_pemx_diag_status_s cn61xx;
struct cvmx_pemx_diag_status_s cn63xx;
struct cvmx_pemx_diag_status_s cn63xxp1;
+ struct cvmx_pemx_diag_status_s cn66xx;
+ struct cvmx_pemx_diag_status_s cn68xx;
+ struct cvmx_pemx_diag_status_s cn68xxp1;
+ struct cvmx_pemx_diag_status_s cnf71xx;
};
typedef union cvmx_pemx_diag_status cvmx_pemx_diag_status_t;
/**
+ * cvmx_pem#_inb_read_credits
+ *
+ * PEM_INB_READ_CREDITS
+ *
+ * The number of in flight reads from PCIe core to SLI
+ */
+union cvmx_pemx_inb_read_credits {
+ uint64_t u64;
+ struct cvmx_pemx_inb_read_credits_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_6_63 : 58;
+ uint64_t num : 6; /**< The number of reads that may be in flight from
+ the PCIe core to the SLI. Min number is 2 max
+ number is 32. */
+#else
+ uint64_t num : 6;
+ uint64_t reserved_6_63 : 58;
+#endif
+ } s;
+ struct cvmx_pemx_inb_read_credits_s cn61xx;
+ struct cvmx_pemx_inb_read_credits_s cn66xx;
+ struct cvmx_pemx_inb_read_credits_s cn68xx;
+ struct cvmx_pemx_inb_read_credits_s cnf71xx;
+};
+typedef union cvmx_pemx_inb_read_credits cvmx_pemx_inb_read_credits_t;
+
+/**
* cvmx_pem#_int_enb
*
* PEM(0..1)_INT_ENB = PEM Interrupt Enable
*
* Enables interrupt conditions for the PEM to generate an RSL interrupt.
*/
-union cvmx_pemx_int_enb
-{
+union cvmx_pemx_int_enb {
uint64_t u64;
- struct cvmx_pemx_int_enb_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_int_enb_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_14_63 : 50;
uint64_t crs_dr : 1; /**< Enables PEM_INT_SUM[13] to generate an
interrupt to the MIO. */
@@ -879,8 +1076,13 @@ union cvmx_pemx_int_enb
uint64_t reserved_14_63 : 50;
#endif
} s;
+ struct cvmx_pemx_int_enb_s cn61xx;
struct cvmx_pemx_int_enb_s cn63xx;
struct cvmx_pemx_int_enb_s cn63xxp1;
+ struct cvmx_pemx_int_enb_s cn66xx;
+ struct cvmx_pemx_int_enb_s cn68xx;
+ struct cvmx_pemx_int_enb_s cn68xxp1;
+ struct cvmx_pemx_int_enb_s cnf71xx;
};
typedef union cvmx_pemx_int_enb cvmx_pemx_int_enb_t;
@@ -891,12 +1093,10 @@ typedef union cvmx_pemx_int_enb cvmx_pemx_int_enb_t;
*
* Enables interrupt conditions for the PEM to generate an RSL interrupt.
*/
-union cvmx_pemx_int_enb_int
-{
+union cvmx_pemx_int_enb_int {
uint64_t u64;
- struct cvmx_pemx_int_enb_int_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_int_enb_int_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_14_63 : 50;
uint64_t crs_dr : 1; /**< Enables PEM_INT_SUM[13] to generate an
interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
@@ -944,8 +1144,13 @@ union cvmx_pemx_int_enb_int
uint64_t reserved_14_63 : 50;
#endif
} s;
+ struct cvmx_pemx_int_enb_int_s cn61xx;
struct cvmx_pemx_int_enb_int_s cn63xx;
struct cvmx_pemx_int_enb_int_s cn63xxp1;
+ struct cvmx_pemx_int_enb_int_s cn66xx;
+ struct cvmx_pemx_int_enb_int_s cn68xx;
+ struct cvmx_pemx_int_enb_int_s cn68xxp1;
+ struct cvmx_pemx_int_enb_int_s cnf71xx;
};
typedef union cvmx_pemx_int_enb_int cvmx_pemx_int_enb_int_t;
@@ -958,12 +1163,10 @@ typedef union cvmx_pemx_int_enb_int cvmx_pemx_int_enb_int_t;
*
* Interrupt conditions for the PEM.
*/
-union cvmx_pemx_int_sum
-{
+union cvmx_pemx_int_sum {
uint64_t u64;
- struct cvmx_pemx_int_sum_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_int_sum_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_14_63 : 50;
uint64_t crs_dr : 1; /**< Had a CRS Timeout when Retries were disabled. */
uint64_t crs_er : 1; /**< Had a CRS Timeout when Retries were enabled. */
@@ -1005,8 +1208,13 @@ union cvmx_pemx_int_sum
uint64_t reserved_14_63 : 50;
#endif
} s;
+ struct cvmx_pemx_int_sum_s cn61xx;
struct cvmx_pemx_int_sum_s cn63xx;
struct cvmx_pemx_int_sum_s cn63xxp1;
+ struct cvmx_pemx_int_sum_s cn66xx;
+ struct cvmx_pemx_int_sum_s cn68xx;
+ struct cvmx_pemx_int_sum_s cn68xxp1;
+ struct cvmx_pemx_int_sum_s cnf71xx;
};
typedef union cvmx_pemx_int_sum cvmx_pemx_int_sum_t;
@@ -1017,12 +1225,10 @@ typedef union cvmx_pemx_int_sum cvmx_pemx_int_sum_t;
*
* The starting address for addresses to forwarded to the SLI in RC Mode.
*/
-union cvmx_pemx_p2n_bar0_start
-{
+union cvmx_pemx_p2n_bar0_start {
uint64_t u64;
- struct cvmx_pemx_p2n_bar0_start_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_p2n_bar0_start_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t addr : 50; /**< The starting address of the 16KB address space that
is the BAR0 address space. */
uint64_t reserved_0_13 : 14;
@@ -1031,8 +1237,13 @@ union cvmx_pemx_p2n_bar0_start
uint64_t addr : 50;
#endif
} s;
+ struct cvmx_pemx_p2n_bar0_start_s cn61xx;
struct cvmx_pemx_p2n_bar0_start_s cn63xx;
struct cvmx_pemx_p2n_bar0_start_s cn63xxp1;
+ struct cvmx_pemx_p2n_bar0_start_s cn66xx;
+ struct cvmx_pemx_p2n_bar0_start_s cn68xx;
+ struct cvmx_pemx_p2n_bar0_start_s cn68xxp1;
+ struct cvmx_pemx_p2n_bar0_start_s cnf71xx;
};
typedef union cvmx_pemx_p2n_bar0_start cvmx_pemx_p2n_bar0_start_t;
@@ -1043,12 +1254,10 @@ typedef union cvmx_pemx_p2n_bar0_start cvmx_pemx_p2n_bar0_start_t;
*
* The starting address for addresses to forwarded to the SLI in RC Mode.
*/
-union cvmx_pemx_p2n_bar1_start
-{
+union cvmx_pemx_p2n_bar1_start {
uint64_t u64;
- struct cvmx_pemx_p2n_bar1_start_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_p2n_bar1_start_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t addr : 38; /**< The starting address of the 64KB address space
that is the BAR1 address space. */
uint64_t reserved_0_25 : 26;
@@ -1057,8 +1266,13 @@ union cvmx_pemx_p2n_bar1_start
uint64_t addr : 38;
#endif
} s;
+ struct cvmx_pemx_p2n_bar1_start_s cn61xx;
struct cvmx_pemx_p2n_bar1_start_s cn63xx;
struct cvmx_pemx_p2n_bar1_start_s cn63xxp1;
+ struct cvmx_pemx_p2n_bar1_start_s cn66xx;
+ struct cvmx_pemx_p2n_bar1_start_s cn68xx;
+ struct cvmx_pemx_p2n_bar1_start_s cn68xxp1;
+ struct cvmx_pemx_p2n_bar1_start_s cnf71xx;
};
typedef union cvmx_pemx_p2n_bar1_start cvmx_pemx_p2n_bar1_start_t;
@@ -1069,12 +1283,10 @@ typedef union cvmx_pemx_p2n_bar1_start cvmx_pemx_p2n_bar1_start_t;
*
* The starting address for addresses to forwarded to the SLI in RC Mode.
*/
-union cvmx_pemx_p2n_bar2_start
-{
+union cvmx_pemx_p2n_bar2_start {
uint64_t u64;
- struct cvmx_pemx_p2n_bar2_start_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_p2n_bar2_start_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t addr : 23; /**< The starting address of the 2^41 address space
that is the BAR2 address space. */
uint64_t reserved_0_40 : 41;
@@ -1083,8 +1295,13 @@ union cvmx_pemx_p2n_bar2_start
uint64_t addr : 23;
#endif
} s;
+ struct cvmx_pemx_p2n_bar2_start_s cn61xx;
struct cvmx_pemx_p2n_bar2_start_s cn63xx;
struct cvmx_pemx_p2n_bar2_start_s cn63xxp1;
+ struct cvmx_pemx_p2n_bar2_start_s cn66xx;
+ struct cvmx_pemx_p2n_bar2_start_s cn68xx;
+ struct cvmx_pemx_p2n_bar2_start_s cn68xxp1;
+ struct cvmx_pemx_p2n_bar2_start_s cnf71xx;
};
typedef union cvmx_pemx_p2n_bar2_start cvmx_pemx_p2n_bar2_start_t;
@@ -1095,12 +1312,10 @@ typedef union cvmx_pemx_p2n_bar2_start cvmx_pemx_p2n_bar2_start_t;
*
* The ending address for addresses to forwarded to the PCIe peer port.
*/
-union cvmx_pemx_p2p_barx_end
-{
+union cvmx_pemx_p2p_barx_end {
uint64_t u64;
- struct cvmx_pemx_p2p_barx_end_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_p2p_barx_end_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t addr : 52; /**< The ending address of the address window created
this field and the PEM_P2P_BAR0_START[63:12]
field. The full 64-bits of address are created by:
@@ -1113,6 +1328,9 @@ union cvmx_pemx_p2p_barx_end
} s;
struct cvmx_pemx_p2p_barx_end_s cn63xx;
struct cvmx_pemx_p2p_barx_end_s cn63xxp1;
+ struct cvmx_pemx_p2p_barx_end_s cn66xx;
+ struct cvmx_pemx_p2p_barx_end_s cn68xx;
+ struct cvmx_pemx_p2p_barx_end_s cn68xxp1;
};
typedef union cvmx_pemx_p2p_barx_end cvmx_pemx_p2p_barx_end_t;
@@ -1123,12 +1341,10 @@ typedef union cvmx_pemx_p2p_barx_end cvmx_pemx_p2p_barx_end_t;
*
* The starting address and enable for addresses to forwarded to the PCIe peer port.
*/
-union cvmx_pemx_p2p_barx_start
-{
+union cvmx_pemx_p2p_barx_start {
uint64_t u64;
- struct cvmx_pemx_p2p_barx_start_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_p2p_barx_start_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t addr : 52; /**< The starting address of the address window created
by this field and the PEM_P2P_BAR0_END[63:12]
field. The full 64-bits of address are created by:
@@ -1141,6 +1357,9 @@ union cvmx_pemx_p2p_barx_start
} s;
struct cvmx_pemx_p2p_barx_start_s cn63xx;
struct cvmx_pemx_p2p_barx_start_s cn63xxp1;
+ struct cvmx_pemx_p2p_barx_start_s cn66xx;
+ struct cvmx_pemx_p2p_barx_start_s cn68xx;
+ struct cvmx_pemx_p2p_barx_start_s cn68xxp1;
};
typedef union cvmx_pemx_p2p_barx_start cvmx_pemx_p2p_barx_start_t;
@@ -1152,15 +1371,15 @@ typedef union cvmx_pemx_p2p_barx_start cvmx_pemx_p2p_barx_start_t;
* Specifies the number of credits the PEM for use in moving TLPs. When this register is written the credit values are
* reset to the register value. A write to this register should take place BEFORE traffic flow starts.
*/
-union cvmx_pemx_tlp_credits
-{
+union cvmx_pemx_tlp_credits {
uint64_t u64;
- struct cvmx_pemx_tlp_credits_s
- {
-#if __BYTE_ORDER == __BIG_ENDIAN
+ struct cvmx_pemx_tlp_credits_s {
+#ifdef __BIG_ENDIAN_BITFIELD
uint64_t reserved_56_63 : 8;
uint64_t peai_ppf : 8; /**< TLP credits for Completion TLPs in the Peer.
- Legal values are 0x24 to 0x80. */
+ The value in this register should not be changed.
+ Values other than 0x80 can lead to unpredictable
+ behavior */
uint64_t pem_cpl : 8; /**< TLP credits for Completion TLPs in the Peer.
Legal values are 0x24 to 0x80. */
uint64_t pem_np : 8; /**< TLP credits for Non-Posted TLPs in the Peer.
@@ -1184,8 +1403,35 @@ union cvmx_pemx_tlp_credits
uint64_t reserved_56_63 : 8;
#endif
} s;
+ struct cvmx_pemx_tlp_credits_cn61xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_56_63 : 8;
+ uint64_t peai_ppf : 8; /**< TLP credits for Completion TLPs in the Peer.
+ The value in this register should not be changed.
+ Values other than 0x80 can lead to unpredictable
+ behavior */
+ uint64_t reserved_24_47 : 24;
+ uint64_t sli_cpl : 8; /**< TLP credits for Completion TLPs in the SLI.
+ Legal values are 0x24 to 0x80. */
+ uint64_t sli_np : 8; /**< TLP credits for Non-Posted TLPs in the SLI.
+ Legal values are 0x4 to 0x10. */
+ uint64_t sli_p : 8; /**< TLP credits for Posted TLPs in the SLI.
+ Legal values are 0x24 to 0x80. */
+#else
+ uint64_t sli_p : 8;
+ uint64_t sli_np : 8;
+ uint64_t sli_cpl : 8;
+ uint64_t reserved_24_47 : 24;
+ uint64_t peai_ppf : 8;
+ uint64_t reserved_56_63 : 8;
+#endif
+ } cn61xx;
struct cvmx_pemx_tlp_credits_s cn63xx;
struct cvmx_pemx_tlp_credits_s cn63xxp1;
+ struct cvmx_pemx_tlp_credits_s cn66xx;
+ struct cvmx_pemx_tlp_credits_s cn68xx;
+ struct cvmx_pemx_tlp_credits_s cn68xxp1;
+ struct cvmx_pemx_tlp_credits_cn61xx cnf71xx;
};
typedef union cvmx_pemx_tlp_credits cvmx_pemx_tlp_credits_t;