summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/bcm5719_APE.h2471
-rw-r--r--ipxact/APE.xml12
-rw-r--r--ipxact/APE_component.xml2538
-rw-r--r--ipxact/bcm5719.xml1394
-rwxr-xr-xipxact/regen.sh6
-rw-r--r--libs/bcm5719/APE_sym.s4
-rw-r--r--simulator/bcm5719_APE.cpp52
-rw-r--r--simulator/bcm5719_APE_sim.cpp108
8 files changed, 5124 insertions, 1461 deletions
diff --git a/include/bcm5719_APE.h b/include/bcm5719_APE.h
index 3887626..b3213bf 100644
--- a/include/bcm5719_APE.h
+++ b/include/bcm5719_APE.h
@@ -455,6 +455,14 @@ typedef register_container RegAPEEvent_t {
#define APE_RXBUFOFFSET_FUNC0_HEAD_MASK 0xfff000u
#define GET_APE_RXBUFOFFSET_FUNC0_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_RXBUFOFFSET_FUNC0_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RXBUFOFFSET_FUNC0_TO_HOST_SHIFT 24u
+#define APE_RXBUFOFFSET_FUNC0_TO_HOST_MASK 0x1000000u
+#define GET_APE_RXBUFOFFSET_FUNC0_TO_HOST(__reg__) (((__reg__) & 0x1000000) >> 24u)
+#define SET_APE_RXBUFOFFSET_FUNC0_TO_HOST(__val__) (((__val__) << 24u) & 0x1000000u)
+#define APE_RXBUFOFFSET_FUNC0_IP_FRAG_SHIFT 25u
+#define APE_RXBUFOFFSET_FUNC0_IP_FRAG_MASK 0x2000000u
+#define GET_APE_RXBUFOFFSET_FUNC0_IP_FRAG(__reg__) (((__reg__) & 0x2000000) >> 25u)
+#define SET_APE_RXBUFOFFSET_FUNC0_IP_FRAG(__val__) (((__val__) << 25u) & 0x2000000u)
#define APE_RXBUFOFFSET_FUNC0_COUNT_SHIFT 26u
#define APE_RXBUFOFFSET_FUNC0_COUNT_MASK 0x3c000000u
#define GET_APE_RXBUFOFFSET_FUNC0_COUNT(__reg__) (((__reg__) & 0x3c000000) >> 26u)
@@ -475,8 +483,10 @@ typedef register_container RegAPERxbufoffsetFunc0_t {
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Tail, 0, 12)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
- /** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_25_24, 24, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ToHost, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
/** @brief */
@@ -490,8 +500,10 @@ typedef register_container RegAPERxbufoffsetFunc0_t {
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Valid, 30, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
- /** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_25_24, 24, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ToHost, 24, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -518,6 +530,12 @@ typedef register_container RegAPERxbufoffsetFunc0_t {
bits.Head.setBaseRegister(&r32);
bits.Head.setName("Head");
bits.Head.setComponentOffset(0x14);
+ bits.ToHost.setBaseRegister(&r32);
+ bits.ToHost.setName("ToHost");
+ bits.ToHost.setComponentOffset(0x14);
+ bits.IPFrag.setBaseRegister(&r32);
+ bits.IPFrag.setName("IPFrag");
+ bits.IPFrag.setComponentOffset(0x14);
bits.Count.setBaseRegister(&r32);
bits.Count.setName("Count");
bits.Count.setComponentOffset(0x14);
@@ -542,6 +560,14 @@ typedef register_container RegAPERxbufoffsetFunc0_t {
#define APE_RXBUFOFFSET_FUNC1_HEAD_MASK 0xfff000u
#define GET_APE_RXBUFOFFSET_FUNC1_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
#define SET_APE_RXBUFOFFSET_FUNC1_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RXBUFOFFSET_FUNC1_TO_HOST_SHIFT 24u
+#define APE_RXBUFOFFSET_FUNC1_TO_HOST_MASK 0x1000000u
+#define GET_APE_RXBUFOFFSET_FUNC1_TO_HOST(__reg__) (((__reg__) & 0x1000000) >> 24u)
+#define SET_APE_RXBUFOFFSET_FUNC1_TO_HOST(__val__) (((__val__) << 24u) & 0x1000000u)
+#define APE_RXBUFOFFSET_FUNC1_IP_FRAG_SHIFT 25u
+#define APE_RXBUFOFFSET_FUNC1_IP_FRAG_MASK 0x2000000u
+#define GET_APE_RXBUFOFFSET_FUNC1_IP_FRAG(__reg__) (((__reg__) & 0x2000000) >> 25u)
+#define SET_APE_RXBUFOFFSET_FUNC1_IP_FRAG(__val__) (((__val__) << 25u) & 0x2000000u)
#define APE_RXBUFOFFSET_FUNC1_COUNT_SHIFT 26u
#define APE_RXBUFOFFSET_FUNC1_COUNT_MASK 0x3c000000u
#define GET_APE_RXBUFOFFSET_FUNC1_COUNT(__reg__) (((__reg__) & 0x3c000000) >> 26u)
@@ -562,8 +588,10 @@ typedef register_container RegAPERxbufoffsetFunc1_t {
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Tail, 0, 12)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
- /** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_25_24, 24, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ToHost, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
/** @brief */
@@ -577,8 +605,10 @@ typedef register_container RegAPERxbufoffsetFunc1_t {
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Valid, 30, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
- /** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_25_24, 24, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ToHost, 24, 1)
/** @brief */
BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Head, 12, 12)
/** @brief */
@@ -605,6 +635,12 @@ typedef register_container RegAPERxbufoffsetFunc1_t {
bits.Head.setBaseRegister(&r32);
bits.Head.setName("Head");
bits.Head.setComponentOffset(0x18);
+ bits.ToHost.setBaseRegister(&r32);
+ bits.ToHost.setName("ToHost");
+ bits.ToHost.setComponentOffset(0x18);
+ bits.IPFrag.setBaseRegister(&r32);
+ bits.IPFrag.setName("IPFrag");
+ bits.IPFrag.setComponentOffset(0x18);
bits.Count.setBaseRegister(&r32);
bits.Count.setName("Count");
bits.Count.setComponentOffset(0x18);
@@ -620,7 +656,75 @@ typedef register_container RegAPERxbufoffsetFunc1_t {
#endif /* CXX_SIMULATOR */
} RegAPERxbufoffsetFunc1_t;
-#define REG_APE_MODE_2 ((volatile BCM5719_APE_H_uint32_t*)0xc001002c) /* Expansion for */
+#define REG_APE_TX_TO_NET_DOORBELL_FUNC0 ((volatile BCM5719_APE_H_uint32_t*)0xc001001c) /* Written on APE TX to network after filling 0xA002 buffer with packet. */
+#define APE_TX_TO_NET_DOORBELL_FUNC0_TAIL_SHIFT 0u
+#define APE_TX_TO_NET_DOORBELL_FUNC0_TAIL_MASK 0xfffu
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC0_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC0_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_DOORBELL_FUNC0_HEAD_SHIFT 12u
+#define APE_TX_TO_NET_DOORBELL_FUNC0_HEAD_MASK 0xfff000u
+#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)
+
+/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc0. */
+typedef register_container RegAPETxToNetDoorbellFunc0_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, Length, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ /** @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 "TxToNetDoorbellFunc0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetDoorbellFunc0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetDoorbellFunc0. */
+ r32.setName("TxToNetDoorbellFunc0");
+ r32.setComponentOffset(0x1c);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x1c);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x1c);
+ bits.Length.setBaseRegister(&r32);
+ bits.Length.setName("Length");
+ bits.Length.setComponentOffset(0x1c);
+ }
+ RegAPETxToNetDoorbellFunc0_t& operator=(const RegAPETxToNetDoorbellFunc0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetDoorbellFunc0_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 {
/** @brief 32bit direct register access. */
@@ -698,31 +802,718 @@ typedef register_container RegAPELockGrantObsolete_t {
#endif /* CXX_SIMULATOR */
} RegAPELockGrantObsolete_t;
-#define REG_APE_B0 ((volatile BCM5719_APE_H_uint32_t*)0xc00100b0) /* Unknown. */
-/** @brief Register definition for @ref APE_t.B0. */
-typedef register_container RegAPEB0_t {
+#define REG_APE_RX_POOL_MODE_STATUS_0 ((volatile BCM5719_APE_H_uint32_t*)0xc0010078) /* */
+#define APE_RX_POOL_MODE_STATUS_0_HALT_SHIFT 0u
+#define APE_RX_POOL_MODE_STATUS_0_HALT_MASK 0x1u
+#define GET_APE_RX_POOL_MODE_STATUS_0_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_RX_POOL_MODE_STATUS_0_HALT_DONE_SHIFT 1u
+#define APE_RX_POOL_MODE_STATUS_0_HALT_DONE_MASK 0x2u
+#define GET_APE_RX_POOL_MODE_STATUS_0_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_RX_POOL_MODE_STATUS_0_ENABLE_SHIFT 2u
+#define APE_RX_POOL_MODE_STATUS_0_ENABLE_MASK 0x4u
+#define GET_APE_RX_POOL_MODE_STATUS_0_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_RX_POOL_MODE_STATUS_0_EMPTY_SHIFT 4u
+#define APE_RX_POOL_MODE_STATUS_0_EMPTY_MASK 0x10u
+#define GET_APE_RX_POOL_MODE_STATUS_0_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_RX_POOL_MODE_STATUS_0_ERROR_SHIFT 5u
+#define APE_RX_POOL_MODE_STATUS_0_ERROR_MASK 0x20u
+#define GET_APE_RX_POOL_MODE_STATUS_0_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_RX_POOL_MODE_STATUS_0_RESET_SHIFT 6u
+#define APE_RX_POOL_MODE_STATUS_0_RESET_MASK 0x40u
+#define GET_APE_RX_POOL_MODE_STATUS_0_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_RX_POOL_MODE_STATUS_0_FULL_COUNT_SHIFT 8u
+#define APE_RX_POOL_MODE_STATUS_0_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_RX_POOL_MODE_STATUS_0_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_RX_POOL_MODE_STATUS_0_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.RxPoolModeStatus0. */
+typedef register_container RegAPERxPoolModeStatus0_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "RxPoolModeStatus0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolModeStatus0_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolModeStatus0. */
+ r32.setName("RxPoolModeStatus0");
+ r32.setComponentOffset(0x78);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x78);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x78);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x78);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x78);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x78);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x78);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x78);
+ }
+ RegAPERxPoolModeStatus0_t& operator=(const RegAPERxPoolModeStatus0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolModeStatus0_t;
+
+#define REG_APE_RX_POOL_MODE_STATUS_1 ((volatile BCM5719_APE_H_uint32_t*)0xc001007c) /* */
+#define APE_RX_POOL_MODE_STATUS_1_HALT_SHIFT 0u
+#define APE_RX_POOL_MODE_STATUS_1_HALT_MASK 0x1u
+#define GET_APE_RX_POOL_MODE_STATUS_1_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_RX_POOL_MODE_STATUS_1_HALT_DONE_SHIFT 1u
+#define APE_RX_POOL_MODE_STATUS_1_HALT_DONE_MASK 0x2u
+#define GET_APE_RX_POOL_MODE_STATUS_1_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_RX_POOL_MODE_STATUS_1_ENABLE_SHIFT 2u
+#define APE_RX_POOL_MODE_STATUS_1_ENABLE_MASK 0x4u
+#define GET_APE_RX_POOL_MODE_STATUS_1_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_RX_POOL_MODE_STATUS_1_EMPTY_SHIFT 4u
+#define APE_RX_POOL_MODE_STATUS_1_EMPTY_MASK 0x10u
+#define GET_APE_RX_POOL_MODE_STATUS_1_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_RX_POOL_MODE_STATUS_1_ERROR_SHIFT 5u
+#define APE_RX_POOL_MODE_STATUS_1_ERROR_MASK 0x20u
+#define GET_APE_RX_POOL_MODE_STATUS_1_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_RX_POOL_MODE_STATUS_1_RESET_SHIFT 6u
+#define APE_RX_POOL_MODE_STATUS_1_RESET_MASK 0x40u
+#define GET_APE_RX_POOL_MODE_STATUS_1_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_RX_POOL_MODE_STATUS_1_FULL_COUNT_SHIFT 8u
+#define APE_RX_POOL_MODE_STATUS_1_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_RX_POOL_MODE_STATUS_1_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_RX_POOL_MODE_STATUS_1_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.RxPoolModeStatus1. */
+typedef register_container RegAPERxPoolModeStatus1_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "RxPoolModeStatus1"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolModeStatus1_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolModeStatus1. */
+ r32.setName("RxPoolModeStatus1");
+ r32.setComponentOffset(0x7c);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x7c);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x7c);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x7c);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x7c);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x7c);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x7c);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x7c);
+ }
+ RegAPERxPoolModeStatus1_t& operator=(const RegAPERxPoolModeStatus1_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolModeStatus1_t;
+
+#define REG_APE_RX_POOL_RETIRE_0 ((volatile BCM5719_APE_H_uint32_t*)0xc0010080) /* Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+#define APE_RX_POOL_RETIRE_0_TAIL_SHIFT 0u
+#define APE_RX_POOL_RETIRE_0_TAIL_MASK 0xfffu
+#define GET_APE_RX_POOL_RETIRE_0_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_RX_POOL_RETIRE_0_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_RX_POOL_RETIRE_0_HEAD_SHIFT 12u
+#define APE_RX_POOL_RETIRE_0_HEAD_MASK 0xfff000u
+#define GET_APE_RX_POOL_RETIRE_0_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_RX_POOL_RETIRE_0_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RX_POOL_RETIRE_0_STATE_SHIFT 25u
+#define APE_RX_POOL_RETIRE_0_STATE_MASK 0x6000000u
+#define GET_APE_RX_POOL_RETIRE_0_STATE(__reg__) (((__reg__) & 0x6000000) >> 25u)
+#define SET_APE_RX_POOL_RETIRE_0_STATE(__val__) (((__val__) << 25u) & 0x6000000u)
+#define APE_RX_POOL_RETIRE_0_STATE_PROCESSING 0x0u
+#define APE_RX_POOL_RETIRE_0_STATE_RETIRED_OK 0x1u
+#define APE_RX_POOL_RETIRE_0_STATE_ERROR__FULL 0x2u
+#define APE_RX_POOL_RETIRE_0_STATE_ERROR__IN_HALT 0x3u
+
+#define APE_RX_POOL_RETIRE_0_COUNT_SHIFT 27u
+#define APE_RX_POOL_RETIRE_0_COUNT_MASK 0x78000000u
+#define GET_APE_RX_POOL_RETIRE_0_COUNT(__reg__) (((__reg__) & 0x78000000) >> 27u)
+#define SET_APE_RX_POOL_RETIRE_0_COUNT(__val__) (((__val__) << 27u) & 0x78000000u)
+
+/** @brief Register definition for @ref APE_t.RxPoolRetire0. */
+typedef register_container RegAPERxPoolRetire0_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 Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 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 "RxPoolRetire0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolRetire0_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolRetire0. */
+ r32.setName("RxPoolRetire0");
+ r32.setComponentOffset(0x80);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x80);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x80);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x80);
+ bits.Count.setBaseRegister(&r32);
+ bits.Count.setName("Count");
+ bits.Count.setComponentOffset(0x80);
+ }
+ RegAPERxPoolRetire0_t& operator=(const RegAPERxPoolRetire0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolRetire0_t;
+
+#define REG_APE_RX_POOL_RETIRE_1 ((volatile BCM5719_APE_H_uint32_t*)0xc0010088) /* Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+#define APE_RX_POOL_RETIRE_1_TAIL_SHIFT 0u
+#define APE_RX_POOL_RETIRE_1_TAIL_MASK 0xfffu
+#define GET_APE_RX_POOL_RETIRE_1_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_RX_POOL_RETIRE_1_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_RX_POOL_RETIRE_1_HEAD_SHIFT 12u
+#define APE_RX_POOL_RETIRE_1_HEAD_MASK 0xfff000u
+#define GET_APE_RX_POOL_RETIRE_1_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_RX_POOL_RETIRE_1_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RX_POOL_RETIRE_1_STATE_SHIFT 25u
+#define APE_RX_POOL_RETIRE_1_STATE_MASK 0x6000000u
+#define GET_APE_RX_POOL_RETIRE_1_STATE(__reg__) (((__reg__) & 0x6000000) >> 25u)
+#define SET_APE_RX_POOL_RETIRE_1_STATE(__val__) (((__val__) << 25u) & 0x6000000u)
+#define APE_RX_POOL_RETIRE_1_STATE_PROCESSING 0x0u
+#define APE_RX_POOL_RETIRE_1_STATE_RETIRED_OK 0x1u
+#define APE_RX_POOL_RETIRE_1_STATE_ERROR__FULL 0x2u
+#define APE_RX_POOL_RETIRE_1_STATE_ERROR__IN_HALT 0x3u
+
+#define APE_RX_POOL_RETIRE_1_COUNT_SHIFT 27u
+#define APE_RX_POOL_RETIRE_1_COUNT_MASK 0x78000000u
+#define GET_APE_RX_POOL_RETIRE_1_COUNT(__reg__) (((__reg__) & 0x78000000) >> 27u)
+#define SET_APE_RX_POOL_RETIRE_1_COUNT(__val__) (((__val__) << 27u) & 0x78000000u)
+
+/** @brief Register definition for @ref APE_t.RxPoolRetire1. */
+typedef register_container RegAPERxPoolRetire1_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 Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 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 "RxPoolRetire1"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolRetire1_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolRetire1. */
+ r32.setName("RxPoolRetire1");
+ r32.setComponentOffset(0x88);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x88);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x88);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x88);
+ bits.Count.setBaseRegister(&r32);
+ bits.Count.setName("Count");
+ bits.Count.setComponentOffset(0x88);
+ }
+ RegAPERxPoolRetire1_t& operator=(const RegAPERxPoolRetire1_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolRetire1_t;
+
+#define REG_APE_TX_TO_NET_POOL_MODE_STATUS_0 ((volatile BCM5719_APE_H_uint32_t*)0xc001008c) /* */
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT_SHIFT 0u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT_MASK 0x1u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT_DONE_SHIFT 1u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT_DONE_MASK 0x2u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_ENABLE_SHIFT 2u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_ENABLE_MASK 0x4u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_EMPTY_SHIFT 4u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_EMPTY_MASK 0x10u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_ERROR_SHIFT 5u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_ERROR_MASK 0x20u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_RESET_SHIFT 6u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_RESET_MASK 0x40u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_FULL_COUNT_SHIFT 8u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_0_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_0_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_0_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.TxToNetPoolModeStatus0. */
+typedef register_container RegAPETxToNetPoolModeStatus0_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "TxToNetPoolModeStatus0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetPoolModeStatus0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetPoolModeStatus0. */
+ r32.setName("TxToNetPoolModeStatus0");
+ r32.setComponentOffset(0x8c);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x8c);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x8c);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x8c);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x8c);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x8c);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x8c);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x8c);
+ }
+ RegAPETxToNetPoolModeStatus0_t& operator=(const RegAPETxToNetPoolModeStatus0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetPoolModeStatus0_t;
+
+#define REG_APE_TX_TO_NET_BUFFER_ALLOCATOR_0 ((volatile BCM5719_APE_H_uint32_t*)0xc0010090) /* */
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_INDEX_SHIFT 0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_INDEX_MASK 0xfffu
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_0_INDEX(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_0_INDEX(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_INDEX_BLOCK_SIZE 0x80u
+
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_REQUEST_ALLOCATION_SHIFT 12u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_REQUEST_ALLOCATION_MASK 0x1000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_0_REQUEST_ALLOCATION(__reg__) (((__reg__) & 0x1000) >> 12u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_0_REQUEST_ALLOCATION(__val__) (((__val__) << 12u) & 0x1000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE_SHIFT 13u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE_MASK 0x6000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE(__reg__) (((__reg__) & 0x6000) >> 13u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE(__val__) (((__val__) << 13u) & 0x6000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE_PROCESSING 0x0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE_ALLOCATION_OK 0x1u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE_ERROR__EMPTY 0x2u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_0_STATE_ERROR__IN_HALT 0x3u
+
+
+/** @brief Register definition for @ref APE_t.TxToNetBufferAllocator0. */
+typedef register_container RegAPETxToNetBufferAllocator0_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, Index, 0, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Index, 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 "TxToNetBufferAllocator0"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferAllocator0_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferAllocator0. */
+ r32.setName("TxToNetBufferAllocator0");
+ r32.setComponentOffset(0x90);
+ bits.Index.setBaseRegister(&r32);
+ bits.Index.setName("Index");
+ bits.Index.setComponentOffset(0x90);
+ bits.RequestAllocation.setBaseRegister(&r32);
+ bits.RequestAllocation.setName("RequestAllocation");
+ bits.RequestAllocation.setComponentOffset(0x90);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x90);
+ }
+ RegAPETxToNetBufferAllocator0_t& operator=(const RegAPETxToNetBufferAllocator0_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferAllocator0_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 {
/** @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 "B0"; }
+ const char* getName(void) { return "Tick1mhz"; }
/** @brief Print register value. */
void print(void) { r32.print(); }
- RegAPEB0_t()
+ RegAPETick1mhz_t()
{
- /** @brief constructor for @ref APE_t.B0. */
- r32.setName("B0");
+ /** @brief constructor for @ref APE_t.Tick1mhz. */
+ r32.setName("Tick1mhz");
+ r32.setComponentOffset(0xa8);
+ }
+ RegAPETick1mhz_t& operator=(const RegAPETick1mhz_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETick1mhz_t;
+
+#define REG_APE_TICK_1KHZ ((volatile BCM5719_APE_H_uint32_t*)0xc00100ac) /* Unknown, monotonically increasing value. Increases at a rate of 1KHz. */
+/** @brief Register definition for @ref APE_t.Tick1khz. */
+typedef register_container RegAPETick1khz_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 "Tick1khz"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETick1khz_t()
+ {
+ /** @brief constructor for @ref APE_t.Tick1khz. */
+ r32.setName("Tick1khz");
+ r32.setComponentOffset(0xac);
+ }
+ RegAPETick1khz_t& operator=(const RegAPETick1khz_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETick1khz_t;
+
+#define REG_APE_TICK_10HZ ((volatile BCM5719_APE_H_uint32_t*)0xc00100b0) /* Unknown, monotonically increasing value. Increases at a rate of 10Hz. */
+/** @brief Register definition for @ref APE_t.Tick10hz. */
+typedef register_container RegAPETick10hz_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 "Tick10hz"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETick10hz_t()
+ {
+ /** @brief constructor for @ref APE_t.Tick10hz. */
+ r32.setName("Tick10hz");
r32.setComponentOffset(0xb0);
}
- RegAPEB0_t& operator=(const RegAPEB0_t& other)
+ RegAPETick10hz_t& operator=(const RegAPETick10hz_t& other)
{
r32 = other.r32;
return *this;
}
#endif /* CXX_SIMULATOR */
-} RegAPEB0_t;
+} RegAPETick10hz_t;
#define REG_APE_GPIO ((volatile BCM5719_APE_H_uint32_t*)0xc00100b8) /* */
#define APE_GPIO_PIN0_UNKNOWN_SHIFT 0u
@@ -1127,65 +1918,1531 @@ typedef register_container RegAPEOtpReadData_t {
#endif /* CXX_SIMULATOR */
} RegAPEOtpReadData_t;
-#define REG_APE_CM3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010108) /* Seems CPU control related. */
-#define APE_CM3_CPU_STATUS_SHIFT 0u
-#define APE_CM3_CPU_STATUS_MASK 0xfu
-#define GET_APE_CM3_CPU_STATUS(__reg__) (((__reg__) & 0xf) >> 0u)
-#define SET_APE_CM3_CPU_STATUS(__val__) (((__val__) << 0u) & 0xfu)
-#define APE_CM3_CPU_STATUS_RUNNING 0x0u
-#define APE_CM3_CPU_STATUS_HALTED 0x1u
-#define APE_CM3_CPU_STATUS_LOCKED_OUT 0x2u
-#define APE_CM3_CPU_STATUS_SLEEPING 0x3u
-#define APE_CM3_CPU_STATUS_DEEP_SLEEP 0x4u
-#define APE_CM3_CPU_STATUS_INTERRUPT_PENDING 0x8u
-#define APE_CM3_CPU_STATUS_INTERRUPT_ENTRY 0x9u
-#define APE_CM3_CPU_STATUS_INTERRUPT_EXIT 0xau
-#define APE_CM3_CPU_STATUS_INTERRUPT_RETURN 0xbu
-
-
-/** @brief Register definition for @ref APE_t.Cm3. */
-typedef register_container RegAPECm3_t {
+#define REG_APE_CPU_STATUS ((volatile BCM5719_APE_H_uint32_t*)0xc0010108) /* Seems CPU control related. */
+#define APE_CPU_STATUS_STATUS_SHIFT 0u
+#define APE_CPU_STATUS_STATUS_MASK 0xfu
+#define GET_APE_CPU_STATUS_STATUS(__reg__) (((__reg__) & 0xf) >> 0u)
+#define SET_APE_CPU_STATUS_STATUS(__val__) (((__val__) << 0u) & 0xfu)
+#define APE_CPU_STATUS_STATUS_RUNNING 0x0u
+#define APE_CPU_STATUS_STATUS_HALTED 0x1u
+#define APE_CPU_STATUS_STATUS_LOCKED_OUT 0x2u
+#define APE_CPU_STATUS_STATUS_SLEEPING 0x3u
+#define APE_CPU_STATUS_STATUS_DEEP_SLEEP 0x4u
+#define APE_CPU_STATUS_STATUS_INTERRUPT_PENDING 0x8u
+#define APE_CPU_STATUS_STATUS_INTERRUPT_ENTRY 0x9u
+#define APE_CPU_STATUS_STATUS_INTERRUPT_EXIT 0xau
+#define APE_CPU_STATUS_STATUS_INTERRUPT_RETURN 0xbu
+
+#define APE_CPU_STATUS_ACTIVE_INTERRUPT_SHIFT 24u
+#define APE_CPU_STATUS_ACTIVE_INTERRUPT_MASK 0xff000000u
+#define GET_APE_CPU_STATUS_ACTIVE_INTERRUPT(__reg__) (((__reg__) & 0xff000000) >> 24u)
+#define SET_APE_CPU_STATUS_ACTIVE_INTERRUPT(__val__) (((__val__) << 24u) & 0xff000000u)
+
+/** @brief Register definition for @ref APE_t.CpuStatus. */
+typedef register_container RegAPECpuStatus_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, CPUStatus, 0, 4)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Status, 0, 4)
/** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_4, 4, 28)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_23_4, 4, 20)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ActiveInterrupt, 24, 8)
#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ActiveInterrupt, 24, 8)
/** @brief Padding */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_4, 4, 28)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_23_4, 4, 20)
/** @brief */
- BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, CPUStatus, 0, 4)
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Status, 0, 4)
#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 "Cm3"; }
+ const char* getName(void) { return "CpuStatus"; }
/** @brief Print register value. */
void print(void) { r32.print(); }
- RegAPECm3_t()
+ RegAPECpuStatus_t()
{
- /** @brief constructor for @ref APE_t.Cm3. */
- r32.setName("Cm3");
+ /** @brief constructor for @ref APE_t.CpuStatus. */
+ r32.setName("CpuStatus");
r32.setComponentOffset(0x108);
- bits.CPUStatus.setBaseRegister(&r32);
- bits.CPUStatus.setName("CPUStatus");
- bits.CPUStatus.setComponentOffset(0x108);
+ bits.Status.setBaseRegister(&r32);
+ bits.Status.setName("Status");
+ bits.Status.setComponentOffset(0x108);
+ bits.ActiveInterrupt.setBaseRegister(&r32);
+ bits.ActiveInterrupt.setName("ActiveInterrupt");
+ bits.ActiveInterrupt.setComponentOffset(0x108);
+ }
+ RegAPECpuStatus_t& operator=(const RegAPECpuStatus_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPECpuStatus_t;
+
+#define REG_APE_TX_TO_NET_POOL_MODE_STATUS_1 ((volatile BCM5719_APE_H_uint32_t*)0xc0010110) /* */
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT_SHIFT 0u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT_MASK 0x1u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT_DONE_SHIFT 1u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT_DONE_MASK 0x2u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_ENABLE_SHIFT 2u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_ENABLE_MASK 0x4u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_EMPTY_SHIFT 4u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_EMPTY_MASK 0x10u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_ERROR_SHIFT 5u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_ERROR_MASK 0x20u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_RESET_SHIFT 6u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_RESET_MASK 0x40u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_FULL_COUNT_SHIFT 8u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_1_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_1_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_1_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.TxToNetPoolModeStatus1. */
+typedef register_container RegAPETxToNetPoolModeStatus1_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "TxToNetPoolModeStatus1"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetPoolModeStatus1_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetPoolModeStatus1. */
+ r32.setName("TxToNetPoolModeStatus1");
+ r32.setComponentOffset(0x110);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x110);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x110);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x110);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x110);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x110);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x110);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x110);
+ }
+ RegAPETxToNetPoolModeStatus1_t& operator=(const RegAPETxToNetPoolModeStatus1_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetPoolModeStatus1_t;
+
+#define REG_APE_TX_TO_NET_BUFFER_ALLOCATOR_1 ((volatile BCM5719_APE_H_uint32_t*)0xc0010114) /* */
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_INDEX_SHIFT 0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_INDEX_MASK 0xfffu
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_1_INDEX(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_1_INDEX(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_INDEX_BLOCK_SIZE 0x80u
+
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_REQUEST_ALLOCATION_SHIFT 12u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_REQUEST_ALLOCATION_MASK 0x1000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_1_REQUEST_ALLOCATION(__reg__) (((__reg__) & 0x1000) >> 12u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_1_REQUEST_ALLOCATION(__val__) (((__val__) << 12u) & 0x1000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE_SHIFT 13u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE_MASK 0x6000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE(__reg__) (((__reg__) & 0x6000) >> 13u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE(__val__) (((__val__) << 13u) & 0x6000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE_PROCESSING 0x0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE_ALLOCATION_OK 0x1u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE_ERROR__EMPTY 0x2u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_1_STATE_ERROR__IN_HALT 0x3u
+
+
+/** @brief Register definition for @ref APE_t.TxToNetBufferAllocator1. */
+typedef register_container RegAPETxToNetBufferAllocator1_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, Index, 0, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Index, 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 "TxToNetBufferAllocator1"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferAllocator1_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferAllocator1. */
+ r32.setName("TxToNetBufferAllocator1");
+ r32.setComponentOffset(0x114);
+ bits.Index.setBaseRegister(&r32);
+ bits.Index.setName("Index");
+ bits.Index.setComponentOffset(0x114);
+ bits.RequestAllocation.setBaseRegister(&r32);
+ bits.RequestAllocation.setName("RequestAllocation");
+ bits.RequestAllocation.setComponentOffset(0x114);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x114);
+ }
+ RegAPETxToNetBufferAllocator1_t& operator=(const RegAPETxToNetBufferAllocator1_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferAllocator1_t;
+
+#define REG_APE_TX_TO_NET_DOORBELL_FUNC1 ((volatile BCM5719_APE_H_uint32_t*)0xc0010120) /* Written on APE TX to network after filling 0xA002 buffer with packet. */
+#define APE_TX_TO_NET_DOORBELL_FUNC1_TAIL_SHIFT 0u
+#define APE_TX_TO_NET_DOORBELL_FUNC1_TAIL_MASK 0xfffu
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC1_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC1_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_DOORBELL_FUNC1_HEAD_SHIFT 12u
+#define APE_TX_TO_NET_DOORBELL_FUNC1_HEAD_MASK 0xfff000u
+#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)
+
+/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc1. */
+typedef register_container RegAPETxToNetDoorbellFunc1_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, Length, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ /** @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 "TxToNetDoorbellFunc1"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetDoorbellFunc1_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetDoorbellFunc1. */
+ r32.setName("TxToNetDoorbellFunc1");
+ r32.setComponentOffset(0x120);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x120);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x120);
+ bits.Length.setBaseRegister(&r32);
+ bits.Length.setName("Length");
+ bits.Length.setComponentOffset(0x120);
+ }
+ RegAPETxToNetDoorbellFunc1_t& operator=(const RegAPETxToNetDoorbellFunc1_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetDoorbellFunc1_t;
+
+#define REG_APE_RXBUFOFFSET_FUNC2 ((volatile BCM5719_APE_H_uint32_t*)0xc0010200) /* This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer. */
+#define APE_RXBUFOFFSET_FUNC2_TAIL_SHIFT 0u
+#define APE_RXBUFOFFSET_FUNC2_TAIL_MASK 0xfffu
+#define GET_APE_RXBUFOFFSET_FUNC2_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_RXBUFOFFSET_FUNC2_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_RXBUFOFFSET_FUNC2_HEAD_SHIFT 12u
+#define APE_RXBUFOFFSET_FUNC2_HEAD_MASK 0xfff000u
+#define GET_APE_RXBUFOFFSET_FUNC2_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_RXBUFOFFSET_FUNC2_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RXBUFOFFSET_FUNC2_TO_HOST_SHIFT 24u
+#define APE_RXBUFOFFSET_FUNC2_TO_HOST_MASK 0x1000000u
+#define GET_APE_RXBUFOFFSET_FUNC2_TO_HOST(__reg__) (((__reg__) & 0x1000000) >> 24u)
+#define SET_APE_RXBUFOFFSET_FUNC2_TO_HOST(__val__) (((__val__) << 24u) & 0x1000000u)
+#define APE_RXBUFOFFSET_FUNC2_IP_FRAG_SHIFT 25u
+#define APE_RXBUFOFFSET_FUNC2_IP_FRAG_MASK 0x2000000u
+#define GET_APE_RXBUFOFFSET_FUNC2_IP_FRAG(__reg__) (((__reg__) & 0x2000000) >> 25u)
+#define SET_APE_RXBUFOFFSET_FUNC2_IP_FRAG(__val__) (((__val__) << 25u) & 0x2000000u)
+#define APE_RXBUFOFFSET_FUNC2_COUNT_SHIFT 26u
+#define APE_RXBUFOFFSET_FUNC2_COUNT_MASK 0x3c000000u
+#define GET_APE_RXBUFOFFSET_FUNC2_COUNT(__reg__) (((__reg__) & 0x3c000000) >> 26u)
+#define SET_APE_RXBUFOFFSET_FUNC2_COUNT(__val__) (((__val__) << 26u) & 0x3c000000u)
+#define APE_RXBUFOFFSET_FUNC2_VALID_SHIFT 30u
+#define APE_RXBUFOFFSET_FUNC2_VALID_MASK 0x40000000u
+#define GET_APE_RXBUFOFFSET_FUNC2_VALID(__reg__) (((__reg__) & 0x40000000) >> 30u)
+#define SET_APE_RXBUFOFFSET_FUNC2_VALID(__val__) (((__val__) << 30u) & 0x40000000u)
+
+/** @brief Register definition for @ref APE_t.RxbufoffsetFunc2. */
+typedef register_container RegAPERxbufoffsetFunc2_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, ToHost, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Valid, 30, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Valid, 30, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ToHost, 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 "RxbufoffsetFunc2"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxbufoffsetFunc2_t()
+ {
+ /** @brief constructor for @ref APE_t.RxbufoffsetFunc2. */
+ r32.setName("RxbufoffsetFunc2");
+ r32.setComponentOffset(0x200);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x200);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x200);
+ bits.ToHost.setBaseRegister(&r32);
+ bits.ToHost.setName("ToHost");
+ bits.ToHost.setComponentOffset(0x200);
+ bits.IPFrag.setBaseRegister(&r32);
+ bits.IPFrag.setName("IPFrag");
+ bits.IPFrag.setComponentOffset(0x200);
+ bits.Count.setBaseRegister(&r32);
+ bits.Count.setName("Count");
+ bits.Count.setComponentOffset(0x200);
+ bits.Valid.setBaseRegister(&r32);
+ bits.Valid.setName("Valid");
+ bits.Valid.setComponentOffset(0x200);
+ }
+ RegAPERxbufoffsetFunc2_t& operator=(const RegAPERxbufoffsetFunc2_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxbufoffsetFunc2_t;
+
+#define REG_APE_TX_TO_NET_DOORBELL_FUNC2 ((volatile BCM5719_APE_H_uint32_t*)0xc0010204) /* Written on APE TX to network after filling 0xA002 buffer with packet. */
+#define APE_TX_TO_NET_DOORBELL_FUNC2_TAIL_SHIFT 0u
+#define APE_TX_TO_NET_DOORBELL_FUNC2_TAIL_MASK 0xfffu
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC2_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC2_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_DOORBELL_FUNC2_HEAD_SHIFT 12u
+#define APE_TX_TO_NET_DOORBELL_FUNC2_HEAD_MASK 0xfff000u
+#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)
+
+/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc2. */
+typedef register_container RegAPETxToNetDoorbellFunc2_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, Length, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ /** @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 "TxToNetDoorbellFunc2"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetDoorbellFunc2_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetDoorbellFunc2. */
+ r32.setName("TxToNetDoorbellFunc2");
+ r32.setComponentOffset(0x204);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x204);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x204);
+ bits.Length.setBaseRegister(&r32);
+ bits.Length.setName("Length");
+ bits.Length.setComponentOffset(0x204);
+ }
+ RegAPETxToNetDoorbellFunc2_t& operator=(const RegAPETxToNetDoorbellFunc2_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetDoorbellFunc2_t;
+
+#define REG_APE_RX_POOL_MODE_STATUS_2 ((volatile BCM5719_APE_H_uint32_t*)0xc0010214) /* */
+#define APE_RX_POOL_MODE_STATUS_2_HALT_SHIFT 0u
+#define APE_RX_POOL_MODE_STATUS_2_HALT_MASK 0x1u
+#define GET_APE_RX_POOL_MODE_STATUS_2_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_RX_POOL_MODE_STATUS_2_HALT_DONE_SHIFT 1u
+#define APE_RX_POOL_MODE_STATUS_2_HALT_DONE_MASK 0x2u
+#define GET_APE_RX_POOL_MODE_STATUS_2_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_RX_POOL_MODE_STATUS_2_ENABLE_SHIFT 2u
+#define APE_RX_POOL_MODE_STATUS_2_ENABLE_MASK 0x4u
+#define GET_APE_RX_POOL_MODE_STATUS_2_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_RX_POOL_MODE_STATUS_2_EMPTY_SHIFT 4u
+#define APE_RX_POOL_MODE_STATUS_2_EMPTY_MASK 0x10u
+#define GET_APE_RX_POOL_MODE_STATUS_2_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_RX_POOL_MODE_STATUS_2_ERROR_SHIFT 5u
+#define APE_RX_POOL_MODE_STATUS_2_ERROR_MASK 0x20u
+#define GET_APE_RX_POOL_MODE_STATUS_2_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_RX_POOL_MODE_STATUS_2_RESET_SHIFT 6u
+#define APE_RX_POOL_MODE_STATUS_2_RESET_MASK 0x40u
+#define GET_APE_RX_POOL_MODE_STATUS_2_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_RX_POOL_MODE_STATUS_2_FULL_COUNT_SHIFT 8u
+#define APE_RX_POOL_MODE_STATUS_2_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_RX_POOL_MODE_STATUS_2_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_RX_POOL_MODE_STATUS_2_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.RxPoolModeStatus2. */
+typedef register_container RegAPERxPoolModeStatus2_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "RxPoolModeStatus2"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolModeStatus2_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolModeStatus2. */
+ r32.setName("RxPoolModeStatus2");
+ r32.setComponentOffset(0x214);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x214);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x214);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x214);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x214);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x214);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x214);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x214);
+ }
+ RegAPERxPoolModeStatus2_t& operator=(const RegAPERxPoolModeStatus2_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolModeStatus2_t;
+
+#define REG_APE_RX_POOL_RETIRE_2 ((volatile BCM5719_APE_H_uint32_t*)0xc0010218) /* Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+#define APE_RX_POOL_RETIRE_2_TAIL_SHIFT 0u
+#define APE_RX_POOL_RETIRE_2_TAIL_MASK 0xfffu
+#define GET_APE_RX_POOL_RETIRE_2_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_RX_POOL_RETIRE_2_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_RX_POOL_RETIRE_2_HEAD_SHIFT 12u
+#define APE_RX_POOL_RETIRE_2_HEAD_MASK 0xfff000u
+#define GET_APE_RX_POOL_RETIRE_2_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_RX_POOL_RETIRE_2_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RX_POOL_RETIRE_2_STATE_SHIFT 25u
+#define APE_RX_POOL_RETIRE_2_STATE_MASK 0x6000000u
+#define GET_APE_RX_POOL_RETIRE_2_STATE(__reg__) (((__reg__) & 0x6000000) >> 25u)
+#define SET_APE_RX_POOL_RETIRE_2_STATE(__val__) (((__val__) << 25u) & 0x6000000u)
+#define APE_RX_POOL_RETIRE_2_STATE_PROCESSING 0x0u
+#define APE_RX_POOL_RETIRE_2_STATE_RETIRED_OK 0x1u
+#define APE_RX_POOL_RETIRE_2_STATE_ERROR__FULL 0x2u
+#define APE_RX_POOL_RETIRE_2_STATE_ERROR__IN_HALT 0x3u
+
+#define APE_RX_POOL_RETIRE_2_COUNT_SHIFT 27u
+#define APE_RX_POOL_RETIRE_2_COUNT_MASK 0x78000000u
+#define GET_APE_RX_POOL_RETIRE_2_COUNT(__reg__) (((__reg__) & 0x78000000) >> 27u)
+#define SET_APE_RX_POOL_RETIRE_2_COUNT(__val__) (((__val__) << 27u) & 0x78000000u)
+
+/** @brief Register definition for @ref APE_t.RxPoolRetire2. */
+typedef register_container RegAPERxPoolRetire2_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 Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 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 "RxPoolRetire2"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolRetire2_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolRetire2. */
+ r32.setName("RxPoolRetire2");
+ r32.setComponentOffset(0x218);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x218);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x218);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x218);
+ bits.Count.setBaseRegister(&r32);
+ bits.Count.setName("Count");
+ bits.Count.setComponentOffset(0x218);
+ }
+ RegAPERxPoolRetire2_t& operator=(const RegAPERxPoolRetire2_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolRetire2_t;
+
+#define REG_APE_TX_TO_NET_POOL_MODE_STATUS_2 ((volatile BCM5719_APE_H_uint32_t*)0xc0010220) /* */
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT_SHIFT 0u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT_MASK 0x1u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT_DONE_SHIFT 1u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT_DONE_MASK 0x2u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_ENABLE_SHIFT 2u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_ENABLE_MASK 0x4u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_EMPTY_SHIFT 4u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_EMPTY_MASK 0x10u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_ERROR_SHIFT 5u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_ERROR_MASK 0x20u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_RESET_SHIFT 6u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_RESET_MASK 0x40u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_FULL_COUNT_SHIFT 8u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_2_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_2_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_2_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.TxToNetPoolModeStatus2. */
+typedef register_container RegAPETxToNetPoolModeStatus2_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "TxToNetPoolModeStatus2"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetPoolModeStatus2_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetPoolModeStatus2. */
+ r32.setName("TxToNetPoolModeStatus2");
+ r32.setComponentOffset(0x220);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x220);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x220);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x220);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x220);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x220);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x220);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x220);
+ }
+ RegAPETxToNetPoolModeStatus2_t& operator=(const RegAPETxToNetPoolModeStatus2_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetPoolModeStatus2_t;
+
+#define REG_APE_TX_TO_NET_BUFFER_ALLOCATOR_2 ((volatile BCM5719_APE_H_uint32_t*)0xc0010224) /* */
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_INDEX_SHIFT 0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_INDEX_MASK 0xfffu
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_2_INDEX(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_2_INDEX(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_INDEX_BLOCK_SIZE 0x80u
+
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_REQUEST_ALLOCATION_SHIFT 12u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_REQUEST_ALLOCATION_MASK 0x1000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_2_REQUEST_ALLOCATION(__reg__) (((__reg__) & 0x1000) >> 12u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_2_REQUEST_ALLOCATION(__val__) (((__val__) << 12u) & 0x1000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE_SHIFT 13u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE_MASK 0x6000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE(__reg__) (((__reg__) & 0x6000) >> 13u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE(__val__) (((__val__) << 13u) & 0x6000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE_PROCESSING 0x0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE_ALLOCATION_OK 0x1u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE_ERROR__EMPTY 0x2u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_2_STATE_ERROR__IN_HALT 0x3u
+
+
+/** @brief Register definition for @ref APE_t.TxToNetBufferAllocator2. */
+typedef register_container RegAPETxToNetBufferAllocator2_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, Index, 0, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Index, 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 "TxToNetBufferAllocator2"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferAllocator2_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferAllocator2. */
+ r32.setName("TxToNetBufferAllocator2");
+ r32.setComponentOffset(0x224);
+ bits.Index.setBaseRegister(&r32);
+ bits.Index.setName("Index");
+ bits.Index.setComponentOffset(0x224);
+ bits.RequestAllocation.setBaseRegister(&r32);
+ bits.RequestAllocation.setName("RequestAllocation");
+ bits.RequestAllocation.setComponentOffset(0x224);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x224);
+ }
+ RegAPETxToNetBufferAllocator2_t& operator=(const RegAPETxToNetBufferAllocator2_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferAllocator2_t;
+
+#define REG_APE_RXBUFOFFSET_FUNC3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010300) /* This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer. */
+#define APE_RXBUFOFFSET_FUNC3_TAIL_SHIFT 0u
+#define APE_RXBUFOFFSET_FUNC3_TAIL_MASK 0xfffu
+#define GET_APE_RXBUFOFFSET_FUNC3_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_RXBUFOFFSET_FUNC3_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_RXBUFOFFSET_FUNC3_HEAD_SHIFT 12u
+#define APE_RXBUFOFFSET_FUNC3_HEAD_MASK 0xfff000u
+#define GET_APE_RXBUFOFFSET_FUNC3_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_RXBUFOFFSET_FUNC3_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RXBUFOFFSET_FUNC3_TO_HOST_SHIFT 24u
+#define APE_RXBUFOFFSET_FUNC3_TO_HOST_MASK 0x1000000u
+#define GET_APE_RXBUFOFFSET_FUNC3_TO_HOST(__reg__) (((__reg__) & 0x1000000) >> 24u)
+#define SET_APE_RXBUFOFFSET_FUNC3_TO_HOST(__val__) (((__val__) << 24u) & 0x1000000u)
+#define APE_RXBUFOFFSET_FUNC3_IP_FRAG_SHIFT 25u
+#define APE_RXBUFOFFSET_FUNC3_IP_FRAG_MASK 0x2000000u
+#define GET_APE_RXBUFOFFSET_FUNC3_IP_FRAG(__reg__) (((__reg__) & 0x2000000) >> 25u)
+#define SET_APE_RXBUFOFFSET_FUNC3_IP_FRAG(__val__) (((__val__) << 25u) & 0x2000000u)
+#define APE_RXBUFOFFSET_FUNC3_COUNT_SHIFT 26u
+#define APE_RXBUFOFFSET_FUNC3_COUNT_MASK 0x3c000000u
+#define GET_APE_RXBUFOFFSET_FUNC3_COUNT(__reg__) (((__reg__) & 0x3c000000) >> 26u)
+#define SET_APE_RXBUFOFFSET_FUNC3_COUNT(__val__) (((__val__) << 26u) & 0x3c000000u)
+#define APE_RXBUFOFFSET_FUNC3_VALID_SHIFT 30u
+#define APE_RXBUFOFFSET_FUNC3_VALID_MASK 0x40000000u
+#define GET_APE_RXBUFOFFSET_FUNC3_VALID(__reg__) (((__reg__) & 0x40000000) >> 30u)
+#define SET_APE_RXBUFOFFSET_FUNC3_VALID(__val__) (((__val__) << 30u) & 0x40000000u)
+
+/** @brief Register definition for @ref APE_t.RxbufoffsetFunc3. */
+typedef register_container RegAPERxbufoffsetFunc3_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, ToHost, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Valid, 30, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Valid, 30, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 26, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, IPFrag, 25, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, ToHost, 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 "RxbufoffsetFunc3"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxbufoffsetFunc3_t()
+ {
+ /** @brief constructor for @ref APE_t.RxbufoffsetFunc3. */
+ r32.setName("RxbufoffsetFunc3");
+ r32.setComponentOffset(0x300);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x300);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x300);
+ bits.ToHost.setBaseRegister(&r32);
+ bits.ToHost.setName("ToHost");
+ bits.ToHost.setComponentOffset(0x300);
+ bits.IPFrag.setBaseRegister(&r32);
+ bits.IPFrag.setName("IPFrag");
+ bits.IPFrag.setComponentOffset(0x300);
+ bits.Count.setBaseRegister(&r32);
+ bits.Count.setName("Count");
+ bits.Count.setComponentOffset(0x300);
+ bits.Valid.setBaseRegister(&r32);
+ bits.Valid.setName("Valid");
+ bits.Valid.setComponentOffset(0x300);
+ }
+ RegAPERxbufoffsetFunc3_t& operator=(const RegAPERxbufoffsetFunc3_t& other)
+ {
+ r32 = other.r32;
+ return *this;
}
- RegAPECm3_t& operator=(const RegAPECm3_t& other)
+#endif /* CXX_SIMULATOR */
+} RegAPERxbufoffsetFunc3_t;
+
+#define REG_APE_TX_TO_NET_DOORBELL_FUNC3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010304) /* Written on APE TX to network after filling 0xA002 buffer with packet. */
+#define APE_TX_TO_NET_DOORBELL_FUNC3_TAIL_SHIFT 0u
+#define APE_TX_TO_NET_DOORBELL_FUNC3_TAIL_MASK 0xfffu
+#define GET_APE_TX_TO_NET_DOORBELL_FUNC3_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_DOORBELL_FUNC3_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_DOORBELL_FUNC3_HEAD_SHIFT 12u
+#define APE_TX_TO_NET_DOORBELL_FUNC3_HEAD_MASK 0xfff000u
+#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)
+
+/** @brief Register definition for @ref APE_t.TxToNetDoorbellFunc3. */
+typedef register_container RegAPETxToNetDoorbellFunc3_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, Length, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Length, 24, 8)
+ /** @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 "TxToNetDoorbellFunc3"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetDoorbellFunc3_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetDoorbellFunc3. */
+ r32.setName("TxToNetDoorbellFunc3");
+ r32.setComponentOffset(0x304);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x304);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x304);
+ bits.Length.setBaseRegister(&r32);
+ bits.Length.setName("Length");
+ bits.Length.setComponentOffset(0x304);
+ }
+ RegAPETxToNetDoorbellFunc3_t& operator=(const RegAPETxToNetDoorbellFunc3_t& other)
{
r32 = other.r32;
return *this;
}
#endif /* CXX_SIMULATOR */
-} RegAPECm3_t;
+} RegAPETxToNetDoorbellFunc3_t;
+
+#define REG_APE_RX_POOL_MODE_STATUS_3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010314) /* */
+#define APE_RX_POOL_MODE_STATUS_3_HALT_SHIFT 0u
+#define APE_RX_POOL_MODE_STATUS_3_HALT_MASK 0x1u
+#define GET_APE_RX_POOL_MODE_STATUS_3_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_RX_POOL_MODE_STATUS_3_HALT_DONE_SHIFT 1u
+#define APE_RX_POOL_MODE_STATUS_3_HALT_DONE_MASK 0x2u
+#define GET_APE_RX_POOL_MODE_STATUS_3_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_RX_POOL_MODE_STATUS_3_ENABLE_SHIFT 2u
+#define APE_RX_POOL_MODE_STATUS_3_ENABLE_MASK 0x4u
+#define GET_APE_RX_POOL_MODE_STATUS_3_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_RX_POOL_MODE_STATUS_3_EMPTY_SHIFT 4u
+#define APE_RX_POOL_MODE_STATUS_3_EMPTY_MASK 0x10u
+#define GET_APE_RX_POOL_MODE_STATUS_3_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_RX_POOL_MODE_STATUS_3_ERROR_SHIFT 5u
+#define APE_RX_POOL_MODE_STATUS_3_ERROR_MASK 0x20u
+#define GET_APE_RX_POOL_MODE_STATUS_3_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_RX_POOL_MODE_STATUS_3_RESET_SHIFT 6u
+#define APE_RX_POOL_MODE_STATUS_3_RESET_MASK 0x40u
+#define GET_APE_RX_POOL_MODE_STATUS_3_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_RX_POOL_MODE_STATUS_3_FULL_COUNT_SHIFT 8u
+#define APE_RX_POOL_MODE_STATUS_3_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_RX_POOL_MODE_STATUS_3_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_RX_POOL_MODE_STATUS_3_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.RxPoolModeStatus3. */
+typedef register_container RegAPERxPoolModeStatus3_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "RxPoolModeStatus3"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolModeStatus3_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolModeStatus3. */
+ r32.setName("RxPoolModeStatus3");
+ r32.setComponentOffset(0x314);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x314);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x314);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x314);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x314);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x314);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x314);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x314);
+ }
+ RegAPERxPoolModeStatus3_t& operator=(const RegAPERxPoolModeStatus3_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolModeStatus3_t;
+
+#define REG_APE_RX_POOL_RETIRE_3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010318) /* Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+#define APE_RX_POOL_RETIRE_3_TAIL_SHIFT 0u
+#define APE_RX_POOL_RETIRE_3_TAIL_MASK 0xfffu
+#define GET_APE_RX_POOL_RETIRE_3_TAIL(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_RX_POOL_RETIRE_3_TAIL(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_RX_POOL_RETIRE_3_HEAD_SHIFT 12u
+#define APE_RX_POOL_RETIRE_3_HEAD_MASK 0xfff000u
+#define GET_APE_RX_POOL_RETIRE_3_HEAD(__reg__) (((__reg__) & 0xfff000) >> 12u)
+#define SET_APE_RX_POOL_RETIRE_3_HEAD(__val__) (((__val__) << 12u) & 0xfff000u)
+#define APE_RX_POOL_RETIRE_3_STATE_SHIFT 25u
+#define APE_RX_POOL_RETIRE_3_STATE_MASK 0x6000000u
+#define GET_APE_RX_POOL_RETIRE_3_STATE(__reg__) (((__reg__) & 0x6000000) >> 25u)
+#define SET_APE_RX_POOL_RETIRE_3_STATE(__val__) (((__val__) << 25u) & 0x6000000u)
+#define APE_RX_POOL_RETIRE_3_STATE_PROCESSING 0x0u
+#define APE_RX_POOL_RETIRE_3_STATE_RETIRED_OK 0x1u
+#define APE_RX_POOL_RETIRE_3_STATE_ERROR__FULL 0x2u
+#define APE_RX_POOL_RETIRE_3_STATE_ERROR__IN_HALT 0x3u
+
+#define APE_RX_POOL_RETIRE_3_COUNT_SHIFT 27u
+#define APE_RX_POOL_RETIRE_3_COUNT_MASK 0x78000000u
+#define GET_APE_RX_POOL_RETIRE_3_COUNT(__reg__) (((__reg__) & 0x78000000) >> 27u)
+#define SET_APE_RX_POOL_RETIRE_3_COUNT(__val__) (((__val__) << 27u) & 0x78000000u)
+
+/** @brief Register definition for @ref APE_t.RxPoolRetire3. */
+typedef register_container RegAPERxPoolRetire3_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 Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 24, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_31, 31, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Count, 27, 4)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 25, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_24_24, 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 "RxPoolRetire3"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPERxPoolRetire3_t()
+ {
+ /** @brief constructor for @ref APE_t.RxPoolRetire3. */
+ r32.setName("RxPoolRetire3");
+ r32.setComponentOffset(0x318);
+ bits.Tail.setBaseRegister(&r32);
+ bits.Tail.setName("Tail");
+ bits.Tail.setComponentOffset(0x318);
+ bits.Head.setBaseRegister(&r32);
+ bits.Head.setName("Head");
+ bits.Head.setComponentOffset(0x318);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x318);
+ bits.Count.setBaseRegister(&r32);
+ bits.Count.setName("Count");
+ bits.Count.setComponentOffset(0x318);
+ }
+ RegAPERxPoolRetire3_t& operator=(const RegAPERxPoolRetire3_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPERxPoolRetire3_t;
+
+#define REG_APE_TX_TO_NET_POOL_MODE_STATUS_3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010320) /* */
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT_SHIFT 0u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT_MASK 0x1u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT(__reg__) (((__reg__) & 0x1) >> 0u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT(__val__) (((__val__) << 0u) & 0x1u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT_DONE_SHIFT 1u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT_DONE_MASK 0x2u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT_DONE(__reg__) (((__reg__) & 0x2) >> 1u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_HALT_DONE(__val__) (((__val__) << 1u) & 0x2u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_ENABLE_SHIFT 2u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_ENABLE_MASK 0x4u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_ENABLE(__reg__) (((__reg__) & 0x4) >> 2u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_ENABLE(__val__) (((__val__) << 2u) & 0x4u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_EMPTY_SHIFT 4u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_EMPTY_MASK 0x10u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_EMPTY(__reg__) (((__reg__) & 0x10) >> 4u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_EMPTY(__val__) (((__val__) << 4u) & 0x10u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_ERROR_SHIFT 5u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_ERROR_MASK 0x20u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_ERROR(__reg__) (((__reg__) & 0x20) >> 5u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_ERROR(__val__) (((__val__) << 5u) & 0x20u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_RESET_SHIFT 6u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_RESET_MASK 0x40u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_RESET(__reg__) (((__reg__) & 0x40) >> 6u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_RESET(__val__) (((__val__) << 6u) & 0x40u)
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_FULL_COUNT_SHIFT 8u
+#define APE_TX_TO_NET_POOL_MODE_STATUS_3_FULL_COUNT_MASK 0xffff00u
+#define GET_APE_TX_TO_NET_POOL_MODE_STATUS_3_FULL_COUNT(__reg__) (((__reg__) & 0xffff00) >> 8u)
+#define SET_APE_TX_TO_NET_POOL_MODE_STATUS_3_FULL_COUNT(__val__) (((__val__) << 8u) & 0xffff00u)
+
+/** @brief Register definition for @ref APE_t.TxToNetPoolModeStatus3. */
+typedef register_container RegAPETxToNetPoolModeStatus3_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, Halt, 0, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_24, 24, 8)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, FullCount, 8, 16)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_7_7, 7, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Reset, 6, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Error, 5, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Empty, 4, 1)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_3_3, 3, 1)
+ /** @brief Must set Enable before the APE TX To Net Buffer Allocator will work. */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Enable, 2, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, HaltDone, 1, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Halt, 0, 1)
+#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 "TxToNetPoolModeStatus3"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetPoolModeStatus3_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetPoolModeStatus3. */
+ r32.setName("TxToNetPoolModeStatus3");
+ r32.setComponentOffset(0x320);
+ bits.Halt.setBaseRegister(&r32);
+ bits.Halt.setName("Halt");
+ bits.Halt.setComponentOffset(0x320);
+ bits.HaltDone.setBaseRegister(&r32);
+ bits.HaltDone.setName("HaltDone");
+ bits.HaltDone.setComponentOffset(0x320);
+ bits.Enable.setBaseRegister(&r32);
+ bits.Enable.setName("Enable");
+ bits.Enable.setComponentOffset(0x320);
+ bits.Empty.setBaseRegister(&r32);
+ bits.Empty.setName("Empty");
+ bits.Empty.setComponentOffset(0x320);
+ bits.Error.setBaseRegister(&r32);
+ bits.Error.setName("Error");
+ bits.Error.setComponentOffset(0x320);
+ bits.Reset.setBaseRegister(&r32);
+ bits.Reset.setName("Reset");
+ bits.Reset.setComponentOffset(0x320);
+ bits.FullCount.setBaseRegister(&r32);
+ bits.FullCount.setName("FullCount");
+ bits.FullCount.setComponentOffset(0x320);
+ }
+ RegAPETxToNetPoolModeStatus3_t& operator=(const RegAPETxToNetPoolModeStatus3_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetPoolModeStatus3_t;
+
+#define REG_APE_TX_TO_NET_BUFFER_ALLOCATOR_3 ((volatile BCM5719_APE_H_uint32_t*)0xc0010324) /* */
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_INDEX_SHIFT 0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_INDEX_MASK 0xfffu
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_3_INDEX(__reg__) (((__reg__) & 0xfff) >> 0u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_3_INDEX(__val__) (((__val__) << 0u) & 0xfffu)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_INDEX_BLOCK_SIZE 0x80u
+
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_REQUEST_ALLOCATION_SHIFT 12u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_REQUEST_ALLOCATION_MASK 0x1000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_3_REQUEST_ALLOCATION(__reg__) (((__reg__) & 0x1000) >> 12u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_3_REQUEST_ALLOCATION(__val__) (((__val__) << 12u) & 0x1000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE_SHIFT 13u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE_MASK 0x6000u
+#define GET_APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE(__reg__) (((__reg__) & 0x6000) >> 13u)
+#define SET_APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE(__val__) (((__val__) << 13u) & 0x6000u)
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE_PROCESSING 0x0u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE_ALLOCATION_OK 0x1u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE_ERROR__EMPTY 0x2u
+#define APE_TX_TO_NET_BUFFER_ALLOCATOR_3_STATE_ERROR__IN_HALT 0x3u
+
+
+/** @brief Register definition for @ref APE_t.TxToNetBufferAllocator3. */
+typedef register_container RegAPETxToNetBufferAllocator3_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, Index, 0, 12)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+#elif defined(__BIG_ENDIAN__)
+ /** @brief Padding */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, reserved_31_15, 15, 17)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, State, 13, 2)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, RequestAllocation, 12, 1)
+ /** @brief */
+ BITFIELD_MEMBER(BCM5719_APE_H_uint32_t, Index, 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 "TxToNetBufferAllocator3"; }
+
+ /** @brief Print register value. */
+ void print(void) { r32.print(); }
+
+ RegAPETxToNetBufferAllocator3_t()
+ {
+ /** @brief constructor for @ref APE_t.TxToNetBufferAllocator3. */
+ r32.setName("TxToNetBufferAllocator3");
+ r32.setComponentOffset(0x324);
+ bits.Index.setBaseRegister(&r32);
+ bits.Index.setName("Index");
+ bits.Index.setComponentOffset(0x324);
+ bits.RequestAllocation.setBaseRegister(&r32);
+ bits.RequestAllocation.setName("RequestAllocation");
+ bits.RequestAllocation.setComponentOffset(0x324);
+ bits.State.setBaseRegister(&r32);
+ bits.State.setName("State");
+ bits.State.setComponentOffset(0x324);
+ }
+ RegAPETxToNetBufferAllocator3_t& operator=(const RegAPETxToNetBufferAllocator3_t& other)
+ {
+ r32 = other.r32;
+ return *this;
+ }
+#endif /* CXX_SIMULATOR */
+} RegAPETxToNetBufferAllocator3_t;
#define REG_APE_PER_LOCK_REQUEST_PHY0 ((volatile BCM5719_APE_H_uint32_t*)0xc0018400) /* This register, and the following Per Lock Request registers work the same. The tg3 driver uses 0x0000_1000 (APELOCK_PER_REQ_DRIVER) for PHY ports (or always for function 0). */
#define APE_PER_LOCK_REQUEST_PHY0_APE_SHIFT 0u
@@ -2954,10 +5211,13 @@ typedef struct {
/** @brief This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer. */
RegAPERxbufoffsetFunc1_t RxbufoffsetFunc1;
+ /** @brief Written on APE TX to network after filling 0xA002 buffer with packet. */
+ RegAPETxToNetDoorbellFunc0_t TxToNetDoorbellFunc0;
+
/** @brief Reserved bytes to pad out data structure. */
- BCM5719_APE_H_uint32_t reserved_28[4];
+ BCM5719_APE_H_uint32_t reserved_32[3];
- /** @brief Expansion for */
+ /** @brief Expansion for MODE */
RegAPEMode2_t Mode2;
/** @brief */
@@ -2970,10 +5230,40 @@ typedef struct {
RegAPELockGrantObsolete_t LockGrantObsolete;
/** @brief Reserved bytes to pad out data structure. */
- BCM5719_APE_H_uint32_t reserved_80[24];
+ BCM5719_APE_H_uint32_t reserved_80[10];
- /** @brief Unknown. */
- RegAPEB0_t B0;
+ /** @brief */
+ RegAPERxPoolModeStatus0_t RxPoolModeStatus0;
+
+ /** @brief */
+ RegAPERxPoolModeStatus1_t RxPoolModeStatus1;
+
+ /** @brief Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+ RegAPERxPoolRetire0_t RxPoolRetire0;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_132[1];
+
+ /** @brief Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+ RegAPERxPoolRetire1_t RxPoolRetire1;
+
+ /** @brief */
+ RegAPETxToNetPoolModeStatus0_t TxToNetPoolModeStatus0;
+
+ /** @brief */
+ RegAPETxToNetBufferAllocator0_t TxToNetBufferAllocator0;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_148[5];
+
+ /** @brief Unknown, monotonically increasing value. Increases at a rate of 1MHz. */
+ RegAPETick1mhz_t Tick1mhz;
+
+ /** @brief Unknown, monotonically increasing value. Increases at a rate of 1KHz. */
+ RegAPETick1khz_t Tick1khz;
+
+ /** @brief Unknown, monotonically increasing value. Increases at a rate of 10Hz. */
+ RegAPETick10hz_t Tick10hz;
/** @brief Reserved bytes to pad out data structure. */
BCM5719_APE_H_uint32_t reserved_180[1];
@@ -3006,10 +5296,79 @@ typedef struct {
BCM5719_APE_H_uint32_t reserved_252[3];
/** @brief Seems CPU control related. */
- RegAPECm3_t Cm3;
+ RegAPECpuStatus_t CpuStatus;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_268[1];
+
+ /** @brief */
+ RegAPETxToNetPoolModeStatus1_t TxToNetPoolModeStatus1;
+
+ /** @brief */
+ RegAPETxToNetBufferAllocator1_t TxToNetBufferAllocator1;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_280[2];
+
+ /** @brief Written on APE TX to network after filling 0xA002 buffer with packet. */
+ RegAPETxToNetDoorbellFunc1_t TxToNetDoorbellFunc1;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_292[55];
+
+ /** @brief This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer. */
+ RegAPERxbufoffsetFunc2_t RxbufoffsetFunc2;
+
+ /** @brief Written on APE TX to network after filling 0xA002 buffer with packet. */
+ RegAPETxToNetDoorbellFunc2_t TxToNetDoorbellFunc2;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_520[3];
+
+ /** @brief */
+ RegAPERxPoolModeStatus2_t RxPoolModeStatus2;
+
+ /** @brief Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+ RegAPERxPoolRetire2_t RxPoolRetire2;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_540[1];
+
+ /** @brief */
+ RegAPETxToNetPoolModeStatus2_t TxToNetPoolModeStatus2;
+
+ /** @brief */
+ RegAPETxToNetBufferAllocator2_t TxToNetBufferAllocator2;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_552[54];
+
+ /** @brief This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer. */
+ RegAPERxbufoffsetFunc3_t RxbufoffsetFunc3;
+
+ /** @brief Written on APE TX to network after filling 0xA002 buffer with packet. */
+ RegAPETxToNetDoorbellFunc3_t TxToNetDoorbellFunc3;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_776[3];
+
+ /** @brief */
+ RegAPERxPoolModeStatus3_t RxPoolModeStatus3;
+
+ /** @brief Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame. */
+ RegAPERxPoolRetire3_t RxPoolRetire3;
+
+ /** @brief Reserved bytes to pad out data structure. */
+ BCM5719_APE_H_uint32_t reserved_796[1];
+
+ /** @brief */
+ RegAPETxToNetPoolModeStatus3_t TxToNetPoolModeStatus3;
+
+ /** @brief */
+ RegAPETxToNetBufferAllocator3_t TxToNetBufferAllocator3;
/** @brief Reserved bytes to pad out data structure. */
- BCM5719_APE_H_uint32_t reserved_268[8381];
+ BCM5719_APE_H_uint32_t reserved_808[8246];
/** @brief This register, and the following Per Lock Request registers work the same. The tg3 driver uses 0x0000_1000 (APELOCK_PER_REQ_DRIVER) for PHY ports (or always for function 0). */
RegAPEPerLockRequestPhy0_t PerLockRequestPhy0;
diff --git a/ipxact/APE.xml b/ipxact/APE.xml
index 250d75d..0f0f103 100644
--- a/ipxact/APE.xml
+++ b/ipxact/APE.xml
@@ -21,6 +21,18 @@
<ipxact:addressUnitBits>32</ipxact:addressUnitBits>
</ipxact:memoryMap>
+ <!-- APE Registers: 0xC001_0000 to C001_8FFF-->
+ <ipxact:memoryMap>
+ <ipxact:name>APE</ipxact:name>
+ <ipxact:description>Device APE Registers</ipxact:description>
+ <ipxact:addressBlock>
+ <ipxact:name>APE</ipxact:name>
+ <ipxact:description>Device APE Registers</ipxact:description>
+ <ipxact:baseAddress>0x60200000</ipxact:baseAddress>
+ </ipxact:addressBlock>
+ <ipxact:addressUnitBits>8</ipxact:addressUnitBits>
+ </ipxact:memoryMap>
+
<!-- Device NVM Registers: 0x6024_0000 to 6024_0080 (APE) -->
<ipxact:memoryMap>
<ipxact:name>NVM</ipxact:name>
diff --git a/ipxact/APE_component.xml b/ipxact/APE_component.xml
new file mode 100644
index 0000000..eb10d05
--- /dev/null
+++ b/ipxact/APE_component.xml
@@ -0,0 +1,2538 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ipxact:component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ipxact="http://www.accellera.org/XMLSchema/IPXACT/1685-2014" xsi:schemaLocation="http://www.accellera.org/images/XMLSchema/IPXACT/1685-2014/index.xsd">
+ <ipxact:vendor>meklort</ipxact:vendor>
+ <ipxact:library>&lt;PROJECT&gt;</ipxact:library>
+ <ipxact:name>Register Definitions</ipxact:name>
+ <ipxact:version>1.0</ipxact:version>
+ <ipxact:memoryMaps>
+ <!-- APE Registers: 0xC001_0000 to C001_8FFF-->
+ <ipxact:memoryMap>
+ <ipxact:name>APE</ipxact:name>
+ <ipxact:description>Device APE Registers</ipxact:description>
+ <ipxact:addressBlock>
+ <ipxact:name>APE</ipxact:name>
+ <ipxact:description>Device APE Registers</ipxact:description>
+ <ipxact:typeIdentifier>APE</ipxact:typeIdentifier>>
+ <ipxact:baseAddress>0xC0010000</ipxact:baseAddress>
+ <!-- LINK: addressBlockDefinitionGroup: see 6.9.3, Address blockdefinition group -->
+ <!-- LINK: memoryBlockData: see 6.9.4, memoryBlockData group -->
+ <ipxact:usage>register</ipxact:usage>
+ <ipxact:volatile>false</ipxact:volatile>
+ <ipxact:register>
+ <ipxact:name>MODE</ipxact:name>
+ <ipxact:description>More of these bits can be found in diagnostic utilities, but they don't seem too interesting.</ipxact:description>
+ <ipxact:addressOffset>0x0</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>Reset</ipxact:name>
+ <ipxact:description>Used to reset the APE block.</ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt</ipxact:name>
+ <ipxact:description>APE is halted if set. Setting then unsetting this bit resets the APE to its reset vector, etc.</ipxact:description>
+ <ipxact:bitOffset>1</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Fast Boot</ipxact:name>
+ <ipxact:description>Can be used to boot from RAM instead of NVM. Takes a full APE image with section headers, etc. so you still need to form a proper image.</ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Host Diag</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Event 1</ipxact:name>
+ <ipxact:description>Used to signal the APE that an event from the host is ready for processing in SHM.</ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Event 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>GRCint</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>7</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>
+ <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>
+ <ipxact:addressOffset>0x4</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>PCIe Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>NVRAM Control Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>LAN 0 Dstate</ipxact:name>
+ <ipxact:description>Indicates port is in D3 if set, otherwise the port is in D0-D2.</ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Boot Mode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>NVRAM</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Fast</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>LAN 1 Dstate</ipxact:name>
+ <ipxact:description>Indicates port is in D3 if set, otherwise the port is in D0-D2.</ipxact:description>
+ <ipxact:bitOffset>9</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Boot Status B</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Prog 0</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Prog 1</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>BPC Enter</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Decode</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Read NVRAM Header</ipxact:name>
+ <ipxact:value>4</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Read Code</ipxact:name>
+ <ipxact:value>5</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Jump</ipxact:name>
+ <ipxact:value>6</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Prog 7</ipxact:name>
+ <ipxact:value>7</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>BPC Success</ipxact:name>
+ <ipxact:value>8</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Boot Status A</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>28</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>None</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>NMI Exception</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Fault Exception</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Memory Check</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Unknown 4</ipxact:name>
+ <ipxact:value>4</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Romloader Disabled</ipxact:name>
+ <ipxact:value>5</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Magic Number</ipxact:name>
+ <ipxact:value>6</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>APE Init Code</ipxact:name>
+ <ipxact:value>7</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Header Checksum</ipxact:name>
+ <ipxact:value>8</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>APE Header</ipxact:name>
+ <ipxact:value>9</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Image Checksum</ipxact:name>
+ <ipxact:value>10</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>NVRAM Checksum</ipxact:name>
+ <ipxact:value>11</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Invalid Type</ipxact:name>
+ <ipxact:value>12</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>ROM Loader Checksum</ipxact:name>
+ <ipxact:value>13</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Invalid Unzip Len</ipxact:name>
+ <ipxact:value>14</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Unknown F</ipxact:name>
+ <ipxact:value>15</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>GPIO_MESSAGE</ipxact:name>
+ <ipxact:description>Related to APE fastboot. In that case the value of it is an APE memory address in the code region. If Fast Boot is set, and the low two bits of this are not 0b10, ROM hangs (you have to OR 0x2 into the address). Otherwise, they are masked off and the resulting value is used as the reset vector. The resulting value is also stored in this register (i.e., the low two bits are cleared). </ipxact:description>
+ <ipxact:addressOffset>0x8</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>EVENT</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0xc</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>1</ipxact:name>
+ <ipxact:description>Event 1</ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RXBufOffset Func0</ipxact:name>
+ <ipxact:description>This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer.</ipxact:description>
+ <ipxact:addressOffset>0x14</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>To Host</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>IP Frag</ipxact:name>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:bitOffset>26</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Valid</ipxact:name>
+ <ipxact:bitOffset>30</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RXBufOffset Func1</ipxact:name>
+ <ipxact:description>This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer.</ipxact:description>
+ <ipxact:addressOffset>0x18</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>To Host</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>IP Frag</ipxact:name>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:bitOffset>26</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Valid</ipxact:name>
+ <ipxact:bitOffset>30</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Doorbell Func0</ipxact:name>
+ <ipxact:description>Written on APE TX to network after filling 0xA002 buffer with packet.</ipxact:description>
+ <ipxact:addressOffset>0x1c</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>Length</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>8</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>
+ <!-- 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>STATUS_2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x30</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>LOCK_GRANT__OBSOLETE_</ipxact:name>
+ <ipxact:description>See </ipxact:description>
+ <ipxact:addressOffset>0x4c</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>RX Pool Mode Status 0</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x78</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Mode Status 1</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x7c</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Retire 0</ipxact:name>
+ <ipxact:description>Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame.</ipxact:description>
+ <ipxact:addressOffset>0x80</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:description></ipxact:description>
+ <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:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Retired OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Full</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>27</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Retire 1</ipxact:name>
+ <ipxact:description>Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame.</ipxact:description>
+ <ipxact:addressOffset>0x88</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:description></ipxact:description>
+ <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:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Retired OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Full</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>27</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Pool Mode Status 0</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8c</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description>Must set Enable before the APE TX To Net Buffer Allocator will work.</ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Buffer Allocator 0</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x90</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>Index</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Block Size</ipxact:name>
+ <ipxact:value>128</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Request Allocation</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>13</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Allocation OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Empty</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ </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>
+ <!-- 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 1KHz</ipxact:name>
+ <ipxact:description>Unknown, monotonically increasing value. Increases at a rate of 1KHz.</ipxact:description>
+ <ipxact:addressOffset>0xac</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 10Hz</ipxact:name>
+ <ipxact:description>Unknown, monotonically increasing value. Increases at a rate of 10Hz.</ipxact:description>
+ <ipxact:addressOffset>0xb0</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>GPIO</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0xb8</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>PIN0 Unknown</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN1 Unknown</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>PIN2 Unknown</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN3 Unknown</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN0 Unknown Out</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN1 Unknown Out</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>9</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN2 Unknown Out</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>10</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN3 Unknown Out</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>11</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN0 Mode Output</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>16</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN1 Mode Output</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>17</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN2 Mode Output</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>18</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>PIN3 Mode Output</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>19</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>GINT</ipxact:name>
+ <ipxact:description>TODO: See diag for field info.</ipxact:description>
+ <ipxact:addressOffset>0xbc</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>OTP_CONTROL</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0xe8</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>Start</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Prog Enable</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>21</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>OTP_STATUS</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0xec</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>Command Done</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>OTP_ADDR</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0xf0</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>Address</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>31</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>CPU Enable</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>OTP_READ_DATA</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0xf8</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>CPU Status</ipxact:name>
+ <ipxact:description>Seems CPU control related.</ipxact:description>
+ <ipxact:addressOffset>0x108</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>Status</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Running</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Halted</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Locked Out</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Sleeping</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Deep Sleep</ipxact:name>
+ <ipxact:value>4</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Interrupt Pending</ipxact:name>
+ <ipxact:value>8</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Interrupt Entry</ipxact:name>
+ <ipxact:value>9</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Interrupt Exit</ipxact:name>
+ <ipxact:value>10</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Interrupt Return</ipxact:name>
+ <ipxact:value>11</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Active Interrupt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Pool Mode Status 1</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x110</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description>Must set Enable before the APE TX To Net Buffer Allocator will work.</ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Buffer Allocator 1</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x114</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>Index</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Block Size</ipxact:name>
+ <ipxact:value>128</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Request Allocation</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>13</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Allocation OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Empty</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Doorbell Func1</ipxact:name>
+ <ipxact:description>Written on APE TX to network after filling 0xA002 buffer with packet.</ipxact:description>
+ <ipxact:addressOffset>0x120</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>Length</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RXBufOffset Func2</ipxact:name>
+ <ipxact:description>This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer.</ipxact:description>
+ <ipxact:addressOffset>0x200</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>To Host</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>IP Frag</ipxact:name>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:bitOffset>26</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Valid</ipxact:name>
+ <ipxact:bitOffset>30</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Doorbell Func2</ipxact:name>
+ <ipxact:description>Written on APE TX to network after filling 0xA002 buffer with packet.</ipxact:description>
+ <ipxact:addressOffset>0x204</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>Length</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Mode Status 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x214</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Retire 2</ipxact:name>
+ <ipxact:description>Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame.</ipxact:description>
+ <ipxact:addressOffset>0x218</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:description></ipxact:description>
+ <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:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Retired OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Full</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>27</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Pool Mode Status 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x220</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description>Must set Enable before the APE TX To Net Buffer Allocator will work.</ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Buffer Allocator 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x224</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>Index</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Block Size</ipxact:name>
+ <ipxact:value>128</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Request Allocation</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>13</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Allocation OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Empty</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RXBufOffset Func3</ipxact:name>
+ <ipxact:description>This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer.</ipxact:description>
+ <ipxact:addressOffset>0x300</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>To Host</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>IP Frag</ipxact:name>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:bitOffset>26</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Valid</ipxact:name>
+ <ipxact:bitOffset>30</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Doorbell Func3</ipxact:name>
+ <ipxact:description>Written on APE TX to network after filling 0xA002 buffer with packet.</ipxact:description>
+ <ipxact:addressOffset>0x304</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>Length</ipxact:name>
+ <ipxact:bitOffset>24</ipxact:bitOffset>
+ <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Mode Status 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x314</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>RX Pool Retire 3</ipxact:name>
+ <ipxact:description>Used to indicate when the APE is done with a region of the 0xA000_0000 RX pool buffer so that it can be used to receive another frame.</ipxact:description>
+ <ipxact:addressOffset>0x318</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:description></ipxact:description>
+ <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:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>25</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Retired OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Full</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>27</ipxact:bitOffset>
+ <ipxact:bitWidth>4</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Pool Mode Status 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x320</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>Halt</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Halt Done</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>Enable</ipxact:name>
+ <ipxact:description>Must set Enable before the APE TX To Net Buffer Allocator will work.</ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Empty</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Error</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>5</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Reset</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>6</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Full Count</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>8</ipxact:bitOffset>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>TX To Net Buffer Allocator 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x324</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>Index</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>12</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Block Size</ipxact:name>
+ <ipxact:value>128</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Request Allocation</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>State</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>13</ipxact:bitOffset>
+ <ipxact:bitWidth>2</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>Processing</ipxact:name>
+ <ipxact:value>0</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Allocation OK</ipxact:name>
+ <ipxact:value>1</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: Empty</ipxact:name>
+ <ipxact:value>2</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>Error: In Halt</ipxact:name>
+ <ipxact:value>3</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_PHY0</ipxact:name>
+ <ipxact:description>This register, and the following Per Lock Request registers work the same. The tg3 driver uses 0x0000_1000 (APELOCK_PER_REQ_DRIVER) for PHY ports (or always for function 0).</ipxact:description>
+ <ipxact:addressOffset>0x8400</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_GRC</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8404</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_PHY1</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8408</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_PHY2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x840c</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_MEM</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8410</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_PHY3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8414</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_PORT6</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8418</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_REQUEST_GPIO</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x841c</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_PHY0</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8420</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_GRC</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8424</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_PHY1</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8428</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_PHY2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x842c</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_MEM</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8430</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_PHY3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8434</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_PORT6</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x8438</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ <ipxact:register>
+ <ipxact:name>PER_LOCK_GRANT_GPIO</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:addressOffset>0x843c</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>APE</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>0</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 1</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>Function 2</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>2</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Function 3</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>3</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Bootcode</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>4</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ <ipxact:field>
+ <ipxact:name>Driver</ipxact:name>
+ <ipxact:description></ipxact:description>
+ <ipxact:bitOffset>12</ipxact:bitOffset>
+ <ipxact:bitWidth>1</ipxact:bitWidth>
+ <ipxact:access>read-write</ipxact:access>
+ </ipxact:field>
+ </ipxact:register>
+ </ipxact:addressBlock>
+ <ipxact:addressUnitBits>8</ipxact:addressUnitBits>
+ </ipxact:memoryMap>
+ </ipxact:memoryMaps>
+</ipxact:component>
diff --git a/ipxact/bcm5719.xml b/ipxact/bcm5719.xml
index 87c49d8..ce52bee 100644
--- a/ipxact/bcm5719.xml
+++ b/ipxact/bcm5719.xml
@@ -776,1400 +776,6 @@
<ipxact:name>APE</ipxact:name>
<ipxact:description>Device APE Registers</ipxact:description>
<ipxact:baseAddress>0xC0010000</ipxact:baseAddress>
- <!-- LINK: addressBlockDefinitionGroup: see 6.9.3, Address blockdefinition group -->
- <!-- LINK: memoryBlockData: see 6.9.4, memoryBlockData group -->
- <ipxact:usage>register</ipxact:usage>
- <ipxact:volatile>false</ipxact:volatile>
- <ipxact:register>
- <ipxact:name>MODE</ipxact:name>
- <ipxact:description>More of these bits can be found in diagnostic utilities, but they don't seem too interesting.</ipxact:description>
- <ipxact:addressOffset>0x0</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>Reset</ipxact:name>
- <ipxact:description>Used to reset the APE block.</ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Halt</ipxact:name>
- <ipxact:description>APE is halted if set. Setting then unsetting this bit resets the APE to its reset vector, etc.</ipxact:description>
- <ipxact:bitOffset>1</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Fast Boot</ipxact:name>
- <ipxact:description>Can be used to boot from RAM instead of NVM. Takes a full APE image with section headers, etc. so you still need to form a proper image.</ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Host Diag</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Event 1</ipxact:name>
- <ipxact:description>Used to signal the APE that an event from the host is ready for processing in SHM.</ipxact:description>
- <ipxact:bitOffset>5</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Event 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>6</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>GRCint</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>7</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>
- <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>
- <ipxact:addressOffset>0x4</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>PCIe Reset</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>NVRAM Control Reset</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>LAN 0 Dstate</ipxact:name>
- <ipxact:description>Indicates port is in D3 if set, otherwise the port is in D0-D2.</ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Boot Mode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>5</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- <ipxact:enumeratedValues>
- <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
- <ipxact:enumeratedValue>
- <ipxact:name>NVRAM</ipxact:name>
- <ipxact:value>0</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Fast</ipxact:name>
- <ipxact:value>1</ipxact:value>
- </ipxact:enumeratedValue>
- </ipxact:enumeratedValues>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>LAN 1 Dstate</ipxact:name>
- <ipxact:description>Indicates port is in D3 if set, otherwise the port is in D0-D2.</ipxact:description>
- <ipxact:bitOffset>9</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Boot Status B</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>24</ipxact:bitOffset>
- <ipxact:bitWidth>4</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- <ipxact:enumeratedValues>
- <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
- <ipxact:enumeratedValue>
- <ipxact:name>Prog 0</ipxact:name>
- <ipxact:value>0</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Prog 1</ipxact:name>
- <ipxact:value>1</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>BPC Enter</ipxact:name>
- <ipxact:value>2</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Decode</ipxact:name>
- <ipxact:value>3</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Read NVRAM Header</ipxact:name>
- <ipxact:value>4</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Read Code</ipxact:name>
- <ipxact:value>5</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Jump</ipxact:name>
- <ipxact:value>6</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Prog 7</ipxact:name>
- <ipxact:value>7</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>BPC Success</ipxact:name>
- <ipxact:value>8</ipxact:value>
- </ipxact:enumeratedValue>
- </ipxact:enumeratedValues>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Boot Status A</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>28</ipxact:bitOffset>
- <ipxact:bitWidth>4</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- <ipxact:enumeratedValues>
- <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
- <ipxact:enumeratedValue>
- <ipxact:name>None</ipxact:name>
- <ipxact:value>0</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>NMI Exception</ipxact:name>
- <ipxact:value>1</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Fault Exception</ipxact:name>
- <ipxact:value>2</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Memory Check</ipxact:name>
- <ipxact:value>3</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Unknown 4</ipxact:name>
- <ipxact:value>4</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Romloader Disabled</ipxact:name>
- <ipxact:value>5</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Magic Number</ipxact:name>
- <ipxact:value>6</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>APE Init Code</ipxact:name>
- <ipxact:value>7</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Header Checksum</ipxact:name>
- <ipxact:value>8</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>APE Header</ipxact:name>
- <ipxact:value>9</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Image Checksum</ipxact:name>
- <ipxact:value>10</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>NVRAM Checksum</ipxact:name>
- <ipxact:value>11</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Invalid Type</ipxact:name>
- <ipxact:value>12</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>ROM Loader Checksum</ipxact:name>
- <ipxact:value>13</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Invalid Unzip Len</ipxact:name>
- <ipxact:value>14</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Unknown F</ipxact:name>
- <ipxact:value>15</ipxact:value>
- </ipxact:enumeratedValue>
- </ipxact:enumeratedValues>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>GPIO_MESSAGE</ipxact:name>
- <ipxact:description>Related to APE fastboot. In that case the value of it is an APE memory address in the code region. If Fast Boot is set, and the low two bits of this are not 0b10, ROM hangs (you have to OR 0x2 into the address). Otherwise, they are masked off and the resulting value is used as the reset vector. The resulting value is also stored in this register (i.e., the low two bits are cleared). </ipxact:description>
- <ipxact:addressOffset>0x8</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>EVENT</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0xc</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>1</ipxact:name>
- <ipxact:description>Event 1</ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>RXBufOffset Func0</ipxact:name>
- <ipxact:description>This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer.</ipxact:description>
- <ipxact:addressOffset>0x14</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>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>Count</ipxact:name>
- <ipxact:bitOffset>26</ipxact:bitOffset>
- <ipxact:bitWidth>4</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Valid</ipxact:name>
- <ipxact:bitOffset>30</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>RXBufOffset Func1</ipxact:name>
- <ipxact:description>This is examined on the APE Packet RX interrupt, and indicates the offset of an incoming (from-network) frame within the APE memory space, which provides access to the from-network RX buffer.</ipxact:description>
- <ipxact:addressOffset>0x18</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>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>Count</ipxact:name>
- <ipxact:bitOffset>26</ipxact:bitOffset>
- <ipxact:bitWidth>4</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Valid</ipxact:name>
- <ipxact:bitOffset>30</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>MODE_2</ipxact:name>
- <ipxact:description>Expansion for </ipxact:description>
- <ipxact:addressOffset>0x2c</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>STATUS_2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x30</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>LOCK_GRANT__OBSOLETE_</ipxact:name>
- <ipxact:description>See </ipxact:description>
- <ipxact:addressOffset>0x4c</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>B0</ipxact:name>
- <ipxact:description>Unknown.</ipxact:description>
- <ipxact:addressOffset>0xb0</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>GPIO</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0xb8</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>PIN0 Unknown</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN1 Unknown</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>PIN2 Unknown</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN3 Unknown</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN0 Unknown Out</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>8</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN1 Unknown Out</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>9</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN2 Unknown Out</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>10</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN3 Unknown Out</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>11</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN0 Mode Output</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>16</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN1 Mode Output</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>17</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN2 Mode Output</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>18</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>PIN3 Mode Output</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>19</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>GINT</ipxact:name>
- <ipxact:description>TODO: See diag for field info.</ipxact:description>
- <ipxact:addressOffset>0xbc</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>OTP_CONTROL</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0xe8</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>Start</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Prog Enable</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>21</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>OTP_STATUS</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0xec</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>Command Done</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>OTP_ADDR</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0xf0</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>Address</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>31</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>CPU Enable</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>OTP_READ_DATA</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0xf8</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>CM3</ipxact:name>
- <ipxact:description>Seems CPU control related.</ipxact:description>
- <ipxact:addressOffset>0x108</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>CPU Status</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>4</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- <ipxact:enumeratedValues>
- <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
- <ipxact:enumeratedValue>
- <ipxact:name>Running</ipxact:name>
- <ipxact:value>0</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Halted</ipxact:name>
- <ipxact:value>1</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Locked Out</ipxact:name>
- <ipxact:value>2</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Sleeping</ipxact:name>
- <ipxact:value>3</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Deep Sleep</ipxact:name>
- <ipxact:value>4</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Interrupt Pending</ipxact:name>
- <ipxact:value>8</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Interrupt Entry</ipxact:name>
- <ipxact:value>9</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Interrupt Exit</ipxact:name>
- <ipxact:value>10</ipxact:value>
- </ipxact:enumeratedValue>
- <ipxact:enumeratedValue>
- <ipxact:name>Interrupt Return</ipxact:name>
- <ipxact:value>11</ipxact:value>
- </ipxact:enumeratedValue>
- </ipxact:enumeratedValues>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_PHY0</ipxact:name>
- <ipxact:description>This register, and the following Per Lock Request registers work the same. The tg3 driver uses 0x0000_1000 (APELOCK_PER_REQ_DRIVER) for PHY ports (or always for function 0).</ipxact:description>
- <ipxact:addressOffset>0x8400</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_GRC</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8404</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_PHY1</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8408</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_PHY2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x840c</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_MEM</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8410</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_PHY3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8414</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_PORT6</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8418</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_REQUEST_GPIO</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x841c</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_PHY0</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8420</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_GRC</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8424</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_PHY1</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8428</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_PHY2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x842c</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_MEM</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8430</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_PHY3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8434</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_PORT6</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x8438</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
- <ipxact:register>
- <ipxact:name>PER_LOCK_GRANT_GPIO</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:addressOffset>0x843c</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>APE</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 1</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>Function 2</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>2</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Function 3</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>3</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Bootcode</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>4</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Driver</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>12</ipxact:bitOffset>
- <ipxact:bitWidth>1</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- </ipxact:register>
</ipxact:addressBlock>
<ipxact:addressUnitBits>8</ipxact:addressUnitBits>
</ipxact:memoryMap>
diff --git a/ipxact/regen.sh b/ipxact/regen.sh
index a3702a9..e392d03 100755
--- a/ipxact/regen.sh
+++ b/ipxact/regen.sh
@@ -1,11 +1,11 @@
#!/bin/bash
-
+set -e
IPXACT=~/ipxact/build/ipxact
PROJECT=bcm5719
echo "Regenerating Bcm5719 header"
-${IPXACT} -p ${PROJECT} SHM.xml DEVICE.xml NVM.xml bcm5719.xml bcm5719_full.xml
+${IPXACT} -p ${PROJECT} APE_component.xml SHM.xml DEVICE.xml NVM.xml bcm5719.xml bcm5719_full.xml
${IPXACT} -p ${PROJECT} bcm5719_full.xml bcm5719.h
@@ -34,7 +34,7 @@ PROJECT=ape
echo "Regenerating APE header"
-${IPXACT} -p ${PROJECT} FILTERS.xml SHM.xml NVIC.xml DEVICE.xml NVM.xml APE.xml APE_full.xml
+${IPXACT} -p ${PROJECT} APE_component.xml FILTERS.xml SHM.xml NVIC.xml DEVICE.xml NVM.xml APE.xml APE_full.xml
${IPXACT} -p ${PROJECT} APE_full.xml APE.h
mv APE_NVIC.h ../include/
diff --git a/libs/bcm5719/APE_sym.s b/libs/bcm5719/APE_sym.s
index 90d7baa..e5d6e97 100644
--- a/libs/bcm5719/APE_sym.s
+++ b/libs/bcm5719/APE_sym.s
@@ -44,6 +44,10 @@
### @endcond
################################################################################
+.global APE
+.equ APE, 0x60200000
+.size APE, 0x8440
+
.global DEVICE
.equ DEVICE, 0xa0040000
.size DEVICE, 0x7c08
diff --git a/simulator/bcm5719_APE.cpp b/simulator/bcm5719_APE.cpp
index 5f7b0f0..e572a34 100644
--- a/simulator/bcm5719_APE.cpp
+++ b/simulator/bcm5719_APE.cpp
@@ -61,13 +61,31 @@ void init_bcm5719_APE(void)
/** @brief Bitmap for @ref APE_t.RxbufoffsetFunc1. */
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc0. */
+
/** @brief Bitmap for @ref APE_t.Mode2. */
/** @brief Bitmap for @ref APE_t.Status2. */
/** @brief Bitmap for @ref APE_t.LockGrantObsolete. */
- /** @brief Bitmap for @ref APE_t.B0. */
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus0. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus1. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire0. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire1. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus0. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator0. */
+
+ /** @brief Bitmap for @ref APE_t.Tick1mhz. */
+
+ /** @brief Bitmap for @ref APE_t.Tick1khz. */
+
+ /** @brief Bitmap for @ref APE_t.Tick10hz. */
/** @brief Bitmap for @ref APE_t.Gpio. */
@@ -81,7 +99,37 @@ void init_bcm5719_APE(void)
/** @brief Bitmap for @ref APE_t.OtpReadData. */
- /** @brief Bitmap for @ref APE_t.Cm3. */
+ /** @brief Bitmap for @ref APE_t.CpuStatus. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus1. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator1. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc1. */
+
+ /** @brief Bitmap for @ref APE_t.RxbufoffsetFunc2. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc2. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus2. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire2. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus2. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator2. */
+
+ /** @brief Bitmap for @ref APE_t.RxbufoffsetFunc3. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc3. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus3. */
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire3. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus3. */
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator3. */
/** @brief Bitmap for @ref APE_t.PerLockRequestPhy0. */
diff --git a/simulator/bcm5719_APE_sim.cpp b/simulator/bcm5719_APE_sim.cpp
index 7e2ae94..e733268 100644
--- a/simulator/bcm5719_APE_sim.cpp
+++ b/simulator/bcm5719_APE_sim.cpp
@@ -105,6 +105,10 @@ void init_bcm5719_APE_sim(void *base)
APE.RxbufoffsetFunc1.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.RxbufoffsetFunc1.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc0. */
+ 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.Mode2. */
APE.Mode2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.Mode2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
@@ -117,9 +121,41 @@ void init_bcm5719_APE_sim(void *base)
APE.LockGrantObsolete.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.LockGrantObsolete.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
- /** @brief Bitmap for @ref APE_t.B0. */
- APE.B0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
- APE.B0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus0. */
+ APE.RxPoolModeStatus0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolModeStatus0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus1. */
+ APE.RxPoolModeStatus1.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolModeStatus1.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire0. */
+ APE.RxPoolRetire0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolRetire0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire1. */
+ APE.RxPoolRetire1.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolRetire1.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus0. */
+ APE.TxToNetPoolModeStatus0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetPoolModeStatus0.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator0. */
+ 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.Tick1mhz. */
+ APE.Tick1mhz.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.Tick1mhz.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.Tick1khz. */
+ APE.Tick1khz.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.Tick1khz.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.Tick10hz. */
+ APE.Tick10hz.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.Tick10hz.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
/** @brief Bitmap for @ref APE_t.Gpio. */
APE.Gpio.r32.installReadCallback(read_from_ram, (uint8_t *)base);
@@ -145,9 +181,69 @@ void init_bcm5719_APE_sim(void *base)
APE.OtpReadData.r32.installReadCallback(read_from_ram, (uint8_t *)base);
APE.OtpReadData.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
- /** @brief Bitmap for @ref APE_t.Cm3. */
- APE.Cm3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
- APE.Cm3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+ /** @brief Bitmap for @ref APE_t.CpuStatus. */
+ APE.CpuStatus.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.CpuStatus.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus1. */
+ APE.TxToNetPoolModeStatus1.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetPoolModeStatus1.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator1. */
+ APE.TxToNetBufferAllocator1.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetBufferAllocator1.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc1. */
+ APE.TxToNetDoorbellFunc1.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetDoorbellFunc1.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxbufoffsetFunc2. */
+ APE.RxbufoffsetFunc2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxbufoffsetFunc2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc2. */
+ APE.TxToNetDoorbellFunc2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetDoorbellFunc2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus2. */
+ APE.RxPoolModeStatus2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolModeStatus2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire2. */
+ APE.RxPoolRetire2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolRetire2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus2. */
+ APE.TxToNetPoolModeStatus2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetPoolModeStatus2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator2. */
+ APE.TxToNetBufferAllocator2.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetBufferAllocator2.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxbufoffsetFunc3. */
+ APE.RxbufoffsetFunc3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxbufoffsetFunc3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetDoorbellFunc3. */
+ APE.TxToNetDoorbellFunc3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetDoorbellFunc3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolModeStatus3. */
+ APE.RxPoolModeStatus3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolModeStatus3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.RxPoolRetire3. */
+ APE.RxPoolRetire3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.RxPoolRetire3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetPoolModeStatus3. */
+ APE.TxToNetPoolModeStatus3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetPoolModeStatus3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
+
+ /** @brief Bitmap for @ref APE_t.TxToNetBufferAllocator3. */
+ APE.TxToNetBufferAllocator3.r32.installReadCallback(read_from_ram, (uint8_t *)base);
+ APE.TxToNetBufferAllocator3.r32.installWriteCallback(write_to_ram, (uint8_t *)base);
/** @brief Bitmap for @ref APE_t.PerLockRequestPhy0. */
APE.PerLockRequestPhy0.r32.installReadCallback(read_from_ram, (uint8_t *)base);
OpenPOWER on IntegriCloud