xref: /onnv-gate/usr/src/uts/common/io/hxge/hxge_rdc_hw.h (revision 6864:50c1b31ccb24)
16349Sqs148142 /*
26349Sqs148142  * CDDL HEADER START
36349Sqs148142  *
46349Sqs148142  * The contents of this file are subject to the terms of the
56349Sqs148142  * Common Development and Distribution License (the "License").
66349Sqs148142  * You may not use this file except in compliance with the License.
76349Sqs148142  *
86349Sqs148142  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96349Sqs148142  * or http://www.opensolaris.org/os/licensing.
106349Sqs148142  * See the License for the specific language governing permissions
116349Sqs148142  * and limitations under the License.
126349Sqs148142  *
136349Sqs148142  * When distributing Covered Code, include this CDDL HEADER in each
146349Sqs148142  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
156349Sqs148142  * If applicable, add the following below this CDDL HEADER, with the
166349Sqs148142  * fields enclosed by brackets "[]" replaced with your own identifying
176349Sqs148142  * information: Portions Copyright [yyyy] [name of copyright owner]
186349Sqs148142  *
196349Sqs148142  * CDDL HEADER END
206349Sqs148142  */
216349Sqs148142 /*
226349Sqs148142  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
236349Sqs148142  * Use is subject to license terms.
246349Sqs148142  */
256349Sqs148142 
266349Sqs148142 #ifndef	_HXGE_RDC_HW_H
276349Sqs148142 #define	_HXGE_RDC_HW_H
286349Sqs148142 
296349Sqs148142 #pragma ident	"%Z%%M%	%I%	%E% SMI"
306349Sqs148142 
316349Sqs148142 #ifdef	__cplusplus
326349Sqs148142 extern "C" {
336349Sqs148142 #endif
346349Sqs148142 
356349Sqs148142 #define	RDC_BASE_ADDR				0X00300000
366349Sqs148142 
376349Sqs148142 #define	RDC_PAGE_HANDLE				(RDC_BASE_ADDR + 0x8)
386349Sqs148142 #define	RDC_RX_CFG1				(RDC_BASE_ADDR + 0x20)
396349Sqs148142 #define	RDC_RX_CFG2				(RDC_BASE_ADDR + 0x28)
406349Sqs148142 #define	RDC_RBR_CFG_A				(RDC_BASE_ADDR + 0x40)
416349Sqs148142 #define	RDC_RBR_CFG_B				(RDC_BASE_ADDR + 0x48)
426349Sqs148142 #define	RDC_RBR_KICK				(RDC_BASE_ADDR + 0x50)
436349Sqs148142 #define	RDC_RBR_QLEN				(RDC_BASE_ADDR + 0x58)
446349Sqs148142 #define	RDC_RBR_HEAD				(RDC_BASE_ADDR + 0x68)
456349Sqs148142 #define	RDC_RCR_CFG_A				(RDC_BASE_ADDR + 0x80)
466349Sqs148142 #define	RDC_RCR_CFG_B				(RDC_BASE_ADDR + 0x88)
476349Sqs148142 #define	RDC_RCR_QLEN				(RDC_BASE_ADDR + 0x90)
486349Sqs148142 #define	RDC_RCR_TAIL				(RDC_BASE_ADDR + 0xA0)
496349Sqs148142 #define	RDC_RCR_FLUSH				(RDC_BASE_ADDR + 0xA8)
506349Sqs148142 #define	RDC_CLOCK_DIV				(RDC_BASE_ADDR + 0xB0)
516349Sqs148142 #define	RDC_INT_MASK				(RDC_BASE_ADDR + 0xB8)
526349Sqs148142 #define	RDC_STAT				(RDC_BASE_ADDR + 0xC0)
536349Sqs148142 #define	RDC_PKT_COUNT				(RDC_BASE_ADDR + 0xD0)
546349Sqs148142 #define	RDC_DROP_COUNT				(RDC_BASE_ADDR + 0xD8)
556349Sqs148142 #define	RDC_BYTE_COUNT				(RDC_BASE_ADDR + 0xE0)
566349Sqs148142 #define	RDC_PREF_CMD				(RDC_BASE_ADDR + 0x100)
576349Sqs148142 #define	RDC_PREF_DATA				(RDC_BASE_ADDR + 0x108)
586349Sqs148142 #define	RDC_SHADOW_CMD				(RDC_BASE_ADDR + 0x110)
596349Sqs148142 #define	RDC_SHADOW_DATA				(RDC_BASE_ADDR + 0x118)
606349Sqs148142 #define	RDC_SHADOW_PAR_DATA			(RDC_BASE_ADDR + 0x120)
616349Sqs148142 #define	RDC_CTRL_FIFO_CMD			(RDC_BASE_ADDR + 0x128)
626349Sqs148142 #define	RDC_CTRL_FIFO_DATA_LO			(RDC_BASE_ADDR + 0x130)
636349Sqs148142 #define	RDC_CTRL_FIFO_DATA_HI			(RDC_BASE_ADDR + 0x138)
646349Sqs148142 #define	RDC_CTRL_FIFO_DATA_ECC			(RDC_BASE_ADDR + 0x140)
656349Sqs148142 #define	RDC_DATA_FIFO_CMD			(RDC_BASE_ADDR + 0x148)
666349Sqs148142 #define	RDC_DATA_FIFO_DATA_LO			(RDC_BASE_ADDR + 0x150)
676349Sqs148142 #define	RDC_DATA_FIFO_DATA_HI			(RDC_BASE_ADDR + 0x158)
686349Sqs148142 #define	RDC_DATA_FIFO_DATA_ECC			(RDC_BASE_ADDR + 0x160)
696349Sqs148142 #define	RDC_STAT_INT_DBG			(RDC_BASE_ADDR + 0x200)
706349Sqs148142 #define	RDC_PREF_PAR_LOG			(RDC_BASE_ADDR + 0x210)
716349Sqs148142 #define	RDC_SHADOW_PAR_LOG			(RDC_BASE_ADDR + 0x218)
726349Sqs148142 #define	RDC_CTRL_FIFO_ECC_LOG			(RDC_BASE_ADDR + 0x220)
736349Sqs148142 #define	RDC_DATA_FIFO_ECC_LOG			(RDC_BASE_ADDR + 0x228)
746349Sqs148142 #define	RDC_FIFO_ERR_INT_MASK			(RDC_BASE_ADDR + 0x230)
756349Sqs148142 #define	RDC_FIFO_ERR_STAT			(RDC_BASE_ADDR + 0x238)
766349Sqs148142 #define	RDC_FIFO_ERR_INT_DBG			(RDC_BASE_ADDR + 0x240)
776349Sqs148142 #define	RDC_PEU_TXN_LOG				(RDC_BASE_ADDR + 0x250)
786349Sqs148142 #define	RDC_DBG_TRAINING_VEC			(RDC_BASE_ADDR + 0x300)
796349Sqs148142 #define	RDC_DBG_GRP_SEL				(RDC_BASE_ADDR + 0x308)
806349Sqs148142 
816349Sqs148142 
826349Sqs148142 /*
836349Sqs148142  * Register: RdcPageHandle
846349Sqs148142  * Logical Page Handle
856349Sqs148142  * Description: Logical page handle specifying upper bits of 64-bit
866349Sqs148142  * PCIE addresses. Fields in this register are part of the dma
876349Sqs148142  * configuration and cannot be changed once the dma is enabled.
886349Sqs148142  * Fields:
896349Sqs148142  *     Bits [63:44] of a 64-bit address, used to concatenate to a
906349Sqs148142  *     44-bit address when generating 64-bit addresses on the PCIE
916349Sqs148142  *     bus.
926349Sqs148142  */
936349Sqs148142 typedef union {
946349Sqs148142 	uint64_t value;
956349Sqs148142 	struct {
966349Sqs148142 #if defined(_BIG_ENDIAN)
97*6864Sqs148142 		uint32_t	rsrvd:32;
98*6864Sqs148142 		uint32_t	rsrvd_l:12;
99*6864Sqs148142 		uint32_t	handle:20;
1006349Sqs148142 #else
101*6864Sqs148142 		uint32_t	handle:20;
102*6864Sqs148142 		uint32_t	rsrvd_l:12;
103*6864Sqs148142 		uint32_t	rsrvd:32;
1046349Sqs148142 #endif
1056349Sqs148142 	} bits;
1066349Sqs148142 } rdc_page_handle_t;
1076349Sqs148142 
1086349Sqs148142 
1096349Sqs148142 /*
1106349Sqs148142  * Register: RdcRxCfg1
1116349Sqs148142  * DMA Configuration 1
1126349Sqs148142  * Description: Configuration parameters for receive DMA block.
1136349Sqs148142  * Fields in this register are part of the dma configuration and
1146349Sqs148142  * cannot be changed once the dma is enabled.
1156349Sqs148142  * The usage of enable, reset, and qst is as follows. Software
1166349Sqs148142  * should use the following sequence to reset a DMA channel. First,
1176349Sqs148142  * set DMA.enable to 0, wait for DMA.qst=1 and then, set DMA.reset to
1186349Sqs148142  * 1. After DMA.reset is cleared by hardware and the DMA.qst is set
1196349Sqs148142  * to 1, software may then start configuring the DMA channel. The
1206349Sqs148142  * DMA.enable can be set or cleared while the DMA is in operation.
1216349Sqs148142  * The state machines of the DMA may not have returned to its initial
1226349Sqs148142  * states yet after the DMA.enable bit is cleared. This condition is
1236349Sqs148142  * indicated by the value of the DMA.qst. An example of DMA.enable
1246349Sqs148142  * being cleared during operation is when a fatal error occurs.
1256349Sqs148142  * Fields:
1266349Sqs148142  *     Set to 1 to enable the Receive DMA. If set to 0, packets
1276349Sqs148142  *     selecting this DMA will be discarded. On fatal errors, this
1286349Sqs148142  *     bit will be cleared by hardware. This bit cannot be set if sw
1296349Sqs148142  *     has not resolved any pending fatal error condition: i.e. any
1306349Sqs148142  *     RdcStat ldf1 error bits remain set.
1316349Sqs148142  *     Set to 1 to reset the DMA. Hardware will clear this bit after
1326349Sqs148142  *     reset is completed. A reset will bring the sepecific DMA back
1336349Sqs148142  *     to the power on state (including the DMA.en in this register).
1346349Sqs148142  *     When set to 1, it indicates all state associated with the DMA
1356349Sqs148142  *     are in its initial state following either dma reset or
1366349Sqs148142  *     disable. Thus, once this is set to 1, sw could start to
1376349Sqs148142  *     configure the DMA if needed.
1386349Sqs148142  *     Bits [43:32] of the Mailbox address.
1396349Sqs148142  */
1406349Sqs148142 typedef union {
1416349Sqs148142 	uint64_t value;
1426349Sqs148142 	struct {
1436349Sqs148142 #if defined(_BIG_ENDIAN)
144*6864Sqs148142 		uint32_t	rsrvd:32;
145*6864Sqs148142 		uint32_t	enable:1;
146*6864Sqs148142 		uint32_t	reset:1;
147*6864Sqs148142 		uint32_t	qst:1;
148*6864Sqs148142 		uint32_t	rsrvd1:17;
149*6864Sqs148142 		uint32_t	mbaddr_h:12;
1506349Sqs148142 #else
151*6864Sqs148142 		uint32_t	mbaddr_h:12;
152*6864Sqs148142 		uint32_t	rsrvd1:17;
153*6864Sqs148142 		uint32_t	qst:1;
154*6864Sqs148142 		uint32_t	reset:1;
155*6864Sqs148142 		uint32_t	enable:1;
156*6864Sqs148142 		uint32_t	rsrvd:32;
1576349Sqs148142 #endif
1586349Sqs148142 	} bits;
1596349Sqs148142 } rdc_rx_cfg1_t;
1606349Sqs148142 
1616349Sqs148142 
1626349Sqs148142 /*
1636349Sqs148142  * Register: RdcRxCfg2
1646349Sqs148142  * DMA Configuration 2
1656349Sqs148142  * Description: Configuration parameters for receive DMA block.
1666349Sqs148142  * Fields in this register are part of the dma configuration and
1676349Sqs148142  * cannot be changed once the dma is enabled.
1686349Sqs148142  * Fields:
1696349Sqs148142  *     Bits [31:6] of the Mailbox address. Bits [5:0] are assumed to
1706349Sqs148142  *     be zero, or 64B aligned.
1716349Sqs148142  *     Multiple of 64Bs, 0 means no offset, b01 means 64B, b10 means
1726349Sqs148142  *     128B. b11 is invalid, hardware behavior not specified.
1736349Sqs148142  *     Set to 1 to select the entire header of 6B.
1746349Sqs148142  */
1756349Sqs148142 typedef union {
1766349Sqs148142 	uint64_t value;
1776349Sqs148142 	struct {
1786349Sqs148142 #if defined(_BIG_ENDIAN)
179*6864Sqs148142 		uint32_t	rsrvd:32;
180*6864Sqs148142 		uint32_t	mbaddr_l:26;
181*6864Sqs148142 		uint32_t	rsrvd1:3;
182*6864Sqs148142 		uint32_t	offset:2;
183*6864Sqs148142 		uint32_t	full_hdr:1;
1846349Sqs148142 #else
185*6864Sqs148142 		uint32_t	full_hdr:1;
186*6864Sqs148142 		uint32_t	offset:2;
187*6864Sqs148142 		uint32_t	rsrvd1:3;
188*6864Sqs148142 		uint32_t	mbaddr_l:26;
189*6864Sqs148142 		uint32_t	rsrvd:32;
1906349Sqs148142 #endif
1916349Sqs148142 	} bits;
1926349Sqs148142 } rdc_rx_cfg2_t;
1936349Sqs148142 
1946349Sqs148142 
1956349Sqs148142 /*
1966349Sqs148142  * Register: RdcRbrCfgA
1976349Sqs148142  * RBR Configuration A
1986349Sqs148142  * Description: The following registers are used to configure and
1996349Sqs148142  * manage the RBR. Note that the entire RBR must stay within the
2006349Sqs148142  * 'page' defined by staddrBase. The behavior of the hardware is
2016349Sqs148142  * undefined if the last entry is outside of the page (if bits 43:18
2026349Sqs148142  * of the address of the last entry are different from bits 43:18 of
2036349Sqs148142  * the base address). Hardware will support wrapping around at the
2046349Sqs148142  * end of the ring buffer defined by LEN. LEN must be a multiple of
2056349Sqs148142  * 64. Fields in this register are part of the dma configuration and
2066349Sqs148142  * cannot be changed once the dma is enabled.
2076349Sqs148142  * HW does not check for all configuration errors across different
2086349Sqs148142  * fields.
2096349Sqs148142  *
2106349Sqs148142  * Fields:
2116349Sqs148142  *     Bits 15:6 of the maximum number of RBBs in the buffer ring.
2126349Sqs148142  *     Bits 5:0 are hardcoded to zero. The maximum is (2^16 - 64) and
2136349Sqs148142  *     is limited by the staddr value. (len + staddr) should not
2146349Sqs148142  *     exceed (2^16 - 64).
2156349Sqs148142  *     Bits [43:18] of the address for the RBR. This value remains
2166349Sqs148142  *     fixed, and is used as the base address of the ring. All
2176349Sqs148142  *     entries in the ring have this as their upper address bits.
2186349Sqs148142  *     Bits [17:6] of the address of the RBR. staddrBase concatinated
2196349Sqs148142  *     with staddr is the starting address of the RBR. (len + staddr)
2206349Sqs148142  *     should not exceed (2^16 - 64).
2216349Sqs148142  */
2226349Sqs148142 typedef union {
2236349Sqs148142 	uint64_t value;
2246349Sqs148142 	struct {
2256349Sqs148142 #if defined(_BIG_ENDIAN)
226*6864Sqs148142 		uint32_t	len:10;
227*6864Sqs148142 		uint32_t	len_lo:6;
228*6864Sqs148142 		uint32_t	rsrvd:4;
229*6864Sqs148142 		uint32_t	staddr_base:12;
230*6864Sqs148142 		uint32_t	staddr_base_l:14;
231*6864Sqs148142 		uint32_t	staddr:12;
232*6864Sqs148142 		uint32_t	rsrvd1:6;
2336349Sqs148142 #else
234*6864Sqs148142 		uint32_t	rsrvd1:6;
235*6864Sqs148142 		uint32_t	staddr:12;
236*6864Sqs148142 		uint32_t	staddr_base_l:14;
237*6864Sqs148142 		uint32_t	staddr_base:12;
238*6864Sqs148142 		uint32_t	rsrvd:4;
239*6864Sqs148142 		uint32_t	len_lo:6;
240*6864Sqs148142 		uint32_t	len:10;
2416349Sqs148142 #endif
2426349Sqs148142 	} bits;
2436349Sqs148142 } rdc_rbr_cfg_a_t;
2446349Sqs148142 
2456349Sqs148142 
2466349Sqs148142 /*
2476349Sqs148142  * Register: RdcRbrCfgB
2486349Sqs148142  * RBR Configuration B
2496349Sqs148142  * Description: This register configures the block size, and the
2506349Sqs148142  * individual packet buffer sizes. The VLD bits of the three block
2516349Sqs148142  * sizes have to be set to 1 in normal operations. These bits may be
2526349Sqs148142  * turned off for debug purpose only. Fields in this register are
2536349Sqs148142  * part of the dma configuration and cannot be changed once the dma
2546349Sqs148142  * is enabled.
2556349Sqs148142  * Fields:
2566349Sqs148142  *     Buffer Block Size. b0 - 4K; b1 - 8K.
2576349Sqs148142  *     Set to 1 to indicate SIZE2 is valid, and enable hardware to
2586349Sqs148142  *     allocate buffers of size 2. Always set to 1 in normal
2596349Sqs148142  *     operation.
2606349Sqs148142  *     Size 2 of packet buffer. b0 - 2K; b1 - 4K.
2616349Sqs148142  *     Set to 1 to indicate SIZE1 is valid, and enable hardware to
2626349Sqs148142  *     allocate buffers of size 1. Always set to 1 in normal
2636349Sqs148142  *     operation.
2646349Sqs148142  *     Size 1 of packet buffer. b0 - 1K; b1 - 2K.
2656349Sqs148142  *     Set to 1 to indicate SIZE0 is valid, and enable hardware to
2666349Sqs148142  *     allocate buffers of size 0. Always set to 1 in normal
2676349Sqs148142  *     operation.
2686349Sqs148142  *     Size 0 of packet buffer. b00 - 256; b01 - 512; b10 - 1K; b11 -
2696349Sqs148142  *     reserved.
2706349Sqs148142  */
2716349Sqs148142 typedef union {
2726349Sqs148142 	uint64_t value;
2736349Sqs148142 	struct {
2746349Sqs148142 #if defined(_BIG_ENDIAN)
275*6864Sqs148142 		uint32_t	rsrvd:32;
276*6864Sqs148142 		uint32_t	rsrvd_l:7;
277*6864Sqs148142 		uint32_t	bksize:1;
278*6864Sqs148142 		uint32_t	vld2:1;
279*6864Sqs148142 		uint32_t	rsrvd1:6;
280*6864Sqs148142 		uint32_t	bufsz2:1;
281*6864Sqs148142 		uint32_t	vld1:1;
282*6864Sqs148142 		uint32_t	rsrvd2:6;
283*6864Sqs148142 		uint32_t	bufsz1:1;
284*6864Sqs148142 		uint32_t	vld0:1;
285*6864Sqs148142 		uint32_t	rsrvd3:5;
286*6864Sqs148142 		uint32_t	bufsz0:2;
2876349Sqs148142 #else
288*6864Sqs148142 		uint32_t	bufsz0:2;
289*6864Sqs148142 		uint32_t	rsrvd3:5;
290*6864Sqs148142 		uint32_t	vld0:1;
291*6864Sqs148142 		uint32_t	bufsz1:1;
292*6864Sqs148142 		uint32_t	rsrvd2:6;
293*6864Sqs148142 		uint32_t	vld1:1;
294*6864Sqs148142 		uint32_t	bufsz2:1;
295*6864Sqs148142 		uint32_t	rsrvd1:6;
296*6864Sqs148142 		uint32_t	vld2:1;
297*6864Sqs148142 		uint32_t	bksize:1;
298*6864Sqs148142 		uint32_t	rsrvd_l:7;
299*6864Sqs148142 		uint32_t	rsrvd:32;
3006349Sqs148142 #endif
3016349Sqs148142 	} bits;
3026349Sqs148142 } rdc_rbr_cfg_b_t;
3036349Sqs148142 
3046349Sqs148142 
3056349Sqs148142 /*
3066349Sqs148142  * Register: RdcRbrKick
3076349Sqs148142  * RBR Kick
3086349Sqs148142  * Description: Block buffer addresses are added to the ring buffer
3096349Sqs148142  * by software. When software writes to the Kick register, indicating
3106349Sqs148142  * the number of descriptors added, hardware will update the internal
3116349Sqs148142  * state of the corresponding buffer pool.
3126349Sqs148142  * HW does not check for all configuration errors across different
3136349Sqs148142  * fields.
3146349Sqs148142  *
3156349Sqs148142  * Fields:
3166349Sqs148142  *     Number of Block Buffers added by software. Hardware effect
3176349Sqs148142  *     will be triggered when the register is written to.
3186349Sqs148142  */
3196349Sqs148142 typedef union {
3206349Sqs148142 	uint64_t value;
3216349Sqs148142 	struct {
3226349Sqs148142 #if defined(_BIG_ENDIAN)
323*6864Sqs148142 		uint32_t	rsrvd:32;
324*6864Sqs148142 		uint32_t	rsrvd_l:16;
325*6864Sqs148142 		uint32_t	bkadd:16;
3266349Sqs148142 #else
327*6864Sqs148142 		uint32_t	bkadd:16;
328*6864Sqs148142 		uint32_t	rsrvd_l:16;
329*6864Sqs148142 		uint32_t	rsrvd:32;
3306349Sqs148142 #endif
3316349Sqs148142 	} bits;
3326349Sqs148142 } rdc_rbr_kick_t;
3336349Sqs148142 
3346349Sqs148142 
3356349Sqs148142 /*
3366349Sqs148142  * Register: RdcRbrQlen
3376349Sqs148142  * RBR Queue Length
3386349Sqs148142  * Description: The current number of entries in the RBR.
3396349Sqs148142  * Fields:
3406349Sqs148142  *     Number of block addresses in the ring buffer.
3416349Sqs148142  */
3426349Sqs148142 typedef union {
3436349Sqs148142 	uint64_t value;
3446349Sqs148142 	struct {
3456349Sqs148142 #if defined(_BIG_ENDIAN)
346*6864Sqs148142 		uint32_t	rsrvd:32;
347*6864Sqs148142 		uint32_t	rsrvd_l:16;
348*6864Sqs148142 		uint32_t	qlen:16;
3496349Sqs148142 #else
350*6864Sqs148142 		uint32_t	qlen:16;
351*6864Sqs148142 		uint32_t	rsrvd_l:16;
352*6864Sqs148142 		uint32_t	rsrvd:32;
3536349Sqs148142 #endif
3546349Sqs148142 	} bits;
3556349Sqs148142 } rdc_rbr_qlen_t;
3566349Sqs148142 
3576349Sqs148142 
3586349Sqs148142 /*
3596349Sqs148142  * Register: RdcRbrHead
3606349Sqs148142  * RBR Head
3616349Sqs148142  * Description: Lower bits of the RBR head pointer. Software programs
3626349Sqs148142  * the upper bits, specified in rdcRbrConfigA.staddrBase.
3636349Sqs148142  * Fields:
3646349Sqs148142  *     Bits [17:2] of the software posted address, 4B aligned. This
3656349Sqs148142  *     pointer is updated by hardware after each block buffer is
3666349Sqs148142  *     consumed.
3676349Sqs148142  */
3686349Sqs148142 typedef union {
3696349Sqs148142 	uint64_t value;
3706349Sqs148142 	struct {
3716349Sqs148142 #if defined(_BIG_ENDIAN)
372*6864Sqs148142 		uint32_t	rsrvd:32;
373*6864Sqs148142 		uint32_t	rsrvd_l:14;
374*6864Sqs148142 		uint32_t	head:16;
375*6864Sqs148142 		uint32_t	rsrvd1:2;
3766349Sqs148142 #else
377*6864Sqs148142 		uint32_t	rsrvd1:2;
378*6864Sqs148142 		uint32_t	head:16;
379*6864Sqs148142 		uint32_t	rsrvd_l:14;
380*6864Sqs148142 		uint32_t	rsrvd:32;
3816349Sqs148142 #endif
3826349Sqs148142 	} bits;
3836349Sqs148142 } rdc_rbr_head_t;
3846349Sqs148142 
3856349Sqs148142 
3866349Sqs148142 /*
3876349Sqs148142  * Register: RdcRcrCfgA
3886349Sqs148142  * RCR Configuration A
3896349Sqs148142  * Description: The RCR should be within the 'page' defined by the
3906349Sqs148142  * staddrBase, i.e. staddrBase concatenate with STADDR plus 8 x LEN
3916349Sqs148142  * should be within the last address of the 'page' defined by
3926349Sqs148142  * staddrBase. The length must be a multiple of 32. Fields in this
3936349Sqs148142  * register are part of the dma configuration and cannot be changed
3946349Sqs148142  * once the dma is enabled.
3956349Sqs148142  * HW does not check for all configuration errors across different
3966349Sqs148142  * fields.
3976349Sqs148142  *
3986349Sqs148142  * Fields:
3996349Sqs148142  *     Bits 15:5 of the maximum number of 8B entries in RCR. Bits 4:0
4006349Sqs148142  *     are hard-coded to zero. The maximum size is (2^16 - 32) and is
4016349Sqs148142  *     limited by staddr value. (len + staddr) should not exceed
4026349Sqs148142  *     (2^16 - 32).
4036349Sqs148142  *     Bits [43:19] of the Start address for the RCR.
4046349Sqs148142  *     Bits [18:6] of start address for the RCR. (len + staddr)
4056349Sqs148142  *     should not exceed (2^16 - 32).
4066349Sqs148142  */
4076349Sqs148142 typedef union {
4086349Sqs148142 	uint64_t value;
4096349Sqs148142 	struct {
4106349Sqs148142 #if defined(_BIG_ENDIAN)
411*6864Sqs148142 		uint32_t	len:11;
412*6864Sqs148142 		uint32_t	len_lo:5;
413*6864Sqs148142 		uint32_t	rsrvd:4;
414*6864Sqs148142 		uint32_t	staddr_base:12;
415*6864Sqs148142 		uint32_t	staddr_base_l:13;
416*6864Sqs148142 		uint32_t	staddr:13;
417*6864Sqs148142 		uint32_t	rsrvd1:6;
4186349Sqs148142 #else
419*6864Sqs148142 		uint32_t	rsrvd1:6;
420*6864Sqs148142 		uint32_t	staddr:13;
421*6864Sqs148142 		uint32_t	staddr_base_l:13;
422*6864Sqs148142 		uint32_t	staddr_base:12;
423*6864Sqs148142 		uint32_t	rsrvd:4;
424*6864Sqs148142 		uint32_t	len_lo:5;
425*6864Sqs148142 		uint32_t	len:11;
4266349Sqs148142 #endif
4276349Sqs148142 	} bits;
4286349Sqs148142 } rdc_rcr_cfg_a_t;
4296349Sqs148142 
4306349Sqs148142 
4316349Sqs148142 /*
4326349Sqs148142  * Register: RdcRcrCfgB
4336349Sqs148142  * RCR Configuration B
4346349Sqs148142  * Description: RCR configuration settings.
4356349Sqs148142  * Fields:
4366349Sqs148142  *     Packet Threshold; when the number of packets enqueued in RCR
4376349Sqs148142  *     is strictly larger than PTHRES, the DMA MAY issue an interrupt
4386349Sqs148142  *     if enabled.
4396349Sqs148142  *     Enable timeout. If set to one, enable the timeout. A timeout
4406349Sqs148142  *     will initiate an update of the software visible states. If
4416349Sqs148142  *     interrupt is armed, in addition to the update, an interrupt to
4426349Sqs148142  *     CPU will be generated, and the interrupt disarmed.
4436349Sqs148142  *     Time out value. The system clock is divided down by the value
4446349Sqs148142  *     programmed in the Receive DMA Clock Divider register.
4456349Sqs148142  */
4466349Sqs148142 typedef union {
4476349Sqs148142 	uint64_t value;
4486349Sqs148142 	struct {
4496349Sqs148142 #if defined(_BIG_ENDIAN)
450*6864Sqs148142 		uint32_t	rsrvd:32;
451*6864Sqs148142 		uint32_t	pthres:16;
452*6864Sqs148142 		uint32_t	entout:1;
453*6864Sqs148142 		uint32_t	rsrvd1:9;
454*6864Sqs148142 		uint32_t	timeout:6;
4556349Sqs148142 #else
456*6864Sqs148142 		uint32_t	timeout:6;
457*6864Sqs148142 		uint32_t	rsrvd1:9;
458*6864Sqs148142 		uint32_t	entout:1;
459*6864Sqs148142 		uint32_t	pthres:16;
460*6864Sqs148142 		uint32_t	rsrvd:32;
4616349Sqs148142 #endif
4626349Sqs148142 	} bits;
4636349Sqs148142 } rdc_rcr_cfg_b_t;
4646349Sqs148142 
4656349Sqs148142 
4666349Sqs148142 /*
4676349Sqs148142  * Register: RdcRcrQlen
4686349Sqs148142  * RCR Queue Length
4696349Sqs148142  * Description: The number of entries in the RCR.
4706349Sqs148142  * Fields:
4716349Sqs148142  *     Number of packets queued. Initialize to zero after the RCR
4726349Sqs148142  *     Configuration A register is written to.
4736349Sqs148142  */
4746349Sqs148142 typedef union {
4756349Sqs148142 	uint64_t value;
4766349Sqs148142 	struct {
4776349Sqs148142 #if defined(_BIG_ENDIAN)
478*6864Sqs148142 		uint32_t	rsrvd:32;
479*6864Sqs148142 		uint32_t	rsrvd_l:16;
480*6864Sqs148142 		uint32_t	qlen:16;
4816349Sqs148142 #else
482*6864Sqs148142 		uint32_t	qlen:16;
483*6864Sqs148142 		uint32_t	rsrvd_l:16;
484*6864Sqs148142 		uint32_t	rsrvd:32;
4856349Sqs148142 #endif
4866349Sqs148142 	} bits;
4876349Sqs148142 } rdc_rcr_qlen_t;
4886349Sqs148142 
4896349Sqs148142 
4906349Sqs148142 /*
4916349Sqs148142  * Register: RdcRcrTail
4926349Sqs148142  * RCR Tail
4936349Sqs148142  * Description: Lower bits of the RCR tail pointer. Software programs
4946349Sqs148142  * the upper bits, specified in rdcRcrConfigA.staddrBase.
4956349Sqs148142  * Fields:
4966349Sqs148142  *     Address of the RCR Tail Pointer [18:3] (points to the next
4976349Sqs148142  *     available location.) Initialized after the RCR Configuration A
4986349Sqs148142  *     register is written to.
4996349Sqs148142  */
5006349Sqs148142 typedef union {
5016349Sqs148142 	uint64_t value;
5026349Sqs148142 	struct {
5036349Sqs148142 #if defined(_BIG_ENDIAN)
504*6864Sqs148142 		uint32_t	rsrvd:32;
505*6864Sqs148142 		uint32_t	rsrvd_l:13;
506*6864Sqs148142 		uint32_t	tail:16;
507*6864Sqs148142 		uint32_t	rsrvd1:3;
5086349Sqs148142 #else
509*6864Sqs148142 		uint32_t	rsrvd1:3;
510*6864Sqs148142 		uint32_t	tail:16;
511*6864Sqs148142 		uint32_t	rsrvd_l:13;
512*6864Sqs148142 		uint32_t	rsrvd:32;
5136349Sqs148142 #endif
5146349Sqs148142 	} bits;
5156349Sqs148142 } rdc_rcr_tail_t;
5166349Sqs148142 
5176349Sqs148142 
5186349Sqs148142 /*
5196349Sqs148142  * Register: RdcRcrFlush
5206349Sqs148142  * RCR Flush
5216349Sqs148142  * Description: This register will force an update to the RCR in
5226349Sqs148142  * system memory.
5236349Sqs148142  * Fields:
5246349Sqs148142  *     Set to 1 to force the hardware to store the shadow tail block
5256349Sqs148142  *     to DRAM if the hardware state (queue length and pointers) is
5266349Sqs148142  *     different from the software visible state. Reset to 0 by
5276349Sqs148142  *     hardware when done.
5286349Sqs148142  */
5296349Sqs148142 typedef union {
5306349Sqs148142 	uint64_t value;
5316349Sqs148142 	struct {
5326349Sqs148142 #if defined(_BIG_ENDIAN)
533*6864Sqs148142 		uint32_t	rsrvd:32;
534*6864Sqs148142 		uint32_t	rsrvd_l:31;
535*6864Sqs148142 		uint32_t	flush:1;
5366349Sqs148142 #else
537*6864Sqs148142 		uint32_t	flush:1;
538*6864Sqs148142 		uint32_t	rsrvd_l:31;
539*6864Sqs148142 		uint32_t	rsrvd:32;
5406349Sqs148142 #endif
5416349Sqs148142 	} bits;
5426349Sqs148142 } rdc_rcr_flush_t;
5436349Sqs148142 
5446349Sqs148142 
5456349Sqs148142 /*
5466349Sqs148142  * Register: RdcClockDiv
5476349Sqs148142  * Receive DMA Clock Divider
5486349Sqs148142  * Description: The granularity of the DMA timers is determined by
5496349Sqs148142  * the following counter. This is used to drive the DMA timeout
5506349Sqs148142  * counters. For a 250MHz system clock, a value of 25000 (decimal)
5516349Sqs148142  * will yield a granularity of 100 usec.
5526349Sqs148142  * Fields:
5536349Sqs148142  *     System clock divider, determines the granularity of the DMA
5546349Sqs148142  *     timeout count-down. The hardware count down is count+1.
5556349Sqs148142  */
5566349Sqs148142 typedef union {
5576349Sqs148142 	uint64_t value;
5586349Sqs148142 	struct {
5596349Sqs148142 #if defined(_BIG_ENDIAN)
560*6864Sqs148142 		uint32_t	rsrvd:32;
561*6864Sqs148142 		uint32_t	rsrvd_l:16;
562*6864Sqs148142 		uint32_t	count:16;
5636349Sqs148142 #else
564*6864Sqs148142 		uint32_t	count:16;
565*6864Sqs148142 		uint32_t	rsrvd_l:16;
566*6864Sqs148142 		uint32_t	rsrvd:32;
5676349Sqs148142 #endif
5686349Sqs148142 	} bits;
5696349Sqs148142 } rdc_clock_div_t;
5706349Sqs148142 
5716349Sqs148142 
5726349Sqs148142 /*
5736349Sqs148142  * Register: RdcIntMask
5746349Sqs148142  * RDC Interrupt Mask
5756349Sqs148142  * Description: RDC interrupt status register. RCRTHRES and RCRTO
5766349Sqs148142  * bits are used to keep track of normal DMA operations, while the
5776349Sqs148142  * remaining bits are primarily used to detect error conditions.
5786349Sqs148142  * Fields:
5796349Sqs148142  *     Set to 0 to enable flagging when rdc receives a response
5806349Sqs148142  *     completion timeout from peu. Part of LDF 1.
5816349Sqs148142  *     Set to 1 to enable flagging when rdc receives a poisoned
5826349Sqs148142  *     completion or non-zero (unsuccessful) completion status
5836349Sqs148142  *     received from PEU. Part of LDF 1.
5846349Sqs148142  *     Set to 0 to enable flagging when RCR threshold crossed. Part
5856349Sqs148142  *     of LDF 0.
5866349Sqs148142  *     Set to 0 to enable flagging when RCR timeout. Part of LDF 0.
5876349Sqs148142  *     Set to 0 to enable flagging when read from rcr shadow ram
5886349Sqs148142  *     generates a parity error Part of LDF 1.
5896349Sqs148142  *     Set to 0 to enable flagging when read from rbr prefetch ram
5906349Sqs148142  *     generates a parity error Part of LDF 1.
5916349Sqs148142  *     Set to 0 to enable flagging when Receive Block Ring prefetch
5926349Sqs148142  *     is empty (not enough buffer blocks available depending on
5936349Sqs148142  *     incoming pkt size) when hardware tries to queue a packet.
5946349Sqs148142  *     Incoming packets will be discarded. Non-fatal error. Part of
5956349Sqs148142  *     LDF 1.
5966349Sqs148142  *     Set to 0 to enable flagging when packet discard because of RCR
5976349Sqs148142  *     shadow full.
5986349Sqs148142  *     Set to 0 to enable flagging when Receive Completion Ring full
5996349Sqs148142  *     when hardware tries to enqueue the completion status of a
6006349Sqs148142  *     packet. Part of LDF 1.
6016349Sqs148142  *     Set to 0 to enable flagging when RBR empty when hardware
6026349Sqs148142  *     attempts to prefetch. Part of LDF 1.
6036349Sqs148142  *     Set to 0 to enable flagging when Receive Block Ring full when
6046349Sqs148142  *     software tries to post more blocks. Part of LDF 1.
6056349Sqs148142  */
6066349Sqs148142 typedef union {
6076349Sqs148142 	uint64_t value;
6086349Sqs148142 	struct {
6096349Sqs148142 #if defined(_BIG_ENDIAN)
610*6864Sqs148142 		uint32_t	rsrvd:10;
611*6864Sqs148142 		uint32_t	rbr_cpl_to:1;
612*6864Sqs148142 		uint32_t	peu_resp_err:1;
613*6864Sqs148142 		uint32_t	rsrvd1:5;
614*6864Sqs148142 		uint32_t	rcr_thres:1;
615*6864Sqs148142 		uint32_t	rcr_to:1;
616*6864Sqs148142 		uint32_t	rcr_shadow_par_err:1;
617*6864Sqs148142 		uint32_t	rbr_prefetch_par_err:1;
618*6864Sqs148142 		uint32_t	rsrvd2:2;
619*6864Sqs148142 		uint32_t	rbr_pre_empty:1;
620*6864Sqs148142 		uint32_t	rcr_shadow_full:1;
621*6864Sqs148142 		uint32_t	rsrvd3:2;
622*6864Sqs148142 		uint32_t	rcr_full:1;
623*6864Sqs148142 		uint32_t	rbr_empty:1;
624*6864Sqs148142 		uint32_t	rbr_full:1;
625*6864Sqs148142 		uint32_t	rsrvd4:2;
626*6864Sqs148142 		uint32_t	rsrvd5:32;
6276349Sqs148142 #else
628*6864Sqs148142 		uint32_t	rsrvd5:32;
629*6864Sqs148142 		uint32_t	rsrvd4:2;
630*6864Sqs148142 		uint32_t	rbr_full:1;
631*6864Sqs148142 		uint32_t	rbr_empty:1;
632*6864Sqs148142 		uint32_t	rcr_full:1;
633*6864Sqs148142 		uint32_t	rsrvd3:2;
634*6864Sqs148142 		uint32_t	rcr_shadow_full:1;
635*6864Sqs148142 		uint32_t	rbr_pre_empty:1;
636*6864Sqs148142 		uint32_t	rsrvd2:2;
637*6864Sqs148142 		uint32_t	rbr_prefetch_par_err:1;
638*6864Sqs148142 		uint32_t	rcr_shadow_par_err:1;
639*6864Sqs148142 		uint32_t	rcr_to:1;
640*6864Sqs148142 		uint32_t	rcr_thres:1;
641*6864Sqs148142 		uint32_t	rsrvd1:5;
642*6864Sqs148142 		uint32_t	peu_resp_err:1;
643*6864Sqs148142 		uint32_t	rbr_cpl_to:1;
644*6864Sqs148142 		uint32_t	rsrvd:10;
6456349Sqs148142 #endif
6466349Sqs148142 	} bits;
6476349Sqs148142 } rdc_int_mask_t;
6486349Sqs148142 
6496349Sqs148142 
6506349Sqs148142 /*
6516349Sqs148142  * Register: RdcStat
6526349Sqs148142  * RDC Control And Status
6536349Sqs148142  * Description: The DMA channels are controlled using this register.
6546349Sqs148142  * Fields:
6556349Sqs148142  *     Set to 1 to indicate rdc received a response completion
6566349Sqs148142  *     timeout from peu. Fatal error. Part of LDF 1.
6576349Sqs148142  *     Set to 1 to indicate poisoned completion or non-zero
6586349Sqs148142  *     (unsuccessful) completion status received from PEU. Part of
6596349Sqs148142  *     LDF 1.
6606349Sqs148142  *     Set to 1 to enable mailbox update. Hardware will reset to 0
6616349Sqs148142  *     after one update. Software needs to set to 1 for each update.
6626349Sqs148142  *     Write 0 has no effect. Note that once set by software, only
6636349Sqs148142  *     hardware can reset the value. This bit is also used to keep
6646349Sqs148142  *     track of the exclusivity between threshold triggered or
6656349Sqs148142  *     timeout triggered interrupt. If this bit is not set, there
6666349Sqs148142  *     will be no timer based interrupt, and threshold based
6676349Sqs148142  *     interrupt will not issue a mailbox update. It is recommended
6686349Sqs148142  *     that software should set this bit to one when arming the
6696349Sqs148142  *     device for interrupt.
6706349Sqs148142  *     Set to 1 to indicate RCR threshold crossed. This is a level
6716349Sqs148142  *     event. Part of LDF 0.
6726349Sqs148142  *     Set to 1 to indicate RCR time-outed if MEX bit is set and the
6736349Sqs148142  *     queue length is non-zero when timeout occurs. When software
6746349Sqs148142  *     writes 1 to this bit, RCRTO will be reset to 0. Part of LDF 0.
6756349Sqs148142  *     Set to 1 to indicate read from rcr shadow ram generates a
6766349Sqs148142  *     parity error Writing a 1 to this register also clears the
6776349Sqs148142  *     rdcshadowParLog register Fatal error. Part of LDF 1.
6786349Sqs148142  *     Set to 1 to indicate read from rbr prefetch ram generates
6796349Sqs148142  *     parity error Writing a 1 to this register also clears the
6806349Sqs148142  *     rdcPrefParLog register Fatal error. Part of LDF 1.
6816349Sqs148142  *     Set to 1 to indicate Receive Block Ring prefetch is empty (not
6826349Sqs148142  *     enough buffer blocks available depending on incoming pkt size)
6836349Sqs148142  *     when hardware tries to queue a packet. Incoming packets will
6846349Sqs148142  *     be discarded. Non-fatal error. Part of LDF 1.
6856349Sqs148142  *     Set to 1 to indicate packet discard because of RCR shadow
6866349Sqs148142  *     full. RCR Shadow full cannot be set to 1 in a normal
6876349Sqs148142  *     operation. When set to 1, it indicates a fatal error. Part of
6886349Sqs148142  *     LDF 1.
6896349Sqs148142  *     Set to 1 to indicate Receive Completion Ring full when
6906349Sqs148142  *     hardware tries to enqueue the completion status of a packet.
6916349Sqs148142  *     Incoming packets will be discarded. No buffer consumed. Fatal
6926349Sqs148142  *     error. Part of LDF 1.
6936349Sqs148142  *     Set to 1 to indicate RBR empty when hardware attempts to
6946349Sqs148142  *     prefetch. Part of LDF 1.
6956349Sqs148142  *     Set to 1 to indicate Receive Buffer Ring full when software
6966349Sqs148142  *     writes the kick register with a value greater than the length
6976349Sqs148142  *     of the RBR length. Incoming packets will be discarded. Fatal
6986349Sqs148142  *     error. Part of LDF 1.
6996349Sqs148142  *     Number of buffer pointers read. Used to advance the RCR head
7006349Sqs148142  *     pointer.
7016349Sqs148142  *     Number of packets read; when written to, decrement the QLEN
7026349Sqs148142  *     counter by PKTREAD. QLEN is lower bounded to zero.
7036349Sqs148142  */
7046349Sqs148142 typedef union {
7056349Sqs148142 	uint64_t value;
7066349Sqs148142 	struct {
7076349Sqs148142 #if defined(_BIG_ENDIAN)
708*6864Sqs148142 		uint32_t	rsrvd:10;
709*6864Sqs148142 		uint32_t	rbr_cpl_to:1;
710*6864Sqs148142 		uint32_t	peu_resp_err:1;
711*6864Sqs148142 		uint32_t	rsrvd1:4;
712*6864Sqs148142 		uint32_t	mex:1;
713*6864Sqs148142 		uint32_t	rcr_thres:1;
714*6864Sqs148142 		uint32_t	rcr_to:1;
715*6864Sqs148142 		uint32_t	rcr_shadow_par_err:1;
716*6864Sqs148142 		uint32_t	rbr_prefetch_par_err:1;
717*6864Sqs148142 		uint32_t	rsrvd2:2;
718*6864Sqs148142 		uint32_t	rbr_pre_empty:1;
719*6864Sqs148142 		uint32_t	rcr_shadow_full:1;
720*6864Sqs148142 		uint32_t	rsrvd3:2;
721*6864Sqs148142 		uint32_t	rcr_full:1;
722*6864Sqs148142 		uint32_t	rbr_empty:1;
723*6864Sqs148142 		uint32_t	rbr_full:1;
724*6864Sqs148142 		uint32_t	rsrvd4:2;
725*6864Sqs148142 		uint32_t	ptrread:16;
726*6864Sqs148142 		uint32_t	pktread:16;
7276349Sqs148142 #else
728*6864Sqs148142 		uint32_t	pktread:16;
729*6864Sqs148142 		uint32_t	ptrread:16;
730*6864Sqs148142 		uint32_t	rsrvd4:2;
731*6864Sqs148142 		uint32_t	rbr_full:1;
732*6864Sqs148142 		uint32_t	rbr_empty:1;
733*6864Sqs148142 		uint32_t	rcr_full:1;
734*6864Sqs148142 		uint32_t	rsrvd3:2;
735*6864Sqs148142 		uint32_t	rcr_shadow_full:1;
736*6864Sqs148142 		uint32_t	rbr_pre_empty:1;
737*6864Sqs148142 		uint32_t	rsrvd2:2;
738*6864Sqs148142 		uint32_t	rbr_prefetch_par_err:1;
739*6864Sqs148142 		uint32_t	rcr_shadow_par_err:1;
740*6864Sqs148142 		uint32_t	rcr_to:1;
741*6864Sqs148142 		uint32_t	rcr_thres:1;
742*6864Sqs148142 		uint32_t	mex:1;
743*6864Sqs148142 		uint32_t	rsrvd1:4;
744*6864Sqs148142 		uint32_t	peu_resp_err:1;
745*6864Sqs148142 		uint32_t	rbr_cpl_to:1;
746*6864Sqs148142 		uint32_t	rsrvd:10;
7476349Sqs148142 #endif
7486349Sqs148142 	} bits;
7496349Sqs148142 } rdc_stat_t;
7506349Sqs148142 
7516349Sqs148142 
7526349Sqs148142 /*
7536349Sqs148142  * Register: RdcPktCount
7546349Sqs148142  * Rx DMA Packet Counter
7556349Sqs148142  * Description: Counts the number of packets received from the Rx
7566349Sqs148142  * Virtual MAC for this DMA channel.
7576349Sqs148142  * Fields:
7586349Sqs148142  *     Count of SYN packets received from RVM. This counter
7596349Sqs148142  *     saturates.
7606349Sqs148142  *     Count of packets received from RVM. This counter saturates.
7616349Sqs148142  */
7626349Sqs148142 typedef union {
7636349Sqs148142 	uint64_t value;
7646349Sqs148142 	struct {
7656349Sqs148142 #if defined(_BIG_ENDIAN)
766*6864Sqs148142 		uint32_t	syn_pkt_count:32;
767*6864Sqs148142 		uint32_t	pkt_count:32;
7686349Sqs148142 #else
769*6864Sqs148142 		uint32_t	pkt_count:32;
770*6864Sqs148142 		uint32_t	syn_pkt_count:32;
7716349Sqs148142 #endif
7726349Sqs148142 	} bits;
7736349Sqs148142 } rdc_pkt_count_t;
7746349Sqs148142 
7756349Sqs148142 
7766349Sqs148142 /*
7776349Sqs148142  * Register: RdcDropCount
7786349Sqs148142  * Rx DMA Dropped Packet Counters
7796349Sqs148142  * Description: Counts the number of packets dropped due to different
7806349Sqs148142  * types of errors.
7816349Sqs148142  * Fields:
7826349Sqs148142  *     Count of packets dropped because they were longer than the
7836349Sqs148142  *     maximum length. This counter saturates.
7846349Sqs148142  *     Count of packets dropped because there was no block available
7856349Sqs148142  *     in the RBR Prefetch Buffer. This counter saturates.
7866349Sqs148142  *     Count of packets dropped because the RVM marked the packet as
7876349Sqs148142  *     errored. This counter saturates.
7886349Sqs148142  *     Count of packets dropped because there was a framing error
7896349Sqs148142  *     from the RVM. This counter saturates.
7906349Sqs148142  *     Count of packets dropped because the packet did not fit in the
7916349Sqs148142  *     rx ram. This counter saturates.
7926349Sqs148142  */
7936349Sqs148142 typedef union {
7946349Sqs148142 	uint64_t value;
7956349Sqs148142 	struct {
7966349Sqs148142 #if defined(_BIG_ENDIAN)
797*6864Sqs148142 		uint32_t	rsrvd:16;
798*6864Sqs148142 		uint32_t	too_long:8;
799*6864Sqs148142 		uint32_t	no_rbr_avail:8;
800*6864Sqs148142 		uint32_t	rvm_error:8;
801*6864Sqs148142 		uint32_t	frame_error:8;
802*6864Sqs148142 		uint32_t	rxram_error:8;
803*6864Sqs148142 		uint32_t	rsrvd1:8;
8046349Sqs148142 #else
805*6864Sqs148142 		uint32_t	rsrvd1:8;
806*6864Sqs148142 		uint32_t	rxram_error:8;
807*6864Sqs148142 		uint32_t	frame_error:8;
808*6864Sqs148142 		uint32_t	rvm_error:8;
809*6864Sqs148142 		uint32_t	no_rbr_avail:8;
810*6864Sqs148142 		uint32_t	too_long:8;
811*6864Sqs148142 		uint32_t	rsrvd:16;
8126349Sqs148142 #endif
8136349Sqs148142 	} bits;
8146349Sqs148142 } rdc_drop_count_t;
8156349Sqs148142 
8166349Sqs148142 
8176349Sqs148142 /*
8186349Sqs148142  * Register: RdcByteCount
8196349Sqs148142  * Rx DMA Byte Counter
8206349Sqs148142  * Description: Counts the number of bytes transferred by dma for all
8216349Sqs148142  * channels.
8226349Sqs148142  * Fields:
8236349Sqs148142  *     Count of bytes transferred by dma. This counter saturates.
8246349Sqs148142  */
8256349Sqs148142 typedef union {
8266349Sqs148142 	uint64_t value;
8276349Sqs148142 	struct {
8286349Sqs148142 #if defined(_BIG_ENDIAN)
829*6864Sqs148142 		uint32_t	rsrvd:32;
830*6864Sqs148142 		uint32_t	count:32;
8316349Sqs148142 #else
832*6864Sqs148142 		uint32_t	count:32;
833*6864Sqs148142 		uint32_t	rsrvd:32;
8346349Sqs148142 #endif
8356349Sqs148142 	} bits;
8366349Sqs148142 } rdc_byte_count_t;
8376349Sqs148142 
8386349Sqs148142 
8396349Sqs148142 /*
8406349Sqs148142  * Register: RdcPrefCmd
8416349Sqs148142  * Rx DMA Prefetch Buffer Command
8426349Sqs148142  * Description: Allows debug access to the entire prefetch buffer,
8436349Sqs148142  * along with the rdcPrefData register. Writing the rdcPrefCmd
8446349Sqs148142  * triggers the access. For writes, software writes the 32 bits of
8456349Sqs148142  * data to the rdcPrefData register before writing the write command
8466349Sqs148142  * to this register. For reads, software first writes the the read
8476349Sqs148142  * command to this register, then reads the 32-bit value from the
8486349Sqs148142  * rdcPrefData register. The status field should be polled by
8496349Sqs148142  * software until it goes low, indicating the read or write has
8506349Sqs148142  * completed.
8516349Sqs148142  * Fields:
8526349Sqs148142  *     status of indirect access 0=busy 1=done
8536349Sqs148142  *     Command type. 1 indicates a read command, 0 a write command.
8546349Sqs148142  *     enable writing of parity bits 1=enabled, 0=disabled
8556349Sqs148142  *     DMA channel of entry to read or write
8566349Sqs148142  *     Entry in the prefetch buffer to read or write
8576349Sqs148142  */
8586349Sqs148142 typedef union {
8596349Sqs148142 	uint64_t value;
8606349Sqs148142 	struct {
8616349Sqs148142 #if defined(_BIG_ENDIAN)
862*6864Sqs148142 		uint32_t	rsrvd:32;
863*6864Sqs148142 		uint32_t	status:1;
864*6864Sqs148142 		uint32_t	cmd:1;
865*6864Sqs148142 		uint32_t	par_en:1;
866*6864Sqs148142 		uint32_t	rsrvd1:22;
867*6864Sqs148142 		uint32_t	dmc:2;
868*6864Sqs148142 		uint32_t	entry:5;
8696349Sqs148142 #else
870*6864Sqs148142 		uint32_t	entry:5;
871*6864Sqs148142 		uint32_t	dmc:2;
872*6864Sqs148142 		uint32_t	rsrvd1:22;
873*6864Sqs148142 		uint32_t	par_en:1;
874*6864Sqs148142 		uint32_t	cmd:1;
875*6864Sqs148142 		uint32_t	status:1;
876*6864Sqs148142 		uint32_t	rsrvd:32;
8776349Sqs148142 #endif
8786349Sqs148142 	} bits;
8796349Sqs148142 } rdc_pref_cmd_t;
8806349Sqs148142 
8816349Sqs148142 
8826349Sqs148142 /*
8836349Sqs148142  * Register: RdcPrefData
8846349Sqs148142  * Rx DMA Prefetch Buffer Data
8856349Sqs148142  * Description: See rdcPrefCmd register.
8866349Sqs148142  * Fields:
8876349Sqs148142  *     For writes, parity bits is written into prefetch buffer. For
8886349Sqs148142  *     reads, parity bits read from the prefetch buffer.
8896349Sqs148142  *     For writes, data which is written into prefetch buffer. For
8906349Sqs148142  *     reads, data read from the prefetch buffer.
8916349Sqs148142  */
8926349Sqs148142 typedef union {
8936349Sqs148142 	uint64_t value;
8946349Sqs148142 	struct {
8956349Sqs148142 #if defined(_BIG_ENDIAN)
896*6864Sqs148142 		uint32_t	rsrvd:28;
897*6864Sqs148142 		uint32_t	par:4;
898*6864Sqs148142 		uint32_t	data:32;
8996349Sqs148142 #else
900*6864Sqs148142 		uint32_t	data:32;
901*6864Sqs148142 		uint32_t	par:4;
902*6864Sqs148142 		uint32_t	rsrvd:28;
9036349Sqs148142 #endif
9046349Sqs148142 	} bits;
9056349Sqs148142 } rdc_pref_data_t;
9066349Sqs148142 
9076349Sqs148142 
9086349Sqs148142 /*
9096349Sqs148142  * Register: RdcShadowCmd
9106349Sqs148142  * Rx DMA Shadow Tail Command
9116349Sqs148142  * Description: Allows debug access to the entire shadow tail, along
9126349Sqs148142  * with the rdcShadowData register. Writing the rdcShadowCmd triggers
9136349Sqs148142  * the access. For writes, software writes the 64 bits of data to the
9146349Sqs148142  * rdcShadowData register before writing the write command to this
9156349Sqs148142  * register. For reads, software first writes the the read command to
9166349Sqs148142  * this register, then reads the 64-bit value from the rdcShadowData
9176349Sqs148142  * register. The valid field should be polled by software until it
9186349Sqs148142  * goes low, indicating the read or write has completed.
9196349Sqs148142  * Fields:
9206349Sqs148142  *     status of indirect access 0=busy 1=done
9216349Sqs148142  *     Command type. 1 indicates a read command, 0 a write command.
9226349Sqs148142  *     enable writing of parity bits 1=enabled, 0=disabled
9236349Sqs148142  *     DMA channel of entry to read or write
9246349Sqs148142  *     Entry in the shadow tail to read or write
9256349Sqs148142  */
9266349Sqs148142 typedef union {
9276349Sqs148142 	uint64_t value;
9286349Sqs148142 	struct {
9296349Sqs148142 #if defined(_BIG_ENDIAN)
930*6864Sqs148142 		uint32_t	rsrvd:32;
931*6864Sqs148142 		uint32_t	status:1;
932*6864Sqs148142 		uint32_t	cmd:1;
933*6864Sqs148142 		uint32_t	par_en:1;
934*6864Sqs148142 		uint32_t	rsrvd1:23;
935*6864Sqs148142 		uint32_t	dmc:2;
936*6864Sqs148142 		uint32_t	entry:4;
9376349Sqs148142 #else
938*6864Sqs148142 		uint32_t	entry:4;
939*6864Sqs148142 		uint32_t	dmc:2;
940*6864Sqs148142 		uint32_t	rsrvd1:23;
941*6864Sqs148142 		uint32_t	par_en:1;
942*6864Sqs148142 		uint32_t	cmd:1;
943*6864Sqs148142 		uint32_t	status:1;
944*6864Sqs148142 		uint32_t	rsrvd:32;
9456349Sqs148142 #endif
9466349Sqs148142 	} bits;
9476349Sqs148142 } rdc_shadow_cmd_t;
9486349Sqs148142 
9496349Sqs148142 
9506349Sqs148142 /*
9516349Sqs148142  * Register: RdcShadowData
9526349Sqs148142  * Rx DMA Shadow Tail Data
9536349Sqs148142  * Description: See rdcShadowCmd register.
9546349Sqs148142  * Fields:
9556349Sqs148142  *     For writes, data which is written into shadow tail. For reads,
9566349Sqs148142  *     data read from the shadow tail.
9576349Sqs148142  */
9586349Sqs148142 typedef union {
9596349Sqs148142 	uint64_t value;
9606349Sqs148142 	struct {
9616349Sqs148142 #if defined(_BIG_ENDIAN)
962*6864Sqs148142 		uint32_t	data:32;
963*6864Sqs148142 		uint32_t	data_l:32;
9646349Sqs148142 #else
965*6864Sqs148142 		uint32_t	data_l:32;
966*6864Sqs148142 		uint32_t	data:32;
9676349Sqs148142 #endif
9686349Sqs148142 	} bits;
9696349Sqs148142 } rdc_shadow_data_t;
9706349Sqs148142 
9716349Sqs148142 
9726349Sqs148142 /*
9736349Sqs148142  * Register: RdcShadowParData
9746349Sqs148142  * Rx DMA Shadow Tail Parity Data
9756349Sqs148142  * Description: See rdcShadowCmd register.
9766349Sqs148142  * Fields:
9776349Sqs148142  *     For writes, parity data is written into shadow tail. For
9786349Sqs148142  *     reads, parity data read from the shadow tail.
9796349Sqs148142  */
9806349Sqs148142 typedef union {
9816349Sqs148142 	uint64_t value;
9826349Sqs148142 	struct {
9836349Sqs148142 #if defined(_BIG_ENDIAN)
984*6864Sqs148142 		uint32_t	rsrvd:32;
985*6864Sqs148142 		uint32_t	rsrvd1:24;
986*6864Sqs148142 		uint32_t	parity_data:8;
9876349Sqs148142 #else
988*6864Sqs148142 		uint32_t	parity_data:8;
989*6864Sqs148142 		uint32_t	rsrvd1:24;
990*6864Sqs148142 		uint32_t	rsrvd:32;
9916349Sqs148142 #endif
9926349Sqs148142 	} bits;
9936349Sqs148142 } rdc_shadow_par_data_t;
9946349Sqs148142 
9956349Sqs148142 
9966349Sqs148142 /*
9976349Sqs148142  * Register: RdcCtrlFifoCmd
9986349Sqs148142  * Rx DMA Control Fifo Command
9996349Sqs148142  * Description: Allows debug access to the entire Rx Ctl FIFO, along
10006349Sqs148142  * with the rdcCtrlFifoData register. Writing the rdcCtrlFifoCmd
10016349Sqs148142  * triggers the access. For writes, software writes the 128 bits of
10026349Sqs148142  * data to the rdcCtrlFifoData registers before writing the write
10036349Sqs148142  * command to this register. For reads, software first writes the the
10046349Sqs148142  * read command to this register, then reads the 128-bit value from
10056349Sqs148142  * the rdcCtrlFifoData registers. The valid field should be polled by
10066349Sqs148142  * software until it goes low, indicating the read or write has
10076349Sqs148142  * completed.
10086349Sqs148142  * Fields:
10096349Sqs148142  *     status of indirect access 0=busy 1=done
10106349Sqs148142  *     Command type. 1 indicates a read command, 0 a write command.
10116349Sqs148142  *     enable writing of ECC bits 1=enabled, 0=disabled
10126349Sqs148142  *     Entry in the rx control ram to read or write
10136349Sqs148142  */
10146349Sqs148142 typedef union {
10156349Sqs148142 	uint64_t value;
10166349Sqs148142 	struct {
10176349Sqs148142 #if defined(_BIG_ENDIAN)
1018*6864Sqs148142 		uint32_t	rsrvd:32;
1019*6864Sqs148142 		uint32_t	status:1;
1020*6864Sqs148142 		uint32_t	cmd:1;
1021*6864Sqs148142 		uint32_t	ecc_en:1;
1022*6864Sqs148142 		uint32_t	rsrvd1:20;
1023*6864Sqs148142 		uint32_t	entry:9;
10246349Sqs148142 #else
1025*6864Sqs148142 		uint32_t	entry:9;
1026*6864Sqs148142 		uint32_t	rsrvd1:20;
1027*6864Sqs148142 		uint32_t	ecc_en:1;
1028*6864Sqs148142 		uint32_t	cmd:1;
1029*6864Sqs148142 		uint32_t	status:1;
1030*6864Sqs148142 		uint32_t	rsrvd:32;
10316349Sqs148142 #endif
10326349Sqs148142 	} bits;
10336349Sqs148142 } rdc_ctrl_fifo_cmd_t;
10346349Sqs148142 
10356349Sqs148142 
10366349Sqs148142 /*
10376349Sqs148142  * Register: RdcCtrlFifoDataLo
10386349Sqs148142  * Rx DMA Control Fifo Data Lo
10396349Sqs148142  * Description: Lower 64 bits read or written to the Rx Ctl FIFO. See
10406349Sqs148142  * rdcCtrlFifoCmd register.
10416349Sqs148142  * Fields:
10426349Sqs148142  *     For writes, data which is written into rx control ram. For
10436349Sqs148142  *     reads, data read from the rx control ram.
10446349Sqs148142  */
10456349Sqs148142 typedef union {
10466349Sqs148142 	uint64_t value;
10476349Sqs148142 	struct {
10486349Sqs148142 #if defined(_BIG_ENDIAN)
1049*6864Sqs148142 		uint32_t	data:32;
1050*6864Sqs148142 		uint32_t	data_l:32;
10516349Sqs148142 #else
1052*6864Sqs148142 		uint32_t	data_l:32;
1053*6864Sqs148142 		uint32_t	data:32;
10546349Sqs148142 #endif
10556349Sqs148142 	} bits;
10566349Sqs148142 } rdc_ctrl_fifo_data_lo_t;
10576349Sqs148142 
10586349Sqs148142 
10596349Sqs148142 /*
10606349Sqs148142  * Register: RdcCtrlFifoDataHi
10616349Sqs148142  * Rx DMA Control Fifo Data Hi
10626349Sqs148142  * Description: Upper 64 bits read or written to the Rx Ctl FIFO. See
10636349Sqs148142  * rdcCtrlFifoCmd register.
10646349Sqs148142  * Fields:
10656349Sqs148142  *     For writes, data which is written into rx control ram. For
10666349Sqs148142  *     reads, data read from the rx control ram.
10676349Sqs148142  */
10686349Sqs148142 typedef union {
10696349Sqs148142 	uint64_t value;
10706349Sqs148142 	struct {
10716349Sqs148142 #if defined(_BIG_ENDIAN)
1072*6864Sqs148142 		uint32_t	data:32;
1073*6864Sqs148142 		uint32_t	data_l:32;
10746349Sqs148142 #else
1075*6864Sqs148142 		uint32_t	data_l:32;
1076*6864Sqs148142 		uint32_t	data:32;
10776349Sqs148142 #endif
10786349Sqs148142 	} bits;
10796349Sqs148142 } rdc_ctrl_fifo_data_hi_t;
10806349Sqs148142 
10816349Sqs148142 
10826349Sqs148142 /*
10836349Sqs148142  * Register: RdcCtrlFifoDataEcc
10846349Sqs148142  * Rx DMA Control Fifo Data ECC
10856349Sqs148142  * Description: 16 bits ECC data read or written to the Rx Ctl FIFO.
10866349Sqs148142  * See rdcCtrlFifoCmd register.
10876349Sqs148142  * Fields:
10886349Sqs148142  *     For writes, data which is written into rx control ram. For
10896349Sqs148142  *     reads, data read from the rx control ram.
10906349Sqs148142  *     For writes, data which is written into rx control ram. For
10916349Sqs148142  *     reads, data read from the rx control ram.
10926349Sqs148142  */
10936349Sqs148142 typedef union {
10946349Sqs148142 	uint64_t value;
10956349Sqs148142 	struct {
10966349Sqs148142 #if defined(_BIG_ENDIAN)
1097*6864Sqs148142 		uint32_t	rsrvd:32;
1098*6864Sqs148142 		uint32_t	rsrvd1:16;
1099*6864Sqs148142 		uint32_t	ecc_data_hi:8;
1100*6864Sqs148142 		uint32_t	ecc_data_lo:8;
11016349Sqs148142 #else
1102*6864Sqs148142 		uint32_t	ecc_data_lo:8;
1103*6864Sqs148142 		uint32_t	ecc_data_hi:8;
1104*6864Sqs148142 		uint32_t	rsrvd1:16;
1105*6864Sqs148142 		uint32_t	rsrvd:32;
11066349Sqs148142 #endif
11076349Sqs148142 	} bits;
11086349Sqs148142 } rdc_ctrl_fifo_data_ecc_t;
11096349Sqs148142 
11106349Sqs148142 
11116349Sqs148142 /*
11126349Sqs148142  * Register: RdcDataFifoCmd
11136349Sqs148142  * Rx DMA Data Fifo Command
11146349Sqs148142  * Description: Allows debug access to the entire Rx Data FIFO, along
11156349Sqs148142  * with the rdcDataFifoData register. Writing the rdcCtrlFifoCmd
11166349Sqs148142  * triggers the access. For writes, software writes the 128 bits of
11176349Sqs148142  * data to the rdcDataFifoData registers before writing the write
11186349Sqs148142  * command to this register. For reads, software first writes the the
11196349Sqs148142  * read command to this register, then reads the 128-bit value from
11206349Sqs148142  * the rdcDataFifoData registers. The valid field should be polled by
11216349Sqs148142  * software until it goes low, indicating the read or write has
11226349Sqs148142  * completed.
11236349Sqs148142  * Fields:
11246349Sqs148142  *     status of indirect access 0=busy 1=done
11256349Sqs148142  *     Command type. 1 indicates a read command, 0 a write command.
11266349Sqs148142  *     enable writing of ECC bits 1=enabled, 0=disabled
11276349Sqs148142  *     Entry in the rx data ram to read or write
11286349Sqs148142  */
11296349Sqs148142 typedef union {
11306349Sqs148142 	uint64_t value;
11316349Sqs148142 	struct {
11326349Sqs148142 #if defined(_BIG_ENDIAN)
1133*6864Sqs148142 		uint32_t	rsrvd:32;
1134*6864Sqs148142 		uint32_t	status:1;
1135*6864Sqs148142 		uint32_t	cmd:1;
1136*6864Sqs148142 		uint32_t	ecc_en:1;
1137*6864Sqs148142 		uint32_t	rsrvd1:18;
1138*6864Sqs148142 		uint32_t	entry:11;
11396349Sqs148142 #else
1140*6864Sqs148142 		uint32_t	entry:11;
1141*6864Sqs148142 		uint32_t	rsrvd1:18;
1142*6864Sqs148142 		uint32_t	ecc_en:1;
1143*6864Sqs148142 		uint32_t	cmd:1;
1144*6864Sqs148142 		uint32_t	status:1;
1145*6864Sqs148142 		uint32_t	rsrvd:32;
11466349Sqs148142 #endif
11476349Sqs148142 	} bits;
11486349Sqs148142 } rdc_data_fifo_cmd_t;
11496349Sqs148142 
11506349Sqs148142 
11516349Sqs148142 /*
11526349Sqs148142  * Register: RdcDataFifoDataLo
11536349Sqs148142  * Rx DMA Data Fifo Data Lo
11546349Sqs148142  * Description: Lower 64 bits read or written to the Rx Data FIFO.
11556349Sqs148142  * See rdcDataFifoCmd register.
11566349Sqs148142  * Fields:
11576349Sqs148142  *     For writes, data which is written into rx data ram. For reads,
11586349Sqs148142  *     data read from the rx data ram.
11596349Sqs148142  */
11606349Sqs148142 typedef union {
11616349Sqs148142 	uint64_t value;
11626349Sqs148142 	struct {
11636349Sqs148142 #if defined(_BIG_ENDIAN)
1164*6864Sqs148142 		uint32_t	data:32;
1165*6864Sqs148142 		uint32_t	data_l:32;
11666349Sqs148142 #else
1167*6864Sqs148142 		uint32_t	data_l:32;
1168*6864Sqs148142 		uint32_t	data:32;
11696349Sqs148142 #endif
11706349Sqs148142 	} bits;
11716349Sqs148142 } rdc_data_fifo_data_lo_t;
11726349Sqs148142 
11736349Sqs148142 
11746349Sqs148142 /*
11756349Sqs148142  * Register: RdcDataFifoDataHi
11766349Sqs148142  * Rx DMA Data Fifo Data Hi
11776349Sqs148142  * Description: Upper 64 bits read or written to the Rx Data FIFO.
11786349Sqs148142  * See rdcDataFifoCmd register.
11796349Sqs148142  * Fields:
11806349Sqs148142  *     For writes, data which is written into rx data ram. For reads,
11816349Sqs148142  *     data read from the rx data ram.
11826349Sqs148142  */
11836349Sqs148142 typedef union {
11846349Sqs148142 	uint64_t value;
11856349Sqs148142 	struct {
11866349Sqs148142 #if defined(_BIG_ENDIAN)
1187*6864Sqs148142 		uint32_t	data:32;
1188*6864Sqs148142 		uint32_t	data_l:32;
11896349Sqs148142 #else
1190*6864Sqs148142 		uint32_t	data_l:32;
1191*6864Sqs148142 		uint32_t	data:32;
11926349Sqs148142 #endif
11936349Sqs148142 	} bits;
11946349Sqs148142 } rdc_data_fifo_data_hi_t;
11956349Sqs148142 
11966349Sqs148142 
11976349Sqs148142 /*
11986349Sqs148142  * Register: RdcDataFifoDataEcc
11996349Sqs148142  * Rx DMA Data Fifo ECC Data
12006349Sqs148142  * Description: 16 bits ECC data read or written to the Rx Data FIFO.
12016349Sqs148142  * See rdcDataFifoCmd register.
12026349Sqs148142  * Fields:
12036349Sqs148142  *     For writes, data which is written into rx data ram. For reads,
12046349Sqs148142  *     data read from the rx data ram.
12056349Sqs148142  *     For writes, data which is written into rx data ram. For reads,
12066349Sqs148142  *     data read from the rx data ram.
12076349Sqs148142  */
12086349Sqs148142 typedef union {
12096349Sqs148142 	uint64_t value;
12106349Sqs148142 	struct {
12116349Sqs148142 #if defined(_BIG_ENDIAN)
1212*6864Sqs148142 		uint32_t	rsrvd:32;
1213*6864Sqs148142 		uint32_t	rsrvd1:16;
1214*6864Sqs148142 		uint32_t	ecc_data_hi:8;
1215*6864Sqs148142 		uint32_t	ecc_data_lo:8;
12166349Sqs148142 #else
1217*6864Sqs148142 		uint32_t	ecc_data_lo:8;
1218*6864Sqs148142 		uint32_t	ecc_data_hi:8;
1219*6864Sqs148142 		uint32_t	rsrvd1:16;
1220*6864Sqs148142 		uint32_t	rsrvd:32;
12216349Sqs148142 #endif
12226349Sqs148142 	} bits;
12236349Sqs148142 } rdc_data_fifo_data_ecc_t;
12246349Sqs148142 
12256349Sqs148142 
12266349Sqs148142 /*
12276349Sqs148142  * Register: RdcStatIntDbg
12286349Sqs148142  * RDC Debug Control and Status Interrupt
12296349Sqs148142  * Description: RDC debug control and status interrupt register.
12306349Sqs148142  * Debug RDC control and status register bits to check if interrupt
12316349Sqs148142  * is asserted used to detect error conditions.
12326349Sqs148142  * Fields:
12336349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12346349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12356349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 0.
12366349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 0.
12376349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12386349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12396349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12406349Sqs148142  *     Set to 1 to enable interrupt
12416349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12426349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12436349Sqs148142  *     Set to 1 to enable interrupt Part of LDF 1.
12446349Sqs148142  */
12456349Sqs148142 typedef union {
12466349Sqs148142 	uint64_t value;
12476349Sqs148142 	struct {
12486349Sqs148142 #if defined(_BIG_ENDIAN)
1249*6864Sqs148142 		uint32_t	rsrvd:10;
1250*6864Sqs148142 		uint32_t	rbr_cpl_to:1;
1251*6864Sqs148142 		uint32_t	peu_resp_err:1;
1252*6864Sqs148142 		uint32_t	rsrvd1:5;
1253*6864Sqs148142 		uint32_t	rcr_thres:1;
1254*6864Sqs148142 		uint32_t	rcr_to:1;
1255*6864Sqs148142 		uint32_t	rcr_shadow_par_err:1;
1256*6864Sqs148142 		uint32_t	rbr_prefetch_par_err:1;
1257*6864Sqs148142 		uint32_t	rsrvd2:2;
1258*6864Sqs148142 		uint32_t	rbr_pre_empty:1;
1259*6864Sqs148142 		uint32_t	rcr_shadow_full:1;
1260*6864Sqs148142 		uint32_t	rsrvd3:2;
1261*6864Sqs148142 		uint32_t	rcr_full:1;
1262*6864Sqs148142 		uint32_t	rbr_empty:1;
1263*6864Sqs148142 		uint32_t	rbr_full:1;
1264*6864Sqs148142 		uint32_t	rsrvd4:2;
1265*6864Sqs148142 		uint32_t	rsrvd5:32;
12666349Sqs148142 #else
1267*6864Sqs148142 		uint32_t	rsrvd5:32;
1268*6864Sqs148142 		uint32_t	rsrvd4:2;
1269*6864Sqs148142 		uint32_t	rbr_full:1;
1270*6864Sqs148142 		uint32_t	rbr_empty:1;
1271*6864Sqs148142 		uint32_t	rcr_full:1;
1272*6864Sqs148142 		uint32_t	rsrvd3:2;
1273*6864Sqs148142 		uint32_t	rcr_shadow_full:1;
1274*6864Sqs148142 		uint32_t	rbr_pre_empty:1;
1275*6864Sqs148142 		uint32_t	rsrvd2:2;
1276*6864Sqs148142 		uint32_t	rbr_prefetch_par_err:1;
1277*6864Sqs148142 		uint32_t	rcr_shadow_par_err:1;
1278*6864Sqs148142 		uint32_t	rcr_to:1;
1279*6864Sqs148142 		uint32_t	rcr_thres:1;
1280*6864Sqs148142 		uint32_t	rsrvd1:5;
1281*6864Sqs148142 		uint32_t	peu_resp_err:1;
1282*6864Sqs148142 		uint32_t	rbr_cpl_to:1;
1283*6864Sqs148142 		uint32_t	rsrvd:10;
12846349Sqs148142 #endif
12856349Sqs148142 	} bits;
12866349Sqs148142 } rdc_stat_int_dbg_t;
12876349Sqs148142 
12886349Sqs148142 
12896349Sqs148142 /*
12906349Sqs148142  * Register: RdcPrefParLog
12916349Sqs148142  * Rx DMA Prefetch Buffer Parity Log
12926349Sqs148142  * Description: RDC DMA Prefetch Buffer parity log register This
12936349Sqs148142  * register logs the first parity error that is encountered. Writing
12946349Sqs148142  * a 1 to RdcStat::rbrPrefetchParErr clears this register
12956349Sqs148142  * Fields:
12966349Sqs148142  *     Address of parity error
12976349Sqs148142  */
12986349Sqs148142 typedef union {
12996349Sqs148142 	uint64_t value;
13006349Sqs148142 	struct {
13016349Sqs148142 #if defined(_BIG_ENDIAN)
1302*6864Sqs148142 		uint32_t	rsrvd:32;
1303*6864Sqs148142 		uint32_t	rsrvd_l:25;
1304*6864Sqs148142 		uint32_t	address:7;
13056349Sqs148142 #else
1306*6864Sqs148142 		uint32_t	address:7;
1307*6864Sqs148142 		uint32_t	rsrvd_l:25;
1308*6864Sqs148142 		uint32_t	rsrvd:32;
13096349Sqs148142 #endif
13106349Sqs148142 	} bits;
13116349Sqs148142 } rdc_pref_par_log_t;
13126349Sqs148142 
13136349Sqs148142 
13146349Sqs148142 /*
13156349Sqs148142  * Register: RdcShadowParLog
13166349Sqs148142  * Rx DMA Shadow Tail Parity Log
13176349Sqs148142  * Description: RDC DMA Shadow Tail parity log register This register
13186349Sqs148142  * logs the first parity error that is encountered. Writing a 1 to
13196349Sqs148142  * RdcStat::rcrShadowParErr clears this register
13206349Sqs148142  * Fields:
13216349Sqs148142  *     Address of parity error
13226349Sqs148142  */
13236349Sqs148142 typedef union {
13246349Sqs148142 	uint64_t value;
13256349Sqs148142 	struct {
13266349Sqs148142 #if defined(_BIG_ENDIAN)
1327*6864Sqs148142 		uint32_t	rsrvd:32;
1328*6864Sqs148142 		uint32_t	rsrvd1:26;
1329*6864Sqs148142 		uint32_t	address:6;
13306349Sqs148142 #else
1331*6864Sqs148142 		uint32_t	address:6;
1332*6864Sqs148142 		uint32_t	rsrvd1:26;
1333*6864Sqs148142 		uint32_t	rsrvd:32;
13346349Sqs148142 #endif
13356349Sqs148142 	} bits;
13366349Sqs148142 } rdc_shadow_par_log_t;
13376349Sqs148142 
13386349Sqs148142 
13396349Sqs148142 /*
13406349Sqs148142  * Register: RdcCtrlFifoEccLog
13416349Sqs148142  * Rx DMA Control Fifo ECC Log
13426349Sqs148142  * Description: RDC DMA Control FIFO ECC log register This register
13436349Sqs148142  * logs the first ECC error that is encountered. A double-bit ecc
13446349Sqs148142  * error over writes any single-bit ecc error previously logged
13456349Sqs148142  * Fields:
13466349Sqs148142  *     Address of ECC error for upper 64 bits Writing a 1 to
13476349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoDed[1] or
13486349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoSec[1] clears this register
13496349Sqs148142  *     Address of ECC error for lower 64 bits Writing a 1 to
13506349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoDed[0] or
13516349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoSec[0] clears this register
13526349Sqs148142  *     ECC syndrome for upper 64 bits Writing a 1 to
13536349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoDed[1] or
13546349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoSec[1] clears this register
13556349Sqs148142  *     ECC syndrome for lower 64 bits Writing a 1 to
13566349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoDed[0] or
13576349Sqs148142  *     RdcFifoErrStat::rxCtrlFifoSec[0] clears this register
13586349Sqs148142  */
13596349Sqs148142 typedef union {
13606349Sqs148142 	uint64_t value;
13616349Sqs148142 	struct {
13626349Sqs148142 #if defined(_BIG_ENDIAN)
1363*6864Sqs148142 		uint32_t	rsrvd:7;
1364*6864Sqs148142 		uint32_t	address_hi:9;
1365*6864Sqs148142 		uint32_t	rsrvd1:7;
1366*6864Sqs148142 		uint32_t	address_lo:9;
1367*6864Sqs148142 		uint32_t	rsrvd2:8;
1368*6864Sqs148142 		uint32_t	syndrome_hi:8;
1369*6864Sqs148142 		uint32_t	rsrvd3:8;
1370*6864Sqs148142 		uint32_t	syndrome_lo:8;
13716349Sqs148142 #else
1372*6864Sqs148142 		uint32_t	syndrome_lo:8;
1373*6864Sqs148142 		uint32_t	rsrvd3:8;
1374*6864Sqs148142 		uint32_t	syndrome_hi:8;
1375*6864Sqs148142 		uint32_t	rsrvd2:8;
1376*6864Sqs148142 		uint32_t	address_lo:9;
1377*6864Sqs148142 		uint32_t	rsrvd1:7;
1378*6864Sqs148142 		uint32_t	address_hi:9;
1379*6864Sqs148142 		uint32_t	rsrvd:7;
13806349Sqs148142 #endif
13816349Sqs148142 	} bits;
13826349Sqs148142 } rdc_ctrl_fifo_ecc_log_t;
13836349Sqs148142 
13846349Sqs148142 
13856349Sqs148142 /*
13866349Sqs148142  * Register: RdcDataFifoEccLog
13876349Sqs148142  * Rx DMA Data Fifo ECC Log
13886349Sqs148142  * Description: RDC DMA data FIFO ECC log register This register logs
13896349Sqs148142  * the first ECC error that is encountered. A double-bit ecc error
13906349Sqs148142  * over writes any single-bit ecc error previously logged
13916349Sqs148142  * Fields:
13926349Sqs148142  *     Address of ECC error for upper 64 bits Writing a 1 to
13936349Sqs148142  *     RdcFifoErrStat::rxDataFifoDed[1] or
13946349Sqs148142  *     RdcFifoErrStat::rxDataFifoSec[1] clears this register
13956349Sqs148142  *     Address of ECC error for lower 64 bits Writing a 1 to
13966349Sqs148142  *     RdcFifoErrStat::rxDataFifoDed[0] or
13976349Sqs148142  *     RdcFifoErrStat::rxDataFifoSec[0] clears this register
13986349Sqs148142  *     ECC syndrome for upper 64 bits Writing a 1 to
13996349Sqs148142  *     RdcFifoErrStat::rxDataFifoDed[1] or
14006349Sqs148142  *     RdcFifoErrStat::rxDataFifoSec[1] clears this register
14016349Sqs148142  *     ECC syndrome for lower 64 bits Writing a 1 to
14026349Sqs148142  *     RdcFifoErrStat::rxDataFifoDed[0] or
14036349Sqs148142  *     RdcFifoErrStat::rxDataFifoSec[0] clears this register
14046349Sqs148142  */
14056349Sqs148142 typedef union {
14066349Sqs148142 	uint64_t value;
14076349Sqs148142 	struct {
14086349Sqs148142 #if defined(_BIG_ENDIAN)
1409*6864Sqs148142 		uint32_t	rsrvd:5;
1410*6864Sqs148142 		uint32_t	address_hi:11;
1411*6864Sqs148142 		uint32_t	rsrvd1:5;
1412*6864Sqs148142 		uint32_t	address_lo:11;
1413*6864Sqs148142 		uint32_t	rsrvd2:8;
1414*6864Sqs148142 		uint32_t	syndrome_hi:8;
1415*6864Sqs148142 		uint32_t	rsrvd3:8;
1416*6864Sqs148142 		uint32_t	syndrome_lo:8;
14176349Sqs148142 #else
1418*6864Sqs148142 		uint32_t	syndrome_lo:8;
1419*6864Sqs148142 		uint32_t	rsrvd3:8;
1420*6864Sqs148142 		uint32_t	syndrome_hi:8;
1421*6864Sqs148142 		uint32_t	rsrvd2:8;
1422*6864Sqs148142 		uint32_t	address_lo:11;
1423*6864Sqs148142 		uint32_t	rsrvd1:5;
1424*6864Sqs148142 		uint32_t	address_hi:11;
1425*6864Sqs148142 		uint32_t	rsrvd:5;
14266349Sqs148142 #endif
14276349Sqs148142 	} bits;
14286349Sqs148142 } rdc_data_fifo_ecc_log_t;
14296349Sqs148142 
14306349Sqs148142 
14316349Sqs148142 /*
14326349Sqs148142  * Register: RdcFifoErrIntMask
14336349Sqs148142  * FIFO Error Interrupt Mask
14346349Sqs148142  * Description: FIFO Error interrupt mask register. Control the
14356349Sqs148142  * interrupt assertion of FIFO Errors. see FIFO Error Status register
14366349Sqs148142  * for more description
14376349Sqs148142  * Fields:
14386349Sqs148142  *     Set to 0 to enable flagging when rx ctrl ram logs ecc single
14396349Sqs148142  *     bit error Part of Device Error 0.
14406349Sqs148142  *     Set to 0 to enable flagging when rx ctrl ram logs ecc double
14416349Sqs148142  *     bit error Part of Device Error 1.
14426349Sqs148142  *     Set to 0 to enable flagging when rx data ram logs ecc single
14436349Sqs148142  *     bit error Part of Device Error 0.
14446349Sqs148142  *     Set to 0 to enable flagging when rx data ram logs ecc double
14456349Sqs148142  *     bit error Part of Device Error 1.
14466349Sqs148142  */
14476349Sqs148142 typedef union {
14486349Sqs148142 	uint64_t value;
14496349Sqs148142 	struct {
14506349Sqs148142 #if defined(_BIG_ENDIAN)
1451*6864Sqs148142 		uint32_t	rsrvd:32;
1452*6864Sqs148142 		uint32_t	rsrvd1:24;
1453*6864Sqs148142 		uint32_t	rx_ctrl_fifo_sec:2;
1454*6864Sqs148142 		uint32_t	rx_ctrl_fifo_ded:2;
1455*6864Sqs148142 		uint32_t	rx_data_fifo_sec:2;
1456*6864Sqs148142 		uint32_t	rx_data_fifo_ded:2;
14576349Sqs148142 #else
1458*6864Sqs148142 		uint32_t	rx_data_fifo_ded:2;
1459*6864Sqs148142 		uint32_t	rx_data_fifo_sec:2;
1460*6864Sqs148142 		uint32_t	rx_ctrl_fifo_ded:2;
1461*6864Sqs148142 		uint32_t	rx_ctrl_fifo_sec:2;
1462*6864Sqs148142 		uint32_t	rsrvd1:24;
1463*6864Sqs148142 		uint32_t	rsrvd:32;
14646349Sqs148142 #endif
14656349Sqs148142 	} bits;
14666349Sqs148142 } rdc_fifo_err_int_mask_t;
14676349Sqs148142 
14686349Sqs148142 
14696349Sqs148142 /*
14706349Sqs148142  * Register: RdcFifoErrStat
14716349Sqs148142  * FIFO Error Status
14726349Sqs148142  * Description: FIFO Error Status register. Log status of FIFO
14736349Sqs148142  * Errors. Rx Data buffer is physically two seperate memory, each of
14746349Sqs148142  * the two error bits point to one of the memory. Each entry in the
14756349Sqs148142  * rx ctrl point to 2 buffer locations and they are read seperatly.
14766349Sqs148142  * The two error bits point to each half of the entry.
14776349Sqs148142  * Fields:
14786349Sqs148142  *     Set to 1 by HW to indicate rx control ram received a ecc
14796349Sqs148142  *     single bit error Writing a 1 to either bit clears the
14806349Sqs148142  *     RdcCtrlFifoEccLog register Non-Fatal error. Part of Device
14816349Sqs148142  *     Error 0
14826349Sqs148142  *     Set to 1 by HW to indicate rx control ram received a ecc
14836349Sqs148142  *     double bit error Writing a 1 to either bit clears the
14846349Sqs148142  *     RdcCtrlFifoEccLog register Fatal error. Part of Device Error 1
14856349Sqs148142  *     Set to 1 by HW to indicate rx data ram received a ecc single
14866349Sqs148142  *     bit error Writing a 1 to either bit clears the
14876349Sqs148142  *     RdcDataFifoEccLog register Non-Fatal error. Part of Device
14886349Sqs148142  *     Error 0
14896349Sqs148142  *     Set to 1 by HW to indicate rx data ram received a ecc double
14906349Sqs148142  *     bit error Writing a 1 to either bit clears the
14916349Sqs148142  *     RdcDataFifoEccLog register Fatal error. Part of Device Error 1
14926349Sqs148142  */
14936349Sqs148142 typedef union {
14946349Sqs148142 	uint64_t value;
14956349Sqs148142 	struct {
14966349Sqs148142 #if defined(_BIG_ENDIAN)
1497*6864Sqs148142 		uint32_t	rsrvd:32;
1498*6864Sqs148142 		uint32_t	rsrvd_l:24;
1499*6864Sqs148142 		uint32_t	rx_ctrl_fifo_sec:2;
1500*6864Sqs148142 		uint32_t	rx_ctrl_fifo_ded:2;
1501*6864Sqs148142 		uint32_t	rx_data_fifo_sec:2;
1502*6864Sqs148142 		uint32_t	rx_data_fifo_ded:2;
15036349Sqs148142 #else
1504*6864Sqs148142 		uint32_t	rx_data_fifo_ded:2;
1505*6864Sqs148142 		uint32_t	rx_data_fifo_sec:2;
1506*6864Sqs148142 		uint32_t	rx_ctrl_fifo_ded:2;
1507*6864Sqs148142 		uint32_t	rx_ctrl_fifo_sec:2;
1508*6864Sqs148142 		uint32_t	rsrvd_l:24;
1509*6864Sqs148142 		uint32_t	rsrvd:32;
15106349Sqs148142 #endif
15116349Sqs148142 	} bits;
15126349Sqs148142 } rdc_fifo_err_stat_t;
15136349Sqs148142 
15146349Sqs148142 
15156349Sqs148142 /*
15166349Sqs148142  * Register: RdcFifoErrIntDbg
15176349Sqs148142  * FIFO Error Interrupt Debug
15186349Sqs148142  * Description: FIFO Error interrupt Debug register. Debug Control
15196349Sqs148142  * the interrupt assertion of FIFO Errors.
15206349Sqs148142  * Fields:
15216349Sqs148142  *     Set to 1 to enable interrupt Part of Device Error 0.
15226349Sqs148142  *     Set to 1 to enable interrupt Part of Device Error 1.
15236349Sqs148142  *     Set to 1 to enable interrupt Part of Device Error 0.
15246349Sqs148142  *     Set to 1 to enable interrupt Part of Device Error 1.
15256349Sqs148142  */
15266349Sqs148142 typedef union {
15276349Sqs148142 	uint64_t value;
15286349Sqs148142 	struct {
15296349Sqs148142 #if defined(_BIG_ENDIAN)
1530*6864Sqs148142 		uint32_t	rsrvd:32;
1531*6864Sqs148142 		uint32_t	rsrvd1:24;
1532*6864Sqs148142 		uint32_t	rx_ctrl_fifo_sec:2;
1533*6864Sqs148142 		uint32_t	rx_ctrl_fifo_ded:2;
1534*6864Sqs148142 		uint32_t	rx_data_fifo_sec:2;
1535*6864Sqs148142 		uint32_t	rx_data_fifo_ded:2;
15366349Sqs148142 #else
1537*6864Sqs148142 		uint32_t	rx_data_fifo_ded:2;
1538*6864Sqs148142 		uint32_t	rx_data_fifo_sec:2;
1539*6864Sqs148142 		uint32_t	rx_ctrl_fifo_ded:2;
1540*6864Sqs148142 		uint32_t	rx_ctrl_fifo_sec:2;
1541*6864Sqs148142 		uint32_t	rsrvd1:24;
1542*6864Sqs148142 		uint32_t	rsrvd:32;
15436349Sqs148142 #endif
15446349Sqs148142 	} bits;
15456349Sqs148142 } rdc_fifo_err_int_dbg_t;
15466349Sqs148142 
15476349Sqs148142 
15486349Sqs148142 /*
15496349Sqs148142  * Register: RdcPeuTxnLog
15506349Sqs148142  * PEU Transaction Log
15516349Sqs148142  * Description: PEU Transaction Log register. Counts the memory read
15526349Sqs148142  * and write requests sent to peu block. For debug only.
15536349Sqs148142  * Fields:
15546349Sqs148142  *     Counts the memory write transactions sent to peu block. This
15556349Sqs148142  *     counter saturates. This counter increments when vnmDbg is on
15566349Sqs148142  *     Counts the memory read transactions sent to peu block. This
15576349Sqs148142  *     counter saturates. This counter increments when vnmDbg is on
15586349Sqs148142  */
15596349Sqs148142 typedef union {
15606349Sqs148142 	uint64_t value;
15616349Sqs148142 	struct {
15626349Sqs148142 #if defined(_BIG_ENDIAN)
1563*6864Sqs148142 		uint32_t	rsrvd:32;
1564*6864Sqs148142 		uint32_t	rsrvd1:16;
1565*6864Sqs148142 		uint32_t	peu_mem_wr_count:8;
1566*6864Sqs148142 		uint32_t	peu_mem_rd_count:8;
15676349Sqs148142 #else
1568*6864Sqs148142 		uint32_t	peu_mem_rd_count:8;
1569*6864Sqs148142 		uint32_t	peu_mem_wr_count:8;
1570*6864Sqs148142 		uint32_t	rsrvd1:16;
1571*6864Sqs148142 		uint32_t	rsrvd:32;
15726349Sqs148142 #endif
15736349Sqs148142 	} bits;
15746349Sqs148142 } rdc_peu_txn_log_t;
15756349Sqs148142 
15766349Sqs148142 
15776349Sqs148142 /*
15786349Sqs148142  * Register: RdcDbgTrainingVec
15796349Sqs148142  * Debug Training Vector
15806349Sqs148142  * Description: Debug Training Vector register Debug Training Vector
15816349Sqs148142  * for the coreClk domain. For the pcieClk domain, the dbgxMsb and
15826349Sqs148142  * dbgyMsb values are flipped on the debug bus.
15836349Sqs148142  * Fields:
15846349Sqs148142  *     Blade Number, the value read depends on the blade this block
15856349Sqs148142  *     resides
15866349Sqs148142  *     debug training vector the sub-group select value of 0 selects
15876349Sqs148142  *     this vector
15886349Sqs148142  *     Blade Number, the value read depends on the blade this block
15896349Sqs148142  *     resides
15906349Sqs148142  *     debug training vector the sub-group select value of 0 selects
15916349Sqs148142  *     this vector
15926349Sqs148142  */
15936349Sqs148142 typedef union {
15946349Sqs148142 	uint64_t value;
15956349Sqs148142 	struct {
15966349Sqs148142 #if defined(_BIG_ENDIAN)
1597*6864Sqs148142 		uint32_t	rsrvd:32;
1598*6864Sqs148142 		uint32_t	dbgx_msb:1;
1599*6864Sqs148142 		uint32_t	dbgx_bld_num:3;
1600*6864Sqs148142 		uint32_t	dbgx_training_vec:12;
1601*6864Sqs148142 		uint32_t	dbgy_msb:1;
1602*6864Sqs148142 		uint32_t	dbgy_bld_num:3;
1603*6864Sqs148142 		uint32_t	dbgy_training_vec:12;
16046349Sqs148142 #else
1605*6864Sqs148142 		uint32_t	dbgy_training_vec:12;
1606*6864Sqs148142 		uint32_t	dbgy_bld_num:3;
1607*6864Sqs148142 		uint32_t	dbgy_msb:1;
1608*6864Sqs148142 		uint32_t	dbgx_training_vec:12;
1609*6864Sqs148142 		uint32_t	dbgx_bld_num:3;
1610*6864Sqs148142 		uint32_t	dbgx_msb:1;
1611*6864Sqs148142 		uint32_t	rsrvd:32;
16126349Sqs148142 #endif
16136349Sqs148142 	} bits;
16146349Sqs148142 } rdc_dbg_training_vec_t;
16156349Sqs148142 
16166349Sqs148142 
16176349Sqs148142 /*
16186349Sqs148142  * Register: RdcDbgGrpSel
16196349Sqs148142  * Debug Group Select
16206349Sqs148142  * Description: Debug Group Select register. Debug Group Select
16216349Sqs148142  * register selects the group of signals brought out on the debug
16226349Sqs148142  * port
16236349Sqs148142  * Fields:
16246349Sqs148142  *     high 32b sub-group select
16256349Sqs148142  *     low 32b sub-group select
16266349Sqs148142  */
16276349Sqs148142 typedef union {
16286349Sqs148142 	uint64_t value;
16296349Sqs148142 	struct {
16306349Sqs148142 #if defined(_BIG_ENDIAN)
1631*6864Sqs148142 		uint32_t	rsrvd:32;
1632*6864Sqs148142 		uint32_t	rsrvd_l:16;
1633*6864Sqs148142 		uint32_t	dbg_h32_sub_sel:8;
1634*6864Sqs148142 		uint32_t	dbg_l32_sub_sel:8;
16356349Sqs148142 #else
1636*6864Sqs148142 		uint32_t	dbg_l32_sub_sel:8;
1637*6864Sqs148142 		uint32_t	dbg_h32_sub_sel:8;
1638*6864Sqs148142 		uint32_t	rsrvd_l:16;
1639*6864Sqs148142 		uint32_t	rsrvd:32;
16406349Sqs148142 #endif
16416349Sqs148142 	} bits;
16426349Sqs148142 } rdc_dbg_grp_sel_t;
16436349Sqs148142 
16446349Sqs148142 
16456349Sqs148142 #ifdef	__cplusplus
16466349Sqs148142 }
16476349Sqs148142 #endif
16486349Sqs148142 
16496349Sqs148142 #endif	/* _HXGE_RDC_HW_H */
1650