summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/APE_APE.h84
-rw-r--r--include/APE_APE_PERI.h29
-rw-r--r--include/APE_TX_PORT.h5
-rw-r--r--include/APE_TX_PORT1.h5
-rw-r--r--include/APE_TX_PORT2.h5
-rw-r--r--include/APE_TX_PORT3.h5
-rw-r--r--include/bcm5719_APE.h84
-rw-r--r--include/bcm5719_APE_PERI.h29
-rw-r--r--ipxact/APE.xml21
-rw-r--r--ipxact/APE_component.xml46
-rw-r--r--simulator/bcm5719_APE.cpp2
-rw-r--r--simulator/bcm5719_APE_sim.cpp4
12 files changed, 290 insertions, 29 deletions
diff --git a/include/APE_APE.h b/include/APE_APE.h
index 65f9ef3..94cc124 100644
--- a/include/APE_APE.h
+++ b/include/APE_APE.h
@@ -724,6 +724,84 @@ typedef register_container RegAPETxToNetDoorbellFunc0_t {
#endif /* CXX_SIMULATOR */
} RegAPETxToNetDoorbellFunc0_t;
+#define REG_APE_TX_STATE0 ((volatile APE_APE_H_uint32_t*)0x60200020) /* APE TX Status. */
+#define APE_TX_STATE0_TAIL_SHIFT 0u
+#define APE_TX_STATE0_TAIL_MASK 0xfffu
+#define GET_APE_TX_STATE0_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_STATE0_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_STATE0_HEAD_SHIFT 12u
+#define APE_TX_STATE0_HEAD_MASK 0xfff000u
+#define GET_APE_TX_STATE0_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_TX_STATE0_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_TX_STATE0_TXERROR_SHIFT 24u
+#define APE_TX_STATE0_TXERROR_MASK 0x1000000u
+#define GET_APE_TX_STATE0_TXERROR(__reg__) (((__reg__) & 0x1000000) >> 24u)
+#define SET_APE_TX_STATE0_TXERROR(__val__) (((__val__) << 24u) & 0x1000000u)
+#define APE_TX_STATE0_ERROR_CODE_SHIFT 25u
+#define APE_TX_STATE0_ERROR_CODE_MASK 0xe000000u
+#define GET_APE_TX_STATE0_ERROR_CODE(__reg__) (((__reg__) & 0xe000000) >> 25u)
+#define SET_APE_TX_STATE0_ERROR_CODE(__val__) (((__val__) << 25u) & 0xe000000u)
+
+/** @brief Register definition for @ref APE_t.TxState0. */
+typedef register_container RegAPETxState0_t {
+ /** @brief 32bit direct register access. */
+ APE_APE_H_uint32_t r32;
+
+ BITFIELD_BEGIN(APE_APE_H_uint32_t, bits)
+#if defined(__LITTLE_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Tail, 0, 12)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXError, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, ErrorCode, 25, 3)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_28, 28, 4)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_28, 28, 4)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, ErrorCode, 25, 3)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXError, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Tail, 0, 12)
+#else
+#error Unknown Endian
+#endif
+ BITFIELD_END(APE_APE_H_uint32_t, bits)
+#ifdef CXX_SIMULATOR
+ /** @brief Register name for use with the simulator. */
+ const char* getName(void) { return "TxState0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxState0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxState0. */
+ r32.setName("TxState0");
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.TXError.setBaseRegister(&r32);
+ bits.TXError.setName("TXError");
+ bits.ErrorCode.setBaseRegister(&r32);
+ bits.ErrorCode.setName("ErrorCode");
+ }
+ RegAPETxState0_t& operator=(const RegAPETxState0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxState0_t;
+
#define REG_APE_MODE_2 ((volatile APE_APE_H_uint32_t*)0x6020002c) /* Expansion for MODE */
/** @brief Register definition for @ref APE_t.Mode2. */
typedef register_container RegAPEMode2_t {
@@ -3312,8 +3390,11 @@ typedef struct APE_t {
/** @brief Written on APE TX to network after filling 0xA002 buffer with packet. */
RegAPETxToNetDoorbellFunc0_t TxToNetDoorbellFunc0;
+ /** @brief APE TX Status. */
+ RegAPETxState0_t TxState0;
+
/** @brief Reserved bytes to pad out data structure. */
- APE_APE_H_uint32_t reserved_32[3];
+ APE_APE_H_uint32_t reserved_36[2];
/** @brief Expansion for MODE */
RegAPEMode2_t Mode2;
@@ -3475,6 +3556,7 @@ typedef struct APE_t {
RxbufoffsetFunc0.r32.setComponentOffset(0x14);
RxbufoffsetFunc1.r32.setComponentOffset(0x18);
TxToNetDoorbellFunc0.r32.setComponentOffset(0x1c);
+ TxState0.r32.setComponentOffset(0x20);
Mode2.r32.setComponentOffset(0x2c);
Status2.r32.setComponentOffset(0x30);
LockGrantObsolete.r32.setComponentOffset(0x4c);
diff --git a/include/APE_APE_PERI.h b/include/APE_APE_PERI.h
index bd90ffb..0330dc4 100644
--- a/include/APE_APE_PERI.h
+++ b/include/APE_APE_PERI.h
@@ -980,10 +980,27 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch6Low_t {
} RegAPE_PERIBmcToNcSourceMacMatch6Low_t;
#define REG_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH ((volatile APE_APE_PERI_H_uint32_t*)0x60240344) /* Upper four bytes of the MAC */
+#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH_SHIFT 0u
+#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH_MASK 0xffffffffu
+#define GET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH(__reg__) (((__reg__) & 0xffffffff) >> 0u)
+#define SET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH(__val__) (((__val__) << 0u) & 0xffffffffu)
+
/** @brief Register definition for @ref APE_PERI_t.BmcToNcSourceMacMatch7High. */
typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7High_t {
/** @brief 32bit direct register access. */
APE_APE_PERI_H_uint32_t r32;
+
+ BITFIELD_BEGIN(APE_APE_PERI_H_uint32_t, bits)
+#if defined(__LITTLE_ENDIAN__)
+ /** @brief Upper four bytes of the MAC */
+ BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, High, 0, 32)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Upper four bytes of the MAC */
+ BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, High, 0, 32)
+#else
+#error Unknown Endian
+#endif
+ BITFIELD_END(APE_APE_PERI_H_uint32_t, bits)
#ifdef CXX_SIMULATOR
/** @brief Register name for use with the simulator. */
const char* getName(void) { return "BmcToNcSourceMacMatch7High"; }
@@ -995,6 +1012,8 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7High_t {
{
/** @brief constructor for @ref APE_PERI_t.BmcToNcSourceMacMatch7High. */
r32.setName("BmcToNcSourceMacMatch7High");
+ bits.High.setBaseRegister(&r32);
+ bits.High.setName("High");
}
RegAPE_PERIBmcToNcSourceMacMatch7High_t& operator=(const RegAPE_PERIBmcToNcSourceMacMatch7High_t& other)
{
@@ -1009,10 +1028,6 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7High_t {
#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_LOW_MASK 0xffff0000u
#define GET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_LOW(__reg__) (((__reg__) & 0xffff0000) >> 16u)
#define SET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_LOW(__val__) (((__val__) << 16u) & 0xffff0000u)
-#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH_SHIFT 0u
-#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH_MASK 0xffffffffu
-#define GET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH(__reg__) (((__reg__) & 0xffffffff) >> 0u)
-#define SET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH(__val__) (((__val__) << 0u) & 0xffffffffu)
/** @brief Register definition for @ref APE_PERI_t.BmcToNcSourceMacMatch7Low. */
typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7Low_t {
@@ -1025,11 +1040,7 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7Low_t {
BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, reserved_15_0, 0, 16)
/** @brief Lower two bytes of the MAC */
BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, Low, 16, 16)
- /** @brief Upper four bytes of the MAC */
- BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, High, 0, 32)
#elif defined(__BIG_ENDIAN__)
- /** @brief Upper four bytes of the MAC */
- BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, High, 0, 32)
/** @brief Lower two bytes of the MAC */
BITFIELD_MEMBER(APE_APE_PERI_H_uint32_t, Low, 16, 16)
/** @brief Padding */
@@ -1051,8 +1062,6 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7Low_t {
r32.setName("BmcToNcSourceMacMatch7Low");
bits.Low.setBaseRegister(&r32);
bits.Low.setName("Low");
- bits.High.setBaseRegister(&r32);
- bits.High.setName("High");
}
RegAPE_PERIBmcToNcSourceMacMatch7Low_t& operator=(const RegAPE_PERIBmcToNcSourceMacMatch7Low_t& other)
{
diff --git a/include/APE_TX_PORT.h b/include/APE_TX_PORT.h
index 91520de..fc1726c 100644
--- a/include/APE_TX_PORT.h
+++ b/include/APE_TX_PORT.h
@@ -86,6 +86,11 @@ typedef uint32_t APE_TX_PORT_H_uint32_t;
#define TX_PORT_OUT_ALL_MASK 0xffffffffu
#define GET_TX_PORT_OUT_ALL(__reg__) (((__reg__) & 0xffffffff) >> 0u)
#define SET_TX_PORT_OUT_ALL(__val__) (((__val__) << 0u) & 0xffffffffu)
+#define TX_PORT_OUT_ALL_CONTROL_WORD 0x0u
+#define TX_PORT_OUT_ALL_ADDITIONAL_PAYLOAD_WORD 0x2u
+#define TX_PORT_OUT_ALL_FRAME_LEN_WORD 0x3u
+#define TX_PORT_OUT_ALL_NUM_BLOCKS_WORD 0x9u
+#define TX_PORT_OUT_ALL_FIRST_PAYLOAD_WORD 0xcu
#define TX_PORT_OUT_ALL_BLOCK_WORDS 0x20u
#define TX_PORT_OUT_ALL_BLOCK_BYTES 0x80u
diff --git a/include/APE_TX_PORT1.h b/include/APE_TX_PORT1.h
index 00550a4..9ef3c51 100644
--- a/include/APE_TX_PORT1.h
+++ b/include/APE_TX_PORT1.h
@@ -87,6 +87,11 @@ typedef uint32_t APE_TX_PORT1_H_uint32_t;
#define TX_PORT1_OUT_ALL_MASK 0xffffffffu
#define GET_TX_PORT1_OUT_ALL(__reg__) (((__reg__) & 0xffffffff) >> 0u)
#define SET_TX_PORT1_OUT_ALL(__val__) (((__val__) << 0u) & 0xffffffffu)
+#define TX_PORT1_OUT_ALL_CONTROL_WORD 0x0u
+#define TX_PORT1_OUT_ALL_ADDITIONAL_PAYLOAD_WORD 0x2u
+#define TX_PORT1_OUT_ALL_FRAME_LEN_WORD 0x3u
+#define TX_PORT1_OUT_ALL_NUM_BLOCKS_WORD 0x9u
+#define TX_PORT1_OUT_ALL_FIRST_PAYLOAD_WORD 0xcu
#define TX_PORT1_OUT_ALL_BLOCK_WORDS 0x20u
#define TX_PORT1_OUT_ALL_BLOCK_BYTES 0x80u
diff --git a/include/APE_TX_PORT2.h b/include/APE_TX_PORT2.h
index 28c2333..1f230d8 100644
--- a/include/APE_TX_PORT2.h
+++ b/include/APE_TX_PORT2.h
@@ -87,6 +87,11 @@ typedef uint32_t APE_TX_PORT2_H_uint32_t;
#define TX_PORT2_OUT_ALL_MASK 0xffffffffu
#define GET_TX_PORT2_OUT_ALL(__reg__) (((__reg__) & 0xffffffff) >> 0u)
#define SET_TX_PORT2_OUT_ALL(__val__) (((__val__) << 0u) & 0xffffffffu)
+#define TX_PORT2_OUT_ALL_CONTROL_WORD 0x0u
+#define TX_PORT2_OUT_ALL_ADDITIONAL_PAYLOAD_WORD 0x2u
+#define TX_PORT2_OUT_ALL_FRAME_LEN_WORD 0x3u
+#define TX_PORT2_OUT_ALL_NUM_BLOCKS_WORD 0x9u
+#define TX_PORT2_OUT_ALL_FIRST_PAYLOAD_WORD 0xcu
#define TX_PORT2_OUT_ALL_BLOCK_WORDS 0x20u
#define TX_PORT2_OUT_ALL_BLOCK_BYTES 0x80u
diff --git a/include/APE_TX_PORT3.h b/include/APE_TX_PORT3.h
index 55c3472..a61c422 100644
--- a/include/APE_TX_PORT3.h
+++ b/include/APE_TX_PORT3.h
@@ -87,6 +87,11 @@ typedef uint32_t APE_TX_PORT3_H_uint32_t;
#define TX_PORT3_OUT_ALL_MASK 0xffffffffu
#define GET_TX_PORT3_OUT_ALL(__reg__) (((__reg__) & 0xffffffff) >> 0u)
#define SET_TX_PORT3_OUT_ALL(__val__) (((__val__) << 0u) & 0xffffffffu)
+#define TX_PORT3_OUT_ALL_CONTROL_WORD 0x0u
+#define TX_PORT3_OUT_ALL_ADDITIONAL_PAYLOAD_WORD 0x2u
+#define TX_PORT3_OUT_ALL_FRAME_LEN_WORD 0x3u
+#define TX_PORT3_OUT_ALL_NUM_BLOCKS_WORD 0x9u
+#define TX_PORT3_OUT_ALL_FIRST_PAYLOAD_WORD 0xcu
#define TX_PORT3_OUT_ALL_BLOCK_WORDS 0x20u
#define TX_PORT3_OUT_ALL_BLOCK_BYTES 0x80u
diff --git a/include/bcm5719_APE.h b/include/bcm5719_APE.h
index 97ed431..66f08d9 100644
--- a/include/bcm5719_APE.h
+++ b/include/bcm5719_APE.h
@@ -724,6 +724,84 @@ typedef register_container RegAPETxToNetDoorbellFunc0_t {
#endif /* CXX_SIMULATOR */
} RegAPETxToNetDoorbellFunc0_t;
+#define REG_APE_TX_STATE0 ((volatile BCM5719_APE_H_uint32_t*)0xc0010020) /* APE TX Status. */
+#define APE_TX_STATE0_TAIL_SHIFT 0u
+#define APE_TX_STATE0_TAIL_MASK 0xfffu
+#define GET_APE_TX_STATE0_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_STATE0_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_STATE0_HEAD_SHIFT 12u
+#define APE_TX_STATE0_HEAD_MASK 0xfff000u
+#define GET_APE_TX_STATE0_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_TX_STATE0_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_TX_STATE0_TXERROR_SHIFT 24u
+#define APE_TX_STATE0_TXERROR_MASK 0x1000000u
+#define GET_APE_TX_STATE0_TXERROR(__reg__) (((__reg__) & 0x1000000) >> 24u)
+#define SET_APE_TX_STATE0_TXERROR(__val__) (((__val__) << 24u) & 0x1000000u)
+#define APE_TX_STATE0_ERROR_CODE_SHIFT 25u
+#define APE_TX_STATE0_ERROR_CODE_MASK 0xe000000u
+#define GET_APE_TX_STATE0_ERROR_CODE(__reg__) (((__reg__) & 0xe000000) >> 25u)
+#define SET_APE_TX_STATE0_ERROR_CODE(__val__) (((__val__) << 25u) & 0xe000000u)
+
+/** @brief Register definition for @ref APE_t.TxState0. */
+typedef register_container RegAPETxState0_t {
+ /** @brief 32bit direct register access. */
+ BCM5719_APE_H_uint32_t r32;
+
+ BITFIELD_BEGIN(BCM5719_APE_H_uint32_t, bits)
+#if defined(__LITTLE_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Tail, 0, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXError, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ErrorCode, 25, 3)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_28, 28, 4)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_28, 28, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ErrorCode, 25, 3)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXError, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Tail, 0, 12)
+#else
+#error Unknown Endian
+#endif
+ BITFIELD_END(BCM5719_APE_H_uint32_t, bits)
+#ifdef CXX_SIMULATOR
+ /** @brief Register name for use with the simulator. */
+ const char* getName(void) { return "TxState0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxState0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxState0. */
+ r32.setName("TxState0");
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.TXError.setBaseRegister(&r32);
+ bits.TXError.setName("TXError");
+ bits.ErrorCode.setBaseRegister(&r32);
+ bits.ErrorCode.setName("ErrorCode");
+ }
+ RegAPETxState0_t& operator=(const RegAPETxState0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxState0_t;
+
#define REG_APE_MODE_2 ((volatile BCM5719_APE_H_uint32_t*)0xc001002c) /* Expansion for MODE */
/** @brief Register definition for @ref APE_t.Mode2. */
typedef register_container RegAPEMode2_t {
@@ -3312,8 +3390,11 @@ typedef struct APE_t {
/** @brief Written on APE TX to network after filling 0xA002 buffer with packet. */
RegAPETxToNetDoorbellFunc0_t TxToNetDoorbellFunc0;
+ /** @brief APE TX Status. */
+ RegAPETxState0_t TxState0;
+
/** @brief Reserved bytes to pad out data structure. */
- BCM5719_APE_H_uint32_t reserved_32[3];
+ BCM5719_APE_H_uint32_t reserved_36[2];
/** @brief Expansion for MODE */
RegAPEMode2_t Mode2;
@@ -3475,6 +3556,7 @@ typedef struct APE_t {
RxbufoffsetFunc0.r32.setComponentOffset(0x14);
RxbufoffsetFunc1.r32.setComponentOffset(0x18);
TxToNetDoorbellFunc0.r32.setComponentOffset(0x1c);
+ TxState0.r32.setComponentOffset(0x20);
Mode2.r32.setComponentOffset(0x2c);
Status2.r32.setComponentOffset(0x30);
LockGrantObsolete.r32.setComponentOffset(0x4c);
diff --git a/include/bcm5719_APE_PERI.h b/include/bcm5719_APE_PERI.h
index 6024989..734339b 100644
--- a/include/bcm5719_APE_PERI.h
+++ b/include/bcm5719_APE_PERI.h
@@ -980,10 +980,27 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch6Low_t {
} RegAPE_PERIBmcToNcSourceMacMatch6Low_t;
#define REG_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH ((volatile BCM5719_APE_PERI_H_uint32_t*)0xc0018344) /* Upper four bytes of the MAC */
+#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH_SHIFT 0u
+#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH_MASK 0xffffffffu
+#define GET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH(__reg__) (((__reg__) & 0xffffffff) >> 0u)
+#define SET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_HIGH_HIGH(__val__) (((__val__) << 0u) & 0xffffffffu)
+
/** @brief Register definition for @ref APE_PERI_t.BmcToNcSourceMacMatch7High. */
typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7High_t {
/** @brief 32bit direct register access. */
BCM5719_APE_PERI_H_uint32_t r32;
+
+ BITFIELD_BEGIN(BCM5719_APE_PERI_H_uint32_t, bits)
+#if defined(__LITTLE_ENDIAN__)
+ /** @brief Upper four bytes of the MAC */
+ BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, High, 0, 32)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Upper four bytes of the MAC */
+ BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, High, 0, 32)
+#else
+#error Unknown Endian
+#endif
+ BITFIELD_END(BCM5719_APE_PERI_H_uint32_t, bits)
#ifdef CXX_SIMULATOR
/** @brief Register name for use with the simulator. */
const char* getName(void) { return "BmcToNcSourceMacMatch7High"; }
@@ -995,6 +1012,8 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7High_t {
{
/** @brief constructor for @ref APE_PERI_t.BmcToNcSourceMacMatch7High. */
r32.setName("BmcToNcSourceMacMatch7High");
+ bits.High.setBaseRegister(&r32);
+ bits.High.setName("High");
}
RegAPE_PERIBmcToNcSourceMacMatch7High_t& operator=(const RegAPE_PERIBmcToNcSourceMacMatch7High_t& other)
{
@@ -1009,10 +1028,6 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7High_t {
#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_LOW_MASK 0xffff0000u
#define GET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_LOW(__reg__) (((__reg__) & 0xffff0000) >> 16u)
#define SET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_LOW(__val__) (((__val__) << 16u) & 0xffff0000u)
-#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH_SHIFT 0u
-#define APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH_MASK 0xffffffffu
-#define GET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH(__reg__) (((__reg__) & 0xffffffff) >> 0u)
-#define SET_APE_PERI_BMC_TO_NC_SOURCE_MAC_MATCH_7_LOW_HIGH(__val__) (((__val__) << 0u) & 0xffffffffu)
/** @brief Register definition for @ref APE_PERI_t.BmcToNcSourceMacMatch7Low. */
typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7Low_t {
@@ -1025,11 +1040,7 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7Low_t {
BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, reserved_15_0, 0, 16)
/** @brief Lower two bytes of the MAC */
BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, Low, 16, 16)
- /** @brief Upper four bytes of the MAC */
- BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, High, 0, 32)
#elif defined(__BIG_ENDIAN__)
- /** @brief Upper four bytes of the MAC */
- BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, High, 0, 32)
/** @brief Lower two bytes of the MAC */
BITFIELD_MEMBER(BCM5719_APE_PERI_H_uint32_t, Low, 16, 16)
/** @brief Padding */
@@ -1051,8 +1062,6 @@ typedef register_container RegAPE_PERIBmcToNcSourceMacMatch7Low_t {
r32.setName("BmcToNcSourceMacMatch7Low");
bits.Low.setBaseRegister(&r32);
bits.Low.setName("Low");
- bits.High.setBaseRegister(&r32);
- bits.High.setName("High");
}
RegAPE_PERIBmcToNcSourceMacMatch7Low_t& operator=(const RegAPE_PERIBmcToNcSourceMacMatch7Low_t& other)
{
diff --git a/ipxact/APE.xml b/ipxact/APE.xml
index b368f69..a3f1d90 100644
--- a/ipxact/APE.xml
+++ b/ipxact/APE.xml
@@ -167,6 +167,27 @@
<ipxact:name>BLOCK_BYTES</ipxact:name>
<ipxact:value>128</ipxact:value>
</ipxact:enumeratedValue>
+
+ <ipxact:enumeratedValue>
+ <ipxact:name>Control Word</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Frame Len Word</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Num Blocks Word</ipxact:name>
+ <ipxact:value>9</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>First Payload Word</ipxact:name>
+ <ipxact:value>12</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Additional Payload Word</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
</ipxact:enumeratedValues>
</ipxact:field>
</ipxact:register>
diff --git a/ipxact/APE_component.xml b/ipxact/APE_component.xml
index bf5ff9e..38b8ddd 100644
--- a/ipxact/APE_component.xml
+++ b/ipxact/APE_component.xml
@@ -414,6 +414,38 @@
</ipxact:field>
</ipxact:register>
<ipxact:register>
+ <ipxact:name>TX State0</ipxact:name>
+ <ipxact:description>APE TX Status.</ipxact:description>
+ <ipxact:addressOffset>0x20</ipxact:addressOffset>
+ <!-- LINK: registerDefinitionGroup: see 6.11.3, Register definition group -->
+ <ipxact:size>32</ipxact:size>
+ <ipxact:volatile>true</ipxact:volatile>
+ <ipxact:field>
+ <ipxact:name>Tail</ipxact:name>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Head</ipxact:name>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>TXError</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error Code</ipxact:name>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>3</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
<ipxact:name>MODE_2</ipxact:name>
<ipxact:description>Expansion for MODE</ipxact:description>
<ipxact:addressOffset>0x2c</ipxact:addressOffset>
@@ -2101,6 +2133,13 @@
<!-- LINK: registerDefinitionGroup: see 6.11.3, Register definition group -->
<ipxact:size>32</ipxact:size>
<ipxact:volatile>true</ipxact:volatile>
+ <ipxact:field>
+ <ipxact:name>High</ipxact:name>
+ <ipxact:description>Upper four bytes of the MAC</ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>32</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
</ipxact:register>
<ipxact:register>
<ipxact:name>BMC to NC Source MAC Match 7 Low</ipxact:name>
@@ -2116,13 +2155,6 @@
<ipxact:bitWidth>16</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
- <ipxact:field>
- <ipxact:name>High</ipxact:name>
- <ipxact:description>Upper four bytes of the MAC</ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>32</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
</ipxact:register>
<ipxact:register>
<ipxact:name>BMC to NC RX VLAN</ipxact:name>
diff --git a/simulator/bcm5719_APE.cpp b/simulator/bcm5719_APE.cpp
index eb62742..1fe003a 100644
--- a/simulator/bcm5719_APE.cpp
+++ b/simulator/bcm5719_APE.cpp
@@ -63,6 +63,8 @@ void init_bcm5719_APE(void)
/** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc0. */
+ /** @brief Bitmap for @ref APE_t.TxState0. */
+
/** @brief Bitmap for @ref APE_t.Mode2. */
/** @brief Bitmap for @ref APE_t.Status2. */
diff --git a/simulator/bcm5719_APE_sim.cpp b/simulator/bcm5719_APE_sim.cpp
index 4d21c3f..21bee80 100644
--- a/simulator/bcm5719_APE_sim.cpp
+++ b/simulator/bcm5719_APE_sim.cpp
@@ -109,6 +109,10 @@ void init_bcm5719_APE_sim(void *base)
APE.TxToNetDoorbellFunc0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.TxToNetDoorbellFunc0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+ /** @brief Bitmap for @ref APE_t.TxState0. */
+ APE.TxState0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxState0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
/** @brief Bitmap for @ref APE_t.Mode2. */
APE.Mode2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.Mode2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
OpenPOWER on IntegriCloud