summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Lojewski <github@meklort.com>2019-05-01 20:56:58 -0600
committerEvan Lojewski <github@meklort.com>2019-05-01 20:56:58 -0600
commit17dbcda3b0d0d438b9bb2edc56b8e6000c79b342 (patch)
treecfa915c137853b33caebabdc797d1a03739cd26f
parent2122fe004c9f32c1df39ce0162966023ac9eccc4 (diff)
downloadbcm5719-ortega-17dbcda3b0d0d438b9bb2edc56b8e6000c79b342.tar.gz
bcm5719-ortega-17dbcda3b0d0d438b9bb2edc56b8e6000c79b342.zip
Additioanl tx trials
-rw-r--r--include/APE_APE.h208
-rw-r--r--include/APE_DEVICE.h26
-rw-r--r--include/bcm5719_APE.h208
-rw-r--r--include/bcm5719_DEVICE.h26
-rw-r--r--ipxact/APE_component.xml79
-rw-r--r--ipxact/DEVICE.xml11
-rw-r--r--simulator/bcm5719_APE.cpp4
-rw-r--r--simulator/bcm5719_APE_sim.cpp8
-rw-r--r--utils/bcmregtool/main.cpp62
9 files changed, 549 insertions, 83 deletions
diff --git a/include/APE_APE.h b/include/APE_APE.h
index 94cc124..25a853e 100644
--- a/include/APE_APE.h
+++ b/include/APE_APE.h
@@ -118,6 +118,14 @@ typedef uint32_t APE_APE_H_uint32_t;
#define APE_MODE_SWAP_ARB_DWORD_MASK 0x800u
#define GET_APE_MODE_SWAP_ARB_DWORD(__reg__) (((__reg__) & 0x800) >> 11u)
#define SET_APE_MODE_SWAP_ARB_DWORD(__val__) (((__val__) << 11u) & 0x800u)
+#define APE_MODE_CHANNEL_0_STATUS_SHIFT 14u
+#define APE_MODE_CHANNEL_0_STATUS_MASK 0x4000u
+#define GET_APE_MODE_CHANNEL_0_STATUS(__reg__) (((__reg__) & 0x4000) >> 14u)
+#define SET_APE_MODE_CHANNEL_0_STATUS(__val__) (((__val__) << 14u) & 0x4000u)
+#define APE_MODE_CHANNEL_2_STATUS_SHIFT 15u
+#define APE_MODE_CHANNEL_2_STATUS_MASK 0x8000u
+#define GET_APE_MODE_CHANNEL_2_STATUS(__reg__) (((__reg__) & 0x8000) >> 15u)
+#define SET_APE_MODE_CHANNEL_2_STATUS(__val__) (((__val__) << 15u) & 0x8000u)
#define APE_MODE_MEMORY_ECC_SHIFT 18u
#define APE_MODE_MEMORY_ECC_MASK 0x40000u
#define GET_APE_MODE_MEMORY_ECC(__reg__) (((__reg__) & 0x40000) >> 18u)
@@ -126,6 +134,14 @@ typedef uint32_t APE_APE_H_uint32_t;
#define APE_MODE_ICODE_PIP_RD_DISABLE_MASK 0x80000u
#define GET_APE_MODE_ICODE_PIP_RD_DISABLE(__reg__) (((__reg__) & 0x80000) >> 19u)
#define SET_APE_MODE_ICODE_PIP_RD_DISABLE(__val__) (((__val__) << 19u) & 0x80000u)
+#define APE_MODE_CHANNEL_1_STATUS_SHIFT 30u
+#define APE_MODE_CHANNEL_1_STATUS_MASK 0x40000000u
+#define GET_APE_MODE_CHANNEL_1_STATUS(__reg__) (((__reg__) & 0x40000000) >> 30u)
+#define SET_APE_MODE_CHANNEL_1_STATUS(__val__) (((__val__) << 30u) & 0x40000000u)
+#define APE_MODE_CHANNEL_3_STATUS_SHIFT 31u
+#define APE_MODE_CHANNEL_3_STATUS_MASK 0x80000000u
+#define GET_APE_MODE_CHANNEL_3_STATUS(__reg__) (((__reg__) & 0x80000000) >> 31u)
+#define SET_APE_MODE_CHANNEL_3_STATUS(__val__) (((__val__) << 31u) & 0x80000000u)
/** @brief Register definition for @ref APE_t.Mode. */
typedef register_container RegAPEMode_t {
@@ -159,22 +175,42 @@ typedef register_container RegAPEMode_t {
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, SwapARBdword, 11, 1)
/** @brief Padding */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_17_12, 12, 6)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_13_12, 12, 2)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel0Status, 14, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel2Status, 15, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_17_16, 16, 2)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, MemoryECC, 18, 1)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, ICodePIPRdDisable, 19, 1)
/** @brief Padding */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_20, 20, 12)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_29_20, 20, 10)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel1Status, 30, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel3Status, 31, 1)
#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel3Status, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel1Status, 30, 1)
/** @brief Padding */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_20, 20, 12)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_29_20, 20, 10)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, ICodePIPRdDisable, 19, 1)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, MemoryECC, 18, 1)
/** @brief Padding */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_17_12, 12, 6)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_17_16, 16, 2)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel2Status, 15, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Channel0Status, 14, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_13_12, 12, 2)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, SwapARBdword, 11, 1)
/** @brief Padding */
@@ -232,10 +268,18 @@ typedef register_container RegAPEMode_t {
bits.SwapATBdword.setName("SwapATBdword");
bits.SwapARBdword.setBaseRegister(&r32);
bits.SwapARBdword.setName("SwapARBdword");
+ bits.Channel0Status.setBaseRegister(&r32);
+ bits.Channel0Status.setName("Channel0Status");
+ bits.Channel2Status.setBaseRegister(&r32);
+ bits.Channel2Status.setName("Channel2Status");
bits.MemoryECC.setBaseRegister(&r32);
bits.MemoryECC.setName("MemoryECC");
bits.ICodePIPRdDisable.setBaseRegister(&r32);
bits.ICodePIPRdDisable.setName("ICodePIPRdDisable");
+ bits.Channel1Status.setBaseRegister(&r32);
+ bits.Channel1Status.setName("Channel1Status");
+ bits.Channel3Status.setBaseRegister(&r32);
+ bits.Channel3Status.setName("Channel3Status");
}
RegAPEMode_t& operator=(const RegAPEMode_t& other)
{
@@ -670,9 +714,13 @@ typedef register_container RegAPERxbufoffsetFunc1_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc0. */
typedef register_container RegAPETxToNetDoorbellFunc0_t {
@@ -686,10 +734,18 @@ typedef register_container RegAPETxToNetDoorbellFunc0_t {
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -715,6 +771,8 @@ typedef register_container RegAPETxToNetDoorbellFunc0_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc0_t& operator=(const RegAPETxToNetDoorbellFunc0_t& other)
{
@@ -1474,6 +1532,56 @@ typedef register_container RegAPETxToNetBufferAllocator0_t {
#endif /* CXX_SIMULATOR */
} RegAPETxToNetBufferAllocator0_t;
+#define REG_APE_TX_TO_NET_BUFFER_RETURN_0 ((volatile APE_APE_H_uint32_t*)0x60200094) /* */
+/** @brief Register definition for @ref APE_t.TxToNetBufferReturn0. */
+typedef register_container RegAPETxToNetBufferReturn0_t {
+ /** @brief 32bit direct register access. */
+ APE_APE_H_uint32_t r32;
+#ifdef CXX_SIMULATOR
+ /** @brief Register name for use with the simulator. */
+ const char* getName(void) { return "TxToNetBufferReturn0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferReturn0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferReturn0. */
+ r32.setName("TxToNetBufferReturn0");
+ }
+ RegAPETxToNetBufferReturn0_t& operator=(const RegAPETxToNetBufferReturn0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferReturn0_t;
+
+#define REG_APE_TX_TO_NET_BUFFER_RING_0 ((volatile APE_APE_H_uint32_t*)0x60200098) /* */
+/** @brief Register definition for @ref APE_t.TxToNetBufferRing0. */
+typedef register_container RegAPETxToNetBufferRing0_t {
+ /** @brief 32bit direct register access. */
+ APE_APE_H_uint32_t r32;
+#ifdef CXX_SIMULATOR
+ /** @brief Register name for use with the simulator. */
+ const char* getName(void) { return "TxToNetBufferRing0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferRing0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferRing0. */
+ r32.setName("TxToNetBufferRing0");
+ }
+ RegAPETxToNetBufferRing0_t& operator=(const RegAPETxToNetBufferRing0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferRing0_t;
+
#define REG_APE_TICK_1MHZ ((volatile APE_APE_H_uint32_t*)0x602000a8) /* Unknown, monotonically increasing value. Increases at a rate of 1MHz. */
/** @brief Register definition for @ref APE_t.Tick1mhz. */
typedef register_container RegAPETick1mhz_t {
@@ -2198,9 +2306,13 @@ typedef register_container RegAPETxToNetBufferAllocator1_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc1. */
typedef register_container RegAPETxToNetDoorbellFunc1_t {
@@ -2214,10 +2326,18 @@ typedef register_container RegAPETxToNetDoorbellFunc1_t {
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -2243,6 +2363,8 @@ typedef register_container RegAPETxToNetDoorbellFunc1_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc1_t& operator=(const RegAPETxToNetDoorbellFunc1_t& other)
{
@@ -2360,9 +2482,13 @@ typedef register_container RegAPERxbufoffsetFunc2_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc2. */
typedef register_container RegAPETxToNetDoorbellFunc2_t {
@@ -2376,10 +2502,18 @@ typedef register_container RegAPETxToNetDoorbellFunc2_t {
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -2405,6 +2539,8 @@ typedef register_container RegAPETxToNetDoorbellFunc2_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc2_t& operator=(const RegAPETxToNetDoorbellFunc2_t& other)
{
@@ -2916,9 +3052,13 @@ typedef register_container RegAPERxbufoffsetFunc3_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc3. */
typedef register_container RegAPETxToNetDoorbellFunc3_t {
@@ -2932,10 +3072,18 @@ typedef register_container RegAPETxToNetDoorbellFunc3_t {
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(APE_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(APE_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -2961,6 +3109,8 @@ typedef register_container RegAPETxToNetDoorbellFunc3_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc3_t& operator=(const RegAPETxToNetDoorbellFunc3_t& other)
{
@@ -3432,8 +3582,14 @@ typedef struct APE_t {
/** @brief */
RegAPETxToNetBufferAllocator0_t TxToNetBufferAllocator0;
+ /** @brief */
+ RegAPETxToNetBufferReturn0_t TxToNetBufferReturn0;
+
+ /** @brief */
+ RegAPETxToNetBufferRing0_t TxToNetBufferRing0;
+
/** @brief Reserved bytes to pad out data structure. */
- APE_APE_H_uint32_t reserved_148[5];
+ APE_APE_H_uint32_t reserved_156[3];
/** @brief Unknown, monotonically increasing value. Increases at a rate of 1MHz. */
RegAPETick1mhz_t Tick1mhz;
@@ -3566,6 +3722,8 @@ typedef struct APE_t {
RxPoolRetire1.r32.setComponentOffset(0x88);
TxToNetPoolModeStatus0.r32.setComponentOffset(0x8c);
TxToNetBufferAllocator0.r32.setComponentOffset(0x90);
+ TxToNetBufferReturn0.r32.setComponentOffset(0x94);
+ TxToNetBufferRing0.r32.setComponentOffset(0x98);
Tick1mhz.r32.setComponentOffset(0xa8);
Tick1khz.r32.setComponentOffset(0xac);
Tick10hz.r32.setComponentOffset(0xb0);
diff --git a/include/APE_DEVICE.h b/include/APE_DEVICE.h
index 1f4c82b..28835d0 100644
--- a/include/APE_DEVICE.h
+++ b/include/APE_DEVICE.h
@@ -6636,10 +6636,14 @@ typedef register_container RegDEVICEGrcModeControl_t {
} RegDEVICEGrcModeControl_t;
#define REG_DEVICE_MISCELLANEOUS_CONFIG ((volatile APE_DEVICE_H_uint32_t*)0xa0046804) /* */
-#define DEVICE_MISCELLANEOUS_CONFIG_ALL_SHIFT 0u
-#define DEVICE_MISCELLANEOUS_CONFIG_ALL_MASK 0xffffffffu
-#define GET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__reg__) (((__reg__) & 0xffffffff) >> 0u)
-#define SET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__val__) (((__val__) << 0u) & 0xffffffffu)
+#define DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET_SHIFT 1u
+#define DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET_MASK 0x2u
+#define GET_DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET(__val__) (((__val__) << 1u) & 0x2u)
+#define DEVICE_MISCELLANEOUS_CONFIG_ALL_SHIFT 1u
+#define DEVICE_MISCELLANEOUS_CONFIG_ALL_MASK 0xfffffffeu
+#define GET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__reg__) (((__reg__) & 0xfffffffe) >> 1u)
+#define SET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__val__) (((__val__) << 1u) & 0xfffffffeu)
/** @brief Register definition for @ref DEVICE_t.MiscellaneousConfig. */
typedef register_container RegDEVICEMiscellaneousConfig_t {
@@ -6648,11 +6652,19 @@ typedef register_container RegDEVICEMiscellaneousConfig_t {
BITFIELD_BEGIN(APE_DEVICE_H_uint32_t, bits)
#if defined(__LITTLE_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, reserved_0_0, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, GRCReset, 1, 1)
/** @brief */
- BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, all, 0, 32)
+ BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, all, 1, 31)
#elif defined(__BIG_ENDIAN__)
/** @brief */
- BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, all, 0, 32)
+ BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, all, 1, 31)
+ /** @brief */
+ BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, GRCReset, 1, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(APE_DEVICE_H_uint32_t, reserved_0_0, 0, 1)
#else
#error Unknown Endian
#endif
@@ -6668,6 +6680,8 @@ typedef register_container RegDEVICEMiscellaneousConfig_t {
{
/** @brief constructor for @ref DEVICE_t.MiscellaneousConfig. */
r32.setName("MiscellaneousConfig");
+ bits.GRCReset.setBaseRegister(&r32);
+ bits.GRCReset.setName("GRCReset");
bits.all.setBaseRegister(&r32);
bits.all.setName("all");
}
diff --git a/include/bcm5719_APE.h b/include/bcm5719_APE.h
index 66f08d9..1c0144b 100644
--- a/include/bcm5719_APE.h
+++ b/include/bcm5719_APE.h
@@ -118,6 +118,14 @@ typedef uint32_t BCM5719_APE_H_uint32_t;
#define APE_MODE_SWAP_ARB_DWORD_MASK 0x800u
#define GET_APE_MODE_SWAP_ARB_DWORD(__reg__) (((__reg__) & 0x800) >> 11u)
#define SET_APE_MODE_SWAP_ARB_DWORD(__val__) (((__val__) << 11u) & 0x800u)
+#define APE_MODE_CHANNEL_0_STATUS_SHIFT 14u
+#define APE_MODE_CHANNEL_0_STATUS_MASK 0x4000u
+#define GET_APE_MODE_CHANNEL_0_STATUS(__reg__) (((__reg__) & 0x4000) >> 14u)
+#define SET_APE_MODE_CHANNEL_0_STATUS(__val__) (((__val__) << 14u) & 0x4000u)
+#define APE_MODE_CHANNEL_2_STATUS_SHIFT 15u
+#define APE_MODE_CHANNEL_2_STATUS_MASK 0x8000u
+#define GET_APE_MODE_CHANNEL_2_STATUS(__reg__) (((__reg__) & 0x8000) >> 15u)
+#define SET_APE_MODE_CHANNEL_2_STATUS(__val__) (((__val__) << 15u) & 0x8000u)
#define APE_MODE_MEMORY_ECC_SHIFT 18u
#define APE_MODE_MEMORY_ECC_MASK 0x40000u
#define GET_APE_MODE_MEMORY_ECC(__reg__) (((__reg__) & 0x40000) >> 18u)
@@ -126,6 +134,14 @@ typedef uint32_t BCM5719_APE_H_uint32_t;
#define APE_MODE_ICODE_PIP_RD_DISABLE_MASK 0x80000u
#define GET_APE_MODE_ICODE_PIP_RD_DISABLE(__reg__) (((__reg__) & 0x80000) >> 19u)
#define SET_APE_MODE_ICODE_PIP_RD_DISABLE(__val__) (((__val__) << 19u) & 0x80000u)
+#define APE_MODE_CHANNEL_1_STATUS_SHIFT 30u
+#define APE_MODE_CHANNEL_1_STATUS_MASK 0x40000000u
+#define GET_APE_MODE_CHANNEL_1_STATUS(__reg__) (((__reg__) & 0x40000000) >> 30u)
+#define SET_APE_MODE_CHANNEL_1_STATUS(__val__) (((__val__) << 30u) & 0x40000000u)
+#define APE_MODE_CHANNEL_3_STATUS_SHIFT 31u
+#define APE_MODE_CHANNEL_3_STATUS_MASK 0x80000000u
+#define GET_APE_MODE_CHANNEL_3_STATUS(__reg__) (((__reg__) & 0x80000000) >> 31u)
+#define SET_APE_MODE_CHANNEL_3_STATUS(__val__) (((__val__) << 31u) & 0x80000000u)
/** @brief Register definition for @ref APE_t.Mode. */
typedef register_container RegAPEMode_t {
@@ -159,22 +175,42 @@ typedef register_container RegAPEMode_t {
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, SwapARBdword, 11, 1)
/** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_17_12, 12, 6)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_13_12, 12, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel0Status, 14, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel2Status, 15, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_17_16, 16, 2)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, MemoryECC, 18, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ICodePIPRdDisable, 19, 1)
/** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_20, 20, 12)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_29_20, 20, 10)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel1Status, 30, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel3Status, 31, 1)
#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel3Status, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel1Status, 30, 1)
/** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_20, 20, 12)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_29_20, 20, 10)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ICodePIPRdDisable, 19, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, MemoryECC, 18, 1)
/** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_17_12, 12, 6)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_17_16, 16, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel2Status, 15, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Channel0Status, 14, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_13_12, 12, 2)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, SwapARBdword, 11, 1)
/** @brief Padding */
@@ -232,10 +268,18 @@ typedef register_container RegAPEMode_t {
bits.SwapATBdword.setName("SwapATBdword");
bits.SwapARBdword.setBaseRegister(&r32);
bits.SwapARBdword.setName("SwapARBdword");
+ bits.Channel0Status.setBaseRegister(&r32);
+ bits.Channel0Status.setName("Channel0Status");
+ bits.Channel2Status.setBaseRegister(&r32);
+ bits.Channel2Status.setName("Channel2Status");
bits.MemoryECC.setBaseRegister(&r32);
bits.MemoryECC.setName("MemoryECC");
bits.ICodePIPRdDisable.setBaseRegister(&r32);
bits.ICodePIPRdDisable.setName("ICodePIPRdDisable");
+ bits.Channel1Status.setBaseRegister(&r32);
+ bits.Channel1Status.setName("Channel1Status");
+ bits.Channel3Status.setBaseRegister(&r32);
+ bits.Channel3Status.setName("Channel3Status");
}
RegAPEMode_t& operator=(const RegAPEMode_t& other)
{
@@ -670,9 +714,13 @@ typedef register_container RegAPERxbufoffsetFunc1_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc0. */
typedef register_container RegAPETxToNetDoorbellFunc0_t {
@@ -686,10 +734,18 @@ typedef register_container RegAPETxToNetDoorbellFunc0_t {
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -715,6 +771,8 @@ typedef register_container RegAPETxToNetDoorbellFunc0_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc0_t& operator=(const RegAPETxToNetDoorbellFunc0_t& other)
{
@@ -1474,6 +1532,56 @@ typedef register_container RegAPETxToNetBufferAllocator0_t {
#endif /* CXX_SIMULATOR */
} RegAPETxToNetBufferAllocator0_t;
+#define REG_APE_TX_TO_NET_BUFFER_RETURN_0 ((volatile BCM5719_APE_H_uint32_t*)0xc0010094) /* */
+/** @brief Register definition for @ref APE_t.TxToNetBufferReturn0. */
+typedef register_container RegAPETxToNetBufferReturn0_t {
+ /** @brief 32bit direct register access. */
+ BCM5719_APE_H_uint32_t r32;
+#ifdef CXX_SIMULATOR
+ /** @brief Register name for use with the simulator. */
+ const char* getName(void) { return "TxToNetBufferReturn0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferReturn0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferReturn0. */
+ r32.setName("TxToNetBufferReturn0");
+ }
+ RegAPETxToNetBufferReturn0_t& operator=(const RegAPETxToNetBufferReturn0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferReturn0_t;
+
+#define REG_APE_TX_TO_NET_BUFFER_RING_0 ((volatile BCM5719_APE_H_uint32_t*)0xc0010098) /* */
+/** @brief Register definition for @ref APE_t.TxToNetBufferRing0. */
+typedef register_container RegAPETxToNetBufferRing0_t {
+ /** @brief 32bit direct register access. */
+ BCM5719_APE_H_uint32_t r32;
+#ifdef CXX_SIMULATOR
+ /** @brief Register name for use with the simulator. */
+ const char* getName(void) { return "TxToNetBufferRing0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferRing0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferRing0. */
+ r32.setName("TxToNetBufferRing0");
+ }
+ RegAPETxToNetBufferRing0_t& operator=(const RegAPETxToNetBufferRing0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferRing0_t;
+
#define REG_APE_TICK_1MHZ ((volatile BCM5719_APE_H_uint32_t*)0xc00100a8) /* Unknown, monotonically increasing value. Increases at a rate of 1MHz. */
/** @brief Register definition for @ref APE_t.Tick1mhz. */
typedef register_container RegAPETick1mhz_t {
@@ -2198,9 +2306,13 @@ typedef register_container RegAPETxToNetBufferAllocator1_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc1. */
typedef register_container RegAPETxToNetDoorbellFunc1_t {
@@ -2214,10 +2326,18 @@ typedef register_container RegAPETxToNetDoorbellFunc1_t {
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -2243,6 +2363,8 @@ typedef register_container RegAPETxToNetDoorbellFunc1_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc1_t& operator=(const RegAPETxToNetDoorbellFunc1_t& other)
{
@@ -2360,9 +2482,13 @@ typedef register_container RegAPERxbufoffsetFunc2_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc2. */
typedef register_container RegAPETxToNetDoorbellFunc2_t {
@@ -2376,10 +2502,18 @@ typedef register_container RegAPETxToNetDoorbellFunc2_t {
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -2405,6 +2539,8 @@ typedef register_container RegAPETxToNetDoorbellFunc2_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc2_t& operator=(const RegAPETxToNetDoorbellFunc2_t& other)
{
@@ -2916,9 +3052,13 @@ typedef register_container RegAPERxbufoffsetFunc3_t {
#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
#define APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH_SHIFT 24u
-#define APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH_MASK 0xff000000u
-#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__reg__) (((__reg__) & 0xff000000) >> 24u)
-#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__val__) (((__val__) << 24u) & 0xff000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH_MASK 0xf000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__reg__) (((__reg__) & 0xf000000) >> 24u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_LENGTH(__val__) (((__val__) << 24u) & 0xf000000u)
+#define APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL_SHIFT 28u
+#define APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL_MASK 0x10000000u
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL(__reg__) (((__reg__) & 0x10000000) >> 28u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_TX_QUEUE_FULL(__val__) (((__val__) << 28u) & 0x10000000u)
/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc3. */
typedef register_container RegAPETxToNetDoorbellFunc3_t {
@@ -2932,10 +3072,18 @@ typedef register_container RegAPETxToNetDoorbellFunc3_t {
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_29, 29, 3)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, TXQueueFull, 28, 1)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 4)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -2961,6 +3109,8 @@ typedef register_container RegAPETxToNetDoorbellFunc3_t {
bits.Head.setName("Head");
bits.Length.setBaseRegister(&r32);
bits.Length.setName("Length");
+ bits.TXQueueFull.setBaseRegister(&r32);
+ bits.TXQueueFull.setName("TXQueueFull");
}
RegAPETxToNetDoorbellFunc3_t& operator=(const RegAPETxToNetDoorbellFunc3_t& other)
{
@@ -3432,8 +3582,14 @@ typedef struct APE_t {
/** @brief */
RegAPETxToNetBufferAllocator0_t TxToNetBufferAllocator0;
+ /** @brief */
+ RegAPETxToNetBufferReturn0_t TxToNetBufferReturn0;
+
+ /** @brief */
+ RegAPETxToNetBufferRing0_t TxToNetBufferRing0;
+
/** @brief Reserved bytes to pad out data structure. */
- BCM5719_APE_H_uint32_t reserved_148[5];
+ BCM5719_APE_H_uint32_t reserved_156[3];
/** @brief Unknown, monotonically increasing value. Increases at a rate of 1MHz. */
RegAPETick1mhz_t Tick1mhz;
@@ -3566,6 +3722,8 @@ typedef struct APE_t {
RxPoolRetire1.r32.setComponentOffset(0x88);
TxToNetPoolModeStatus0.r32.setComponentOffset(0x8c);
TxToNetBufferAllocator0.r32.setComponentOffset(0x90);
+ TxToNetBufferReturn0.r32.setComponentOffset(0x94);
+ TxToNetBufferRing0.r32.setComponentOffset(0x98);
Tick1mhz.r32.setComponentOffset(0xa8);
Tick1khz.r32.setComponentOffset(0xac);
Tick10hz.r32.setComponentOffset(0xb0);
diff --git a/include/bcm5719_DEVICE.h b/include/bcm5719_DEVICE.h
index 5513ab6..d25c2f2 100644
--- a/include/bcm5719_DEVICE.h
+++ b/include/bcm5719_DEVICE.h
@@ -6636,10 +6636,14 @@ typedef register_container RegDEVICEGrcModeControl_t {
} RegDEVICEGrcModeControl_t;
#define REG_DEVICE_MISCELLANEOUS_CONFIG ((volatile BCM5719_DEVICE_H_uint32_t*)0xc0006804) /* */
-#define DEVICE_MISCELLANEOUS_CONFIG_ALL_SHIFT 0u
-#define DEVICE_MISCELLANEOUS_CONFIG_ALL_MASK 0xffffffffu
-#define GET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__reg__) (((__reg__) & 0xffffffff) >> 0u)
-#define SET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__val__) (((__val__) << 0u) & 0xffffffffu)
+#define DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET_SHIFT 1u
+#define DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET_MASK 0x2u
+#define GET_DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_DEVICE_MISCELLANEOUS_CONFIG_GRC_RESET(__val__) (((__val__) << 1u) & 0x2u)
+#define DEVICE_MISCELLANEOUS_CONFIG_ALL_SHIFT 1u
+#define DEVICE_MISCELLANEOUS_CONFIG_ALL_MASK 0xfffffffeu
+#define GET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__reg__) (((__reg__) & 0xfffffffe) >> 1u)
+#define SET_DEVICE_MISCELLANEOUS_CONFIG_ALL(__val__) (((__val__) << 1u) & 0xfffffffeu)
/** @brief Register definition for @ref DEVICE_t.MiscellaneousConfig. */
typedef register_container RegDEVICEMiscellaneousConfig_t {
@@ -6648,11 +6652,19 @@ typedef register_container RegDEVICEMiscellaneousConfig_t {
BITFIELD_BEGIN(BCM5719_DEVICE_H_uint32_t, bits)
#if defined(__LITTLE_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, reserved_0_0, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, GRCReset, 1, 1)
/** @brief */
- BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, all, 0, 32)
+ BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, all, 1, 31)
#elif defined(__BIG_ENDIAN__)
/** @brief */
- BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, all, 0, 32)
+ BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, all, 1, 31)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, GRCReset, 1, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_DEVICE_H_uint32_t, reserved_0_0, 0, 1)
#else
#error Unknown Endian
#endif
@@ -6668,6 +6680,8 @@ typedef register_container RegDEVICEMiscellaneousConfig_t {
{
/** @brief constructor for @ref DEVICE_t.MiscellaneousConfig. */
r32.setName("MiscellaneousConfig");
+ bits.GRCReset.setBaseRegister(&r32);
+ bits.GRCReset.setName("GRCReset");
bits.all.setBaseRegister(&r32);
bits.all.setName("all");
}
diff --git a/ipxact/APE_component.xml b/ipxact/APE_component.xml
index 38b8ddd..3200034 100644
--- a/ipxact/APE_component.xml
+++ b/ipxact/APE_component.xml
@@ -89,6 +89,20 @@
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
<ipxact:field>
+ <ipxact:name>Channel 0 Status</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>14</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Channel 2 Status</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>15</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
<ipxact:name>Memory ECC</ipxact:name>
<ipxact:description></ipxact:description>
<ipxact:bitOffset>18</ipxact:bitOffset>
@@ -101,7 +115,22 @@
<ipxact:bitOffset>19</ipxact:bitOffset>
<ipxact:bitWidth>1</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
- </ipxact:field> </ipxact:register>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Channel 1 Status</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>30</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Channel 3 Status</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>31</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
<ipxact:register>
<ipxact:name>STATUS</ipxact:name>
<ipxact:description></ipxact:description>
@@ -409,7 +438,13 @@
<ipxact:field>
<ipxact:name>Length</ipxact:name>
<ipxact:bitOffset>24</ipxact:bitOffset>
- <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>TX Queue Full</ipxact:name>
+ <ipxact:bitOffset>28</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
</ipxact:register>
@@ -806,6 +841,22 @@
</ipxact:field>
</ipxact:register>
<ipxact:register>
+ <ipxact:name>TX To Net Buffer Return 0</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x94</ipxact:addressOffset>
+ <!-- LINK: registerDefinitionGroup: see 6.11.3, Register definition group -->
+ <ipxact:size>32</ipxact:size>
+ <ipxact:volatile>true</ipxact:volatile>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Buffer Ring 0</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x98</ipxact:addressOffset>
+ <!-- LINK: registerDefinitionGroup: see 6.11.3, Register definition group -->
+ <ipxact:size>32</ipxact:size>
+ <ipxact:volatile>true</ipxact:volatile>
+ </ipxact:register>
+ <ipxact:register>
<ipxact:name>Tick 1MHz</ipxact:name>
<ipxact:description>Unknown, monotonically increasing value. Increases at a rate of 1MHz.</ipxact:description>
<ipxact:addressOffset>0xa8</ipxact:addressOffset>
@@ -1191,7 +1242,13 @@
<ipxact:field>
<ipxact:name>Length</ipxact:name>
<ipxact:bitOffset>24</ipxact:bitOffset>
- <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>TX Queue Full</ipxact:name>
+ <ipxact:bitOffset>28</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
</ipxact:register>
@@ -1261,7 +1318,13 @@
<ipxact:field>
<ipxact:name>Length</ipxact:name>
<ipxact:bitOffset>24</ipxact:bitOffset>
- <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>TX Queue Full</ipxact:name>
+ <ipxact:bitOffset>28</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
</ipxact:register>
@@ -1555,7 +1618,13 @@
<ipxact:field>
<ipxact:name>Length</ipxact:name>
<ipxact:bitOffset>24</ipxact:bitOffset>
- <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>TX Queue Full</ipxact:name>
+ <ipxact:bitOffset>28</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
</ipxact:register>
diff --git a/ipxact/DEVICE.xml b/ipxact/DEVICE.xml
index d8b710c..4506d88 100644
--- a/ipxact/DEVICE.xml
+++ b/ipxact/DEVICE.xml
@@ -3728,10 +3728,17 @@
<ipxact:size>32</ipxact:size>
<ipxact:volatile>true</ipxact:volatile>
<ipxact:field>
+ <ipxact:name>GRC Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>1</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
<ipxact:name>all</ipxact:name>
<ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>32</ipxact:bitWidth>
+ <ipxact:bitOffset>1</ipxact:bitOffset>
+ <ipxact:bitWidth>31</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
</ipxact:register>
diff --git a/simulator/bcm5719_APE.cpp b/simulator/bcm5719_APE.cpp
index 1fe003a..cd91752 100644
--- a/simulator/bcm5719_APE.cpp
+++ b/simulator/bcm5719_APE.cpp
@@ -83,6 +83,10 @@ void init_bcm5719_APE(void)
/** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator0. */
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferReturn0. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferRing0. */
+
/** @brief Bitmap for @ref APE_t.Tick1mhz. */
/** @brief Bitmap for @ref APE_t.Tick1khz. */
diff --git a/simulator/bcm5719_APE_sim.cpp b/simulator/bcm5719_APE_sim.cpp
index 21bee80..113ecf0 100644
--- a/simulator/bcm5719_APE_sim.cpp
+++ b/simulator/bcm5719_APE_sim.cpp
@@ -149,6 +149,14 @@ void init_bcm5719_APE_sim(void *base)
APE.TxToNetBufferAllocator0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.TxToNetBufferAllocator0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferReturn0. */
+ APE.TxToNetBufferReturn0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetBufferReturn0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferRing0. */
+ APE.TxToNetBufferRing0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetBufferRing0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
/** @brief Bitmap for @ref APE_t.Tick1mhz. */
APE.Tick1mhz.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.Tick1mhz.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
diff --git a/utils/bcmregtool/main.cpp b/utils/bcmregtool/main.cpp
index e98b2ab..bfb77d0 100644
--- a/utils/bcmregtool/main.cpp
+++ b/utils/bcmregtool/main.cpp
@@ -425,11 +425,6 @@ uint32_t initFirstBlock(RegTX_PORTOut_t* block, uint32_t length, int32_t blocks,
block[TX_PORT_OUT_ALL_FIRST_PAYLOAD_WORD + i].r32 = 0;
printf("Block[%d]: pad(0)\n", i+TX_PORT_OUT_ALL_FIRST_PAYLOAD_WORD);
}
-
- control.bits.payload_length = copy_length;
-
- printf("Control: %x\n", control.r32);
- block[TX_PORT_OUT_ALL_CONTROL_WORD].r32 = control.r32;
// block[1] = uninitialized;
block[2].r32 = 0;
block[TX_PORT_OUT_ALL_FRAME_LEN_WORD].r32 = length;
@@ -447,6 +442,10 @@ uint32_t initFirstBlock(RegTX_PORTOut_t* block, uint32_t length, int32_t blocks,
// printf("Block[%d]: 0x%08X\n", i, (uint32_t)block[i].r32);
}
+ control.bits.payload_length = copy_length;
+
+ printf("Control0: %x\n", control.r32);
+ block[TX_PORT_OUT_ALL_CONTROL_WORD].r32 = control.r32;
length -= control.bits.payload_length;
@@ -482,8 +481,6 @@ uint32_t initAdditionalBlock(RegTX_PORTOut_t* block, int32_t next_block, uint32_
control.bits.not_last = 0;
}
- printf("Control: %x\n", control.r32);
- block[TX_PORT_OUT_ALL_CONTROL_WORD].r32 = control.r32;
// block[1] = uninitialized;
for(i = 0; i < 2; i++)
@@ -500,6 +497,9 @@ uint32_t initAdditionalBlock(RegTX_PORTOut_t* block, int32_t next_block, uint32_
}
+ printf("Control: %x\n", control.r32);
+ block[TX_PORT_OUT_ALL_CONTROL_WORD].r32 = control.r32;
+
length -= control.bits.payload_length;
return length;
@@ -541,6 +541,10 @@ void transmitPacket(uint8_t* packet, uint32_t length)
}
int tail = next_block;
+ if(next_block == -1)
+ {
+ tail = first;
+ }
printf("Head: %d, Tail: %d\n", first, tail);
@@ -552,7 +556,8 @@ void transmitPacket(uint8_t* packet, uint32_t length)
doorbell.print();
APE.TxToNetDoorbellFunc0 = doorbell;
-
+ APE.TxToNetDoorbellFunc0.print();
+ APE.TxToNetBufferReturn0.print();
}
void step(void)
@@ -660,6 +665,12 @@ int main(int argc, char const *argv[])
.action("store_true")
.help("File to boot on the APE.");
+ parser.add_option("-reset", "--reset")
+ .dest("reset")
+ .set_default("0")
+ .action("store_true")
+ .help("File to boot on the APE.");
+
parser.add_option("-m", "--mii")
.dest("mii")
.set_default("0")
@@ -877,9 +888,19 @@ int main(int argc, char const *argv[])
exit(0);
}
+ if(options.get("reset"))
+ {
+
+ DEVICE.MiscellaneousConfig.bits.GRCReset = 1;
+ exit(0);
+ }
+
+
+
if(options.get("rx"))
{
DEVICE.ReceiveMacMode.print();
+ DEVICE.EmacMode.print();
APE.RxPoolModeStatus0.print();
APE.RxbufoffsetFunc0.print();
exit(0);
@@ -887,18 +908,31 @@ int main(int argc, char const *argv[])
if(options.get("tx"))
{
+ // allocateTXBlock();
+ DEVICE.EmacMode.print();
+ APE.Mode.print();
+ APE.Status.print();
APE.TxState0.print();
APE.TxToNetPoolModeStatus0.print();
APE.TxToNetBufferAllocator0.print();
+ APE.TxToNetBufferRing0.print();
+ APE.TxToNetBufferReturn0.print();
APE.TxToNetDoorbellFunc0.print();
- exit(0);
- // APE.RxbufoffsetFunc0.print();
- transmitPacket(ping_packet, ping_packet_len);
-
- APE.TxToNetPoolModeStatus0.print();
+ if(APE.TxToNetDoorbellFunc0.bits.TXQueueFull)
+ {
+ fprintf(stderr, "TX Queue Full\n");
+ abort();
+ }
+ transmitPacket(ping_packet, 68);
APE.TxState0.print();
+ APE.TxToNetPoolModeStatus0.print();
+ APE.TxToNetBufferAllocator0.print();
+ APE.TxToNetBufferRing0.print();
+ APE.TxToNetBufferReturn0.print();
+ APE.TxToNetDoorbellFunc0.print();
exit(0);
+
}
if(options.get("ape"))
@@ -958,7 +992,7 @@ int main(int argc, char const *argv[])
// NVIC.SystickCurrentValue.print();
// NVIC.SystickCurrentValue.print();
// NVIC.SystickCalibrationValue.print();
- APE_PERI.RmuControl.bits.AutoDrv =1;
+ // APE_PERI.RmuControl.bits.AutoDrv =1;
APE_PERI.RmuControl.print();
#if 0
uint32_t buffer[1024];
OpenPOWER on IntegriCloud