Home | History | Annotate | Download | only in hxge
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 /*
     22  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
     23  * Use is subject to license terms.
     24  */
     25 
     26 #ifndef	_HXGE_PEU_HW_H
     27 #define	_HXGE_PEU_HW_H
     28 
     29 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     30 
     31 #ifdef	__cplusplus
     32 extern "C" {
     33 #endif
     34 
     35 #define	PIO_LDSV_BASE_ADDR			0X800000
     36 #define	PIO_BASE_ADDR				0X000000
     37 #define	PIO_LDMASK_BASE_ADDR			0XA00000
     38 
     39 #define	DEVICE_VENDOR_ID			(PIO_BASE_ADDR + 0x0)
     40 #define	STATUS_COMMAND				(PIO_BASE_ADDR + 0x4)
     41 #define	CLASSCODE_REV_ID			(PIO_BASE_ADDR + 0x8)
     42 #define	BIST_HDRTYP_LATTMR_CASHLSZ		(PIO_BASE_ADDR + 0xC)
     43 #define	PIO_BAR0				(PIO_BASE_ADDR + 0x10)
     44 #define	PIO_BAR1				(PIO_BASE_ADDR + 0x14)
     45 #define	MSIX_BAR0				(PIO_BASE_ADDR + 0x18)
     46 #define	MSIX_BAR1				(PIO_BASE_ADDR + 0x1C)
     47 #define	VIRT_BAR0				(PIO_BASE_ADDR + 0x20)
     48 #define	VIRT_BAR1				(PIO_BASE_ADDR + 0x24)
     49 #define	CIS_PTR					(PIO_BASE_ADDR + 0x28)
     50 #define	SUB_VENDOR_ID				(PIO_BASE_ADDR + 0x2C)
     51 #define	EXP_ROM_BAR				(PIO_BASE_ADDR + 0x30)
     52 #define	CAP_PTR					(PIO_BASE_ADDR + 0x34)
     53 #define	INT_LINE				(PIO_BASE_ADDR + 0x3C)
     54 #define	PM_CAP					(PIO_BASE_ADDR + 0x40)
     55 #define	PM_CTRL_STAT				(PIO_BASE_ADDR + 0x44)
     56 #define	MSI_CAP					(PIO_BASE_ADDR + 0x50)
     57 #define	MSI_LO_ADDR				(PIO_BASE_ADDR + 0x54)
     58 #define	MSI_HI_ADDR				(PIO_BASE_ADDR + 0x58)
     59 #define	MSI_DATA				(PIO_BASE_ADDR + 0x5C)
     60 #define	MSI_MASK				(PIO_BASE_ADDR + 0x60)
     61 #define	MSI_PEND				(PIO_BASE_ADDR + 0x64)
     62 #define	MSIX_CAP				(PIO_BASE_ADDR + 0x70)
     63 #define	MSIX_TAB_OFF				(PIO_BASE_ADDR + 0x74)
     64 #define	MSIX_PBA_OFF				(PIO_BASE_ADDR + 0x78)
     65 #define	PCIE_CAP				(PIO_BASE_ADDR + 0x80)
     66 #define	DEV_CAP					(PIO_BASE_ADDR + 0x84)
     67 #define	DEV_STAT_CTRL				(PIO_BASE_ADDR + 0x88)
     68 #define	LNK_CAP					(PIO_BASE_ADDR + 0x8C)
     69 #define	LNK_STAT_CTRL				(PIO_BASE_ADDR + 0x90)
     70 #define	VEN_CAP_HDR				(PIO_BASE_ADDR + 0x94)
     71 #define	VEN_CTRL				(PIO_BASE_ADDR + 0x98)
     72 #define	VEN_PRT_HDR				(PIO_BASE_ADDR + 0x9C)
     73 #define	ACKLAT_REPLAY				(PIO_BASE_ADDR + 0xA0)
     74 #define	OTH_MSG					(PIO_BASE_ADDR + 0xA4)
     75 #define	FORCE_LINK				(PIO_BASE_ADDR + 0xA8)
     76 #define	ACK_FREQ				(PIO_BASE_ADDR + 0xAC)
     77 #define	LINK_CTRL				(PIO_BASE_ADDR + 0xB0)
     78 #define	LANE_SKEW				(PIO_BASE_ADDR + 0xB4)
     79 #define	SYMBOL_NUM				(PIO_BASE_ADDR + 0xB8)
     80 #define	SYMB_TIM_RADM_FLT1			(PIO_BASE_ADDR + 0xBC)
     81 #define	RADM_FLT2				(PIO_BASE_ADDR + 0xC0)
     82 #define	CASCADE_DEB_REG0			(PIO_BASE_ADDR + 0xC8)
     83 #define	CASCADE_DEB_REG1			(PIO_BASE_ADDR + 0xCC)
     84 #define	TXP_FC_CREDIT_STAT			(PIO_BASE_ADDR + 0xD0)
     85 #define	TXNP_FC_CREDIT_STAT			(PIO_BASE_ADDR + 0xD4)
     86 #define	TXCPL_FC_CREDIT_STAT			(PIO_BASE_ADDR + 0xD8)
     87 #define	QUEUE_STAT				(PIO_BASE_ADDR + 0xDC)
     88 #define	GBT_DEBUG0				(PIO_BASE_ADDR + 0xE0)
     89 #define	GBT_DEBUG1				(PIO_BASE_ADDR + 0xE4)
     90 #define	GBT_DEBUG2				(PIO_BASE_ADDR + 0xE8)
     91 #define	GBT_DEBUG3				(PIO_BASE_ADDR + 0xEC)
     92 #define	PIPE_DEBUG0				(PIO_BASE_ADDR + 0xF0)
     93 #define	PIPE_DEBUG1				(PIO_BASE_ADDR + 0xF4)
     94 #define	PIPE_DEBUG2				(PIO_BASE_ADDR + 0xF8)
     95 #define	PIPE_DEBUG3				(PIO_BASE_ADDR + 0xFC)
     96 #define	PCIE_ENH_CAP_HDR			(PIO_BASE_ADDR + 0x100)
     97 #define	UNC_ERR_STAT				(PIO_BASE_ADDR + 0x104)
     98 #define	UNC_ERR_MASK				(PIO_BASE_ADDR + 0x108)
     99 #define	UNC_ERR_SVRTY				(PIO_BASE_ADDR + 0x10C)
    100 #define	CORR_ERR_STAT				(PIO_BASE_ADDR + 0x110)
    101 #define	CORR_ERR_MASK				(PIO_BASE_ADDR + 0x114)
    102 #define	ADV_CAP_CTRL				(PIO_BASE_ADDR + 0x118)
    103 #define	HDR_LOG0				(PIO_BASE_ADDR + 0x11C)
    104 #define	HDR_LOG1				(PIO_BASE_ADDR + 0x120)
    105 #define	HDR_LOG2				(PIO_BASE_ADDR + 0x124)
    106 #define	HDR_LOG3				(PIO_BASE_ADDR + 0x128)
    107 #define	PIPE_RX_TX_CONTROL			(PIO_BASE_ADDR + 0x1000)
    108 #define	PIPE_RX_TX_STATUS			(PIO_BASE_ADDR + 0x1004)
    109 #define	PIPE_RX_TX_PWR_CNTL			(PIO_BASE_ADDR + 0x1008)
    110 #define	PIPE_RX_TX_PARAM			(PIO_BASE_ADDR + 0x1010)
    111 #define	PIPE_RX_TX_CLOCK			(PIO_BASE_ADDR + 0x1014)
    112 #define	PIPE_GLUE_CNTL0				(PIO_BASE_ADDR + 0x1018)
    113 #define	PIPE_GLUE_CNTL1				(PIO_BASE_ADDR + 0x101C)
    114 #define	HCR_REG					(PIO_BASE_ADDR + 0x2000)
    115 #define	BLOCK_RESET				(PIO_BASE_ADDR + 0x8000)
    116 #define	TIMEOUT_CFG				(PIO_BASE_ADDR + 0x8004)
    117 #define	HEART_CFG				(PIO_BASE_ADDR + 0x8008)
    118 #define	HEART_TIMER				(PIO_BASE_ADDR + 0x800C)
    119 #define	CIP_GP_CTRL				(PIO_BASE_ADDR + 0x8010)
    120 #define	CIP_STATUS				(PIO_BASE_ADDR + 0x8014)
    121 #define	CIP_LINK_STAT				(PIO_BASE_ADDR + 0x801C)
    122 #define	EPC_STAT				(PIO_BASE_ADDR + 0x8020)
    123 #define	EPC_DATA				(PIO_BASE_ADDR + 0x8024)
    124 #define	SPC_STAT				(PIO_BASE_ADDR + 0x8030)
    125 #define	HOST2SPI_INDACC_ADDR			(PIO_BASE_ADDR + 0x8050)
    126 #define	HOST2SPI_INDACC_CTRL			(PIO_BASE_ADDR + 0x8054)
    127 #define	HOST2SPI_INDACC_DATA			(PIO_BASE_ADDR + 0x8058)
    128 #define	BT_CTRL0				(PIO_BASE_ADDR + 0x8080)
    129 #define	BT_DATA0				(PIO_BASE_ADDR + 0x8084)
    130 #define	BT_INTMASK0				(PIO_BASE_ADDR + 0x8088)
    131 #define	BT_CTRL1				(PIO_BASE_ADDR + 0x8090)
    132 #define	BT_DATA1				(PIO_BASE_ADDR + 0x8094)
    133 #define	BT_INTMASK1				(PIO_BASE_ADDR + 0x8098)
    134 #define	BT_CTRL2				(PIO_BASE_ADDR + 0x80A0)
    135 #define	BT_DATA2				(PIO_BASE_ADDR + 0x80A4)
    136 #define	BT_INTMASK2				(PIO_BASE_ADDR + 0x80A8)
    137 #define	BT_CTRL3				(PIO_BASE_ADDR + 0x80B0)
    138 #define	BT_DATA3				(PIO_BASE_ADDR + 0x80B4)
    139 #define	BT_INTMASK3				(PIO_BASE_ADDR + 0x80B8)
    140 #define	DEBUG_SEL				(PIO_BASE_ADDR + 0x80C0)
    141 #define	INDACC_MEM0_CTRL			(PIO_BASE_ADDR + 0x80C4)
    142 #define	INDACC_MEM0_DATA0			(PIO_BASE_ADDR + 0x80C8)
    143 #define	INDACC_MEM0_DATA1			(PIO_BASE_ADDR + 0x80CC)
    144 #define	INDACC_MEM0_DATA2			(PIO_BASE_ADDR + 0x80D0)
    145 #define	INDACC_MEM0_DATA3			(PIO_BASE_ADDR + 0x80D4)
    146 #define	INDACC_MEM0_PRTY			(PIO_BASE_ADDR + 0x80D8)
    147 #define	INDACC_MEM1_CTRL			(PIO_BASE_ADDR + 0x80DC)
    148 #define	INDACC_MEM1_DATA0			(PIO_BASE_ADDR + 0x80E0)
    149 #define	INDACC_MEM1_DATA1			(PIO_BASE_ADDR + 0x80E4)
    150 #define	INDACC_MEM1_DATA2			(PIO_BASE_ADDR + 0x80E8)
    151 #define	INDACC_MEM1_DATA3			(PIO_BASE_ADDR + 0x80EC)
    152 #define	INDACC_MEM1_PRTY			(PIO_BASE_ADDR + 0x80F0)
    153 #define	PHY_DEBUG_TRAINING_VEC			(PIO_BASE_ADDR + 0x80F4)
    154 #define	PEU_DEBUG_TRAINING_VEC			(PIO_BASE_ADDR + 0x80F8)
    155 #define	PIPE_CFG0				(PIO_BASE_ADDR + 0x8120)
    156 #define	PIPE_CFG1				(PIO_BASE_ADDR + 0x8124)
    157 #define	CIP_BAR_MASK_CFG			(PIO_BASE_ADDR + 0x8134)
    158 #define	CIP_BAR_MASK				(PIO_BASE_ADDR + 0x8138)
    159 #define	CIP_LDSV0_STAT				(PIO_BASE_ADDR + 0x8140)
    160 #define	CIP_LDSV1_STAT				(PIO_BASE_ADDR + 0x8144)
    161 #define	PEU_INTR_STAT				(PIO_BASE_ADDR + 0x8148)
    162 #define	PEU_INTR_MASK				(PIO_BASE_ADDR + 0x814C)
    163 #define	PEU_INTR_STAT_MIRROR			(PIO_BASE_ADDR + 0x8150)
    164 #define	CPL_HDRQ_PERR_LOC			(PIO_BASE_ADDR + 0x8154)
    165 #define	CPL_DATAQ_PERR_LOC			(PIO_BASE_ADDR + 0x8158)
    166 #define	RETR_PERR_LOC				(PIO_BASE_ADDR + 0x815C)
    167 #define	RETR_SOT_PERR_LOC			(PIO_BASE_ADDR + 0x8160)
    168 #define	P_HDRQ_PERR_LOC				(PIO_BASE_ADDR + 0x8164)
    169 #define	P_DATAQ_PERR_LOC			(PIO_BASE_ADDR + 0x8168)
    170 #define	NP_HDRQ_PERR_LOC			(PIO_BASE_ADDR + 0x816C)
    171 #define	NP_DATAQ_PERR_LOC			(PIO_BASE_ADDR + 0x8170)
    172 #define	MSIX_PERR_LOC				(PIO_BASE_ADDR + 0x8174)
    173 #define	HCR_PERR_LOC				(PIO_BASE_ADDR + 0x8178)
    174 #define	TDC_PIOACC_ERR_LOG			(PIO_BASE_ADDR + 0x8180)
    175 #define	RDC_PIOACC_ERR_LOG			(PIO_BASE_ADDR + 0x8184)
    176 #define	PFC_PIOACC_ERR_LOG			(PIO_BASE_ADDR + 0x8188)
    177 #define	VMAC_PIOACC_ERR_LOG			(PIO_BASE_ADDR + 0x818C)
    178 #define	LD_GRP_CTRL				(PIO_BASE_ADDR + 0x8300)
    179 #define	DEV_ERR_STAT				(PIO_BASE_ADDR + 0x8380)
    180 #define	DEV_ERR_MASK				(PIO_BASE_ADDR + 0x8384)
    181 #define	LD_INTR_TIM_RES				(PIO_BASE_ADDR + 0x8390)
    182 #define	LDSV0					(PIO_LDSV_BASE_ADDR + 0x0)
    183 #define	LDSV1					(PIO_LDSV_BASE_ADDR + 0x4)
    184 #define	LD_INTR_MASK				(PIO_LDMASK_BASE_ADDR + 0x0)
    185 #define	LD_INTR_MGMT				(PIO_LDMASK_BASE_ADDR + 0x4)
    186 #define	SID					(PIO_LDMASK_BASE_ADDR + 0x8)
    187 
    188 
    189 /*
    190  * Register: DeviceVendorId
    191  * Device ID and Vendor ID
    192  * Description: Device ID/Vendor ID
    193  * Fields:
    194  *     Device ID Register: dbi writeable
    195  *     Vendor ID Register (Sun Microsystem): dbi writeable
    196  */
    197 typedef union {
    198 	uint32_t value;
    199 	struct {
    200 #if defined(_BIG_ENDIAN)
    201 		uint32_t	device_id:16;
    202 		uint32_t	vendor_id:16;
    203 #else
    204 		uint32_t	vendor_id:16;
    205 		uint32_t	device_id:16;
    206 #endif
    207 	} bits;
    208 } device_vendor_id_t;
    209 
    210 
    211 /*
    212  * Register: StatusCommand
    213  * Status and Command
    214  * Description: Status/Command
    215  * Fields:
    216  *     The device detected a parity error. The device detects
    217  *     Poisoned TLP received regardless of Command Register Parity
    218  *     Error Enable/Response bit.
    219  *     The device signaled a system error with SERR#. The device
    220  *     detects a UE, is about to send a F/NF error message; and if
    221  *     the Command Register SERR# enable is set.
    222  *     A transaction initiated by this device was terminated due to a
    223  *     Master Abort (i.e. Unsupported Request Completion Status was
    224  *     received).
    225  *     A transaction initiated by this device was terminated due to a
    226  *     Target Abort (i.e. Completer Abort Completion Status was
    227  *     received).
    228  *     Set when Completer Abort Completion Status is sent back to the
    229  *     RC. The request violated hydra's programming rules.
    230  *     The slowest DEVSEL# timing for this target device (N/A in
    231  *     PCIE)
    232  *     Master Data Parity Error - set if all the following conditions
    233  *     are true: received a poisoned TLP header or sending a poisoned
    234  *     write request; and the parity error response bit in the
    235  *     command register is set.
    236  *     Fast Back-to-Back Capable (N/A in PCIE)
    237  *     66 MHz Capable (N/A in PCIE)
    238  *     Capabilities List - presence of extended capability item.
    239  *     INTx Status
    240  *     INTx Assertion Disable
    241  *     Fast Back-to-Back Enable (N/A in PCIE)
    242  *     This device can drive the SERR# line.
    243  *     IDSEL Stepping/Wait Cycle Control (N/A in PCIE)
    244  *     This device can drive the PERR# line.
    245  *     VGA Palette Snoop (N/A in PCIE)
    246  *     The device can issue Memory Write-and-Invalidate commands (N/A
    247  *     in PCIE)
    248  *     This device monitors for PCI Special Cycles (N/A in PCIE)
    249  *     This device's bus master capability is enabled.
    250  *     This device responds to PCI memory accesses.
    251  *     This device responds to PCI IO accesses (No I/O space used in
    252  *     Hydra)
    253  */
    254 typedef union {
    255 	uint32_t value;
    256 	struct {
    257 #if defined(_BIG_ENDIAN)
    258 		uint32_t	det_par_err:1;
    259 		uint32_t	sig_serr:1;
    260 		uint32_t	rcv_mstr_abrt:1;
    261 		uint32_t	rcv_tgt_abrt:1;
    262 		uint32_t	sig_tgt_abrt:1;
    263 		uint32_t	devsel_timing:2;
    264 		uint32_t	mstr_dpe:1;
    265 		uint32_t	fast_b2b_cap:1;
    266 		uint32_t	rsrvd:1;
    267 		uint32_t	mhz_cap:1;
    268 		uint32_t	cap_list:1;
    269 		uint32_t	intx_stat:1;
    270 		uint32_t	rsrvd1:3;
    271 		uint32_t	rsrvd2:5;
    272 		uint32_t	intx_dis:1;
    273 		uint32_t	fast_b2b_en:1;
    274 		uint32_t	serr_en:1;
    275 		uint32_t	idsel_step:1;
    276 		uint32_t	par_err_en:1;
    277 		uint32_t	vga_snoop:1;
    278 		uint32_t	mwi_en:1;
    279 		uint32_t	special_cycle:1;
    280 		uint32_t	bm_en:1;
    281 		uint32_t	mem_sp_en:1;
    282 		uint32_t	io_sp_en:1;
    283 #else
    284 		uint32_t	io_sp_en:1;
    285 		uint32_t	mem_sp_en:1;
    286 		uint32_t	bm_en:1;
    287 		uint32_t	special_cycle:1;
    288 		uint32_t	mwi_en:1;
    289 		uint32_t	vga_snoop:1;
    290 		uint32_t	par_err_en:1;
    291 		uint32_t	idsel_step:1;
    292 		uint32_t	serr_en:1;
    293 		uint32_t	fast_b2b_en:1;
    294 		uint32_t	intx_dis:1;
    295 		uint32_t	rsrvd2:5;
    296 		uint32_t	rsrvd1:3;
    297 		uint32_t	intx_stat:1;
    298 		uint32_t	cap_list:1;
    299 		uint32_t	mhz_cap:1;
    300 		uint32_t	rsrvd:1;
    301 		uint32_t	fast_b2b_cap:1;
    302 		uint32_t	mstr_dpe:1;
    303 		uint32_t	devsel_timing:2;
    304 		uint32_t	sig_tgt_abrt:1;
    305 		uint32_t	rcv_tgt_abrt:1;
    306 		uint32_t	rcv_mstr_abrt:1;
    307 		uint32_t	sig_serr:1;
    308 		uint32_t	det_par_err:1;
    309 #endif
    310 	} bits;
    311 } status_command_t;
    312 
    313 
    314 /*
    315  * Register: ClasscodeRevId
    316  * Class Code, and Revision ID
    317  * Description: Class Code/Revision ID
    318  * Fields:
    319  *     Base Class (Network Controller): dbi writeable
    320  *     Sub Class (Ethernet Controller): dbi writeable
    321  *     Programming Interface: dbi writeable
    322  *     Revision ID: dbi writeable
    323  */
    324 typedef union {
    325 	uint32_t value;
    326 	struct {
    327 #if defined(_BIG_ENDIAN)
    328 		uint32_t	base_class:8;
    329 		uint32_t	sub_class:8;
    330 		uint32_t	prog_if:8;
    331 		uint32_t	rev_id:8;
    332 #else
    333 		uint32_t	rev_id:8;
    334 		uint32_t	prog_if:8;
    335 		uint32_t	sub_class:8;
    336 		uint32_t	base_class:8;
    337 #endif
    338 	} bits;
    339 } classcode_rev_id_t;
    340 
    341 
    342 /*
    343  * Register: BistHdrtypLattmrCashlsz
    344  * BIST, Header Type, Latency Timer, and Cache Line Size
    345  * Description: BIST, Latency Timer etc
    346  * Fields:
    347  *     BIST is not supported. Header Type Fields
    348  *     Multi-Function Device: dbi writeable
    349  *     Configuration Header Format. 0 = Type 0.
    350  *     Master Latency Timer. (N/A in PCIE)
    351  *     Cache line size for legacy compatibility (N/A in PCIE)
    352  */
    353 typedef union {
    354 	uint32_t value;
    355 	struct {
    356 #if defined(_BIG_ENDIAN)
    357 		uint32_t	value:8;
    358 		uint32_t	mult_func_dev:1;
    359 		uint32_t	cfg_hdr_fmt:7;
    360 		uint32_t	timer:8;
    361 		uint32_t	cache_line_sz:8;
    362 #else
    363 		uint32_t	cache_line_sz:8;
    364 		uint32_t	timer:8;
    365 		uint32_t	cfg_hdr_fmt:7;
    366 		uint32_t	mult_func_dev:1;
    367 		uint32_t	value:8;
    368 #endif
    369 	} bits;
    370 } bist_hdrtyp_lattmr_cashlsz_t;
    371 
    372 
    373 /*
    374  * Register: PioBar0
    375  * PIO BAR0
    376  * Description: PIO BAR0 - For Hydra PIO space PIO BAR1 & PIO BAR0
    377  * are together configured as a 64b BAR register (Synopsys core
    378  * implementation dependent) where PIO BAR1 handles the upper address
    379  * bits and PIO BAR0 handles the lower address bits.
    380  * Fields:
    381  *     Base Address Relocation : indirect dbi writeable via bar0Mask
    382  *     register in EP core
    383  *     Base Address for PIO (16MB space) : indirect dbi writeable via
    384  *     bar0Mask register in EP core
    385  *     Prefetchable if memory BAR (PIOs not prefetchable): dbi
    386  *     writeable
    387  *     If memory BAR, then 32 or 64 bit BAR (00 = 32 bit, 10 = 64
    388  *     bit): dbi writeable
    389  *     I/O or Memory space indicator (0 = memory BAR): dbi writeable
    390  */
    391 typedef union {
    392 	uint32_t value;
    393 	struct {
    394 #if defined(_BIG_ENDIAN)
    395 		uint32_t	base_addr_rel_lo:8;
    396 		uint32_t	base_addr:20;
    397 		uint32_t	pftch:1;
    398 		uint32_t	type:2;
    399 		uint32_t	mem_sp_ind:1;
    400 #else
    401 		uint32_t	mem_sp_ind:1;
    402 		uint32_t	type:2;
    403 		uint32_t	pftch:1;
    404 		uint32_t	base_addr:20;
    405 		uint32_t	base_addr_rel_lo:8;
    406 #endif
    407 	} bits;
    408 } pio_bar0_t;
    409 
    410 
    411 /*
    412  * Register: PioBar1
    413  * PIO BAR1
    414  * Description: PIO BAR1
    415  * Fields:
    416  *     Base Address Relocation : indirect dbi writeable via bar0Mask
    417  *     register in EP core
    418  */
    419 typedef union {
    420 	uint32_t value;
    421 	struct {
    422 #if defined(_BIG_ENDIAN)
    423 		uint32_t	base_addr_rel_hi:32;
    424 #else
    425 		uint32_t	base_addr_rel_hi:32;
    426 #endif
    427 	} bits;
    428 } pio_bar1_t;
    429 
    430 
    431 /*
    432  * Register: MsixBar0
    433  * MSIX BAR0
    434  * Description: MSIX BAR0 - For MSI-X Tables and PBA MSIX BAR1 & MSIX
    435  * BAR0 are together configured as a 64b BAR register (Synopsys core
    436  * implementation dependent) where MSIX BAR1 handles the upper
    437  * address bits and MSIX BAR0 handles the lower address bits.
    438  * Fields:
    439  *     Base Address Relocation : indirect dbi writeable via bar2Mask
    440  *     register in EP core
    441  *     Base Address for MSIX (16KB space) : indirect dbi writeable
    442  *     via bar2Mask register in EP core
    443  *     Prefetchable if memory BAR (Not prefetchable) : dbi writeable
    444  *     If memory BAR, then 32 or 64 bit BAR (00 = 32 bit, 10 = 64
    445  *     bit): dbi writeable
    446  *     I/O or Memory space indicator (0 = memory BAR) : dbi writeable
    447  */
    448 typedef union {
    449 	uint32_t value;
    450 	struct {
    451 #if defined(_BIG_ENDIAN)
    452 		uint32_t	base_addr_rel_lo:18;
    453 		uint32_t	base_addr:10;
    454 		uint32_t	pftch:1;
    455 		uint32_t	type:2;
    456 		uint32_t	mem_sp_ind:1;
    457 #else
    458 		uint32_t	mem_sp_ind:1;
    459 		uint32_t	type:2;
    460 		uint32_t	pftch:1;
    461 		uint32_t	base_addr:10;
    462 		uint32_t	base_addr_rel_lo:18;
    463 #endif
    464 	} bits;
    465 } msix_bar0_t;
    466 
    467 
    468 /*
    469  * Register: MsixBar1
    470  * MSIX BAR1
    471  * Description: MSIX BAR1
    472  * Fields:
    473  *     Base Address Relocation : indirect dbi writeable via bar2Mask
    474  *     register in EP core
    475  */
    476 typedef union {
    477 	uint32_t value;
    478 	struct {
    479 #if defined(_BIG_ENDIAN)
    480 		uint32_t	base_addr_rel_hi:32;
    481 #else
    482 		uint32_t	base_addr_rel_hi:32;
    483 #endif
    484 	} bits;
    485 } msix_bar1_t;
    486 
    487 
    488 /*
    489  * Register: VirtBar0
    490  * Virtualization BAR0
    491  * Description: Virtualization BAR0 - Previously for Hydra
    492  * Virtualization space This bar is no longer enabled and is not dbi
    493  * writeable. VIRT BAR1 & VIRT BAR0 could be configured as a 64b BAR
    494  * register (Synopsys core implementation dependent), but this is not
    495  * used in hydra.
    496  * Fields:
    497  *     Base Address Relocation
    498  *     Base Address for Virtualization (64KB space)
    499  *     Prefetchable if memory BAR (Not prefetchable)
    500  *     If memory BAR, then 32 or 64 bit BAR (00 = 32 bit, 10 = 64
    501  *     bit)
    502  *     I/O or Memory space indicator (0 = memory BAR)
    503  */
    504 typedef union {
    505 	uint32_t value;
    506 	struct {
    507 #if defined(_BIG_ENDIAN)
    508 		uint32_t	base_addr_rel_lo:17;
    509 		uint32_t	base_addr:11;
    510 		uint32_t	pftch:1;
    511 		uint32_t	type:2;
    512 		uint32_t	mem_sp_ind:1;
    513 #else
    514 		uint32_t	mem_sp_ind:1;
    515 		uint32_t	type:2;
    516 		uint32_t	pftch:1;
    517 		uint32_t	base_addr:11;
    518 		uint32_t	base_addr_rel_lo:17;
    519 #endif
    520 	} bits;
    521 } virt_bar0_t;
    522 
    523 
    524 /*
    525  * Register: VirtBar1
    526  * Virtualization BAR1
    527  * Description: Previously for Virtualization BAR1 This bar is no
    528  * longer enabled and is not dbi writeable.
    529  * Fields:
    530  *     Base Address Relocation
    531  */
    532 typedef union {
    533 	uint32_t value;
    534 	struct {
    535 #if defined(_BIG_ENDIAN)
    536 		uint32_t	base_addr_rel_hi:32;
    537 #else
    538 		uint32_t	base_addr_rel_hi:32;
    539 #endif
    540 	} bits;
    541 } virt_bar1_t;
    542 
    543 
    544 /*
    545  * Register: CisPtr
    546  * CardBus CIS Pointer
    547  * Description: CardBus CIS Pointer
    548  * Fields:
    549  *     CardBus CIS Pointer: dbi writeable
    550  */
    551 typedef union {
    552 	uint32_t value;
    553 	struct {
    554 #if defined(_BIG_ENDIAN)
    555 		uint32_t	cis_ptr:32;
    556 #else
    557 		uint32_t	cis_ptr:32;
    558 #endif
    559 	} bits;
    560 } cis_ptr_t;
    561 
    562 
    563 /*
    564  * Register: SubVendorId
    565  * Subsystem ID and Vendor ID
    566  * Description: Subsystem ID and Vendor ID
    567  * Fields:
    568  *     Subsystem ID as assigned by PCI-SIG : dbi writeable
    569  *     Subsystem Vendor ID as assigned by PCI-SIG : dbi writeable
    570  */
    571 typedef union {
    572 	uint32_t value;
    573 	struct {
    574 #if defined(_BIG_ENDIAN)
    575 		uint32_t	dev_id:16;
    576 		uint32_t	vendor_id:16;
    577 #else
    578 		uint32_t	vendor_id:16;
    579 		uint32_t	dev_id:16;
    580 #endif
    581 	} bits;
    582 } sub_vendor_id_t;
    583 
    584 
    585 /*
    586  * Register: ExpRomBar
    587  * Expansion ROM BAR
    588  * Description: Expansion ROM BAR - For Hydra EEPROM space
    589  * Fields:
    590  *     Base Address Relocatable : indirect dbi writeable via
    591  *     romBarMask register in EP core
    592  *     Base Address for ROM (2MB) : indirect dbi writeable via
    593  *     romBarMask register in EP core
    594  *     ROM Enable: dbi writeable
    595  */
    596 typedef union {
    597 	uint32_t value;
    598 	struct {
    599 #if defined(_BIG_ENDIAN)
    600 		uint32_t	base_addr_rel:11;
    601 		uint32_t	base_addr:10;
    602 		uint32_t	rsrvd:10;
    603 		uint32_t	rom_en:1;
    604 #else
    605 		uint32_t	rom_en:1;
    606 		uint32_t	rsrvd:10;
    607 		uint32_t	base_addr:10;
    608 		uint32_t	base_addr_rel:11;
    609 #endif
    610 	} bits;
    611 } exp_rom_bar_t;
    612 
    613 
    614 /*
    615  * Register: CapPtr
    616  * Capabilities Pointer
    617  * Description: Capabilities Pointer
    618  * Fields:
    619  *     Pointer to PM Capability structure : dbi writeable
    620  */
    621 typedef union {
    622 	uint32_t value;
    623 	struct {
    624 #if defined(_BIG_ENDIAN)
    625 		uint32_t	rsrvd:24;
    626 		uint32_t	pm_ptr:8;
    627 #else
    628 		uint32_t	pm_ptr:8;
    629 		uint32_t	rsrvd:24;
    630 #endif
    631 	} bits;
    632 } cap_ptr_t;
    633 
    634 
    635 /*
    636  * Register: IntLine
    637  * Interrupt Line
    638  * Description: Interrupt Line
    639  * Fields:
    640  *     Max Latency (N/A in PCIE)
    641  *     Minimum Grant (N/A in PCIE)
    642  *     Interrupt pin: dbi writeable
    643  *     Interrupt Line
    644  */
    645 typedef union {
    646 	uint32_t value;
    647 	struct {
    648 #if defined(_BIG_ENDIAN)
    649 		uint32_t	max_lat:8;
    650 		uint32_t	min_gnt:8;
    651 		uint32_t	int_pin:8;
    652 		uint32_t	int_line:8;
    653 #else
    654 		uint32_t	int_line:8;
    655 		uint32_t	int_pin:8;
    656 		uint32_t	min_gnt:8;
    657 		uint32_t	max_lat:8;
    658 #endif
    659 	} bits;
    660 } int_line_t;
    661 
    662 
    663 /*
    664  * Register: PmCap
    665  * Power Management Capability
    666  * Description: Power Management Capability
    667  * Fields:
    668  *     PME Support (N/A in Hydra): dbi writeable
    669  *     D2 Support (N/A in Hydra): dbi writeable
    670  *     D1 Support (N/A in Hydra): dbi writeable
    671  *     Aux Current (N/A in Hydra): dbi writeable
    672  *     Device Specific Initialization: dbi writeable
    673  *     PME Clock (N/A in PCIE)
    674  *     PM Spec Version: dbi writeable
    675  *     Next Capability Pointer: dbi writeable
    676  *     Power Management Capability ID: dbi writeable
    677  */
    678 typedef union {
    679 	uint32_t value;
    680 	struct {
    681 #if defined(_BIG_ENDIAN)
    682 		uint32_t	pme_supt:5;
    683 		uint32_t	d2_supt:1;
    684 		uint32_t	d1_supt:1;
    685 		uint32_t	aux_curr:3;
    686 		uint32_t	dev_spec_init:1;
    687 		uint32_t	rsrvd:1;
    688 		uint32_t	pme_clk:1;
    689 		uint32_t	pm_ver:3;
    690 		uint32_t	nxt_cap_ptr:8;
    691 		uint32_t	pm_id:8;
    692 #else
    693 		uint32_t	pm_id:8;
    694 		uint32_t	nxt_cap_ptr:8;
    695 		uint32_t	pm_ver:3;
    696 		uint32_t	pme_clk:1;
    697 		uint32_t	rsrvd:1;
    698 		uint32_t	dev_spec_init:1;
    699 		uint32_t	aux_curr:3;
    700 		uint32_t	d1_supt:1;
    701 		uint32_t	d2_supt:1;
    702 		uint32_t	pme_supt:5;
    703 #endif
    704 	} bits;
    705 } pm_cap_t;
    706 
    707 
    708 /*
    709  * Register: PmCtrlStat
    710  * Power Management Control and Status
    711  * Description: Power Management Control and Status
    712  * Fields:
    713  *     Data for additional info (N/A)
    714  *     Bus Power and Clock Control Enable (N/A in PCIE)
    715  *     B2/B3 Support (N/A in PCIE)
    716  *     Indicates if PME event occured
    717  *     Data Scale (N/A)
    718  *     Data Select (N/A)
    719  *     PME Enable (Sticky)
    720  *     Power State
    721  */
    722 typedef union {
    723 	uint32_t value;
    724 	struct {
    725 #if defined(_BIG_ENDIAN)
    726 		uint32_t	pwr_data:8;
    727 		uint32_t	pwr_clk_en:1;
    728 		uint32_t	b2_b3_supt:1;
    729 		uint32_t	rsrvd:6;
    730 		uint32_t	pme_stat:1;
    731 		uint32_t	data_scale:2;
    732 		uint32_t	data_sel:4;
    733 		uint32_t	pme_en:1;
    734 		uint32_t	rsrvd1:6;
    735 		uint32_t	pwr_st:2;
    736 #else
    737 		uint32_t	pwr_st:2;
    738 		uint32_t	rsrvd1:6;
    739 		uint32_t	pme_en:1;
    740 		uint32_t	data_sel:4;
    741 		uint32_t	data_scale:2;
    742 		uint32_t	pme_stat:1;
    743 		uint32_t	rsrvd:6;
    744 		uint32_t	b2_b3_supt:1;
    745 		uint32_t	pwr_clk_en:1;
    746 		uint32_t	pwr_data:8;
    747 #endif
    748 	} bits;
    749 } pm_ctrl_stat_t;
    750 
    751 
    752 /*
    753  * Register: MsiCap
    754  * MSI Capability
    755  * Description: MSI Capability
    756  * Fields:
    757  *     Mask and Pending bits available
    758  *     64-bit Address Capable
    759  *     Multiple Messages Enabled
    760  *     Multiple Message Capable (32 messages = 0x5)
    761  *     MSI Enabled (if enabled, INTx must be diabled)
    762  *     Next Capability Pointer: dbi writeable
    763  *     MSI Capability ID
    764  */
    765 typedef union {
    766 	uint32_t value;
    767 	struct {
    768 #if defined(_BIG_ENDIAN)
    769 		uint32_t	rsrvd:7;
    770 		uint32_t	vect_mask:1;
    771 		uint32_t	msi64_en:1;
    772 		uint32_t	mult_msg_en:3;
    773 		uint32_t	mult_msg_cap:3;
    774 		uint32_t	msi_en:1;
    775 		uint32_t	nxt_cap_ptr:8;
    776 		uint32_t	msi_cap_id:8;
    777 #else
    778 		uint32_t	msi_cap_id:8;
    779 		uint32_t	nxt_cap_ptr:8;
    780 		uint32_t	msi_en:1;
    781 		uint32_t	mult_msg_cap:3;
    782 		uint32_t	mult_msg_en:3;
    783 		uint32_t	msi64_en:1;
    784 		uint32_t	vect_mask:1;
    785 		uint32_t	rsrvd:7;
    786 #endif
    787 	} bits;
    788 } msi_cap_t;
    789 
    790 
    791 /*
    792  * Register: MsiLoAddr
    793  * MSI Low Address
    794  * Description: MSI Low Address
    795  * Fields:
    796  *     Lower 32 bit Address
    797  */
    798 typedef union {
    799 	uint32_t value;
    800 	struct {
    801 #if defined(_BIG_ENDIAN)
    802 		uint32_t	lo_addr:30;
    803 		uint32_t	rsrvd:2;
    804 #else
    805 		uint32_t	rsrvd:2;
    806 		uint32_t	lo_addr:30;
    807 #endif
    808 	} bits;
    809 } msi_lo_addr_t;
    810 
    811 
    812 /*
    813  * Register: MsiHiAddr
    814  * MSI High Address
    815  * Description: MSI High Address
    816  * Fields:
    817  *     Upper 32 bit Address (only if msi64En = 1)
    818  */
    819 typedef union {
    820 	uint32_t value;
    821 	struct {
    822 #if defined(_BIG_ENDIAN)
    823 		uint32_t	hi_addr:32;
    824 #else
    825 		uint32_t	hi_addr:32;
    826 #endif
    827 	} bits;
    828 } msi_hi_addr_t;
    829 
    830 
    831 /*
    832  * Register: MsiData
    833  * MSI Data
    834  * Description: MSI Data
    835  * Fields:
    836  *     MSI Data. Depending on the value for multMsgEn in the MSI
    837  *     Capability Register which determines the number of allocated
    838  *     vectors, bits [4:0] may be replaced with msiVector[4:0] bits
    839  *     to generate up to 32 MSI messages. # allocated vectors Actual
    840  *     messageData[4:0] ------------------- ------------------------
    841  *     1 DATA[4:0] (no replacement) 2 {DATA[4:1], msiVector[0]} 4
    842  *     {DATA[4:2], msiVector[1:0]} 8 {DATA[4:3], msiVector[2:0]} 16
    843  *     {DATA[4], msiVector[3:0]} 32 msiVector[4:0] (full replacement)
    844  */
    845 typedef union {
    846 	uint32_t value;
    847 	struct {
    848 #if defined(_BIG_ENDIAN)
    849 		uint32_t	rsrvd:16;
    850 		uint32_t	data:16;
    851 #else
    852 		uint32_t	data:16;
    853 		uint32_t	rsrvd:16;
    854 #endif
    855 	} bits;
    856 } msi_data_t;
    857 
    858 
    859 /*
    860  * Register: MsiMask
    861  * MSI Mask
    862  * Description: MSI Mask
    863  * Fields:
    864  *     per vector MSI Mask bits
    865  */
    866 typedef union {
    867 	uint32_t value;
    868 	struct {
    869 #if defined(_BIG_ENDIAN)
    870 		uint32_t	mask:32;
    871 #else
    872 		uint32_t	mask:32;
    873 #endif
    874 	} bits;
    875 } msi_mask_t;
    876 
    877 
    878 /*
    879  * Register: MsiPend
    880  * MSI Pending
    881  * Description: MSI Pending
    882  * Fields:
    883  *     per vector MSI Pending bits
    884  */
    885 typedef union {
    886 	uint32_t value;
    887 	struct {
    888 #if defined(_BIG_ENDIAN)
    889 		uint32_t	pend:32;
    890 #else
    891 		uint32_t	pend:32;
    892 #endif
    893 	} bits;
    894 } msi_pend_t;
    895 
    896 
    897 /*
    898  * Register: MsixCap
    899  * MSIX Capability
    900  * Description: MSIX Capability
    901  * Fields:
    902  *     MSIX Enable (if enabled, MSI and INTx must be disabled)
    903  *     Function Mask (1 = all vectors masked regardless of per vector
    904  *     mask, 0 = each vector's mask
    905  *     Table Size (0x1F = 32 entries): dbi writeable
    906  *     Next Capability Pointer: dbi writeable
    907  *     MSIX Capability ID
    908  */
    909 typedef union {
    910 	uint32_t value;
    911 	struct {
    912 #if defined(_BIG_ENDIAN)
    913 		uint32_t	msix_en:1;
    914 		uint32_t	func_mask:1;
    915 		uint32_t	rsrvd:3;
    916 		uint32_t	tab_sz:11;
    917 		uint32_t	nxt_cap_ptr:8;
    918 		uint32_t	msix_cap_id:8;
    919 #else
    920 		uint32_t	msix_cap_id:8;
    921 		uint32_t	nxt_cap_ptr:8;
    922 		uint32_t	tab_sz:11;
    923 		uint32_t	rsrvd:3;
    924 		uint32_t	func_mask:1;
    925 		uint32_t	msix_en:1;
    926 #endif
    927 	} bits;
    928 } msix_cap_t;
    929 
    930 
    931 /*
    932  * Register: MsixTabOff
    933  * MSIX Table Offset
    934  * Description: MSIX Table Offset
    935  * Fields:
    936  *     Table Offset (Base address of MSIX Table = msixTabBir.BAR +
    937  *     msixTabOff) : dbi writeable
    938  *     Table BAR Indicator (0x2 = BAR2 at loc 0x18) : dbi writeable
    939  */
    940 typedef union {
    941 	uint32_t value;
    942 	struct {
    943 #if defined(_BIG_ENDIAN)
    944 		uint32_t	msix_tab_off:29;
    945 		uint32_t	msix_tab_bir:3;
    946 #else
    947 		uint32_t	msix_tab_bir:3;
    948 		uint32_t	msix_tab_off:29;
    949 #endif
    950 	} bits;
    951 } msix_tab_off_t;
    952 
    953 
    954 /*
    955  * Register: MsixPbaOff
    956  * MSIX PBA Offset
    957  * Description: MSIX PBA Offset
    958  * Fields:
    959  *     Pending Bit Array (PBA) Offset (Base address of MSIX Table =
    960  *     msixTabBir.BAR + msixPbaOff); msixPbaOff is quad-aligned, i.e.
    961  *     starts at 0x2000 (half-way in MSI-X bar space. : dbi writeable
    962  *     Pending Bit Array (PBA) BAR Indicator (0x2 = BAR2 at loc 0x18)
    963  *     : dbi writeable
    964  */
    965 typedef union {
    966 	uint32_t value;
    967 	struct {
    968 #if defined(_BIG_ENDIAN)
    969 		uint32_t	msix_pba_off:29;
    970 		uint32_t	msix_pba_bir:3;
    971 #else
    972 		uint32_t	msix_pba_bir:3;
    973 		uint32_t	msix_pba_off:29;
    974 #endif
    975 	} bits;
    976 } msix_pba_off_t;
    977 
    978 
    979 /*
    980  * Register: PcieCap
    981  * PCIE Capability
    982  * Description: PCIE Capability
    983  * Fields:
    984  *     Interrupt Message Number (updated by HW)
    985  *     Slot Implemented (Endpoint must be 0)
    986  *     PCIE Express Device Port Type (Endpoint)
    987  *     PCIE Express Capability Version
    988  *     Next Capability Pointer: dbi writeable
    989  *     PCI Express Capability ID
    990  */
    991 typedef union {
    992 	uint32_t value;
    993 	struct {
    994 #if defined(_BIG_ENDIAN)
    995 		uint32_t	rsrvd:2;
    996 		uint32_t	int_msg_num:5;
    997 		uint32_t	pcie_slt_imp:1;
    998 		uint32_t	pcie_dev_type:4;
    999 		uint32_t	pcie_cap_ver:4;
   1000 		uint32_t	nxt_cap_ptr:8;
   1001 		uint32_t	pcie_cap_id:8;
   1002 #else
   1003 		uint32_t	pcie_cap_id:8;
   1004 		uint32_t	nxt_cap_ptr:8;
   1005 		uint32_t	pcie_cap_ver:4;
   1006 		uint32_t	pcie_dev_type:4;
   1007 		uint32_t	pcie_slt_imp:1;
   1008 		uint32_t	int_msg_num:5;
   1009 		uint32_t	rsrvd:2;
   1010 #endif
   1011 	} bits;
   1012 } pcie_cap_t;
   1013 
   1014 
   1015 /*
   1016  * Register: DevCap
   1017  * Device Capability
   1018  * Description: Device Capability
   1019  * Fields:
   1020  *     Slot Power Limit Scale (Msg from RC) Hydra can capture
   1021  *     Received setSlotPowerLimit message; values in this field are
   1022  *     ignored as no power scaling is possible.
   1023  *     Slot Power Limit Value (Msg from RC) Hydra can capture
   1024  *     Received setSlotPowerLimit message; values in this field are
   1025  *     ignored as no power scaling is possible.
   1026  *     Introduced in PCIe 1.1 specification. : dbi writeable
   1027  *     L1 Acceptable Latency (4 - 8 us) : dbi writeable
   1028  *     LOs Acceptable Latency (2 - 4 us) : dbi writeable
   1029  *     Extended Tag Field Support (N/A) : dbi writeable
   1030  *     Phantom Function Supported (N/A) : dbi writeable
   1031  *     Maximum Payload Size supported (Hydra = 1KB) : dbi writeable
   1032  */
   1033 typedef union {
   1034 	uint32_t value;
   1035 	struct {
   1036 #if defined(_BIG_ENDIAN)
   1037 		uint32_t	rsrvd:4;
   1038 		uint32_t	slt_pwr_lmt_scle:2;
   1039 		uint32_t	slt_pwr_lmt_val:8;
   1040 		uint32_t	rsrvd1:2;
   1041 		uint32_t	role_based_err:1;
   1042 		uint32_t	rsrvd2:3;
   1043 		uint32_t	l1_lat:3;
   1044 		uint32_t	los_lat:3;
   1045 		uint32_t	ext_tag:1;
   1046 		uint32_t	phant_func:2;
   1047 		uint32_t	max_mtu:3;
   1048 #else
   1049 		uint32_t	max_mtu:3;
   1050 		uint32_t	phant_func:2;
   1051 		uint32_t	ext_tag:1;
   1052 		uint32_t	los_lat:3;
   1053 		uint32_t	l1_lat:3;
   1054 		uint32_t	rsrvd2:3;
   1055 		uint32_t	role_based_err:1;
   1056 		uint32_t	rsrvd1:2;
   1057 		uint32_t	slt_pwr_lmt_val:8;
   1058 		uint32_t	slt_pwr_lmt_scle:2;
   1059 		uint32_t	rsrvd:4;
   1060 #endif
   1061 	} bits;
   1062 } dev_cap_t;
   1063 
   1064 
   1065 /*
   1066  * Register: DevStatCtrl
   1067  * Device Status and Control
   1068  * Description: Device Control
   1069  * Fields:
   1070  *     Transaction Pending (1 if NP request not completed)
   1071  *     Auxilliary Power Detected (1 if detected)
   1072  *     Unsupported Request Detect
   1073  *     Fatal Error Detected
   1074  *     Non-Fatal Error Detected
   1075  *     Correctable Error Detected ----- Control Fields
   1076  *     Introduced in PCIe 1.1 specification.
   1077  *     Maximum Read Request Size (default = 512B) for the device as a
   1078  *     requester. 3'b000: 128 Bytes 3'b001: 256 Bytes 3'b010: 512
   1079  *     Bytes 3'b011: 1K Bytes 3'b100: 2K Bytes 3'b101: 4K Bytes
   1080  *     3'b110: Reserved 3'b111: Reserved
   1081  *     No Snoop Enable This bit indicates the device "could", not
   1082  *     that it does. Both this bit and the hydra specific peuCip
   1083  *     register bit must be set for the value of this bit to impact
   1084  *     the TLP header no snoop attribute. When both are set, hydra
   1085  *     sets the no snoop attribute on all initiated TLPs. Software
   1086  *     must guarantee the No Snoop attribute is used in the system
   1087  *     correctly.
   1088  *     Auxilliary Power PM Enable
   1089  *     Phantom Function enable
   1090  *     Extended Tag Field Enable
   1091  *     Maximum Payload Size. 3-bit value has the same encodings as
   1092  *     the maxRdSz field.
   1093  *     Relaxed Ordering Enable This bit indicates the device "could",
   1094  *     not that it does. Both this bit and the hydra specific peuCip
   1095  *     register bit must be set for the value of this bit to impact
   1096  *     the TLP header relaxed ordering attribute. When both are set,
   1097  *     packet operations set the relaxed ordering attribute. Mailbox
   1098  *     updates always set the relaxed ordering attribute to 0,
   1099  *     regardless of this bit. When this bit is 0, the default
   1100  *     Sun4u/Sun4v ordering model is used.
   1101  *     Unsupported Request Report Enable
   1102  *     Fatal Error Report Enable
   1103  *     Non-Fatal Error Report Enable
   1104  *     Correctable Error Report Enable
   1105  */
   1106 typedef union {
   1107 	uint32_t value;
   1108 	struct {
   1109 #if defined(_BIG_ENDIAN)
   1110 		uint32_t	rsrvd:10;
   1111 		uint32_t	trans_pend:1;
   1112 		uint32_t	aux_pwr_det:1;
   1113 		uint32_t	unsup_req_det:1;
   1114 		uint32_t	fat_err_det:1;
   1115 		uint32_t	nf_err_det:1;
   1116 		uint32_t	corr_err_det:1;
   1117 		uint32_t	pcie2pcix_brdg:1;
   1118 		uint32_t	max_rd_sz:3;
   1119 		uint32_t	no_snoop_en:1;
   1120 		uint32_t	aux_pwr_pm_en:1;
   1121 		uint32_t	phant_func_en:1;
   1122 		uint32_t	ext_tag_en:1;
   1123 		uint32_t	max_pld_sz:3;
   1124 		uint32_t	rlx_ord_en:1;
   1125 		uint32_t	unsup_req_en:1;
   1126 		uint32_t	fat_err_en:1;
   1127 		uint32_t	nf_err_en:1;
   1128 		uint32_t	corr_err_en:1;
   1129 #else
   1130 		uint32_t	corr_err_en:1;
   1131 		uint32_t	nf_err_en:1;
   1132 		uint32_t	fat_err_en:1;
   1133 		uint32_t	unsup_req_en:1;
   1134 		uint32_t	rlx_ord_en:1;
   1135 		uint32_t	max_pld_sz:3;
   1136 		uint32_t	ext_tag_en:1;
   1137 		uint32_t	phant_func_en:1;
   1138 		uint32_t	aux_pwr_pm_en:1;
   1139 		uint32_t	no_snoop_en:1;
   1140 		uint32_t	max_rd_sz:3;
   1141 		uint32_t	pcie2pcix_brdg:1;
   1142 		uint32_t	corr_err_det:1;
   1143 		uint32_t	nf_err_det:1;
   1144 		uint32_t	fat_err_det:1;
   1145 		uint32_t	unsup_req_det:1;
   1146 		uint32_t	aux_pwr_det:1;
   1147 		uint32_t	trans_pend:1;
   1148 		uint32_t	rsrvd:10;
   1149 #endif
   1150 	} bits;
   1151 } dev_stat_ctrl_t;
   1152 
   1153 
   1154 /*
   1155  * Register: LnkCap
   1156  * Link Capability
   1157  * Description: Link Capability
   1158  * Fields:
   1159  *     Port Number : dbi writeable
   1160  *     Introduced in PCIe 1.1 specification.
   1161  *     Introduced in PCIe 1.1 specification.
   1162  *     Default Clock Power Management (N/A) Introduced in PCIe 1.1
   1163  *     specification. : dbi writeable
   1164  *     Default L1 Exit Latency (32us to 64us => 0x6) : dbi writeable
   1165  *     Default L0s Exit Latency (1us to 2us => 0x5) : dbi writeable
   1166  *     Active Link PM Support (only L0s = 1) : dbi writeable
   1167  *     Maximum Link Width (x8) : dbi writeable
   1168  *     Maximum Link Speed (2.5 Gbps = 1) : dbi writeable
   1169  */
   1170 typedef union {
   1171 	uint32_t value;
   1172 	struct {
   1173 #if defined(_BIG_ENDIAN)
   1174 		uint32_t	prt_num:8;
   1175 		uint32_t	rsrvd:3;
   1176 		uint32_t	def_dll_act_rptg:1;
   1177 		uint32_t	def_surpise_down:1;
   1178 		uint32_t	def_clk_pm_cap:1;
   1179 		uint32_t	def_l1_lat:3;
   1180 		uint32_t	def_l0s_lat:3;
   1181 		uint32_t	as_lnk_pm_supt:2;
   1182 		uint32_t	max_lnk_wid:6;
   1183 		uint32_t	max_lnk_spd:4;
   1184 #else
   1185 		uint32_t	max_lnk_spd:4;
   1186 		uint32_t	max_lnk_wid:6;
   1187 		uint32_t	as_lnk_pm_supt:2;
   1188 		uint32_t	def_l0s_lat:3;
   1189 		uint32_t	def_l1_lat:3;
   1190 		uint32_t	def_clk_pm_cap:1;
   1191 		uint32_t	def_surpise_down:1;
   1192 		uint32_t	def_dll_act_rptg:1;
   1193 		uint32_t	rsrvd:3;
   1194 		uint32_t	prt_num:8;
   1195 #endif
   1196 	} bits;
   1197 } lnk_cap_t;
   1198 
   1199 
   1200 /*
   1201  * Register: LnkStatCtrl
   1202  * Link Status and Control
   1203  * Description: Link Control
   1204  * Fields:
   1205  *     Slot Clock Configuration (0 = using independent clock; pg 266
   1206  *     PCIe 1.1) : dbi writeable
   1207  *     Link Training (N/A for EP)
   1208  *     Training Error (N/A for EP)
   1209  *     Negotiated Link Width (Max negotiated: x8)
   1210  *     Negotiated Link Speed (Max negotiated: 1 = 2.5 Gbps) -----
   1211  *     Control Fields
   1212  *     Introduced in PCIe 1.1.
   1213  *     Extended Synch
   1214  *     Common Clock Configuration
   1215  *     Retrain Link (N/A for EP)
   1216  *     Link Disable (N/A for EP)
   1217  *     Read Completion Boundary (128B)
   1218  *     Active State Link PM Control
   1219  */
   1220 typedef union {
   1221 	uint32_t value;
   1222 	struct {
   1223 #if defined(_BIG_ENDIAN)
   1224 		uint32_t	rsrvd:2;
   1225 		uint32_t	dll_active:1;
   1226 		uint32_t	slt_clk_cfg:1;
   1227 		uint32_t	lnk_train:1;
   1228 		uint32_t	train_err:1;
   1229 		uint32_t	lnk_wid:6;
   1230 		uint32_t	lnk_spd:4;
   1231 		uint32_t	rsrvd1:7;
   1232 		uint32_t	en_clkpwr_mg:1;
   1233 		uint32_t	ext_sync:1;
   1234 		uint32_t	com_clk_cfg:1;
   1235 		uint32_t	retrain_lnk:1;
   1236 		uint32_t	lnk_dis:1;
   1237 		uint32_t	rd_cmpl_bndy:1;
   1238 		uint32_t	rsrvd2:1;
   1239 		uint32_t	aspm_ctrl:2;
   1240 #else
   1241 		uint32_t	aspm_ctrl:2;
   1242 		uint32_t	rsrvd2:1;
   1243 		uint32_t	rd_cmpl_bndy:1;
   1244 		uint32_t	lnk_dis:1;
   1245 		uint32_t	retrain_lnk:1;
   1246 		uint32_t	com_clk_cfg:1;
   1247 		uint32_t	ext_sync:1;
   1248 		uint32_t	en_clkpwr_mg:1;
   1249 		uint32_t	rsrvd1:7;
   1250 		uint32_t	lnk_spd:4;
   1251 		uint32_t	lnk_wid:6;
   1252 		uint32_t	train_err:1;
   1253 		uint32_t	lnk_train:1;
   1254 		uint32_t	slt_clk_cfg:1;
   1255 		uint32_t	dll_active:1;
   1256 		uint32_t	rsrvd:2;
   1257 #endif
   1258 	} bits;
   1259 } lnk_stat_ctrl_t;
   1260 
   1261 
   1262 /*
   1263  * Register: VenCapHdr
   1264  * Vendor Specific Capability Header
   1265  * Description: Vendor Specific Capability Header
   1266  * Fields:
   1267  *     Length
   1268  *     Next Capbility Pointer
   1269  *     Vendor Specific Capbility ID
   1270  */
   1271 typedef union {
   1272 	uint32_t value;
   1273 	struct {
   1274 #if defined(_BIG_ENDIAN)
   1275 		uint32_t	rsrvd:8;
   1276 		uint32_t	len:8;
   1277 		uint32_t	nxt_cap_ptr:8;
   1278 		uint32_t	ven_cap_id:8;
   1279 #else
   1280 		uint32_t	ven_cap_id:8;
   1281 		uint32_t	nxt_cap_ptr:8;
   1282 		uint32_t	len:8;
   1283 		uint32_t	rsrvd:8;
   1284 #endif
   1285 	} bits;
   1286 } ven_cap_hdr_t;
   1287 
   1288 
   1289 /*
   1290  * Register: VenCtrl
   1291  * Vendor Specific Control
   1292  * Description: Vendor Specific Control
   1293  * Fields:
   1294  *     PCIe spec absolute minimum is 50usec - (likely ~10ms). PCIe
   1295  *     spec absolute max is 50msec. Default set for 22.2 msec via
   1296  *     adding time as follows: Bit 23: 3.21 secs <---POR 0 Bit 22:
   1297  *     201.3 msec <---POR 0 Bit 21: 100.8 msec <---POR 0 Bit 20: 25.2
   1298  *     msec <---POR 0 Bit 19: 12.6 msec <---POR 1 Bit 18: 6.3 msec
   1299  *     <---POR 1 Bit 17: 3.3 msec <---POR 1 Bit 16: if 0:
   1300  *     Baseline0=50usec; else Baseline1(use for
   1301  *     simulation-only)=804nsec
   1302  *     Interrupt Control Mode (00 = Reserved, 01 = INTx emulation, 10
   1303  *     = Reserved [Neptune INTx pins], 11 = Reserved [Neptune INTx
   1304  *     emulation + pins]
   1305  */
   1306 typedef union {
   1307 	uint32_t value;
   1308 	struct {
   1309 #if defined(_BIG_ENDIAN)
   1310 		uint32_t	rsrvd:8;
   1311 		uint32_t	eic_xtd_cpl_timout:8;
   1312 		uint32_t	rsrvd1:14;
   1313 		uint32_t	legacy_int_ctrl:2;
   1314 #else
   1315 		uint32_t	legacy_int_ctrl:2;
   1316 		uint32_t	rsrvd1:14;
   1317 		uint32_t	eic_xtd_cpl_timout:8;
   1318 		uint32_t	rsrvd:8;
   1319 #endif
   1320 	} bits;
   1321 } ven_ctrl_t;
   1322 
   1323 
   1324 /*
   1325  * Register: VenPrtHdr
   1326  * Vendor Specific Port Logic Header
   1327  * Description: Vendor Specific Port Logic Header
   1328  * Fields:
   1329  *     Length
   1330  *     Next Capbility Pointer (END, no more)
   1331  *     Vendor Specific Capbility ID
   1332  */
   1333 typedef union {
   1334 	uint32_t value;
   1335 	struct {
   1336 #if defined(_BIG_ENDIAN)
   1337 		uint32_t	rsrvd:8;
   1338 		uint32_t	len:8;
   1339 		uint32_t	nxt_cap_ptr:8;
   1340 		uint32_t	ven_cap_id:8;
   1341 #else
   1342 		uint32_t	ven_cap_id:8;
   1343 		uint32_t	nxt_cap_ptr:8;
   1344 		uint32_t	len:8;
   1345 		uint32_t	rsrvd:8;
   1346 #endif
   1347 	} bits;
   1348 } ven_prt_hdr_t;
   1349 
   1350 
   1351 /*
   1352  * Register: AcklatReplay
   1353  * Ack Latency and Replay Timer register
   1354  * Description: Ack Latency/Replay Timer
   1355  * Fields:
   1356  *     Replay Time limit = 16'd12429/`cxNb where cxNb=1.
   1357  *     Round Trip Latency Time limit = 9d'4143/`cxNb where cxNb=1.
   1358  */
   1359 typedef union {
   1360 	uint32_t value;
   1361 	struct {
   1362 #if defined(_BIG_ENDIAN)
   1363 		uint32_t	rep_tim:16;
   1364 		uint32_t	ack_tim:16;
   1365 #else
   1366 		uint32_t	ack_tim:16;
   1367 		uint32_t	rep_tim:16;
   1368 #endif
   1369 	} bits;
   1370 } acklat_replay_t;
   1371 
   1372 
   1373 /*
   1374  * Register: OthMsg
   1375  * Other Message Register
   1376  * Description: Other Message Register
   1377  * Fields:
   1378  *     Message to send/Data to corrupt LCRC
   1379  */
   1380 typedef union {
   1381 	uint32_t value;
   1382 	struct {
   1383 #if defined(_BIG_ENDIAN)
   1384 		uint32_t	oth_msg:32;
   1385 #else
   1386 		uint32_t	oth_msg:32;
   1387 #endif
   1388 	} bits;
   1389 } oth_msg_t;
   1390 
   1391 
   1392 /*
   1393  * Register: ForceLink
   1394  * Port Force Link
   1395  * Description: Other Message Register
   1396  * Fields:
   1397  *     LinkState that the EP core will be forced to when ForceLink
   1398  *     (bit[15]) is set
   1399  *     Forces Link to the specified LinkState field below. Write this
   1400  *     bit to generate a pulse to the ltssm. It clears itself once
   1401  *     the pulse is generated. Read will always return 0.
   1402  *     Link Number - N/A for Endpoint
   1403  */
   1404 typedef union {
   1405 	uint32_t value;
   1406 	struct {
   1407 #if defined(_BIG_ENDIAN)
   1408 		uint32_t	rsrvd:10;
   1409 		uint32_t	link_state:6;
   1410 		uint32_t	force_link:1;
   1411 		uint32_t	rsrvd1:7;
   1412 		uint32_t	link_num:8;
   1413 #else
   1414 		uint32_t	link_num:8;
   1415 		uint32_t	rsrvd1:7;
   1416 		uint32_t	force_link:1;
   1417 		uint32_t	link_state:6;
   1418 		uint32_t	rsrvd:10;
   1419 #endif
   1420 	} bits;
   1421 } force_link_t;
   1422 
   1423 
   1424 /*
   1425  * Register: AckFreq
   1426  * ACK Frequency Register
   1427  * Description: ACK Frequency Register
   1428  * Fields:
   1429  *     NFTS = 115.
   1430  *     NFTS = 115.
   1431  */
   1432 typedef union {
   1433 	uint32_t value;
   1434 	struct {
   1435 #if defined(_BIG_ENDIAN)
   1436 		uint32_t	rsrvd:2;
   1437 		uint32_t	l1_entr_latency:3;
   1438 		uint32_t	los_entr_latency:3;
   1439 		uint32_t	cx_comm_nfts:8;
   1440 		uint32_t	nfts:8;
   1441 		uint32_t	def_ack_freq:8;
   1442 #else
   1443 		uint32_t	def_ack_freq:8;
   1444 		uint32_t	nfts:8;
   1445 		uint32_t	cx_comm_nfts:8;
   1446 		uint32_t	los_entr_latency:3;
   1447 		uint32_t	l1_entr_latency:3;
   1448 		uint32_t	rsrvd:2;
   1449 #endif
   1450 	} bits;
   1451 } ack_freq_t;
   1452 
   1453 
   1454 /*
   1455  * Register: LinkCtrl
   1456  * Port Link Control
   1457  * Description: Port Link Control
   1458  * Fields:
   1459  *     8 lanes
   1460  *     When set, this bit is only set for 1 cycle. A write of 0 has
   1461  *     no effect.
   1462  */
   1463 typedef union {
   1464 	uint32_t value;
   1465 	struct {
   1466 #if defined(_BIG_ENDIAN)
   1467 		uint32_t	rsrvd:4;
   1468 		uint32_t	rsrvd1:2;
   1469 		uint32_t	corrupt_lcrc:1;
   1470 		uint32_t	rsrvd2:1;
   1471 		uint32_t	rsrvd3:2;
   1472 		uint32_t	link_mode_en:6;
   1473 		uint32_t	rsrvd4:4;
   1474 		uint32_t	rsrvd5:4;
   1475 		uint32_t	fast_link_mode:1;
   1476 		uint32_t	rsrvd6:1;
   1477 		uint32_t	dll_link_en:1;
   1478 		uint32_t	rsrvd7:1;
   1479 		uint32_t	reset_assert:1;
   1480 		uint32_t	lpbk_en:1;
   1481 		uint32_t	scram_dis:1;
   1482 		uint32_t	oth_msg_req:1;
   1483 #else
   1484 		uint32_t	oth_msg_req:1;
   1485 		uint32_t	scram_dis:1;
   1486 		uint32_t	lpbk_en:1;
   1487 		uint32_t	reset_assert:1;
   1488 		uint32_t	rsrvd7:1;
   1489 		uint32_t	dll_link_en:1;
   1490 		uint32_t	rsrvd6:1;
   1491 		uint32_t	fast_link_mode:1;
   1492 		uint32_t	rsrvd5:4;
   1493 		uint32_t	rsrvd4:4;
   1494 		uint32_t	link_mode_en:6;
   1495 		uint32_t	rsrvd3:2;
   1496 		uint32_t	rsrvd2:1;
   1497 		uint32_t	corrupt_lcrc:1;
   1498 		uint32_t	rsrvd1:2;
   1499 		uint32_t	rsrvd:4;
   1500 #endif
   1501 	} bits;
   1502 } link_ctrl_t;
   1503 
   1504 
   1505 /*
   1506  * Register: LaneSkew
   1507  * Lane Skew Register
   1508  * Description: Lane Skew Register
   1509  * Fields:
   1510  *     prevents EP core from sending Ack/Nack DLLPs
   1511  *     prevents EP core from sending FC DLLPs
   1512  */
   1513 typedef union {
   1514 	uint32_t value;
   1515 	struct {
   1516 #if defined(_BIG_ENDIAN)
   1517 		uint32_t	dis_lane_to_lane_deskew:1;
   1518 		uint32_t	rsrvd:5;
   1519 		uint32_t	ack_nack_dis:1;
   1520 		uint32_t	flow_control_dis:1;
   1521 		uint32_t	tx_lane_skew:24;
   1522 #else
   1523 		uint32_t	tx_lane_skew:24;
   1524 		uint32_t	flow_control_dis:1;
   1525 		uint32_t	ack_nack_dis:1;
   1526 		uint32_t	rsrvd:5;
   1527 		uint32_t	dis_lane_to_lane_deskew:1;
   1528 #endif
   1529 	} bits;
   1530 } lane_skew_t;
   1531 
   1532 
   1533 /*
   1534  * Register: SymbolNum
   1535  * Symbol Number Register
   1536  * Description: Symbol Number Register
   1537  * Fields:
   1538  *     Timer modifier for Flow control Watch Dog timer
   1539  *     Timer modifier for Ack/Nack latency timer
   1540  *     Timer modifier for Replay timer
   1541  *     Note: rtl uses defaultNSkipSymbols
   1542  *     Note: rtl initialized using defaultNTs1Symbols
   1543  */
   1544 typedef union {
   1545 	uint32_t value;
   1546 	struct {
   1547 #if defined(_BIG_ENDIAN)
   1548 		uint32_t	rsrvd:3;
   1549 		uint32_t	fc_wdog_tim_mod:5;
   1550 		uint32_t	ack_nack_tim_mod:5;
   1551 		uint32_t	rep_tim_mod:5;
   1552 		uint32_t	rsrvd1:3;
   1553 		uint32_t	num_skip_symb:3;
   1554 		uint32_t	rsrvd2:4;
   1555 		uint32_t	num_ts_symb:4;
   1556 #else
   1557 		uint32_t	num_ts_symb:4;
   1558 		uint32_t	rsrvd2:4;
   1559 		uint32_t	num_skip_symb:3;
   1560 		uint32_t	rsrvd1:3;
   1561 		uint32_t	rep_tim_mod:5;
   1562 		uint32_t	ack_nack_tim_mod:5;
   1563 		uint32_t	fc_wdog_tim_mod:5;
   1564 		uint32_t	rsrvd:3;
   1565 #endif
   1566 	} bits;
   1567 } symbol_num_t;
   1568 
   1569 
   1570 /*
   1571  * Register: SymbTimRadmFlt1
   1572  * Symbol Timer Register / RADM Filter Mask Register 1
   1573  * Description: Symbol Timer / RADM Filter Mask 1
   1574  * Fields:
   1575  *     No masking errors while filtering
   1576  */
   1577 typedef union {
   1578 	uint32_t value;
   1579 	struct {
   1580 #if defined(_BIG_ENDIAN)
   1581 		uint32_t	mask_radm_flt:16;
   1582 		uint32_t	dis_fc_wdog:1;
   1583 		uint32_t	rsrvd:4;
   1584 		uint32_t	skip_interval:11;
   1585 #else
   1586 		uint32_t	skip_interval:11;
   1587 		uint32_t	rsrvd:4;
   1588 		uint32_t	dis_fc_wdog:1;
   1589 		uint32_t	mask_radm_flt:16;
   1590 #endif
   1591 	} bits;
   1592 } symb_tim_radm_flt1_t;
   1593 
   1594 
   1595 /*
   1596  * Register: RadmFlt2
   1597  * RADM Filter Mask Register 2
   1598  * Description: RADM Filter Mask Register 2
   1599  * Fields:
   1600  *     [31:2] = Reserved [1]=0=Vendor MSG Type0 dropped & treated as
   1601  *     UR, [0]=0=Vendor MSG Type1 silently dropped.
   1602  */
   1603 typedef union {
   1604 	uint32_t value;
   1605 	struct {
   1606 #if defined(_BIG_ENDIAN)
   1607 		uint32_t	mask_radm_flt:32;
   1608 #else
   1609 		uint32_t	mask_radm_flt:32;
   1610 #endif
   1611 	} bits;
   1612 } radm_flt2_t;
   1613 
   1614 
   1615 /*
   1616  * Register: CascadeDebReg0
   1617  * Cascade core (EP) Debug Register 0
   1618  * Description: Debug Register 0 EP Core SII Interface bus :
   1619  * cxplDebugInfo[31:0]
   1620  * Fields:
   1621  */
   1622 typedef union {
   1623 	uint32_t value;
   1624 	struct {
   1625 #if defined(_BIG_ENDIAN)
   1626 		uint32_t	rmlh_ts_link_ctrl:4;
   1627 		uint32_t	rmlh_ts_lane_num_is_k237:1;
   1628 		uint32_t	rmlh_ts_link_num_is_k237:1;
   1629 		uint32_t	rmlh_rcvd_idle_bit0:1;
   1630 		uint32_t	rmlh_rcvd_idle_bit1:1;
   1631 		uint32_t	mac_phy_txdata:16;
   1632 		uint32_t	mac_phy_txdatak:2;
   1633 		uint32_t	rsrvd:1;
   1634 		uint32_t	xmlh_ltssm_state:5;
   1635 #else
   1636 		uint32_t	xmlh_ltssm_state:5;
   1637 		uint32_t	rsrvd:1;
   1638 		uint32_t	mac_phy_txdatak:2;
   1639 		uint32_t	mac_phy_txdata:16;
   1640 		uint32_t	rmlh_rcvd_idle_bit1:1;
   1641 		uint32_t	rmlh_rcvd_idle_bit0:1;
   1642 		uint32_t	rmlh_ts_link_num_is_k237:1;
   1643 		uint32_t	rmlh_ts_lane_num_is_k237:1;
   1644 		uint32_t	rmlh_ts_link_ctrl:4;
   1645 #endif
   1646 	} bits;
   1647 } cascade_deb_reg0_t;
   1648 
   1649 
   1650 /*
   1651  * Register: CascadeDebReg1
   1652  * Cascade Core (EP) Debug Register 1
   1653  * Description: Debug Register 1 EP Core SII Interface bus :
   1654  * cxplDebugInfo[63:32]
   1655  * Fields:
   1656  *     PCIe Link status. 0=down, 1=up
   1657  */
   1658 typedef union {
   1659 	uint32_t value;
   1660 	struct {
   1661 #if defined(_BIG_ENDIAN)
   1662 		uint32_t	xmlh_scrambler_disable:1;
   1663 		uint32_t	xmlh_link_disable:1;
   1664 		uint32_t	xmlh_link_in_training:1;
   1665 		uint32_t	xmlh_rcvr_revrs_pol_en:1;
   1666 		uint32_t	xmlh_training_rst_n:1;
   1667 		uint32_t	rsrvd:4;
   1668 		uint32_t	mac_phy_txdetectrx_loopback:1;
   1669 		uint32_t	mac_phy_txelecidle_bit0:1;
   1670 		uint32_t	mac_phy_txcompliance_bit0:1;
   1671 		uint32_t	app_init_rst:1;
   1672 		uint32_t	rsrvd1:3;
   1673 		uint32_t	rmlh_rs_link_num:8;
   1674 		uint32_t	rmlh_link_mode:3;
   1675 		uint32_t	xmlh_link_up:1;
   1676 		uint32_t	rmlh_inskip_rcv:1;
   1677 		uint32_t	rmlh_ts1_rcvd:1;
   1678 		uint32_t	rmlh_ts2_rcvd:1;
   1679 		uint32_t	rmlh_rcvd_lane_rev:1;
   1680 #else
   1681 		uint32_t	rmlh_rcvd_lane_rev:1;
   1682 		uint32_t	rmlh_ts2_rcvd:1;
   1683 		uint32_t	rmlh_ts1_rcvd:1;
   1684 		uint32_t	rmlh_inskip_rcv:1;
   1685 		uint32_t	xmlh_link_up:1;
   1686 		uint32_t	rmlh_link_mode:3;
   1687 		uint32_t	rmlh_rs_link_num:8;
   1688 		uint32_t	rsrvd1:3;
   1689 		uint32_t	app_init_rst:1;
   1690 		uint32_t	mac_phy_txcompliance_bit0:1;
   1691 		uint32_t	mac_phy_txelecidle_bit0:1;
   1692 		uint32_t	mac_phy_txdetectrx_loopback:1;
   1693 		uint32_t	rsrvd:4;
   1694 		uint32_t	xmlh_training_rst_n:1;
   1695 		uint32_t	xmlh_rcvr_revrs_pol_en:1;
   1696 		uint32_t	xmlh_link_in_training:1;
   1697 		uint32_t	xmlh_link_disable:1;
   1698 		uint32_t	xmlh_scrambler_disable:1;
   1699 #endif
   1700 	} bits;
   1701 } cascade_deb_reg1_t;
   1702 
   1703 
   1704 /*
   1705  * Register: TxpFcCreditStat
   1706  * Transmit Posted FC Credit Status
   1707  * Description: Transmit Posted FC Credit Status
   1708  * Fields:
   1709  */
   1710 typedef union {
   1711 	uint32_t value;
   1712 	struct {
   1713 #if defined(_BIG_ENDIAN)
   1714 		uint32_t	rsrvd:12;
   1715 		uint32_t	txp_fc_hdr_credit_stat:8;
   1716 		uint32_t	txp_fc_data_credit_stat:12;
   1717 #else
   1718 		uint32_t	txp_fc_data_credit_stat:12;
   1719 		uint32_t	txp_fc_hdr_credit_stat:8;
   1720 		uint32_t	rsrvd:12;
   1721 #endif
   1722 	} bits;
   1723 } txp_fc_credit_stat_t;
   1724 
   1725 
   1726 /*
   1727  * Register: TxnpFcCreditStat
   1728  * Transmit Non-Posted FC Credit Status
   1729  * Description: Transmit Non-Posted FC Credit Status
   1730  * Fields:
   1731  */
   1732 typedef union {
   1733 	uint32_t value;
   1734 	struct {
   1735 #if defined(_BIG_ENDIAN)
   1736 		uint32_t	rsrvd:12;
   1737 		uint32_t	txnp_fc_hdr_credit_stat:8;
   1738 		uint32_t	txnp_fc_data_credit_stat:12;
   1739 #else
   1740 		uint32_t	txnp_fc_data_credit_stat:12;
   1741 		uint32_t	txnp_fc_hdr_credit_stat:8;
   1742 		uint32_t	rsrvd:12;
   1743 #endif
   1744 	} bits;
   1745 } txnp_fc_credit_stat_t;
   1746 
   1747 
   1748 /*
   1749  * Register: TxcplFcCreditStat
   1750  * Transmit Completion FC Credit Status
   1751  * Description: Transmit Completion FC Credit Status
   1752  * Fields:
   1753  */
   1754 typedef union {
   1755 	uint32_t value;
   1756 	struct {
   1757 #if defined(_BIG_ENDIAN)
   1758 		uint32_t	rsrvd:12;
   1759 		uint32_t	txcpl_fc_hdr_credit_stat:8;
   1760 		uint32_t	txcpl_fc_data_credit_stat:12;
   1761 #else
   1762 		uint32_t	txcpl_fc_data_credit_stat:12;
   1763 		uint32_t	txcpl_fc_hdr_credit_stat:8;
   1764 		uint32_t	rsrvd:12;
   1765 #endif
   1766 	} bits;
   1767 } txcpl_fc_credit_stat_t;
   1768 
   1769 
   1770 /*
   1771  * Register: QueueStat
   1772  * Queue Status
   1773  * Description: Queue Status
   1774  * Fields:
   1775  */
   1776 typedef union {
   1777 	uint32_t value;
   1778 	struct {
   1779 #if defined(_BIG_ENDIAN)
   1780 		uint32_t	rsrvd:29;
   1781 		uint32_t	rx_queue_not_empty:1;
   1782 		uint32_t	tx_rbuf_not_empty:1;
   1783 		uint32_t	tx_fc_credit_not_ret:1;
   1784 #else
   1785 		uint32_t	tx_fc_credit_not_ret:1;
   1786 		uint32_t	tx_rbuf_not_empty:1;
   1787 		uint32_t	rx_queue_not_empty:1;
   1788 		uint32_t	rsrvd:29;
   1789 #endif
   1790 	} bits;
   1791 } queue_stat_t;
   1792 
   1793 
   1794 /*
   1795  * Register: GbtDebug0
   1796  * GBT Debug, Status register
   1797  * Description: This register returns bits [31:0] of the PIPE core's
   1798  * gbtDebug bus
   1799  * Fields:
   1800  *     [6] & [22] = rxclkO will always read 1'b0 [7] & [23] =
   1801  *     tbcout10O will always read 1'b0
   1802  * The value specified here is the Power On Reset value as given
   1803  *     in spec. except for the clock bits which are hardwired to
   1804  *     1'b0.
   1805  * The gbtDebug[0:15] bus is provided for each lane as an output
   1806  *     from the pcieGbtopWrapper.v module. These signals are not
   1807  *     required for manufacturing test and may be left unconnected.
   1808  *     The cw00041130PipeParam.vh bus width is the number of lanes
   1809  *     multiplied by 16. lane0 is bits[15:0], lane1 is bits[31:16],
   1810  *     lane2 is bits[47:32], lane3 is bits[63:48], lane4 is
   1811  *     bits[79:64], lane5 is bits[95:80], lane6 is bits[111:96],
   1812  *     lane7 is bits[127:112].
   1813  * Refer to section 4.2.2.4, Gigablaze Debug Signals section.
   1814  *     (pgs 4.27 - 4.28) in the following document :
   1815  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   1816  *     cw000411TechMan.pdf
   1817  *     lane0 is bits[15:0], which is gbtDebug0[15:0] lane1 is
   1818  *     bits[31:16], which is gbtDebug0[31:16]
   1819  *
   1820  *     -------------------------------------------------------------------------
   1821  *     Signal Bit Reset Description
   1822  *     -------------------------------------------------------------------------
   1823  *     gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock
   1824  *     gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock
   1825  *     gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI
   1826  *     [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8]
   1827  *     [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock
   1828  *     10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO
   1829  *     [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4]
   1830  *     [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver
   1831  *     loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass
   1832  *     active low reserved [16n+1] [1] 0 reserved reserved [16n] [0]
   1833  *     0 reserved
   1834  *     -------------------------------------------------------------------------
   1835  */
   1836 typedef union {
   1837 	uint32_t value;
   1838 	struct {
   1839 #if defined(_BIG_ENDIAN)
   1840 		uint32_t	data:32;
   1841 #else
   1842 		uint32_t	data:32;
   1843 #endif
   1844 	} bits;
   1845 } gbt_debug0_t;
   1846 
   1847 
   1848 /*
   1849  * Register: GbtDebug1
   1850  * GBT Debug, Status register
   1851  * Description: This register returns bits [63:32] of the PIPE core's
   1852  * gbtDebug bus
   1853  * Fields:
   1854  *     [6] & [22] = rxclkO will always read 1'b0 [7] & [23] =
   1855  *     tbcout10O will always read 1'b0
   1856  * The value specified here is the Power On Reset value as given
   1857  *     in spec. except for the clock bits which are hardwired to
   1858  *     1'b0.
   1859  * The gbtDebug[0:15] bus is provided for each lane as an output
   1860  *     from the pcieGbtopWrapper.v module. These signals are not
   1861  *     required for manufacturing test and may be left unconnected.
   1862  *     The cw00041130PipeParam.vh bus width is the number of lanes
   1863  *     multiplied by 16.
   1864  * Refer to section 4.2.2.4, Gigablaze Debug Signals section.
   1865  *     (pgs 4.27 - 4.28) in the following document :
   1866  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   1867  *     cw000411TechMan.pdf
   1868  *     lane2 is bits[47:32], which is gbtDebug1[15:0] lane3 is
   1869  *     bits[63:48], which is gbtDebug1[31:16]
   1870  *
   1871  *     -------------------------------------------------------------------------
   1872  *     Signal Bit Reset Description
   1873  *     -------------------------------------------------------------------------
   1874  *     gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock
   1875  *     gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock
   1876  *     gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI
   1877  *     [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8]
   1878  *     [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock
   1879  *     10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO
   1880  *     [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4]
   1881  *     [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver
   1882  *     loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass
   1883  *     active low reserved [16n+1] [1] 0 reserved reserved [16n] [0]
   1884  *     0 reserved
   1885  *     -------------------------------------------------------------------------
   1886  */
   1887 typedef union {
   1888 	uint32_t value;
   1889 	struct {
   1890 #if defined(_BIG_ENDIAN)
   1891 		uint32_t	data:32;
   1892 #else
   1893 		uint32_t	data:32;
   1894 #endif
   1895 	} bits;
   1896 } gbt_debug1_t;
   1897 
   1898 
   1899 /*
   1900  * Register: GbtDebug2
   1901  * GBT Debug, Status register
   1902  * Description: This register returns bits [95:64] of the PIPE core's
   1903  * gbtDebug bus
   1904  * Fields:
   1905  *     [6] & [22] = rxclkO will always read 1'b0 [7] & [23] =
   1906  *     tbcout10O will always read 1'b0
   1907  * The value specified here is the Power On Reset value as given
   1908  *     in spec. except for the clock bits which are hardwired to
   1909  *     1'b0.
   1910  * The gbtDebug[0:15] bus is provided for each lane as an output
   1911  *     from the pcieGbtopWrapper.v module. These signals are not
   1912  *     required for manufacturing test and may be left unconnected.
   1913  *     The cw00041130PipeParam.vh bus width is the number of lanes
   1914  *     multiplied by 16.
   1915  * Refer to section 4.2.2.4, Gigablaze Debug Signals section.
   1916  *     (pgs 4.27 - 4.28) in the following document :
   1917  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   1918  *     cw000411TechMan.pdf
   1919  *     lane4 is bits[79:64], which is gbtDebug2[15:0] lane5 is
   1920  *     bits[95:80], which is gbtDebug2[31:16]
   1921  *
   1922  *     -------------------------------------------------------------------------
   1923  *     Signal Bit Reset Description
   1924  *     -------------------------------------------------------------------------
   1925  *     gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock
   1926  *     gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock
   1927  *     gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI
   1928  *     [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8]
   1929  *     [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock
   1930  *     10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO
   1931  *     [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4]
   1932  *     [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver
   1933  *     loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass
   1934  *     active low reserved [16n+1] [1] 0 reserved reserved [16n] [0]
   1935  *     0 reserved
   1936  *     -------------------------------------------------------------------------
   1937  */
   1938 typedef union {
   1939 	uint32_t value;
   1940 	struct {
   1941 #if defined(_BIG_ENDIAN)
   1942 		uint32_t	data:32;
   1943 #else
   1944 		uint32_t	data:32;
   1945 #endif
   1946 	} bits;
   1947 } gbt_debug2_t;
   1948 
   1949 
   1950 /*
   1951  * Register: GbtDebug3
   1952  * GBT Debug, Status register
   1953  * Description: This register returns bits [127:96] of the PIPE
   1954  * core's gbtDebug bus
   1955  * Fields:
   1956  *     [6] & [22] = rxclkO will always read 1'b0 [7] & [23] =
   1957  *     tbcout10O will always read 1'b0
   1958  * The value specified here is the Power On Reset value as given
   1959  *     in spec. except for the clock bits which are hardwired to
   1960  *     1'b0.
   1961  * The gbtDebug[0:15] bus is provided for each lane as an output
   1962  *     from the pcieGbtopWrapper.v module. These signals are not
   1963  *     required for manufacturing test and may be left unconnected.
   1964  *     The cw00041130PipeParam.vh bus width is the number of lanes
   1965  *     multiplied by 16.
   1966  * Refer to section 4.2.2.4, Gigablaze Debug Signals section.
   1967  *     (pgs 4.27 - 4.28) in the following document :
   1968  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   1969  *     cw000411TechMan.pdf
   1970  *     lane6 is bits[111:96], which is gbtDebug3[15:0] lane7 is
   1971  *     bits[127:112], which is gbtDebug3[31:16]
   1972  *
   1973  *     -------------------------------------------------------------------------
   1974  *     Signal Bit Reset Description
   1975  *     -------------------------------------------------------------------------
   1976  *     gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock
   1977  *     gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock
   1978  *     gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI
   1979  *     [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8]
   1980  *     [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock
   1981  *     10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO
   1982  *     [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4]
   1983  *     [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver
   1984  *     loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass
   1985  *     active low reserved [16n+1] [1] 0 reserved reserved [16n] [0]
   1986  *     0 reserved
   1987  *     -------------------------------------------------------------------------
   1988  */
   1989 typedef union {
   1990 	uint32_t value;
   1991 	struct {
   1992 #if defined(_BIG_ENDIAN)
   1993 		uint32_t	data:32;
   1994 #else
   1995 		uint32_t	data:32;
   1996 #endif
   1997 	} bits;
   1998 } gbt_debug3_t;
   1999 
   2000 
   2001 /*
   2002  * Register: PipeDebug0
   2003  * PIPE Debug, status register
   2004  * Description: This register returns bits [31:0] of the PIPE core's
   2005  * gbtDebug bus
   2006  * Fields:
   2007  *     The value specified here is the Power On Reset value as given
   2008  *     in spec.
   2009  * This 16-bit debug bus reports operating conditions for the
   2010  *     PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0
   2011  *     is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32],
   2012  *     lane3 is bits[63:48], lane4 is bits[79:64], lane5 is
   2013  *     bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112].
   2014  * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in
   2015  *     the following document :
   2016  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   2017  *     cw000411TechMan.pdf
   2018  *     lane0 is bit[15:0], which is pipeDebug0[15:0] lane1 is
   2019  *     bit[31:16], which is pipeDebug0[31:16]
   2020  *
   2021  *     -------------------------------------------------------------------------
   2022  *     pipeDebug Signal or Condition Description Reset
   2023  *     -------------------------------------------------------------------------
   2024  *     [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO
   2025  *     underflow occurred
   2026  * [14] skipInsert or EFIFO skip inserted or 0 skipDelete
   2027  *     deleted 0
   2028  * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag
   2029  *     Used with skipcharflag to verify EFIFO depth.
   2030  * [12] skipcharflag Skip flag written by EFIFO 0
   2031  * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000
   2032  * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set
   2033  *     output
   2034  * [6] efifoBytesync EFIFO output byte 0 synchronization
   2035  * [5] rxinvalid 8b/10b error or 0 or code violation
   2036  * [4] rxinitdone Receiver bit-init done. 0 Synchronous with
   2037  *     pipeClk.
   2038  * [3] txinitdone Transmitter-bit init done. 0 Synchronous with
   2039  *     pipeClk.
   2040  * [2] filteredrxlos Filtered loss of signal used 1 to generate
   2041  *     p2lRxelectidle. Synchronous with pipeClk.
   2042  * [1] rxdetectInt Receiver detected 0
   2043  * [0] pipeMasterDoneOut Receiver detection valid 0
   2044  *
   2045  */
   2046 typedef union {
   2047 	uint32_t value;
   2048 	struct {
   2049 #if defined(_BIG_ENDIAN)
   2050 		uint32_t	data:32;
   2051 #else
   2052 		uint32_t	data:32;
   2053 #endif
   2054 	} bits;
   2055 } pipe_debug0_t;
   2056 
   2057 
   2058 /*
   2059  * Register: PipeDebug1
   2060  * PIPE Debug, status register
   2061  * Description: This register returns bits [63:32] of the PIPE core's
   2062  * gbtDebug bus
   2063  * Fields:
   2064  *     The value specified here is the Power On Reset value as given
   2065  *     in spec.
   2066  * This 16-bit debug bus reports operating conditions for the
   2067  *     PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0
   2068  *     is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32],
   2069  *     lane3 is bits[63:48], lane4 is bits[79:64], lane5 is
   2070  *     bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112].
   2071  * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in
   2072  *     the following document :
   2073  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   2074  *     cw000411TechMan.pdf
   2075  * lane2 is bits[47:32], which is pipeDebug1[15:0] lane3 is
   2076  *     bits[63:48], which is pipeDebug1[31:16]
   2077  *
   2078  *     -------------------------------------------------------------------------
   2079  *     pipeDebug Signal or Condition Description Reset
   2080  *     -------------------------------------------------------------------------
   2081  *     [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO
   2082  *     underflow occurred
   2083  * [14] skipInsert or EFIFO skip inserted or 0 skipDelete
   2084  *     deleted 0
   2085  * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag
   2086  *     Used with skipcharflag to verify EFIFO depth.
   2087  * [12] skipcharflag Skip flag written by EFIFO 0
   2088  * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000
   2089  * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set
   2090  *     output
   2091  * [6] efifoBytesync EFIFO output byte 0 synchronization
   2092  * [5] rxinvalid 8b/10b error or 0 or code violation
   2093  * [4] rxinitdone Receiver bit-init done. 0 Synchronous with
   2094  *     pipeClk.
   2095  * [3] txinitdone Transmitter-bit init done. 0 Synchronous with
   2096  *     pipeClk.
   2097  * [2] filteredrxlos Filtered loss of signal used 1 to generate
   2098  *     p2lRxelectidle. Synchronous with pipeClk.
   2099  * [1] rxdetectInt Receiver detected 0
   2100  * [0] pipeMasterDoneOut Receiver detection valid 0
   2101  *
   2102  */
   2103 typedef union {
   2104 	uint32_t value;
   2105 	struct {
   2106 #if defined(_BIG_ENDIAN)
   2107 		uint32_t	data:32;
   2108 #else
   2109 		uint32_t	data:32;
   2110 #endif
   2111 	} bits;
   2112 } pipe_debug1_t;
   2113 
   2114 
   2115 /*
   2116  * Register: PipeDebug2
   2117  * PIPE Debug, status register
   2118  *     The value specified here is the Power On Reset value as given
   2119  *     in spec.
   2120  * This 16-bit debug bus reports operating conditions for the
   2121  *     PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0
   2122  *     is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32],
   2123  *     lane3 is bits[63:48], lane4 is bits[79:64], lane5 is
   2124  *     bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112].
   2125  * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in
   2126  *     the following document :
   2127  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   2128  *     cw000411TechMan.pdf
   2129  * lane4 is bits[79:64], which is pipeDebug2[15:0] lane5 is
   2130  *     bits[95:80], which is pipeDebug2[31:16]
   2131  *
   2132  *     -------------------------------------------------------------------------
   2133  *     pipeDebug Signal or Condition Description Reset
   2134  *     -------------------------------------------------------------------------
   2135  *     [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO
   2136  *     underflow occurred
   2137  * [14] skipInsert or EFIFO skip inserted or 0 skipDelete
   2138  *     deleted 0
   2139  * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag
   2140  *     Used with skipcharflag to verify EFIFO depth.
   2141  * [12] skipcharflag Skip flag written by EFIFO 0
   2142  * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000
   2143  * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set
   2144  *     output
   2145  * [6] efifoBytesync EFIFO output byte 0 synchronization
   2146  * [5] rxinvalid 8b/10b error or 0 or code violation
   2147  * [4] rxinitdone Receiver bit-init done. 0 Synchronous with
   2148  *     pipeClk.
   2149  * [3] txinitdone Transmitter-bit init done. 0 Synchronous with
   2150  *     pipeClk.
   2151  * [2] filteredrxlos Filtered loss of signal used 1 to generate
   2152  *     p2lRxelectidle. Synchronous with pipeClk.
   2153  * [1] rxdetectInt Receiver detected 0
   2154  * [0] pipeMasterDoneOut Receiver detection valid 0
   2155  *
   2156  */
   2157 typedef union {
   2158 	uint32_t value;
   2159 	struct {
   2160 #if defined(_BIG_ENDIAN)
   2161 		uint32_t	data:32;
   2162 #else
   2163 		uint32_t	data:32;
   2164 #endif
   2165 	} bits;
   2166 } pipe_debug2_t;
   2167 
   2168 
   2169 /*
   2170  * Register: PipeDebug3
   2171  * PIPE Debug, status register
   2172  * Description: This register returns bits [127:96] of the PIPE
   2173  * core's gbtDebug bus
   2174  * Fields:
   2175  *     The value specified here is the Power On Reset value as given
   2176  *     in spec.
   2177  * This 16-bit debug bus reports operating conditions for the
   2178  *     PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0
   2179  *     is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32],
   2180  *     lane3 is bits[63:48], lane4 is bits[79:64], lane5 is
   2181  *     bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112].
   2182  * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in
   2183  *     the following document :
   2184  *     /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/
   2185  *     cw000411TechMan.pdf
   2186  * lane6 is bits[111:96], which is pipeDebug3[15:0] lane7 is
   2187  *     bits[127:112], which is pipeDebug3[31:16]
   2188  *
   2189  *     -------------------------------------------------------------------------
   2190  *     pipeDebug Signal or Condition Description Reset
   2191  *     -------------------------------------------------------------------------
   2192  *     [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO
   2193  *     underflow occurred
   2194  * [14] skipInsert or EFIFO skip inserted or 0 skipDelete
   2195  *     deleted 0
   2196  * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag
   2197  *     Used with skipcharflag to verify EFIFO depth.
   2198  * [12] skipcharflag Skip flag written by EFIFO 0
   2199  * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000
   2200  * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set
   2201  *     output
   2202  * [6] efifoBytesync EFIFO output byte 0 synchronization
   2203  * [5] rxinvalid 8b/10b error or 0 or code violation
   2204  * [4] rxinitdone Receiver bit-init done. 0 Synchronous with
   2205  *     pipeClk.
   2206  * [3] txinitdone Transmitter-bit init done. 0 Synchronous with
   2207  *     pipeClk.
   2208  * [2] filteredrxlos Filtered loss of signal used 1 to generate
   2209  *     p2lRxelectidle. Synchronous with pipeClk.
   2210  * [1] rxdetectInt Receiver detected 0
   2211  * [0] pipeMasterDoneOut Receiver detection valid 0
   2212  *
   2213  */
   2214 typedef union {
   2215 	uint32_t value;
   2216 	struct {
   2217 #if defined(_BIG_ENDIAN)
   2218 		uint32_t	data:32;
   2219 #else
   2220 		uint32_t	data:32;
   2221 #endif
   2222 	} bits;
   2223 } pipe_debug3_t;
   2224 
   2225 
   2226 /*
   2227  * Register: PcieEnhCapHdr
   2228  * PCIE Enhanced Capability Header
   2229  * Description: PCIE Enhanced Capability Header
   2230  * Fields:
   2231  *     Next Capability Offset (END, no more)
   2232  *     Capability Version
   2233  *     PCI Express Enhanced Capability ID (0x1 = Advanced Error
   2234  *     Reporting)
   2235  */
   2236 typedef union {
   2237 	uint32_t value;
   2238 	struct {
   2239 #if defined(_BIG_ENDIAN)
   2240 		uint32_t	nxt_cap_offset:12;
   2241 		uint32_t	cap_ver:4;
   2242 		uint32_t	pcie_enh_cap_id:16;
   2243 #else
   2244 		uint32_t	pcie_enh_cap_id:16;
   2245 		uint32_t	cap_ver:4;
   2246 		uint32_t	nxt_cap_offset:12;
   2247 #endif
   2248 	} bits;
   2249 } pcie_enh_cap_hdr_t;
   2250 
   2251 
   2252 /*
   2253  * Register: UncErrStat
   2254  * Uncorrectable Error Status
   2255  * Description: Uncorrectable Error Status
   2256  * Fields:
   2257  *     Unsupported Request Error
   2258  *     ECRC Error
   2259  *     Malformed TLP
   2260  *     Reciever Overflow
   2261  *     Unexpected Completion
   2262  *     Completion Abort
   2263  *     Completion Timeout
   2264  *     Flow Control Protocol Error
   2265  *     Poisoned TLP
   2266  *     Introduced in PCIe 1.1 specification.
   2267  *     Data Link Protocol Error
   2268  */
   2269 typedef union {
   2270 	uint32_t value;
   2271 	struct {
   2272 #if defined(_BIG_ENDIAN)
   2273 		uint32_t	rsrvd:11;
   2274 		uint32_t	unsup_req_err:1;
   2275 		uint32_t	ecrc_err:1;
   2276 		uint32_t	bad_tlp:1;
   2277 		uint32_t	rcv_ovfl:1;
   2278 		uint32_t	unexp_cpl:1;
   2279 		uint32_t	cpl_abrt:1;
   2280 		uint32_t	cpl_tmout:1;
   2281 		uint32_t	fc_err:1;
   2282 		uint32_t	psn_tlp:1;
   2283 		uint32_t	rsrvd1:6;
   2284 		uint32_t	surprise_down_err:1;
   2285 		uint32_t	dlp_err:1;
   2286 		uint32_t	rsrvd2:4;
   2287 #else
   2288 		uint32_t	rsrvd2:4;
   2289 		uint32_t	dlp_err:1;
   2290 		uint32_t	surprise_down_err:1;
   2291 		uint32_t	rsrvd1:6;
   2292 		uint32_t	psn_tlp:1;
   2293 		uint32_t	fc_err:1;
   2294 		uint32_t	cpl_tmout:1;
   2295 		uint32_t	cpl_abrt:1;
   2296 		uint32_t	unexp_cpl:1;
   2297 		uint32_t	rcv_ovfl:1;
   2298 		uint32_t	bad_tlp:1;
   2299 		uint32_t	ecrc_err:1;
   2300 		uint32_t	unsup_req_err:1;
   2301 		uint32_t	rsrvd:11;
   2302 #endif
   2303 	} bits;
   2304 } unc_err_stat_t;
   2305 
   2306 
   2307 /*
   2308  * Register: UncErrMask
   2309  * Uncorrectable Error Mask
   2310  * Description: Uncorrectable Error Mask
   2311  * Fields:
   2312  *     Unsupported Request Error
   2313  *     ECRC Error
   2314  *     Malformed TLP
   2315  *     Reciever Overflow
   2316  *     Unexpected Completion
   2317  *     Completion Abort
   2318  *     Completion Timeout
   2319  *     Flow Control Protocol Error
   2320  *     Poisoned TLP
   2321  *     Introduced in PCIe 1.1
   2322  *     Data Link Protocol Error
   2323  */
   2324 typedef union {
   2325 	uint32_t value;
   2326 	struct {
   2327 #if defined(_BIG_ENDIAN)
   2328 		uint32_t	rsrvd:11;
   2329 		uint32_t	unsup_req_err:1;
   2330 		uint32_t	ecrc_err:1;
   2331 		uint32_t	bad_tlp:1;
   2332 		uint32_t	rcv_ovfl:1;
   2333 		uint32_t	unexp_cpl:1;
   2334 		uint32_t	cpl_abrt:1;
   2335 		uint32_t	cpl_tmout:1;
   2336 		uint32_t	fc_err:1;
   2337 		uint32_t	psn_tlp:1;
   2338 		uint32_t	rsrvd1:6;
   2339 		uint32_t	surprise_down_err:1;
   2340 		uint32_t	dlp_err:1;
   2341 		uint32_t	rsrvd2:4;
   2342 #else
   2343 		uint32_t	rsrvd2:4;
   2344 		uint32_t	dlp_err:1;
   2345 		uint32_t	surprise_down_err:1;
   2346 		uint32_t	rsrvd1:6;
   2347 		uint32_t	psn_tlp:1;
   2348 		uint32_t	fc_err:1;
   2349 		uint32_t	cpl_tmout:1;
   2350 		uint32_t	cpl_abrt:1;
   2351 		uint32_t	unexp_cpl:1;
   2352 		uint32_t	rcv_ovfl:1;
   2353 		uint32_t	bad_tlp:1;
   2354 		uint32_t	ecrc_err:1;
   2355 		uint32_t	unsup_req_err:1;
   2356 		uint32_t	rsrvd:11;
   2357 #endif
   2358 	} bits;
   2359 } unc_err_mask_t;
   2360 
   2361 
   2362 /*
   2363  * Register: UncErrSvrty
   2364  * Uncorrectable Error Severity
   2365  * Description: Uncorrectable Error Severity
   2366  * Fields:
   2367  *     Unsupported Request Error
   2368  *     ECRC Error
   2369  *     Malformed TLP
   2370  *     Reciever Overflow
   2371  *     Unexpected Completion
   2372  *     Completion Abort
   2373  *     Completion Timeout
   2374  *     Flow Control Protocol Error
   2375  *     Poisoned TLP
   2376  *     Introduced in PCIe 1.1 specification. Not supported; use PCIe
   2377  *     default.
   2378  *     Data Link Protocol Error
   2379  */
   2380 typedef union {
   2381 	uint32_t value;
   2382 	struct {
   2383 #if defined(_BIG_ENDIAN)
   2384 		uint32_t	rsrvd:11;
   2385 		uint32_t	unsup_req_err:1;
   2386 		uint32_t	ecrc_err:1;
   2387 		uint32_t	bad_tlp:1;
   2388 		uint32_t	rcv_ovfl:1;
   2389 		uint32_t	unexp_cpl:1;
   2390 		uint32_t	cpl_abrt:1;
   2391 		uint32_t	cpl_tmout:1;
   2392 		uint32_t	fc_err:1;
   2393 		uint32_t	psn_tlp:1;
   2394 		uint32_t	rsrvd1:6;
   2395 		uint32_t	surprise_down_err:1;
   2396 		uint32_t	dlp_err:1;
   2397 		uint32_t	rsrvd2:4;
   2398 #else
   2399 		uint32_t	rsrvd2:4;
   2400 		uint32_t	dlp_err:1;
   2401 		uint32_t	surprise_down_err:1;
   2402 		uint32_t	rsrvd1:6;
   2403 		uint32_t	psn_tlp:1;
   2404 		uint32_t	fc_err:1;
   2405 		uint32_t	cpl_tmout:1;
   2406 		uint32_t	cpl_abrt:1;
   2407 		uint32_t	unexp_cpl:1;
   2408 		uint32_t	rcv_ovfl:1;
   2409 		uint32_t	bad_tlp:1;
   2410 		uint32_t	ecrc_err:1;
   2411 		uint32_t	unsup_req_err:1;
   2412 		uint32_t	rsrvd:11;
   2413 #endif
   2414 	} bits;
   2415 } unc_err_svrty_t;
   2416 
   2417 
   2418 /*
   2419  * Register: CorrErrStat
   2420  * Correctable Error Status
   2421  * Description: Correctable Error Status
   2422  * Fields:
   2423  *     Advisory Non-Fatal Error Introduced in PCIe 1.1 specification.
   2424  *     Reply Timer Timeout
   2425  *     Replay Number Rollover
   2426  *     Bad DLLP
   2427  *     Bad TLP
   2428  *     Receive Error
   2429  */
   2430 typedef union {
   2431 	uint32_t value;
   2432 	struct {
   2433 #if defined(_BIG_ENDIAN)
   2434 		uint32_t	rsrvd:18;
   2435 		uint32_t	adv_nf_err:1;
   2436 		uint32_t	rply_tmr_tmout:1;
   2437 		uint32_t	rsrvd1:3;
   2438 		uint32_t	rply_rlovr:1;
   2439 		uint32_t	bad_dllp:1;
   2440 		uint32_t	bad_tlp:1;
   2441 		uint32_t	rsrvd2:5;
   2442 		uint32_t	rcv_err:1;
   2443 #else
   2444 		uint32_t	rcv_err:1;
   2445 		uint32_t	rsrvd2:5;
   2446 		uint32_t	bad_tlp:1;
   2447 		uint32_t	bad_dllp:1;
   2448 		uint32_t	rply_rlovr:1;
   2449 		uint32_t	rsrvd1:3;
   2450 		uint32_t	rply_tmr_tmout:1;
   2451 		uint32_t	adv_nf_err:1;
   2452 		uint32_t	rsrvd:18;
   2453 #endif
   2454 	} bits;
   2455 } corr_err_stat_t;
   2456 
   2457 
   2458 /*
   2459  * Register: CorrErrMask
   2460  * Correctable Error Mask
   2461  * Description: Correctable Error Mask
   2462  * Fields:
   2463  *     Advisory Non Fatal Error Mask
   2464  *     Reply Timer Timeout
   2465  *     Replay Number Rollover
   2466  *     Bad DLLP
   2467  *     Bad TLP
   2468  *     Receive Error
   2469  */
   2470 typedef union {
   2471 	uint32_t value;
   2472 	struct {
   2473 #if defined(_BIG_ENDIAN)
   2474 		uint32_t	rsrvd:18;
   2475 		uint32_t	adv_nf_err_mask:1;
   2476 		uint32_t	rply_tmr_tmout:1;
   2477 		uint32_t	rsrvd1:3;
   2478 		uint32_t	rply_rlovr:1;
   2479 		uint32_t	bad_dllp:1;
   2480 		uint32_t	bad_tlp:1;
   2481 		uint32_t	rsrvd2:5;
   2482 		uint32_t	rcv_err:1;
   2483 #else
   2484 		uint32_t	rcv_err:1;
   2485 		uint32_t	rsrvd2:5;
   2486 		uint32_t	bad_tlp:1;
   2487 		uint32_t	bad_dllp:1;
   2488 		uint32_t	rply_rlovr:1;
   2489 		uint32_t	rsrvd1:3;
   2490 		uint32_t	rply_tmr_tmout:1;
   2491 		uint32_t	adv_nf_err_mask:1;
   2492 		uint32_t	rsrvd:18;
   2493 #endif
   2494 	} bits;
   2495 } corr_err_mask_t;
   2496 
   2497 
   2498 /*
   2499  * Register: AdvCapCtrl
   2500  * Advanced Capability and Control
   2501  * Description: Advanced Capability and Control
   2502  * Fields:
   2503  *     ECRC Check Enable
   2504  *     ECRC Check Capable
   2505  *     ECRC Generation Enable
   2506  *     ECRC Generation Capability
   2507  *     First Error Pointer
   2508  */
   2509 typedef union {
   2510 	uint32_t value;
   2511 	struct {
   2512 #if defined(_BIG_ENDIAN)
   2513 		uint32_t	rsrvd:23;
   2514 		uint32_t	ecrc_chk_en:1;
   2515 		uint32_t	ecrc_chk_cap:1;
   2516 		uint32_t	ecrc_gen_en:1;
   2517 		uint32_t	ecrc_gen_cap:1;
   2518 		uint32_t	st_err_ptr:5;
   2519 #else
   2520 		uint32_t	st_err_ptr:5;
   2521 		uint32_t	ecrc_gen_cap:1;
   2522 		uint32_t	ecrc_gen_en:1;
   2523 		uint32_t	ecrc_chk_cap:1;
   2524 		uint32_t	ecrc_chk_en:1;
   2525 		uint32_t	rsrvd:23;
   2526 #endif
   2527 	} bits;
   2528 } adv_cap_ctrl_t;
   2529 
   2530 
   2531 /*
   2532  * Register: HdrLog0
   2533  * Header Log0
   2534  * Description: Header Log0
   2535  * Fields:
   2536  *     First DW of TLP header with error
   2537  */
   2538 typedef union {
   2539 	uint32_t value;
   2540 	struct {
   2541 #if defined(_BIG_ENDIAN)
   2542 		uint32_t	data:32;
   2543 #else
   2544 		uint32_t	data:32;
   2545 #endif
   2546 	} bits;
   2547 } hdr_log0_t;
   2548 
   2549 
   2550 /*
   2551  * Register: HdrLog1
   2552  * Header Log1
   2553  * Description: Header Log1
   2554  * Fields:
   2555  *     Second DW of TLP header with error
   2556  */
   2557 typedef union {
   2558 	uint32_t value;
   2559 	struct {
   2560 #if defined(_BIG_ENDIAN)
   2561 		uint32_t	data:32;
   2562 #else
   2563 		uint32_t	data:32;
   2564 #endif
   2565 	} bits;
   2566 } hdr_log1_t;
   2567 
   2568 
   2569 /*
   2570  * Register: HdrLog2
   2571  * Header Log2
   2572  * Description: Header Log2
   2573  * Fields:
   2574  *     Third DW of TLP header with error
   2575  */
   2576 typedef union {
   2577 	uint32_t value;
   2578 	struct {
   2579 #if defined(_BIG_ENDIAN)
   2580 		uint32_t	data:32;
   2581 #else
   2582 		uint32_t	data:32;
   2583 #endif
   2584 	} bits;
   2585 } hdr_log2_t;
   2586 
   2587 
   2588 /*
   2589  * Register: HdrLog3
   2590  * Header Log3
   2591  * Description: Header Log3
   2592  * Fields:
   2593  *     Fourth DW of TLP header with error
   2594  */
   2595 typedef union {
   2596 	uint32_t value;
   2597 	struct {
   2598 #if defined(_BIG_ENDIAN)
   2599 		uint32_t	data:32;
   2600 #else
   2601 		uint32_t	data:32;
   2602 #endif
   2603 	} bits;
   2604 } hdr_log3_t;
   2605 
   2606 
   2607 /*
   2608  * Register: PipeRxTxControl
   2609  * Pipe Rx/Tx Control
   2610  *     00 : ewrap : Enable wrapback test mode 01 : padLoopback :
   2611  *     Enable Pad Serial Loopback test mode 10 : revLoopback : Enable
   2612  *     Reverse Loopback test mode 11 : efifoLoopback : Enable PCI
   2613  *     Express Slave loop back
   2614  *     100 : Clock generator test x10 : Vil/Vih test x01 : Vih/Vil
   2615  *     test x11 : No-error test. A full test of the transceiver 111 :
   2616  *     Forced-error test. A full test of the transceiver with forced
   2617  *     errors
   2618  *     1 : selects 20-bit mode 0 : selects 10-bit mode
   2619  *     1 : selects Tx 20-bit fifo mode
   2620  *     00 : 52 us (470 cycles) 01 : 53 us (720 cycles) 10 : 54 us
   2621  *     (970 cycles) 11 : 55 us (1220 cycles)
   2622  *     1 : selects 20-bit mode 0 : selects 10-bit mode
   2623  *     1 : Enable receiver reference clocks
   2624  */
   2625 typedef union {
   2626 	uint32_t value;
   2627 	struct {
   2628 #if defined(_BIG_ENDIAN)
   2629 		uint32_t	rsrvd:1;
   2630 		uint32_t	loopback:1;
   2631 		uint32_t	loopback_mode_sel:2;
   2632 		uint32_t	rsrvd1:1;
   2633 		uint32_t	en_bist:3;
   2634 		uint32_t	tdws20:1;
   2635 		uint32_t	tdenfifo:1;
   2636 		uint32_t	rxpreswin:2;
   2637 		uint32_t	rdws20:1;
   2638 		uint32_t	enstretch:1;
   2639 		uint32_t	rsrvd2:18;
   2640 #else
   2641 		uint32_t	rsrvd2:18;
   2642 		uint32_t	enstretch:1;
   2643 		uint32_t	rdws20:1;
   2644 		uint32_t	rxpreswin:2;
   2645 		uint32_t	tdenfifo:1;
   2646 		uint32_t	tdws20:1;
   2647 		uint32_t	en_bist:3;
   2648 		uint32_t	rsrvd1:1;
   2649 		uint32_t	loopback_mode_sel:2;
   2650 		uint32_t	loopback:1;
   2651 		uint32_t	rsrvd:1;
   2652 #endif
   2653 	} bits;
   2654 } pipe_rx_tx_control_t;
   2655 
   2656 
   2657 /*
   2658  * Register: PipeRxTxStatus
   2659  * Pipe Rx/Tx Status
   2660  */
   2661 typedef union {
   2662 	uint32_t value;
   2663 	struct {
   2664 #if defined(_BIG_ENDIAN)
   2665 		uint32_t	rsrvd:32;
   2666 #else
   2667 		uint32_t	rsrvd:32;
   2668 #endif
   2669 	} bits;
   2670 } pipe_rx_tx_status_t;
   2671 
   2672 
   2673 /*
   2674  * Register: PipeRxTxPwrCntl
   2675  * Pipe Rx/Tx Power Control
   2676  *     1 : power down termination trimming circuit 0 : normal
   2677  *     operation
   2678  *     Power down PECL Clock buffer 1 : when a bit is 1, power down
   2679  *     associated clock buffer cell 0 : normal operation
   2680  *     Power down Transmit PLL 1 : when a bit is 1, power down
   2681  *     associated Tx PLL circuit 0 : normal operation
   2682  *     Power down Differential O/P Clock buffer 1 : when a bit is 1,
   2683  *     power down associated differntial clock buffer that drives
   2684  *     gbtClkoutN/p 0 : normal operation
   2685  *     Power down Transmitter Analog section 1 : when a bit is 1,
   2686  *     power down analog section of the associated Transmitter and
   2687  *     the Tx buffer 0 : normal operation
   2688  *     Power down RxLOS 1 : when a bit is 1, it powers down the Rx
   2689  *     LOS circuitry for the associated serdes lanes 0 : normal
   2690  *     operation
   2691  *     Power down Receiver Analog section 1 : when a bit is 1, power
   2692  *     down analog section of the associated Receiver and the Tx
   2693  *     buffer 0 : normal operation
   2694  */
   2695 typedef union {
   2696 	uint32_t value;
   2697 	struct {
   2698 #if defined(_BIG_ENDIAN)
   2699 		uint32_t	rsrvd:1;
   2700 		uint32_t	pdrtrim:1;
   2701 		uint32_t	pdownpecl:2;
   2702 		uint32_t	pdownpll:2;
   2703 		uint32_t	pdclkout:2;
   2704 		uint32_t	pdownt:8;
   2705 		uint32_t	pdrxlos:8;
   2706 		uint32_t	pdownr:8;
   2707 #else
   2708 		uint32_t	pdownr:8;
   2709 		uint32_t	pdrxlos:8;
   2710 		uint32_t	pdownt:8;
   2711 		uint32_t	pdclkout:2;
   2712 		uint32_t	pdownpll:2;
   2713 		uint32_t	pdownpecl:2;
   2714 		uint32_t	pdrtrim:1;
   2715 		uint32_t	rsrvd:1;
   2716 #endif
   2717 	} bits;
   2718 } pipe_rx_tx_pwr_cntl_t;
   2719 
   2720 
   2721 /*
   2722  * Register: PipeRxTxParam
   2723  * Pipe Rx/Tx Parameter
   2724  *     Tx Driver Emphasis
   2725  *     Serial output Slew Rate Control
   2726  *     Tx Voltage Mux control
   2727  *     Tx Voltage Pulse control
   2728  *     Output Swing setting
   2729  *     Transmitter Clock generator pole adjust
   2730  *     Transmitter Clock generator zero adjust
   2731  *     Receiver Clock generator pole adjust
   2732  *     Receiver Clock generator zero adjust
   2733  *     Bias Control for factory testing and debugging
   2734  *     Receiver LOS Threshold adjustment. This value is determined by
   2735  *     LSI.
   2736  *     Receiver Input Equalizer control
   2737  */
   2738 typedef union {
   2739 	uint32_t value;
   2740 	struct {
   2741 #if defined(_BIG_ENDIAN)
   2742 		uint32_t	rsrvd:1;
   2743 		uint32_t	emph:3;
   2744 		uint32_t	rsrvd1:1;
   2745 		uint32_t	risefall:3;
   2746 		uint32_t	vmuxlo:2;
   2747 		uint32_t	vpulselo:2;
   2748 		uint32_t	vtxlo:4;
   2749 		uint32_t	tp:2;
   2750 		uint32_t	tz:2;
   2751 		uint32_t	rp:2;
   2752 		uint32_t	rz:2;
   2753 		uint32_t	biascntl:1;
   2754 		uint32_t	losadj:3;
   2755 		uint32_t	rxeq:4;
   2756 #else
   2757 		uint32_t	rxeq:4;
   2758 		uint32_t	losadj:3;
   2759 		uint32_t	biascntl:1;
   2760 		uint32_t	rz:2;
   2761 		uint32_t	rp:2;
   2762 		uint32_t	tz:2;
   2763 		uint32_t	tp:2;
   2764 		uint32_t	vtxlo:4;
   2765 		uint32_t	vpulselo:2;
   2766 		uint32_t	vmuxlo:2;
   2767 		uint32_t	risefall:3;
   2768 		uint32_t	rsrvd1:1;
   2769 		uint32_t	emph:3;
   2770 		uint32_t	rsrvd:1;
   2771 #endif
   2772 	} bits;
   2773 } pipe_rx_tx_param_t;
   2774 
   2775 
   2776 /*
   2777  * Register: PipeRxTxClock
   2778  * Pipe Rx/Tx Clock
   2779  *     Reverse Loopback clock select 00 : gbtRbcAO 01 : gbtRbcBO 10 :
   2780  *     gbtRbcCO 11 : gbtRbcDO
   2781  *     Select Master Clock 100 : All lanes 000 : Lane A 001 : Lane B
   2782  *     010 : Lane C 011 : Lane D
   2783  *     Transmit PLL Divider control
   2784  *     Transmit Data rate control
   2785  *     Receiver PLL Frequency control
   2786  *     Bit rate control to enable bit doubling feature
   2787  *     Reset Transmitter lane
   2788  *     Reset Receiver lane
   2789  */
   2790 typedef union {
   2791 	uint32_t value;
   2792 	struct {
   2793 #if defined(_BIG_ENDIAN)
   2794 		uint32_t	rsrvd:2;
   2795 		uint32_t	revlbrefsel:2;
   2796 		uint32_t	rsrvd1:1;
   2797 		uint32_t	tdmaster:3;
   2798 		uint32_t	fbdivt:3;
   2799 		uint32_t	half_ratet:1;
   2800 		uint32_t	fbdivr:3;
   2801 		uint32_t	half_rater:1;
   2802 		uint32_t	txreset:8;
   2803 		uint32_t	rxreset:8;
   2804 #else
   2805 		uint32_t	rxreset:8;
   2806 		uint32_t	txreset:8;
   2807 		uint32_t	half_rater:1;
   2808 		uint32_t	fbdivr:3;
   2809 		uint32_t	half_ratet:1;
   2810 		uint32_t	fbdivt:3;
   2811 		uint32_t	tdmaster:3;
   2812 		uint32_t	rsrvd1:1;
   2813 		uint32_t	revlbrefsel:2;
   2814 		uint32_t	rsrvd:2;
   2815 #endif
   2816 	} bits;
   2817 } pipe_rx_tx_clock_t;
   2818 
   2819 
   2820 /*
   2821  * Register: PipeGlueCntl0
   2822  * Pipe Glue Control 0
   2823  *     Lock to Bitstream Initialization Time
   2824  *     RXLOS Test bit
   2825  *     Electrical Idle Ordered set enable
   2826  *     Enable RxLOS
   2827  *     Enable Fast resync
   2828  *     RxLOS Sample Interval
   2829  *     RxLOS threshold
   2830  */
   2831 typedef union {
   2832 	uint32_t value;
   2833 	struct {
   2834 #if defined(_BIG_ENDIAN)
   2835 		uint32_t	bitlocktime:16;
   2836 		uint32_t	rxlos_test:1;
   2837 		uint32_t	eiosenable:1;
   2838 		uint32_t	rxlosenable:1;
   2839 		uint32_t	fastresync:1;
   2840 		uint32_t	samplerate:4;
   2841 		uint32_t	thresholdcount:8;
   2842 #else
   2843 		uint32_t	thresholdcount:8;
   2844 		uint32_t	samplerate:4;
   2845 		uint32_t	fastresync:1;
   2846 		uint32_t	rxlosenable:1;
   2847 		uint32_t	eiosenable:1;
   2848 		uint32_t	rxlos_test:1;
   2849 		uint32_t	bitlocktime:16;
   2850 #endif
   2851 	} bits;
   2852 } pipe_glue_cntl0_t;
   2853 
   2854 
   2855 /*
   2856  * Register: PipeGlueCntl1
   2857  * Pipe Glue Control 1
   2858  *     Receiver Trim Resistance Configuration
   2859  *     Transmitter Trim Resistance Configuration
   2860  *     Auto Trim Enable
   2861  *     50 Ohm Termination Enable
   2862  *     Customer select for reference clock frequency
   2863  *     EFIFO Same clock select
   2864  *     EFIFO start depth
   2865  *     Lock to refclk initialization time
   2866  */
   2867 typedef union {
   2868 	uint32_t value;
   2869 	struct {
   2870 #if defined(_BIG_ENDIAN)
   2871 		uint32_t	termrcfg:2;
   2872 		uint32_t	termtcfg:2;
   2873 		uint32_t	rtrimen:1;
   2874 		uint32_t	ref50:1;
   2875 		uint32_t	freq_sel:1;
   2876 		uint32_t	same_sel:1;
   2877 		uint32_t	rsrvd:1;
   2878 		uint32_t	start_efifo:3;
   2879 		uint32_t	rsrvd1:2;
   2880 		uint32_t	inittime:18;
   2881 #else
   2882 		uint32_t	inittime:18;
   2883 		uint32_t	rsrvd1:2;
   2884 		uint32_t	start_efifo:3;
   2885 		uint32_t	rsrvd:1;
   2886 		uint32_t	same_sel:1;
   2887 		uint32_t	freq_sel:1;
   2888 		uint32_t	ref50:1;
   2889 		uint32_t	rtrimen:1;
   2890 		uint32_t	termtcfg:2;
   2891 		uint32_t	termrcfg:2;
   2892 #endif
   2893 	} bits;
   2894 } pipe_glue_cntl1_t;
   2895 
   2896 
   2897 /*
   2898  * Register: HcrReg
   2899  * HCR Registers
   2900  * Description: Hydra Specific Configuration Registers for use by
   2901  * software. These registers are loaded with the SPROM contents at
   2902  * power on. A maximum of 128 DWords has been assigned for s/w to
   2903  * use. This space generally stores the following informations : MAC
   2904  * Address Number of MAC addresses MAC Phy Type Other data fields are
   2905  * upto the software to use.
   2906  *
   2907  * Fields:
   2908  *     Hydra specific configuration controlled by software
   2909  */
   2910 typedef union {
   2911 	uint32_t value;
   2912 	struct {
   2913 #if defined(_BIG_ENDIAN)
   2914 		uint32_t	hcr_val:32;
   2915 #else
   2916 		uint32_t	hcr_val:32;
   2917 #endif
   2918 	} bits;
   2919 } hcr_reg_t;
   2920 
   2921 
   2922 /*
   2923  * Register: BlockReset
   2924  * Block Reset
   2925  * Description: Soft resets to modules. Blade domain modules are
   2926  * reset by setting the corresponding block reset to 1. Shared domain
   2927  * resets are sent to SPI for processing and corresponding action by
   2928  * SPI. Shared domains are reset only if all the blades have
   2929  * requested a reset for that block. Below is an example scenario :
   2930  * s/w initiates the reset by writing '1' to the dpmRst bit dpmRst
   2931  * bit remains '1' until dpmRstStat is detected to be 1. Once
   2932  * dpmRstStat is detected to be 1, even if s/w writes 1 to this bit
   2933  * again no new reset will be initiated to the shared domain, ie,
   2934  * DPM. dpmRstStat is driven by external i/f (shared domain status
   2935  * provided by SPI) dpmRstStat bit will show '1' as long as the input
   2936  * stays at 1 or until s/w reads the status and is cleared only after
   2937  * s/w reads it and if dpmRstStat is 0 by then.
   2938  * If Host wants to reset entire Hydra it should do so through the
   2939  * mailbox. In this case, the message interprettation is upto the
   2940  * software. Writing a '1' to any of these bits generates a single
   2941  * pulse to the SP module which then controls the reset of the
   2942  * respective block.
   2943  *
   2944  * Fields:
   2945  *     1 : indicates that an active reset has been applied to the SP
   2946  *     based on the request from all of the blades. Clears on Read
   2947  *     provided the reset to SP has been deasserted by then by SPI.
   2948  *     Setting to 1 allows this blade to request Service Processor
   2949  *     (Shared) reset. However, SP reset can only occur if all blades
   2950  *     agree. The success of reset request is indicated by spRstStat
   2951  *     = 1 which is wired-AND of request from all the blades. Current
   2952  *     request can be removed by writing a '0' to this bit. This bit
   2953  *     clears automatically on detecting spRstStat = 1.
   2954  *     Enable blade to service processor (Shared) reset voter
   2955  *     registration = 1, disabled = 0
   2956  *     Issue power reset to the EP Core Clears to 0, writing 0 has no
   2957  *     effect.
   2958  *     Issue core reset to the EP Core Clears to 0, writing 0 has no
   2959  *     effect.
   2960  *     Issue system reset (sysPor) to the PIPE Core This issues reset
   2961  *     to the EP core, PCIe domains of Tdc, Rdc, and CIP. This shuts
   2962  *     down the PCIe clock until Pipe core comes out of reset. The
   2963  *     status of the Pipe core can be read by reading out the
   2964  *     cipLinkStat register's pipe core status and pcie reset status
   2965  *     bits. Clears to 0, writing 0 has no effect.
   2966  *     1 : indicates that an active reset has been applied to the
   2967  *     NMAC based on the request from all of the blades. Clears on
   2968  *     Read provided the reset to NMAC has been deasserted by then by
   2969  *     SPI.
   2970  *     1 : indicates that an active reset has been applied to the TDP
   2971  *     based on the request from all of the blades. Clears on Read
   2972  *     provided the reset to TDP has been deasserted by then by SPI.
   2973  *     1 : indicates that an active reset has been applied to the DPM
   2974  *     based on the request from all of the blades. Clears on Read
   2975  *     provided the reset to DPM has been deasserted by then by SPI.
   2976  *     This bit is effective only if sharedVoterEn (bit 24 of this
   2977  *     reg) has been enabled. Writing '1' sends a request to SP to
   2978  *     reset NMAC if sharedVoterEn=1. Intended for backdoor access.
   2979  *     The success of reset request is indicated by nmacRstStat = 1
   2980  *     which is wired-AND of request from all the blades. This also
   2981  *     means that the reset request is successful only if all the
   2982  *     blades requested for reset of this block. Current request can
   2983  *     be removed by writing a '0' to this bit. This bit clears
   2984  *     automatically on detecting nmacRstStat = 1.
   2985  *     This bit is effective only if sharedVoterEn (bit 24 of this
   2986  *     reg) has been enabled. Writing '1' sends a request to SP to
   2987  *     reset TDP if sharedVoterEn=1. Intended for backdoor access.
   2988  *     Intended for backdoor access. The success of reset request is
   2989  *     indicated by tdpRstStat = 1 which is wired-AND of request from
   2990  *     all the blades. This also means that the reset request is
   2991  *     successful only if all the blades requested for reset of this
   2992  *     block. Current request can be removed by writing a '0' to this
   2993  *     bit. This bit clears automatically on detecting tdpRstStat =
   2994  *     1.
   2995  *     This bit is effective only if sharedVoterEn (bit 24 of this
   2996  *     reg) has been enabled. Writing '1' sends a request to SP to
   2997  *     reset DPM if sharedVoterEn=1. Intended for backdoor access.
   2998  *     Intended for backdoor access. The success of reset request is
   2999  *     indicated by dpmRstStat = 1 which is wired-AND of request from
   3000  *     all the blades. This also means that the reset request is
   3001  *     successful only if all the blades requested for reset of this
   3002  *     block. Current request can be removed by writing a '0' to this
   3003  *     bit. This bit clears automatically on detecting dpmRstStat =
   3004  *     1.
   3005  *     Setting to 1 generates tdcCoreReset and tdcPcieReset to the
   3006  *     TDC block. The reset will stay asserted for atleast 4 clock
   3007  *     cycles. Clears to 0, writing 0 has no effect.
   3008  *     Setting to 1 generates rdcCoreReset and rdcPcieReset to the
   3009  *     RDC block. The reset will stay asserted for atleast 4 clock
   3010  *     cycles. Clears to 0, writing 0 has no effect.
   3011  *     Setting to 1 generates reset to the PFC block. The reset will
   3012  *     stay asserted for atleast 4 clock cycles. Clears to 0, writing
   3013  *     0 has no effect.
   3014  *     Setting to 1 generates reset to the VMAC block. The reset will
   3015  *     stay asserted for atleast 4 clock cycles. Clears to 0, writing
   3016  *     0 has no effect.
   3017  */
   3018 typedef union {
   3019 	uint32_t value;
   3020 	struct {
   3021 #if defined(_BIG_ENDIAN)
   3022 		uint32_t	rsrvd:13;
   3023 		uint32_t	sp_rst_stat:1;
   3024 		uint32_t	sp_rst:1;
   3025 		uint32_t	shared_voter_en:1;
   3026 		uint32_t	epcore_pwr_rst:1;
   3027 		uint32_t	epcore_core_rst:1;
   3028 		uint32_t	pipe_sys_rst:1;
   3029 		uint32_t	nmac_rst_stat:1;
   3030 		uint32_t	tdp_rst_stat:1;
   3031 		uint32_t	dpm_rst_stat:1;
   3032 		uint32_t	rsrvd1:1;
   3033 		uint32_t	nmac_rst:1;
   3034 		uint32_t	tdp_rst:1;
   3035 		uint32_t	dpm_rst:1;
   3036 		uint32_t	rsrvd2:1;
   3037 		uint32_t	tdc_rst:1;
   3038 		uint32_t	rdc_rst:1;
   3039 		uint32_t	pfc_rst:1;
   3040 		uint32_t	vmac_rst:1;
   3041 		uint32_t	rsrvd3:1;
   3042 #else
   3043 		uint32_t	rsrvd3:1;
   3044 		uint32_t	vmac_rst:1;
   3045 		uint32_t	pfc_rst:1;
   3046 		uint32_t	rdc_rst:1;
   3047 		uint32_t	tdc_rst:1;
   3048 		uint32_t	rsrvd2:1;
   3049 		uint32_t	dpm_rst:1;
   3050 		uint32_t	tdp_rst:1;
   3051 		uint32_t	nmac_rst:1;
   3052 		uint32_t	rsrvd1:1;
   3053 		uint32_t	dpm_rst_stat:1;
   3054 		uint32_t	tdp_rst_stat:1;
   3055 		uint32_t	nmac_rst_stat:1;
   3056 		uint32_t	pipe_sys_rst:1;
   3057 		uint32_t	epcore_core_rst:1;
   3058 		uint32_t	epcore_pwr_rst:1;
   3059 		uint32_t	shared_voter_en:1;
   3060 		uint32_t	sp_rst:1;
   3061 		uint32_t	sp_rst_stat:1;
   3062 		uint32_t	rsrvd:13;
   3063 #endif
   3064 	} bits;
   3065 } block_reset_t;
   3066 
   3067 
   3068 /*
   3069  * Register: TimeoutCfg
   3070  * PIO Timeout Configuration
   3071  * Description: PIO Timeout Configuration register to control wait
   3072  * time for a PIO access to complete. The timer resolution is in 250
   3073  * MHz clock.
   3074  * Fields:
   3075  *     Programmable timeout counter value for PIO clients who did not
   3076  *     ack a transaction in time. Minimum value should be 64.
   3077  *     Timeout enable for PIO access to clients. 1 = enable.
   3078  */
   3079 typedef union {
   3080 	uint32_t value;
   3081 	struct {
   3082 #if defined(_BIG_ENDIAN)
   3083 		uint32_t	rsrvd:21;
   3084 		uint32_t	tmout_cnt:10;
   3085 		uint32_t	tmout_en:1;
   3086 #else
   3087 		uint32_t	tmout_en:1;
   3088 		uint32_t	tmout_cnt:10;
   3089 		uint32_t	rsrvd:21;
   3090 #endif
   3091 	} bits;
   3092 } timeout_cfg_t;
   3093 
   3094 
   3095 /*
   3096  * Register: HeartCfg
   3097  * PIO Heartbeat Config
   3098  * Description: PIO Blade presence indication : Heartbeat
   3099  * configuration The timer resolution is in 250 MHz clock.
   3100  * Fields:
   3101  *     Heartbeat countdown 250Mhz clock divider which serves as
   3102  *     resolution for the heartTimer.
   3103  *     Heartbeat countdown enable
   3104  */
   3105 typedef union {
   3106 	uint32_t value;
   3107 	struct {
   3108 #if defined(_BIG_ENDIAN)
   3109 		uint32_t	divider:28;
   3110 		uint32_t	rsrvd:3;
   3111 		uint32_t	en:1;
   3112 #else
   3113 		uint32_t	en:1;
   3114 		uint32_t	rsrvd:3;
   3115 		uint32_t	divider:28;
   3116 #endif
   3117 	} bits;
   3118 } heart_cfg_t;
   3119 
   3120 
   3121 /*
   3122  * Register: HeartTimer
   3123  * PIO Heartbeat Timer
   3124  * Description: PIO Blade presence indication : Heartbeat timer The
   3125  * timer resolution is in 250 MHz clock.
   3126  * Fields:
   3127  *     Number of heartCfg.divider ticks of the 250Mhz clock before
   3128  *     blade presence expires. This register decrements for every
   3129  *     heartCfg.divider number of 250MHz clock cycles. It expires to
   3130  *     0 and so must be written periodically to reset the timer back
   3131  *     to the required value. This counter does not have any effect
   3132  *     on CIP functionality.
   3133  */
   3134 typedef union {
   3135 	uint32_t value;
   3136 	struct {
   3137 #if defined(_BIG_ENDIAN)
   3138 		uint32_t	timer:32;
   3139 #else
   3140 		uint32_t	timer:32;
   3141 #endif
   3142 	} bits;
   3143 } heart_timer_t;
   3144 
   3145 
   3146 /*
   3147  * Register: CipGpCtrl
   3148  * CIP General Purpose Control Register
   3149  */
   3150 typedef union {
   3151 	uint32_t value;
   3152 	struct {
   3153 #if defined(_BIG_ENDIAN)
   3154 		uint32_t	rsrvd:30;
   3155 		uint32_t	dma_override_relaxord:1;
   3156 		uint32_t	dma_override_nosnoop:1;
   3157 #else
   3158 		uint32_t	dma_override_nosnoop:1;
   3159 		uint32_t	dma_override_relaxord:1;
   3160 		uint32_t	rsrvd:30;
   3161 #endif
   3162 	} bits;
   3163 } cip_gp_ctrl_t;
   3164 
   3165 
   3166 /*
   3167  * Register: CipStatus
   3168  * CIP Status
   3169  * Description: This register returns CIP block's current logic
   3170  * status
   3171  * Fields:
   3172  *     Current state of the cipEpc state machine 00 : epIdle ( wait
   3173  *     for EEPROM request from SP or Host ) 01 : waitAck0 ( wait for
   3174  *     ack from EEPROM for the first 16 bit read of the DW access )
   3175  *     11 : waitAck1 ( wait for ack from EEPROM for the second 16 bit
   3176  *     read of the DW access ) 10 : UNDEFINED ( Undefined/Unused
   3177  *     state; EPC is never expected to be in this state )
   3178  *     Current state of the cipSpc state machine 000 : spReset ( wait
   3179  *     for Power-On SPROM download to start) 001 : getAddr ( Get
   3180  *     CfgReg Address ) 010 : getData ( Get CfgReg Data ) 011 :
   3181  *     ignoreData ( Address phase had an error, so ignore the Data
   3182  *     coming in ) 100 : idleCyc ( Idle cycle following an AHB
   3183  *     Address phase ) 101 : waitAck0 ( Wait for ack from EP Core
   3184  *     during SPROM Download ) 110 : waitAck1 ( Wait for ack from EP
   3185  *     Core during register read/write ) 111 : NORMAL ( SPROM
   3186  *     Download/Register read/write access completed and wait for
   3187  *     SP/Host initiated PCI/AHB/HCR read/write )
   3188  *     PCI Bus Number as reported by EP core
   3189  *     PCI Bus Device Number as reported by EP core
   3190  *     1: current csr access in progress is Local CIP csr access
   3191  *     1: current csr access in progress is Blade Domain csr access
   3192  *     1: a 64 bit blade domain access is in progress as two 32 bit
   3193  *     accesses
   3194  *     1: indicates config values were downloaded from SPROM
   3195  *     1: indicates non-zero number of HCR config values downloaded
   3196  *     from SPROM
   3197  *     1: indicates non-zero number of PCI config values downloaded
   3198  *     from SPROM
   3199  *     1: indicates non-zero number of Pipe config values downloaded
   3200  *     from SPROM
   3201  */
   3202 typedef union {
   3203 	uint32_t value;
   3204 	struct {
   3205 #if defined(_BIG_ENDIAN)
   3206 		uint32_t	rsrvd:7;
   3207 		uint32_t	cip_epc_sm:2;
   3208 		uint32_t	cip_spc_sm:3;
   3209 		uint32_t	pbus_num:8;
   3210 		uint32_t	pbus_dev_num:5;
   3211 		uint32_t	loc_csr_access:1;
   3212 		uint32_t	bd_csr_access:1;
   3213 		uint32_t	d64_in_progress:1;
   3214 		uint32_t	spc_dnld_done:1;
   3215 		uint32_t	hcr_nz_cfg:1;
   3216 		uint32_t	pci_nz_cfg:1;
   3217 		uint32_t	pipe_nz_cfg:1;
   3218 #else
   3219 		uint32_t	pipe_nz_cfg:1;
   3220 		uint32_t	pci_nz_cfg:1;
   3221 		uint32_t	hcr_nz_cfg:1;
   3222 		uint32_t	spc_dnld_done:1;
   3223 		uint32_t	d64_in_progress:1;
   3224 		uint32_t	bd_csr_access:1;
   3225 		uint32_t	loc_csr_access:1;
   3226 		uint32_t	pbus_dev_num:5;
   3227 		uint32_t	pbus_num:8;
   3228 		uint32_t	cip_spc_sm:3;
   3229 		uint32_t	cip_epc_sm:2;
   3230 		uint32_t	rsrvd:7;
   3231 #endif
   3232 	} bits;
   3233 } cip_status_t;
   3234 
   3235 
   3236 /*
   3237  * Register: CipLinkStat
   3238  * Link Status Register
   3239  * Description: This register returns the Link status
   3240  * Fields:
   3241  *     NMAC XPCS-2 Link Status
   3242  *     NMAC XPCS-1 Link Status
   3243  *     NMAC XPCS-0 Link Status
   3244  *     '1' indicates that pipe core went down suddenly when its reset
   3245  *     sources are at deactivated level. When this happens, the PCIe
   3246  *     domain logics are reset including the EP core, TDC/RDC PCIe
   3247  *     domains. All these logics, EP Core, and the pipe core are held
   3248  *     at reset until s/w writes 1 to this bit to clear status which
   3249  *     will also bring the PCIe domain out of reset
   3250  *     pipe core clock & reset status 1: core is up & running, ie,
   3251  *     PIPE core is out of reset and clock is ON
   3252  *     PCIe domain reset status 1: PCIe domain logics including EP
   3253  *     core are out of reset; This also implies that PCIe clock is up
   3254  *     and running
   3255  *     EP Core XDM Link State
   3256  *     EP Core RDM Link State
   3257  *     EP Core LTSSM State
   3258  */
   3259 typedef union {
   3260 	uint32_t value;
   3261 	struct {
   3262 #if defined(_BIG_ENDIAN)
   3263 		uint32_t	rsrvd:13;
   3264 		uint32_t	xpcs2_link_up:1;
   3265 		uint32_t	xpcs1_link_up:1;
   3266 		uint32_t	xpcs0_link_up:1;
   3267 		uint32_t	rsrvd1:6;
   3268 		uint32_t	surprise_pipedn:1;
   3269 		uint32_t	pipe_core_stable:1;
   3270 		uint32_t	pcie_domain_stable:1;
   3271 		uint32_t	xmlh_link_up:1;
   3272 		uint32_t	rdlh_link_up:1;
   3273 		uint32_t	xmlh_ltssm_state:5;
   3274 #else
   3275 		uint32_t	xmlh_ltssm_state:5;
   3276 		uint32_t	rdlh_link_up:1;
   3277 		uint32_t	xmlh_link_up:1;
   3278 		uint32_t	pcie_domain_stable:1;
   3279 		uint32_t	pipe_core_stable:1;
   3280 		uint32_t	surprise_pipedn:1;
   3281 		uint32_t	rsrvd1:6;
   3282 		uint32_t	xpcs0_link_up:1;
   3283 		uint32_t	xpcs1_link_up:1;
   3284 		uint32_t	xpcs2_link_up:1;
   3285 		uint32_t	rsrvd:13;
   3286 #endif
   3287 	} bits;
   3288 } cip_link_stat_t;
   3289 
   3290 
   3291 /*
   3292  * Register: EpcStat
   3293  * EEPROM PIO Status
   3294  * Description: EEPROM PIO Status The Host may initiate access to the
   3295  * EEPROM either thru this register or directly by TRGT1 interfaces
   3296  * using ROM BAR access. Note that since the EEPROM can be accessed
   3297  * by either Host or SP, access must be granted to the PEU using the
   3298  * SPI PROM Control Register eepromPeuEn bit for proper operation.
   3299  * All EEPROM accesses initiated from either the Host or SP are
   3300  * always acknowledged. If a Host access is not acknowledged, then
   3301  * check the SPI PROM Control Register eepromPeuEn bit to make sure
   3302  * the PEU to EEPROM access has been enabled. Meanwhile, Host read
   3303  * and write accesses through the TRGT1 interface may be held up
   3304  * waiting for the acknowledgement. Thus, in order to recover from
   3305  * any faulty/stuck condition due to the blocked EEPROM accesses, the
   3306  * SP should configure the epcGotoNormal bit in the epcStat register.
   3307  * When Host accesses are stuck, only the SP can write into this bit
   3308  * to recover from this condition.
   3309  * The EEPROM is 1M x 16 bits or 2M bytes. The read address in bits
   3310  * [22:2] is byte address. The EEPROM access can only be DW access.
   3311  * While accessing through these registers, the lower 2 bits of the
   3312  * specified address is ignored resulting in a DW access to the
   3313  * EEPROM controller. While accessing through the ROM BAR range, only
   3314  * DW accesses are accepted and all other accesses will result in
   3315  * error status returned to the host.
   3316  * The read will initiate two reads to the EPC and the accumulated
   3317  * 32 bit data is returned to the Host either via the Client2 bus or
   3318  * in the epcData register depending on the cause of the transaction.
   3319  * This means, a read addr=0,1,2,3 will return data from EPC
   3320  * locations 0 & 1 which are 16 bits each, and a read to addr=4,5,6,7
   3321  * will return data from EPC locations 2,3 which are 16 bits each.
   3322  * Some examples for the address translation : 1) when Host gives
   3323  * address 0x0000, it means to get bytes 0,1,2, and 3 from the
   3324  * EEPROM. These bytes are stored at locations 0x0000 (bytes 0,1) and
   3325  * 0x0001 (bytes 2,3) in EEPROM. Hence PEU will present address
   3326  * 0x0000 followed by 0x0001 to the EEPROM.
   3327  * 2) when Host gives address 0x0004, it means to get bytes 4,5,6,
   3328  * and 7 from the EEPROM. These bytes are stored at locations 0x0002
   3329  * (bytes 4,5) and 0x0003 (bytes 6,7) in EEPROM. Hence PEU will
   3330  * present address 0x0002 followed by 0x0003 to the EEPROM.
   3331  * etc ..
   3332  *
   3333  * Fields:
   3334  *     Force the EPC state machine to go to epIdle state. This bit is
   3335  *     used to force the EPC to skip the reading of the EEPROM and
   3336  *     goto the epIdle state which is normal state for EPC. The bit
   3337  *     is auto-cleared after switching to the epIdle state. Both SP
   3338  *     and HOST can write into this bit. However care must be taken
   3339  *     writing '1' into this bit since setting this bit will flush
   3340  *     out any pending EEPROM access request from Host. Hence, this
   3341  *     bit should be used only if the EPC State machine (cipEpcSm
   3342  *     bits in cipStatus register) is stuck at a non-zero state.
   3343  *     EEPROM Byte Address for read operation This field can be
   3344  *     updated only if there is no pending EEPROM read access.
   3345  *     Software should poll bit 0 of this register (epcRdInit) to
   3346  *     make sure that it is '0' before writing into this. If polled
   3347  *     epcRdInit value is '1', then write to epcAddr field is
   3348  *     ignored. This is to safe-guard the epcAddr value which is
   3349  *     being read out the EEPROM.
   3350  *     Read access completion status; set to '0' for successful
   3351  *     completion by EPC set to '1' to indicate read access error
   3352  *     from EPC
   3353  * Note: Currently, the EEPROM controller in Hydra does not
   3354  *     return any error condition, ie, epcPeuErr = 1'b0 always. And
   3355  *     so, for the PIO read access by the Host, the epcStat register
   3356  *     in PEU will always show that the access was successful. For
   3357  *     EEPROM read initiated through the ROM BAR by the Host, CIP
   3358  *     will always return Successful Completion status to the Host.
   3359  *     Any error situation is reported only in the Status Register
   3360  *     within the EEPROM device. For access information about this
   3361  *     register, please refer to the EEPROM/SPI PRMs.
   3362  *
   3363  *     Read Initiate. SW writes 1 to this bit to initiate a EEPROM
   3364  *     read. Clears to 0 on updating the epcData reg. Writing 0 has
   3365  *     no effect.
   3366  */
   3367 typedef union {
   3368 	uint32_t value;
   3369 	struct {
   3370 #if defined(_BIG_ENDIAN)
   3371 		uint32_t	epc_goto_normal:1;
   3372 		uint32_t	rsrvd:8;
   3373 		uint32_t	epc_addr:21;
   3374 		uint32_t	epc_cpl_stat:1;
   3375 		uint32_t	epc_rd_init:1;
   3376 #else
   3377 		uint32_t	epc_rd_init:1;
   3378 		uint32_t	epc_cpl_stat:1;
   3379 		uint32_t	epc_addr:21;
   3380 		uint32_t	rsrvd:8;
   3381 		uint32_t	epc_goto_normal:1;
   3382 #endif
   3383 	} bits;
   3384 } epc_stat_t;
   3385 
   3386 
   3387 /*
   3388  * Register: EpcData
   3389  * EEPROM PIO Data
   3390  * Description: EEPROM PIO Data The data returned from EEPROM
   3391  * controller for the EEPROM access initiated by the EEPROM PIO
   3392  * Status register is returned in this register.
   3393  * Fields:
   3394  *     EEPROM Read Data; valid when rdInit transitioned from 1 to 0.
   3395  */
   3396 typedef union {
   3397 	uint32_t value;
   3398 	struct {
   3399 #if defined(_BIG_ENDIAN)
   3400 		uint32_t	eeprom_data:32;
   3401 #else
   3402 		uint32_t	eeprom_data:32;
   3403 #endif
   3404 	} bits;
   3405 } epc_data_t;
   3406 
   3407 
   3408 /*
   3409  * Register: SpcStat
   3410  * SPROM PIO Status
   3411  * Description: SPROM PIO Status
   3412  * Fields:
   3413  *     Force the SPC state machine to go to NORMAL state. This bit is
   3414  *     used to force the SPC to skip the downloading of the SPROM
   3415  *     contents into the EP/Pipe/Hcr registers. Setting this bit will
   3416  *     make CIP to drop any pending requests to the DBI/AHB buses.
   3417  *     The bit is auto-cleared after switching to the Normal state.
   3418  *     This bit can not be used to terminate a pio access to
   3419  *     PCI/PIPE/HCR registers. If a pio access to these registers is
   3420  *     not responded to, by the respective block, then the pio access
   3421  *     will automatically timeout. The timeout value is specified by
   3422  *     the timeoutCfg:tmoutCnt value
   3423  */
   3424 typedef union {
   3425 	uint32_t value;
   3426 	struct {
   3427 #if defined(_BIG_ENDIAN)
   3428 		uint32_t	rsrvd:29;
   3429 		uint32_t	spc_goto_normal:1;
   3430 		uint32_t	rsrvd1:2;
   3431 #else
   3432 		uint32_t	rsrvd1:2;
   3433 		uint32_t	spc_goto_normal:1;
   3434 		uint32_t	rsrvd:29;
   3435 #endif
   3436 	} bits;
   3437 } spc_stat_t;
   3438 
   3439 
   3440 /*
   3441  * Register: Host2spiIndaccAddr
   3442  * HOST -> SPI Shared Domain Read Address
   3443  * Description: Read address set by Host for indirect access to
   3444  * shared domain address space The decoding of the address is as
   3445  * follows: [23:20] - block select [19:0] - register offset from base
   3446  * address of block
   3447  * Fields:
   3448  *     Address in Shared domain
   3449  */
   3450 typedef union {
   3451 	uint32_t value;
   3452 	struct {
   3453 #if defined(_BIG_ENDIAN)
   3454 		uint32_t	rsrvd:8;
   3455 		uint32_t	addr:24;
   3456 #else
   3457 		uint32_t	addr:24;
   3458 		uint32_t	rsrvd:8;
   3459 #endif
   3460 	} bits;
   3461 } host2spi_indacc_addr_t;
   3462 
   3463 
   3464 /*
   3465  * Register: Host2spiIndaccCtrl
   3466  * HOST -> SPI Shared Domain Read Control
   3467  * Description: Control word set by Host for indirect access to the
   3468  * shared domain address space Writing to this register initiates the
   3469  * indirect access to the shared domain.
   3470  * The Host may read or write to a shared domain region data as
   3471  * below : Host updates the host2spiIndaccAddr register with address
   3472  * of the shared domain reg. For writes, Host updates the
   3473  * host2spiIndaccData register with write data Host then writes to
   3474  * bit 0 of host2spiIndaccCtrl register to '1' or '0' to initiate the
   3475  * read or write access; 1 : write command, 0 : read command Host
   3476  * should then poll bit 1 of host2spiIndaccCtrl register for the
   3477  * access status. 1 : access is done, 0 : access is in progress
   3478  * (busy) Host should then check bit 2 of host2spiIndaccCtrl register
   3479  * to know if the command was successful; 1 : access error, 0 :
   3480  * access successful For reads, Host then reads the
   3481  * host2spiIndaccData register for the read data.
   3482  * This register can be written into only when there is no pending
   3483  * access, ie, indaccCtrl.cplStat=1. Writes when indaccCtrl.cplStat=0
   3484  * is ignored.
   3485  *
   3486  * Fields:
   3487  *     command completion status; 0 : successful completion of
   3488  *     command by SPI 1 : access error from SPI
   3489  *     command progress status; 0 : access is in progress (busy) 1 :
   3490  *     access is done
   3491  *     1 : Initiate a write access 0 : Initiate a read access
   3492  */
   3493 typedef union {
   3494 	uint32_t value;
   3495 	struct {
   3496 #if defined(_BIG_ENDIAN)
   3497 		uint32_t	rsrvd:29;
   3498 		uint32_t	err_stat:1;
   3499 		uint32_t	cpl_stat:1;
   3500 		uint32_t	rd_wr_cmd:1;
   3501 #else
   3502 		uint32_t	rd_wr_cmd:1;
   3503 		uint32_t	cpl_stat:1;
   3504 		uint32_t	err_stat:1;
   3505 		uint32_t	rsrvd:29;
   3506 #endif
   3507 	} bits;
   3508 } host2spi_indacc_ctrl_t;
   3509 
   3510 
   3511 /*
   3512  * Register: Host2spiIndaccData
   3513  * HOST -> SPI Shared Domain Read/Write Data
   3514  * Description: For indirect read access by the Host, this register
   3515  * returns the data returned from the Shared Domain For indirect
   3516  * write access by the Host, the host should update this register
   3517  * with the writeData for the Shared Domain, before writing to the
   3518  * host2spiIndaccCtrl register to initiate the access.
   3519  * This register can be written into only when there is no pending
   3520  * access, ie, indaccCtrl.cplStat=1. Writes when indaccCtrl.cplStat=0
   3521  * is ignored.
   3522  *
   3523  * Fields:
   3524  *     Shared domain read/write data
   3525  */
   3526 typedef union {
   3527 	uint32_t value;
   3528 	struct {
   3529 #if defined(_BIG_ENDIAN)
   3530 		uint32_t	data:32;
   3531 #else
   3532 		uint32_t	data:32;
   3533 #endif
   3534 	} bits;
   3535 } host2spi_indacc_data_t;
   3536 
   3537 
   3538 /*
   3539  * Register: BtCtrl0
   3540  * Mailbox Control & Access status 0
   3541  * Description: Host (blade) <-> SP Block Transfer mailbox control
   3542  * and access status register 0.
   3543  * Host is allowed 8 bits read/write access to this register ; To do
   3544  * the same, it should provide the btCtrl0 address, data on
   3545  * hostDataBus[7:0], and assert hostBen[0], SPI is allowed 8 bits
   3546  * read/write access to this register ; To do the same, it should
   3547  * provide the btCtrl0 address, data on spiDataBus[7:0], and no need
   3548  * of spiBen
   3549  *
   3550  * Fields:
   3551  *     The SP sets/clears this bit to indicate if it is busy and can
   3552  *     not accept any other request; write 1 to toggle the bit; Read
   3553  *     Only by Host.
   3554  *     The Host sets/clears this bit to indicate if it is busy and
   3555  *     can not accept any other request; Read Only by SP.
   3556  *     Reserved for definition by platform. Typical usage could be
   3557  *     "heartbeat" mechanism from/to the host. The host sets OEM0 to
   3558  *     interrupt the SP and then polls it to be cleared by SP
   3559  *     The SP sets this bit when it has detected and queued an SMS
   3560  *     message in the SP2HOST buffer that must be reported to the
   3561  *     HOST. The Host clears this bit by writing a 1 to it. This bit
   3562  *     may generate an intrpt to Host depending on the sp2hostIntEn
   3563  *     bit. Writing 0 has no effect
   3564  *     The SP writes 1 to this bit after it has finished writing a
   3565  *     message into the SP2HOST buffer. The Host clears this bit by
   3566  *     writing 1 to it after it has set the hostBusy bit This bit may
   3567  *     generate an intrpt to Host depending on the sp2hostIntEn bit.
   3568  *     Writing 0 has no effect
   3569  *     The Host writes 1 to this bit to generate an interrupt to SP
   3570  *     after it has finished writing a message into the HOST2SP
   3571  *     buffer. The SP clears this bit by writing 1 to it after it has
   3572  *     set the spBusy bit. Writing 0 has no effect
   3573  *     The host writes 1 to clear the read pointer to the BT SP2HOST
   3574  *     buffer; the SP writes 1 to clear the read pointer to the BT
   3575  *     HOST2SP buffer. This bit is always read back as 0; writing 0
   3576  *     has no effect.
   3577  *     The host writes 1 to clear the write pointer to the BT HOST2SP
   3578  *     buffer; the SP writes 1 to clear the write pointer to the BT
   3579  *     SP2HOST buffer. This bit is always read back as 0; writing 0
   3580  *     has no effect.
   3581  */
   3582 typedef union {
   3583 	uint32_t value;
   3584 	struct {
   3585 #if defined(_BIG_ENDIAN)
   3586 		uint32_t	rsrvd:24;
   3587 		uint32_t	sp_busy:1;
   3588 		uint32_t	host_busy:1;
   3589 		uint32_t	oem0:1;
   3590 		uint32_t	sms_atn:1;
   3591 		uint32_t	sp2host_atn:1;
   3592 		uint32_t	host2sp_atn:1;
   3593 		uint32_t	clr_rd_ptr:1;
   3594 		uint32_t	clr_wr_ptr:1;
   3595 #else
   3596 		uint32_t	clr_wr_ptr:1;
   3597 		uint32_t	clr_rd_ptr:1;
   3598 		uint32_t	host2sp_atn:1;
   3599 		uint32_t	sp2host_atn:1;
   3600 		uint32_t	sms_atn:1;
   3601 		uint32_t	oem0:1;
   3602 		uint32_t	host_busy:1;
   3603 		uint32_t	sp_busy:1;
   3604 		uint32_t	rsrvd:24;
   3605 #endif
   3606 	} bits;
   3607 } bt_ctrl0_t;
   3608 
   3609 
   3610 /*
   3611  * Register: BtData0
   3612  * Mailbox Data 0
   3613  * Description: Host (blade) <-> SP mailbox data register 0.
   3614  * Host is allowed a 32 bits read/write access to this register ; To
   3615  * do the same, it should provide the btData0 address, data on
   3616  * hostDataBus[31:0], and assert hostBen[1], SPI is allowed only 8
   3617  * bits read/write access to this register ; To do the same, it
   3618  * should provide the btData0 address, data on spiDataBus[7:0], and
   3619  * no need of spiBen
   3620  * All references to the mail box control bits in this register
   3621  * refer to btCtrl0. When spBusy=0 && host2spAtn=0, data is written
   3622  * by the host and read by the SP. When hostBusy=0 && sp2hostAtn=0,
   3623  * data is written by the SP and read by the Host.
   3624  *
   3625  * Fields:
   3626  *     Bits 7:0 of message data to send to SP/HOST
   3627  */
   3628 typedef union {
   3629 	uint32_t value;
   3630 	struct {
   3631 #if defined(_BIG_ENDIAN)
   3632 		uint32_t	rsrvd:24;
   3633 		uint32_t	data:8;
   3634 #else
   3635 		uint32_t	data:8;
   3636 		uint32_t	rsrvd:24;
   3637 #endif
   3638 	} bits;
   3639 } bt_data0_t;
   3640 
   3641 
   3642 /*
   3643  * Register: BtIntmask0
   3644  * Mailbox Interrupt Mask & Status 0
   3645  * Description: Host (blade) <-> SP Block Transfer Interrupt Mask and
   3646  * Status register 0
   3647  * Host is allowed 8 bits read/write access to this register ; To do
   3648  * the same, it should provide the btIntmask0 address, data on
   3649  * hostDataBus[23:16], and assert hostBen[2], SPI is allowed 8 bits
   3650  * read only access to this register ; To do the same, it should
   3651  * provide the btIntmask0 address and no need of spiBen
   3652  * All references to the mail box control bits in this register
   3653  * refer to btCtrl0
   3654  * Fields:
   3655  *     The host writes 1 to reset the entire mailbox 0 accesses for
   3656  *     error recovery; resets both SP and HOST write and read
   3657  *     pointers. Writing 0 has no effect. This is non-sticky. Always
   3658  *     read back as 0.
   3659  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3660  *     Handler use. Generic IPMI software must write this bit as 0
   3661  *     and ignore the value on read
   3662  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3663  *     Handler use. Generic IPMI software must write this bit as 0
   3664  *     and ignore the value on read
   3665  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3666  *     Handler use. Generic IPMI software must write this bit as 0
   3667  *     and ignore the value on read
   3668  *     SP to HOST Interrupt status This bit reflects the state of the
   3669  *     intrpt line to the Host. O/S driver should write 1 to clear.
   3670  *     SP to HOST Interrupt Enable The interrupt is generated if
   3671  *     sp2hIrqEn is 1 and either sp2hostAtn or smsAtn is 1
   3672  */
   3673 typedef union {
   3674 	uint32_t value;
   3675 	struct {
   3676 #if defined(_BIG_ENDIAN)
   3677 		uint32_t	rsrvd:24;
   3678 		uint32_t	mb_master_reset:1;
   3679 		uint32_t	rsrvd1:2;
   3680 		uint32_t	oem3:1;
   3681 		uint32_t	oem2:1;
   3682 		uint32_t	oem1:1;
   3683 		uint32_t	sp2h_irq:1;
   3684 		uint32_t	sp2h_irq_en:1;
   3685 #else
   3686 		uint32_t	sp2h_irq_en:1;
   3687 		uint32_t	sp2h_irq:1;
   3688 		uint32_t	oem1:1;
   3689 		uint32_t	oem2:1;
   3690 		uint32_t	oem3:1;
   3691 		uint32_t	rsrvd1:2;
   3692 		uint32_t	mb_master_reset:1;
   3693 		uint32_t	rsrvd:24;
   3694 #endif
   3695 	} bits;
   3696 } bt_intmask0_t;
   3697 
   3698 
   3699 /*
   3700  * Register: BtCtrl1
   3701  * Mailbox Control & Access status 1
   3702  * Description: Host (blade) <-> SP Block Transfer mailbox control
   3703  * and access status register 1.
   3704  * Host is allowed 8 bits read/write access to this register ; To do
   3705  * the same, it should provide the btCtrl1 address, data on
   3706  * hostDataBus[7:0], and assert hostBen[0], SPI is allowed 8 bits
   3707  * read/write access to this register ; To do the same, it should
   3708  * provide the btCtrl1 address, data on spiDataBus[7:0], and no need
   3709  * of spiBen
   3710  *
   3711  * Fields:
   3712  *     The SP sets/clears this bit to indicate that it is busy and
   3713  *     can not accept any other request; write 1 to toggle the bit;
   3714  *     Read only by Host.
   3715  *     The Host sets/clears this bit to indicate that it is busy and
   3716  *     can not accept any other request; Read only by SP.
   3717  *     Reserved for definition by platform. Typical usage could be
   3718  *     "heartbeat" mechanism from/to the host. The host sets OEM0 to
   3719  *     interrupt the SP and then polls it to be cleared by SP
   3720  *     The SP sets this bit when it has detected and queued an SMS
   3721  *     message in the SP2HOST buffer that must be reported to the
   3722  *     HOST. The Host clears this bit by writing a 1 to it. This bit
   3723  *     may generate an intrpt to Host depending on the sp2hostIntEn
   3724  *     bit. Writing 0 has no effect
   3725  *     The SP writes 1 to this bit after it has finished writing a
   3726  *     message into the SP2HOST buffer. The Host clears this bit by
   3727  *     writing 1 to it after it has set the hostBusy bit This bit may
   3728  *     generate an intrpt to Host depending on the sp2hostIntEn bit.
   3729  *     Writing 0 has no effect
   3730  *     The Host writes 1 to this bit to generate an interrupt to SP
   3731  *     after it has finished writing a message into the HOST2SP
   3732  *     buffer. The SP clears this bit by writing 1 to it after it has
   3733  *     set the spBusy bit. Writing 0 has no effect
   3734  *     The host writes 1 to clear the read pointer to the BT SP2HOST
   3735  *     buffer; the SP writes 1 to clear the read pointer to the BT
   3736  *     HOST2SP buffer. This bit is always read back as 0; writing 0
   3737  *     has no effect.
   3738  *     The host writes 1 to clear the write pointer to the BT HOST2SP
   3739  *     buffer; the SP writes 1 to clear the write pointer to the BT
   3740  *     SP2HOST buffer. This bit is always read back as 0; writing 0
   3741  *     has no effect.
   3742  */
   3743 typedef union {
   3744 	uint32_t value;
   3745 	struct {
   3746 #if defined(_BIG_ENDIAN)
   3747 		uint32_t	rsrvd:24;
   3748 		uint32_t	sp_busy:1;
   3749 		uint32_t	host_busy:1;
   3750 		uint32_t	oem0:1;
   3751 		uint32_t	sms_atn:1;
   3752 		uint32_t	sp2host_atn:1;
   3753 		uint32_t	host2sp_atn:1;
   3754 		uint32_t	clr_rd_ptr:1;
   3755 		uint32_t	clr_wr_ptr:1;
   3756 #else
   3757 		uint32_t	clr_wr_ptr:1;
   3758 		uint32_t	clr_rd_ptr:1;
   3759 		uint32_t	host2sp_atn:1;
   3760 		uint32_t	sp2host_atn:1;
   3761 		uint32_t	sms_atn:1;
   3762 		uint32_t	oem0:1;
   3763 		uint32_t	host_busy:1;
   3764 		uint32_t	sp_busy:1;
   3765 		uint32_t	rsrvd:24;
   3766 #endif
   3767 	} bits;
   3768 } bt_ctrl1_t;
   3769 
   3770 
   3771 /*
   3772  * Register: BtData1
   3773  * Mailbox Data 1
   3774  * Description: Host (blade) <-> SP mailbox data register 1.
   3775  * Host is allowed a 32 bits read/write access to this register ; To
   3776  * do the same, it should provide the btData1 address, data on
   3777  * hostDataBus[31:0], and assert hostBen[1], SPI is allowed only 8
   3778  * bits read/write access to this register ; To do the same, it
   3779  * should provide the btData1 address, data on spiDataBus[7:0], and
   3780  * no need of spiBen
   3781  * All references to the mail box control bits in this register
   3782  * refer to btCtrl1. When spBusy=0 && host2spAtn=0, data is written
   3783  * by the host and read by the SP. When hostBusy=0 && sp2hostAtn=0,
   3784  * data is written by the SP and read by the Host.
   3785  * Fields:
   3786  *     Bits 31:0 of message data to send to SP/HOST
   3787  */
   3788 typedef union {
   3789 	uint32_t value;
   3790 	struct {
   3791 #if defined(_BIG_ENDIAN)
   3792 		uint32_t	rsrvd:24;
   3793 		uint32_t	data:8;
   3794 #else
   3795 		uint32_t	data:8;
   3796 		uint32_t	rsrvd:24;
   3797 #endif
   3798 	} bits;
   3799 } bt_data1_t;
   3800 
   3801 
   3802 /*
   3803  * Register: BtIntmask1
   3804  * Mailbox Interrupt Mask & Status 1
   3805  * Description: Host (blade) <-> SP Block Transfer Interrupt Mask and
   3806  * Status register 1
   3807  * Host is allowed 8 bits read/write access to this register ; To do
   3808  * the same, it should provide the btIntmask1 address, data on
   3809  * hostDataBus[23:16], and assert hostBen[2], SPI is allowed 8 bits
   3810  * read only access to this register ; To do the same, it should
   3811  * provide the btIntmask1 address and no need of spiBen
   3812  * All references to the mail box control bits in this register
   3813  * refer to btCtrl1
   3814  * Fields:
   3815  *     The host writes 1 to reset the entire mailbox 1 accesses for
   3816  *     error recovery; resets both SP and HOST write and read
   3817  *     pointers. Writing 0 has no effect. This is non-sticky. Always
   3818  *     read back as 0.
   3819  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3820  *     Handler use. Generic IPMI software must write this bit as 0
   3821  *     and ignore the value on read
   3822  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3823  *     Handler use. Generic IPMI software must write this bit as 0
   3824  *     and ignore the value on read
   3825  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3826  *     Handler use. Generic IPMI software must write this bit as 0
   3827  *     and ignore the value on read
   3828  *     SP to HOST Interrupt status This bit reflects the state of the
   3829  *     intrpt line to the Host. O/S driver should write 1 to clear.
   3830  *     SP to HOST Interrupt Enable The interrupt is generated if
   3831  *     sp2hIrqEn is 1 and either sp2hostAtn or smsAtn is 1
   3832  */
   3833 typedef union {
   3834 	uint32_t value;
   3835 	struct {
   3836 #if defined(_BIG_ENDIAN)
   3837 		uint32_t	rsrvd:24;
   3838 		uint32_t	mb_master_reset:1;
   3839 		uint32_t	rsrvd1:2;
   3840 		uint32_t	oem3:1;
   3841 		uint32_t	oem2:1;
   3842 		uint32_t	oem1:1;
   3843 		uint32_t	sp2h_irq:1;
   3844 		uint32_t	sp2h_irq_en:1;
   3845 #else
   3846 		uint32_t	sp2h_irq_en:1;
   3847 		uint32_t	sp2h_irq:1;
   3848 		uint32_t	oem1:1;
   3849 		uint32_t	oem2:1;
   3850 		uint32_t	oem3:1;
   3851 		uint32_t	rsrvd1:2;
   3852 		uint32_t	mb_master_reset:1;
   3853 		uint32_t	rsrvd:24;
   3854 #endif
   3855 	} bits;
   3856 } bt_intmask1_t;
   3857 
   3858 
   3859 /*
   3860  * Register: BtCtrl2
   3861  * Mailbox Control & Access status 2
   3862  * Description: Host (blade) <-> SP Block Transfer mailbox control
   3863  * and access status register 2.
   3864  * Host is allowed 8 bits read/write access to this register ; To do
   3865  * the same, it should provide the btCtrl2 address, data on
   3866  * hostDataBus[7:0], and assert hostBen[0], SPI is allowed 8 bits
   3867  * read/write access to this register ; To do the same, it should
   3868  * provide the btCtrl2 address, data on spiDataBus[7:0], and no need
   3869  * of spiBen
   3870  *
   3871  * Fields:
   3872  *     The SP sets/clears this bit to indicate that it is busy and
   3873  *     can not accept any other request; write 1 to toggle the bit;
   3874  *     Read only by Host.
   3875  *     The Host sets/clears this bit to indicate that it is busy and
   3876  *     can not accept any other request; Read only by SP.
   3877  *     Reserved for definition by platform. Typical usage could be
   3878  *     "heartbeat" mechanism from/to the host. The host sets OEM0 to
   3879  *     interrupt the SP and then polls it to be cleared by SP
   3880  *     The SP sets this bit when it has detected and queued an SMS
   3881  *     message in the SP2HOST buffer that must be reported to the
   3882  *     HOST. The Host clears this bit by writing a 1 to it. This bit
   3883  *     may generate an intrpt to Host depending on the sp2hostIntEn
   3884  *     bit. Writing 0 has no effect
   3885  *     The SP writes 1 to this bit after it has finished writing a
   3886  *     message into the SP2HOST buffer. The Host clears this bit by
   3887  *     writing 1 to it after it has set the hostBusy bit This bit may
   3888  *     generate an intrpt to Host depending on the sp2hostIntEn bit.
   3889  *     Writing 0 has no effect
   3890  *     The Host writes 1 to this bit to generate an interrupt to SP
   3891  *     after it has finished writing a message into the HOST2SP
   3892  *     buffer. The SP clears this bit by writing 1 to it after it has
   3893  *     set the spBusy bit. Writing 0 has no effect
   3894  *     The host writes 1 to clear the read pointer to the BT SP2HOST
   3895  *     buffer; the SP writes 1 to clear the read pointer to the BT
   3896  *     HOST2SP buffer. This bit is always read back as 0; writing 0
   3897  *     has no effect.
   3898  *     The host writes 1 to clear the write pointer to the BT HOST2SP
   3899  *     buffer; the SP writes 1 to clear the write pointer to the BT
   3900  *     SP2HOST buffer. This bit is always read back as 0; writing 0
   3901  *     has no effect.
   3902  */
   3903 typedef union {
   3904 	uint32_t value;
   3905 	struct {
   3906 #if defined(_BIG_ENDIAN)
   3907 		uint32_t	rsrvd:24;
   3908 		uint32_t	sp_busy:1;
   3909 		uint32_t	host_busy:1;
   3910 		uint32_t	oem0:1;
   3911 		uint32_t	sms_atn:1;
   3912 		uint32_t	sp2host_atn:1;
   3913 		uint32_t	host2sp_atn:1;
   3914 		uint32_t	clr_rd_ptr:1;
   3915 		uint32_t	clr_wr_ptr:1;
   3916 #else
   3917 		uint32_t	clr_wr_ptr:1;
   3918 		uint32_t	clr_rd_ptr:1;
   3919 		uint32_t	host2sp_atn:1;
   3920 		uint32_t	sp2host_atn:1;
   3921 		uint32_t	sms_atn:1;
   3922 		uint32_t	oem0:1;
   3923 		uint32_t	host_busy:1;
   3924 		uint32_t	sp_busy:1;
   3925 		uint32_t	rsrvd:24;
   3926 #endif
   3927 	} bits;
   3928 } bt_ctrl2_t;
   3929 
   3930 
   3931 /*
   3932  * Register: BtData2
   3933  * Mailbox Data 2
   3934  * Description: Host (blade) <-> SP mailbox data register 2. All
   3935  * references to the mail box control bits in this register refer to
   3936  * btCtrl2.
   3937  * Host is allowed a 32 bits read/write access to this register ; To
   3938  * do the same, it should provide the btData2 address, data on
   3939  * hostDataBus[31:0], and assert hostBen[1], SPI is allowed only 8
   3940  * bits read/write access to this register ; To do the same, it
   3941  * should provide the btData2 address, data on spiDataBus[7:0], and
   3942  * no need of spiBen
   3943  * When spBusy=0 && host2spAtn=0, data is written by the host and
   3944  * read by the SP. When hostBusy=0 && sp2hostAtn=0, data is written
   3945  * by the SP and read by the Host.
   3946  * Fields:
   3947  *     Bits 31:0 of message data to send to SP/HOST
   3948  */
   3949 typedef union {
   3950 	uint32_t value;
   3951 	struct {
   3952 #if defined(_BIG_ENDIAN)
   3953 		uint32_t	rsrvd:24;
   3954 		uint32_t	data:8;
   3955 #else
   3956 		uint32_t	data:8;
   3957 		uint32_t	rsrvd:24;
   3958 #endif
   3959 	} bits;
   3960 } bt_data2_t;
   3961 
   3962 
   3963 /*
   3964  * Register: BtIntmask2
   3965  * Mailbox Interrupt Mask & Status 2
   3966  * Description: Host (blade) <-> SP Block Transfer Interrupt Mask and
   3967  * Status register 2
   3968  * Host is allowed 8 bits read/write access to this register ; To do
   3969  * the same, it should provide the btIntmask2 address, data on
   3970  * hostDataBus[23:16], and assert hostBen[2], SPI is allowed 8 bits
   3971  * read only access to this register ; To do the same, it should
   3972  * provide the btIntmask2 address and no need of spiBen
   3973  * All references to the mail box control bits in this register
   3974  * refer to btCtrl2
   3975  * Fields:
   3976  *     The host writes 1 to reset the entire mailbox 2 accesses for
   3977  *     error recovery; resets both SP and HOST write and read
   3978  *     pointers. Writing 0 has no effect. This is non-sticky. Always
   3979  *     read back as 0.
   3980  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3981  *     Handler use. Generic IPMI software must write this bit as 0
   3982  *     and ignore the value on read
   3983  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3984  *     Handler use. Generic IPMI software must write this bit as 0
   3985  *     and ignore the value on read
   3986  *     Reserved for definition by platform manufacturer for BIOS/SMI
   3987  *     Handler use. Generic IPMI software must write this bit as 0
   3988  *     and ignore the value on read
   3989  *     SP to HOST Interrupt status This bit reflects the state of the
   3990  *     intrpt line to the Host. O/S driver should write 1 to clear.
   3991  *     SP to HOST Interrupt Enable The interrupt is generated if
   3992  *     sp2hIrqEn is 1 and either sp2hostAtn or smsAtn is 1
   3993  */
   3994 typedef union {
   3995 	uint32_t value;
   3996 	struct {
   3997 #if defined(_BIG_ENDIAN)
   3998 		uint32_t	rsrvd:24;
   3999 		uint32_t	mb_master_reset:1;
   4000 		uint32_t	rsrvd1:2;
   4001 		uint32_t	oem3:1;
   4002 		uint32_t	oem2:1;
   4003 		uint32_t	oem1:1;
   4004 		uint32_t	sp2h_irq:1;
   4005 		uint32_t	sp2h_irq_en:1;
   4006 #else
   4007 		uint32_t	sp2h_irq_en:1;
   4008 		uint32_t	sp2h_irq:1;
   4009 		uint32_t	oem1:1;
   4010 		uint32_t	oem2:1;
   4011 		uint32_t	oem3:1;
   4012 		uint32_t	rsrvd1:2;
   4013 		uint32_t	mb_master_reset:1;
   4014 		uint32_t	rsrvd:24;
   4015 #endif
   4016 	} bits;
   4017 } bt_intmask2_t;
   4018 
   4019 
   4020 /*
   4021  * Register: BtCtrl3
   4022  * Mailbox Control & Access status 3
   4023  * Description: Host (blade) <-> SP Block Transfer mailbox control
   4024  * and access status register 3.
   4025  * Host is allowed 8 bits read/write access to this register ; To do
   4026  * the same, it should provide the btCtrl3 address, data on
   4027  * hostDataBus[7:0], and assert hostBen[0], SPI is allowed 8 bits
   4028  * read/write access to this register ; To do the same, it should
   4029  * provide the btCtrl3 address, data on spiDataBus[7:0], and no need
   4030  * of spiBen
   4031  *
   4032  * Fields:
   4033  *     The SP sets/clears this bit to indicate that it is busy and
   4034  *     can not accept any other request; write 1 to toggle the bit;
   4035  *     Read only by Host.
   4036  *     The Host sets/clears this bit to indicate that it is busy and
   4037  *     can not accept any other request; Read only by SP.
   4038  *     Reserved for definition by platform. Typical usage could be
   4039  *     "heartbeat" mechanism from/to the host. The host sets OEM0 to
   4040  *     interrupt the SP and then polls it to be cleared by SP
   4041  *     The SP sets this bit when it has detected and queued an SMS
   4042  *     message in the SP2HOST buffer that must be reported to the
   4043  *     HOST. The Host clears this bit by writing a 1 to it. This bit
   4044  *     may generate an intrpt to Host depending on the sp2hostIntEn
   4045  *     bit. Writing 0 has no effect
   4046  *     The SP writes 1 to this bit after it has finished writing a
   4047  *     message into the SP2HOST buffer. The Host clears this bit by
   4048  *     writing 1 to it after it has set the hostBusy bit This bit may
   4049  *     generate an intrpt to Host depending on the sp2hostIntEn bit.
   4050  *     Writing 0 has no effect
   4051  *     The Host writes 1 to this bit to generate an interrupt to SP
   4052  *     after it has finished writing a message into the HOST2SP
   4053  *     buffer. The SP clears this bit by writing 1 to it after it has
   4054  *     set the spBusy bit. Writing 0 has no effect
   4055  *     The host writes 1 to clear the read pointer to the BT SP2HOST
   4056  *     buffer; the SP writes 1 to clear the read pointer to the BT
   4057  *     HOST2SP buffer. This bit is always read back as 0; writing 0
   4058  *     has no effect.
   4059  *     The host writes 1 to clear the write pointer to the BT HOST2SP
   4060  *     buffer; the SP writes 1 to clear the write pointer to the BT
   4061  *     SP2HOST buffer. This bit is always read back as 0; writing 0
   4062  *     has no effect.
   4063  */
   4064 typedef union {
   4065 	uint32_t value;
   4066 	struct {
   4067 #if defined(_BIG_ENDIAN)
   4068 		uint32_t	rsrvd:24;
   4069 		uint32_t	sp_busy:1;
   4070 		uint32_t	host_busy:1;
   4071 		uint32_t	oem0:1;
   4072 		uint32_t	sms_atn:1;
   4073 		uint32_t	sp2host_atn:1;
   4074 		uint32_t	host2sp_atn:1;
   4075 		uint32_t	clr_rd_ptr:1;
   4076 		uint32_t	clr_wr_ptr:1;
   4077 #else
   4078 		uint32_t	clr_wr_ptr:1;
   4079 		uint32_t	clr_rd_ptr:1;
   4080 		uint32_t	host2sp_atn:1;
   4081 		uint32_t	sp2host_atn:1;
   4082 		uint32_t	sms_atn:1;
   4083 		uint32_t	oem0:1;
   4084 		uint32_t	host_busy:1;
   4085 		uint32_t	sp_busy:1;
   4086 		uint32_t	rsrvd:24;
   4087 #endif
   4088 	} bits;
   4089 } bt_ctrl3_t;
   4090 
   4091 
   4092 /*
   4093  * Register: BtData3
   4094  * Mailbox Data 3
   4095  * Description: Host (blade) <-> SP mailbox data register 3.
   4096  * Host is allowed a 32 bits read/write access to this register ; To
   4097  * do the same, it should provide the btData3 address, data on
   4098  * hostDataBus[31:0], and assert hostBen[1], SPI is allowed only 8
   4099  * bits read/write access to this register ; To do the same, it
   4100  * should provide the btData3 address, data on spiDataBus[7:0], and
   4101  * no need of spiBen
   4102  * All references to the mail box control bits in this register
   4103  * refer to btCtrl3. When spBusy=0 && host2spAtn=0, data is written
   4104  * by the host and read by the SP. When hostBusy=0 && sp2hostAtn=0,
   4105  * data is written by the SP and read by the Host.
   4106  * Fields:
   4107  *     Bits 31:0 of message data to send to SP/HOST
   4108  */
   4109 typedef union {
   4110 	uint32_t value;
   4111 	struct {
   4112 #if defined(_BIG_ENDIAN)
   4113 		uint32_t	rsrvd:24;
   4114 		uint32_t	data:8;
   4115 #else
   4116 		uint32_t	data:8;
   4117 		uint32_t	rsrvd:24;
   4118 #endif
   4119 	} bits;
   4120 } bt_data3_t;
   4121 
   4122 
   4123 /*
   4124  * Register: BtIntmask3
   4125  * Mailbox Interrupt Mask & Status 3
   4126  * Description: Host (blade) <-> SP Block Transfer Interrupt Mask and
   4127  * Status register 3
   4128  * Host is allowed 8 bits read/write access to this register ; To do
   4129  * the same, it should provide the btIntmask3 address, data on
   4130  * hostDataBus[23:16], and assert hostBen[2], SPI is allowed 8 bits
   4131  * read only access to this register ; To do the same, it should
   4132  * provide the btIntmask3 address and no need of spiBen
   4133  * All references to the mail box control bits in this register
   4134  * refer to btCtrl3
   4135  * Fields:
   4136  *     The host writes 1 to reset the entire mailbox 3 accesses for
   4137  *     error recovery; resets both SP and HOST write and read
   4138  *     pointers. Writing 0 has no effect. This is non-sticky. Always
   4139  *     read back as 0.
   4140  *     Reserved for definition by platform manufacturer for BIOS/SMI
   4141  *     Handler use. Generic IPMI software must write this bit as 0
   4142  *     and ignore the value on read
   4143  *     Reserved for definition by platform manufacturer for BIOS/SMI
   4144  *     Handler use. Generic IPMI software must write this bit as 0
   4145  *     and ignore the value on read
   4146  *     Reserved for definition by platform manufacturer for BIOS/SMI
   4147  *     Handler use. Generic IPMI software must write this bit as 0
   4148  *     and ignore the value on read
   4149  *     SP to HOST Interrupt status This bit reflects the state of the
   4150  *     intrpt line to the Host. O/S driver should write 1 to clear.
   4151  *     SP to HOST Interrupt Enable The interrupt is generated if
   4152  *     sp2hIrqEn is 1 and either sp2hostAtn or smsAtn is 1
   4153  */
   4154 typedef union {
   4155 	uint32_t value;
   4156 	struct {
   4157 #if defined(_BIG_ENDIAN)
   4158 		uint32_t	rsrvd:24;
   4159 		uint32_t	mb_master_reset:1;
   4160 		uint32_t	rsrvd1:2;
   4161 		uint32_t	oem3:1;
   4162 		uint32_t	oem2:1;
   4163 		uint32_t	oem1:1;
   4164 		uint32_t	sp2h_irq:1;
   4165 		uint32_t	sp2h_irq_en:1;
   4166 #else
   4167 		uint32_t	sp2h_irq_en:1;
   4168 		uint32_t	sp2h_irq:1;
   4169 		uint32_t	oem1:1;
   4170 		uint32_t	oem2:1;
   4171 		uint32_t	oem3:1;
   4172 		uint32_t	rsrvd1:2;
   4173 		uint32_t	mb_master_reset:1;
   4174 		uint32_t	rsrvd:24;
   4175 #endif
   4176 	} bits;
   4177 } bt_intmask3_t;
   4178 
   4179 
   4180 /*
   4181  * Register: DebugSel
   4182  * CIP Debug Data Select
   4183  * Description: Selects the debug data signals from the CIP blocks
   4184  * Fields:
   4185  *     Selects up to 16 groups of gbtDebug/pipeDebug on
   4186  *     peuPhyVdbgDebugPort[31:0]
   4187  *     Selects the high DW of the debug data - default is PCIe link
   4188  *     status
   4189  *     Selects the low DW of the debug data
   4190  */
   4191 typedef union {
   4192 	uint32_t value;
   4193 	struct {
   4194 #if defined(_BIG_ENDIAN)
   4195 		uint32_t	rsrvd:12;
   4196 		uint32_t	phy_dbug_sel:4;
   4197 		uint32_t	rsrvd1:3;
   4198 		uint32_t	cip_hdbug_sel:5;
   4199 		uint32_t	rsrvd2:3;
   4200 		uint32_t	cip_ldbug_sel:5;
   4201 #else
   4202 		uint32_t	cip_ldbug_sel:5;
   4203 		uint32_t	rsrvd2:3;
   4204 		uint32_t	cip_hdbug_sel:5;
   4205 		uint32_t	rsrvd1:3;
   4206 		uint32_t	phy_dbug_sel:4;
   4207 		uint32_t	rsrvd:12;
   4208 #endif
   4209 	} bits;
   4210 } debug_sel_t;
   4211 
   4212 
   4213 /*
   4214  * Register: IndaccMem0Ctrl
   4215  * CIP Mem0 Debug ctrl
   4216  * Description: Debug data signals from the CIP blocks
   4217  * Fields:
   4218  *     1: rd/wr access is done 0: rd/wr access is in progress
   4219  *     1: pkt injection is done 0: pkt injection is in progress
   4220  *     Ingress pkt injection enable: write to 1 for single pkt
   4221  *     injection. Must be 0 when enabling diagnostic rd/wr access to
   4222  *     memories.
   4223  *     1: Diagnostic rd/wr access to memories enabled 0: Diagnostic
   4224  *     rd/wr access to memories disabled Must be 0 when enabling pkt
   4225  *     injection.
   4226  *     1: read, 0: write
   4227  *     This bit is read/writable only if mem0Diagen=1 or if
   4228  *     mem0Diagen bit is also written with '1' along with enabling
   4229  *     this bit. Else, the write will not have any effect. 1: Apply
   4230  *     the parity mask provided in the Prty register 0: Do not apply
   4231  *     the parity mask provided in the Prty register
   4232  *     0 : select npdataq memory 1 : select nphdrq memory 2 : select
   4233  *     pdataq memory 3 : select phdrq memory 4 : select cpldataq
   4234  *     memory 5 : select cplhdrq memory
   4235  */
   4236 typedef union {
   4237 	uint32_t value;
   4238 	struct {
   4239 #if defined(_BIG_ENDIAN)
   4240 		uint32_t	mem0_access_status:1;
   4241 		uint32_t	rsrvd:5;
   4242 		uint32_t	mem0_pktinj_stat:1;
   4243 		uint32_t	mem0_pktinj_en:1;
   4244 		uint32_t	rsrvd1:1;
   4245 		uint32_t	mem0_diagen:1;
   4246 		uint32_t	mem0_command:1;
   4247 		uint32_t	mem0_prty_wen:1;
   4248 		uint32_t	rsrvd2:1;
   4249 		uint32_t	mem0_sel:3;
   4250 		uint32_t	mem0_addr:16;
   4251 #else
   4252 		uint32_t	mem0_addr:16;
   4253 		uint32_t	mem0_sel:3;
   4254 		uint32_t	rsrvd2:1;
   4255 		uint32_t	mem0_prty_wen:1;
   4256 		uint32_t	mem0_command:1;
   4257 		uint32_t	mem0_diagen:1;
   4258 		uint32_t	rsrvd1:1;
   4259 		uint32_t	mem0_pktinj_en:1;
   4260 		uint32_t	mem0_pktinj_stat:1;
   4261 		uint32_t	rsrvd:5;
   4262 		uint32_t	mem0_access_status:1;
   4263 #endif
   4264 	} bits;
   4265 } indacc_mem0_ctrl_t;
   4266 
   4267 
   4268 /*
   4269  * Register: IndaccMem0Data0
   4270  * CIP Mem0 Debug Data0
   4271  * Description: Debug data signals from the CIP blocks
   4272  * Fields:
   4273  *     When pktInjectionEnable is 0: Data[31:0] from/for the memory
   4274  *     selected by mem0Sel bits from mem0Ctrl This data is written to
   4275  *     the memory when indaccMem0Ctrl register is written with the
   4276  *     write command When indaccMem0Ctrl register is written with the
   4277  *     read command, this register will hold the Data[31:0] returned
   4278  *     from the memory When pktInjectionEnable is 1:
   4279  *     debugData0Reg[31:0] is used in the following ways: [17:16] =
   4280  *     radmTrgt1Fmt[1:0]: 2'b00 3DW MRd 2'b01 4DW MRd 2'b10 3DW MWr
   4281  *     2'b11 4DW MWr [13:12] = radmTrgt1DwLen[1:0]: 2'b01 1DW 2'b10
   4282  *     2DW [11:8] = radmTrgt1LastBe[3:0]: 4'b0000 1DW 4'b1111 2DW [7]
   4283  *     = radmTrgt1RomInRange 1'b0 PIO Access 1'b1 EEPROM Access [6:4]
   4284  *     = radmTrgt1InMembarRange[2:0] 3'b000 PIO Access 3'b010 MSIX
   4285  *     Ram/PBA Table Access [1:0] = radmTrgt1Dwen[1:0] 2'b01
   4286  *     1DW->last DW is at radmTrgt1Data[31:0] 2'b11 2DW->last DW is
   4287  *     at radmTrgt1Data[63:32]
   4288  */
   4289 typedef union {
   4290 	uint32_t value;
   4291 	struct {
   4292 #if defined(_BIG_ENDIAN)
   4293 		uint32_t	mem0_data0:32;
   4294 #else
   4295 		uint32_t	mem0_data0:32;
   4296 #endif
   4297 	} bits;
   4298 } indacc_mem0_data0_t;
   4299 
   4300 
   4301 /*
   4302  * Register: IndaccMem0Data1
   4303  * CIP Mem0 Debug Data1
   4304  * Description: Debug data signals from the CIP blocks
   4305  * Fields:
   4306  *     When pktInjectionEnable is 0: Data[63:32] from/for the memory
   4307  *     selected by mem0Sel bits from mem0Ctrl This data is written to
   4308  *     the memory when indaccMem0Ctrl register is written with the
   4309  *     write command When indaccMem0Ctrl register is written with the
   4310  *     read command, this register will hold the Data[63:32] returned
   4311  *     from the memory When pktInjectionEnable is 1:
   4312  *     debugData1Reg[31:0] is used as radmTrgt1Addr[31:0].
   4313  */
   4314 typedef union {
   4315 	uint32_t value;
   4316 	struct {
   4317 #if defined(_BIG_ENDIAN)
   4318 		uint32_t	mem0_data1:32;
   4319 #else
   4320 		uint32_t	mem0_data1:32;
   4321 #endif
   4322 	} bits;
   4323 } indacc_mem0_data1_t;
   4324 
   4325 
   4326 /*
   4327  * Register: IndaccMem0Data2
   4328  * CIP Mem0 Debug Data2
   4329  * Description: Debug data signals from the CIP blocks
   4330  * Fields:
   4331  *     When pktInjectionEnable is 0: Data[95:64] from/for the memory
   4332  *     selected by mem0Sel bits from mem0Ctrl This data is written to
   4333  *     the memory when indaccMem0Ctrl register is written with the
   4334  *     write command When indaccMem0Ctrl register is written with the
   4335  *     read command, this register will hold the Data[95:64] returned
   4336  *     from the memory When pktInjectionEnable is 1:
   4337  *     debugData2Reg[31:0] is used as radmTrgt1Data[63:32]. Allows up
   4338  *     to QW=2DW access.
   4339  */
   4340 typedef union {
   4341 	uint32_t value;
   4342 	struct {
   4343 #if defined(_BIG_ENDIAN)
   4344 		uint32_t	mem0_data2:32;
   4345 #else
   4346 		uint32_t	mem0_data2:32;
   4347 #endif
   4348 	} bits;
   4349 } indacc_mem0_data2_t;
   4350 
   4351 
   4352 /*
   4353  * Register: IndaccMem0Data3
   4354  * CIP Mem0 Debug Data3
   4355  * Description: Debug data signals from the CIP blocks
   4356  * Fields:
   4357  *     When pktInjectionEnable is 0: Data[127:96] from/for the memory
   4358  *     selected by mem0Sel bits from mem0Ctrl This data is written to
   4359  *     the memory when indaccMem0Ctrl register is written with the
   4360  *     write command When indaccMem0Ctrl register is written with the
   4361  *     read command, this register will hold the Data[127:96]
   4362  *     returned from the memory When pktInjectionEnable is 1:
   4363  *     debugData3Reg[31:0] is used as radmTrgt1Data[31:0].
   4364  */
   4365 typedef union {
   4366 	uint32_t value;
   4367 	struct {
   4368 #if defined(_BIG_ENDIAN)
   4369 		uint32_t	mem0_data3:32;
   4370 #else
   4371 		uint32_t	mem0_data3:32;
   4372 #endif
   4373 	} bits;
   4374 } indacc_mem0_data3_t;
   4375 
   4376 
   4377 /*
   4378  * Register: IndaccMem0Prty
   4379  * CIP Mem0 Debug Parity
   4380  * Description: Debug data signals from the CIP blocks
   4381  * Fields:
   4382  *     parity mask bits for the memory selected by mem0Sel bits from
   4383  *     mem0Ctrl to inject parity error These bits serve two purposes
   4384  *     regarding memory parity : - During indirect write access to
   4385  *     the memories, the value in this register is applied as mask to
   4386  *     the actual parity if prtyWen bit of the indaccCtrl register
   4387  *     has been enabled. The masked parity and data are written into
   4388  *     the specified memory location. - During indirect read access
   4389  *     to the memories, the value in this register is overwritten
   4390  *     with the parity value read from the memory location. If the
   4391  *     parity mask had been set and enabled to be written into this
   4392  *     location it will generate parity error for that memory
   4393  *     location
   4394  */
   4395 typedef union {
   4396 	uint32_t value;
   4397 	struct {
   4398 #if defined(_BIG_ENDIAN)
   4399 		uint32_t	rsrvd:18;
   4400 		uint32_t	mem0_parity:14;
   4401 #else
   4402 		uint32_t	mem0_parity:14;
   4403 		uint32_t	rsrvd:18;
   4404 #endif
   4405 	} bits;
   4406 } indacc_mem0_prty_t;
   4407 
   4408 
   4409 /*
   4410  * Register: IndaccMem1Ctrl
   4411  * CIP Mem1 Debug ctrl
   4412  * Description: Debug data signals from the CIP blocks
   4413  * Fields:
   4414  *     1: rd/wr access is done 0: rd/wr access is in progress
   4415  *     1: client pkt injection is done 0: client pkt injection is in
   4416  *     progress
   4417  *     1: client1 pkt injection 0: client0 pkt injection
   4418  *     Mutually exclusive: Either client0 or client1 egress pkt
   4419  *     injection enable: write to 1 for single pkt injection. Must be
   4420  *     0 when enabling diagnostic rd/wr access to memories.
   4421  *     1: Diagnostic rd/wr access enabled 0: Diagnostic rd/wr access
   4422  *     disabled Must be 0 when enabling pkt injection.
   4423  *     1: read, 0: write
   4424  *     This bit is read/writable only if mem1Diagen=1 or if
   4425  *     mem1Diagen bit is also written with '1' along with enabling
   4426  *     this bit. Else, the write will not have any effect. 1: Apply
   4427  *     the parity mask provided in the Prty register 0: Do not apply
   4428  *     the parity mask provided in the Prty register
   4429  *     0 : select retry sot memory 1 : select retry buffer memory 2 :
   4430  *     select msix memory 3 : select hcr cfg memory
   4431  */
   4432 typedef union {
   4433 	uint32_t value;
   4434 	struct {
   4435 #if defined(_BIG_ENDIAN)
   4436 		uint32_t	mem1_access_status:1;
   4437 		uint32_t	rsrvd:4;
   4438 		uint32_t	mem1_pktinj_stat:1;
   4439 		uint32_t	mem1_pktinj_client:1;
   4440 		uint32_t	mem1_pktinj_en:1;
   4441 		uint32_t	rsrvd1:1;
   4442 		uint32_t	mem1_diagen:1;
   4443 		uint32_t	mem1_command:1;
   4444 		uint32_t	mem1_prty_wen:1;
   4445 		uint32_t	rsrvd2:2;
   4446 		uint32_t	mem1_sel:2;
   4447 		uint32_t	mem1_addr:16;
   4448 #else
   4449 		uint32_t	mem1_addr:16;
   4450 		uint32_t	mem1_sel:2;
   4451 		uint32_t	rsrvd2:2;
   4452 		uint32_t	mem1_prty_wen:1;
   4453 		uint32_t	mem1_command:1;
   4454 		uint32_t	mem1_diagen:1;
   4455 		uint32_t	rsrvd1:1;
   4456 		uint32_t	mem1_pktinj_en:1;
   4457 		uint32_t	mem1_pktinj_client:1;
   4458 		uint32_t	mem1_pktinj_stat:1;
   4459 		uint32_t	rsrvd:4;
   4460 		uint32_t	mem1_access_status:1;
   4461 #endif
   4462 	} bits;
   4463 } indacc_mem1_ctrl_t;
   4464 
   4465 
   4466 /*
   4467  * Register: IndaccMem1Data0
   4468  * CIP Mem1 Debug Data0
   4469  * Description: Debug data signals from the CIP blocks
   4470  * Fields:
   4471  *     When pktInjectionEnable is 0: Data[31:0] from/for the memory
   4472  *     selected by mem1Sel bits from mem1Ctrl This data is written to
   4473  *     the memory when indaccMem1Ctrl register is written with the
   4474  *     write command When indaccMem1Ctrl register is written with the
   4475  *     read command, this register will hold the Data[31:0] returned
   4476  *     from the memory
   4477  * When pktInjectionEnable is 1: debugData0Reg[31:0] is used in
   4478  *     the following ways: [27:26] = tdcPeuTlp0[or
   4479  *     rdcPeuTlp1]_fmt[1:0]: 2'b00 3DW MRd 2'b01 4DW MRd 2'b10 3DW
   4480  *     MWr 2'b11 4DW MWr [25:13] = tdcPeuTlp0[or
   4481  *     rdcPeuTlp1]_byteLen[12:0]: Note MWr must be limited to 4B =
   4482  *     13'b0000000000001. [12:8] = tdcPeuTlp0[or
   4483  *     rdcPeuTlp1]_tid[4:0]: 5 lsb of tid (TAG ID) [7:0] =
   4484  *     tdcPeuTlp0[or rdcPeuTlp1]_byteEn[7:0]: [7:4] = last DW byte
   4485  *     enables [3:0] = first DW byte enables
   4486  */
   4487 typedef union {
   4488 	uint32_t value;
   4489 	struct {
   4490 #if defined(_BIG_ENDIAN)
   4491 		uint32_t	mem1_data0:32;
   4492 #else
   4493 		uint32_t	mem1_data0:32;
   4494 #endif
   4495 	} bits;
   4496 } indacc_mem1_data0_t;
   4497 
   4498 
   4499 /*
   4500  * Register: IndaccMem1Data1
   4501  * CIP Mem1 Debug Data1
   4502  * Description: Debug data signals from the CIP blocks
   4503  * Fields:
   4504  *     When pktInjectionEnable is 0: Data[63:32] from/for the memory
   4505  *     selected by mem1Sel bits from mem1Ctrl This data is written to
   4506  *     the memory when indaccMem1Ctrl register is written with the
   4507  *     write command When indaccMem1Ctrl register is written with the
   4508  *     read command, this register will hold the Data[63:32] returned
   4509  *     from the memory
   4510  * When pktInjectionEnable is 1: debugData1Reg[31:0] is used as
   4511  *     tdcPeuTlp0[or rdcPeuTlp1]_addr[63:32] high address bits.
   4512  */
   4513 typedef union {
   4514 	uint32_t value;
   4515 	struct {
   4516 #if defined(_BIG_ENDIAN)
   4517 		uint32_t	mem1_data1:32;
   4518 #else
   4519 		uint32_t	mem1_data1:32;
   4520 #endif
   4521 	} bits;
   4522 } indacc_mem1_data1_t;
   4523 
   4524 
   4525 /*
   4526  * Register: IndaccMem1Data2
   4527  * CIP Mem1 Debug Data2
   4528  * Description: Debug data signals from the CIP blocks
   4529  * Fields:
   4530  *     When pktInjectionEnable is 0: Data[95:64] from/for the memory
   4531  *     selected by mem1Sel bits from mem1Ctrl This data is written to
   4532  *     the memory when indaccMem1Ctrl register is written with the
   4533  *     write command When indaccMem1Ctrl register is written with the
   4534  *     read command, this register will hold the Data[95:64] returned
   4535  *     from the memory
   4536  * When pktInjectionEnable is 1: debugData2Reg[31:0] is used as
   4537  *     tdcPeuTlp0[or rdcPeuTlp1]_addr[31:0] low address bits.
   4538  */
   4539 typedef union {
   4540 	uint32_t value;
   4541 	struct {
   4542 #if defined(_BIG_ENDIAN)
   4543 		uint32_t	mem1_data2:32;
   4544 #else
   4545 		uint32_t	mem1_data2:32;
   4546 #endif
   4547 	} bits;
   4548 } indacc_mem1_data2_t;
   4549 
   4550 
   4551 /*
   4552  * Register: IndaccMem1Data3
   4553  * CIP Mem1 Debug Data3
   4554  * Description: Debug data signals from the CIP blocks
   4555  * Fields:
   4556  *     When pktInjectionEnable is 0: Data[127:96] from/for the memory
   4557  *     selected by mem1Sel bits from mem1Ctrl This data is written to
   4558  *     the memory when indaccMem1Ctrl register is written with the
   4559  *     write command When indaccMem1Ctrl register is written with the
   4560  *     read command, this register will hold the Data[127:96]
   4561  *     returned from the memory
   4562  * When pktInjectionEnable is 1: debugData3Reg[31:0] is used as
   4563  *     tdcPeuTlp0[or rdcPeuTlp1]_data[31:0] Limited for MWr to 1 DW.
   4564  */
   4565 typedef union {
   4566 	uint32_t value;
   4567 	struct {
   4568 #if defined(_BIG_ENDIAN)
   4569 		uint32_t	mem1_data3:32;
   4570 #else
   4571 		uint32_t	mem1_data3:32;
   4572 #endif
   4573 	} bits;
   4574 } indacc_mem1_data3_t;
   4575 
   4576 
   4577 /*
   4578  * Register: IndaccMem1Prty
   4579  * CIP Mem1 Debug Parity
   4580  * Description: Debug data signals from the CIP blocks
   4581  * Fields:
   4582  *     parity mask bits for the memory selected by mem1Sel bits from
   4583  *     mem1Ctrl to inject parity error These bits serve two purposes
   4584  *     regarding memory parity : - During indirect write access to
   4585  *     the memories, the value in this register is applied as mask to
   4586  *     the actual parity if prtyWen bit of the indaccCtrl register
   4587  *     has been enabled. The masked parity and data are written into
   4588  *     the specified memory location. - During indirect read access
   4589  *     to the memories, the value in this register is overwritten
   4590  *     with the parity value read from the memory location. If the
   4591  *     parity mask had been set and enabled to be written into this
   4592  *     location it will generate parity error for that memory
   4593  *     location
   4594  */
   4595 typedef union {
   4596 	uint32_t value;
   4597 	struct {
   4598 #if defined(_BIG_ENDIAN)
   4599 		uint32_t	rsrvd:20;
   4600 		uint32_t	mem1_parity:12;
   4601 #else
   4602 		uint32_t	mem1_parity:12;
   4603 		uint32_t	rsrvd:20;
   4604 #endif
   4605 	} bits;
   4606 } indacc_mem1_prty_t;
   4607 
   4608 
   4609 /*
   4610  * Register: PhyDebugTrainingVec
   4611  * peuPhy Debug Training Vector
   4612  * Description: peuPhy Debug Training Vector register.
   4613  * Fields:
   4614  *     Hard-coded value for peuPhy wrt global debug training block
   4615  *     signatures.
   4616  *     Blade Number, the value read depends on the blade this block
   4617  *     resides
   4618  *     debug training vector the sub-group select value of 0 selects
   4619  *     this vector
   4620  */
   4621 typedef union {
   4622 	uint32_t value;
   4623 	struct {
   4624 #if defined(_BIG_ENDIAN)
   4625 		uint32_t	dbg_msb:1;
   4626 		uint32_t	bld_num:3;
   4627 		uint32_t	phydbg_training_vec:28;
   4628 #else
   4629 		uint32_t	phydbg_training_vec:28;
   4630 		uint32_t	bld_num:3;
   4631 		uint32_t	dbg_msb:1;
   4632 #endif
   4633 	} bits;
   4634 } phy_debug_training_vec_t;
   4635 
   4636 
   4637 /*
   4638  * Register: PeuDebugTrainingVec
   4639  * PEU Debug Training Vector
   4640  * Description: PEU Debug Training Vector register.
   4641  * Fields:
   4642  *     Hard-coded value for PEU (VNMy - core clk domain) wrt global
   4643  *     debug training block signatures.
   4644  *     Blade Number, the value read depends on the blade this block
   4645  *     resides
   4646  *     debug training vector the sub-group select value of 0 selects
   4647  *     this vector
   4648  *     Hard-coded value for PEU (VNMy - core clk domain) wrt global
   4649  *     debug training block signatures.
   4650  *     Blade Number, the value read depends on the blade this block
   4651  *     resides
   4652  *     debug training vector the sub-group select value of 0 selects
   4653  *     this vector
   4654  */
   4655 typedef union {
   4656 	uint32_t value;
   4657 	struct {
   4658 #if defined(_BIG_ENDIAN)
   4659 		uint32_t	dbgmsb_upper:1;
   4660 		uint32_t	bld_num_upper:3;
   4661 		uint32_t	peudbg_upper_training_vec:12;
   4662 		uint32_t	dbgmsb_lower:1;
   4663 		uint32_t	bld_num_lower:3;
   4664 		uint32_t	peudbg_lower_training_vec:12;
   4665 #else
   4666 		uint32_t	peudbg_lower_training_vec:12;
   4667 		uint32_t	bld_num_lower:3;
   4668 		uint32_t	dbgmsb_lower:1;
   4669 		uint32_t	peudbg_upper_training_vec:12;
   4670 		uint32_t	bld_num_upper:3;
   4671 		uint32_t	dbgmsb_upper:1;
   4672 #endif
   4673 	} bits;
   4674 } peu_debug_training_vec_t;
   4675 
   4676 
   4677 /*
   4678  * Register: PipeCfg0
   4679  * PIPE Configuration
   4680  * Description: These are controls signals for the pipe core and are
   4681  * used to define the PIPE core configuration with PipeCfg1 reg value
   4682  * (0x08124)
   4683  * Fields:
   4684  *     If this bit is 1 when pipe reset is released, then the value
   4685  *     on the pipe core's input port 'pipeParameter' is loaded into
   4686  *     the Pipe Core's internal Rx/Tx Parameter register which is
   4687  *     pipeRxTxParam at addr 0x01010. Note that it is software's
   4688  *     responsibility to program the pipeParameter (Pipe Cfg1)
   4689  *     register correctly: e.g. LOSADJ must be 0x1.
   4690  */
   4691 typedef union {
   4692 	uint32_t value;
   4693 	struct {
   4694 #if defined(_BIG_ENDIAN)
   4695 		uint32_t	rsrvd:21;
   4696 		uint32_t	pipe_serdes_x1:1;
   4697 		uint32_t	pipe_force_ewrap:1;
   4698 		uint32_t	pipe_force_loopback:1;
   4699 		uint32_t	pipe_force_parm:1;
   4700 		uint32_t	pipe_freq_sel:1;
   4701 		uint32_t	pipe_p1_pdown:1;
   4702 		uint32_t	pipe_p1_pdtx:1;
   4703 		uint32_t	pipe_same_sel:1;
   4704 		uint32_t	pipe_system_clk:1;
   4705 		uint32_t	gbt_term_i:2;
   4706 #else
   4707 		uint32_t	gbt_term_i:2;
   4708 		uint32_t	pipe_system_clk:1;
   4709 		uint32_t	pipe_same_sel:1;
   4710 		uint32_t	pipe_p1_pdtx:1;
   4711 		uint32_t	pipe_p1_pdown:1;
   4712 		uint32_t	pipe_freq_sel:1;
   4713 		uint32_t	pipe_force_parm:1;
   4714 		uint32_t	pipe_force_loopback:1;
   4715 		uint32_t	pipe_force_ewrap:1;
   4716 		uint32_t	pipe_serdes_x1:1;
   4717 		uint32_t	rsrvd:21;
   4718 #endif
   4719 	} bits;
   4720 } pipe_cfg0_t;
   4721 
   4722 
   4723 /*
   4724  * Register: PipeCfg1
   4725  * PIPE Configuration
   4726  * Description: These values define the PIPE core configuration and
   4727  * is presented on the Pipe core's input port 'pipeParameter'.
   4728  * The value on the pipe core's input 'pipeParameter' is loaded into
   4729  * the pipe core's internal Rx/Tx Parameter register, which is
   4730  * pipeRxTxParam at addr 0x01010, by forcing the pipeForceParm bit of
   4731  * the Pipe Cfg0 Register at address 0x08120.
   4732  *
   4733  * Fields:
   4734  *     Tx Driver Emphasis
   4735  *     Serial output Slew Rate Control
   4736  *     Tx Voltage Mux control
   4737  *     Tx Voltage Pulse control
   4738  *     Output Swing setting
   4739  *     Transmitter Clock generator pole adjust
   4740  *     Transmitter Clock generator zero adjust
   4741  *     Receiver Clock generator pole adjust
   4742  *     Receiver Clock generator zero adjust
   4743  *     Bias Control for factory testing and debugging
   4744  *     Receiver LOS Threshold adjustment. LSI suggests this POR
   4745  *     default value must be 0x1 (which is the POR default value of
   4746  *     the Pipe Rx/Tx Parameter Register).
   4747  *     Receiver Input Equalizer control
   4748  */
   4749 typedef union {
   4750 	uint32_t value;
   4751 	struct {
   4752 #if defined(_BIG_ENDIAN)
   4753 		uint32_t	rsrvd:1;
   4754 		uint32_t	emph:3;
   4755 		uint32_t	rsrvd1:1;
   4756 		uint32_t	risefall:3;
   4757 		uint32_t	vmuxlo:2;
   4758 		uint32_t	vpulselo:2;
   4759 		uint32_t	vtxlo:4;
   4760 		uint32_t	tp:2;
   4761 		uint32_t	tz:2;
   4762 		uint32_t	rp:2;
   4763 		uint32_t	rz:2;
   4764 		uint32_t	biascntl:1;
   4765 		uint32_t	losadj:3;
   4766 		uint32_t	rxeq:4;
   4767 #else
   4768 		uint32_t	rxeq:4;
   4769 		uint32_t	losadj:3;
   4770 		uint32_t	biascntl:1;
   4771 		uint32_t	rz:2;
   4772 		uint32_t	rp:2;
   4773 		uint32_t	tz:2;
   4774 		uint32_t	tp:2;
   4775 		uint32_t	vtxlo:4;
   4776 		uint32_t	vpulselo:2;
   4777 		uint32_t	vmuxlo:2;
   4778 		uint32_t	risefall:3;
   4779 		uint32_t	rsrvd1:1;
   4780 		uint32_t	emph:3;
   4781 		uint32_t	rsrvd:1;
   4782 #endif
   4783 	} bits;
   4784 } pipe_cfg1_t;
   4785 
   4786 
   4787 /*
   4788  * Register: CipBarMaskCfg
   4789  * BAR Mask Config
   4790  * Description: To write to the BAR MASK registers in the EP Core PCI
   4791  * Config registers This register should be initialised before
   4792  * writing the value to into the cipBarMask register. The lower 3
   4793  * bits define the BAR register number whose mask value has to be
   4794  * over written with the values that will be written into the
   4795  * cipBarMask register. [2:0] = 0 thru 5 selects bar0Mask thru
   4796  * bar5Mask registers = 6,7 selects Expansion romBarMask register
   4797  * Hydra's configuration for the BARs is as below : BAR1, BAR0 :
   4798  * Forms 64 bit PIO BAR. BAR1 handles the upper address bits BAR0
   4799  * handles the lower address bits BAR3, BAR2 : Forms 64 bit MSIX BAR
   4800  * BAR3 handles the upper address bits BAR2 handles the lower address
   4801  * bits BAR5, BAR4 : Not used and so disabled. Hence, user writes
   4802  * will not have any effect. romBar : Expansion romBar
   4803  *
   4804  * Fields:
   4805  *     0 : bar0Mask 1 : bar1Mask 2 : bar2Mask 3 : bar3Mask 4 :
   4806  *     bar4Mask 5 : bar5Mask 6, 7 ; romBarMask
   4807  */
   4808 typedef union {
   4809 	uint32_t value;
   4810 	struct {
   4811 #if defined(_BIG_ENDIAN)
   4812 		uint32_t	rsrvd:29;
   4813 		uint32_t	data:3;
   4814 #else
   4815 		uint32_t	data:3;
   4816 		uint32_t	rsrvd:29;
   4817 #endif
   4818 	} bits;
   4819 } cip_bar_mask_cfg_t;
   4820 
   4821 
   4822 /*
   4823  * Register: CipBarMask
   4824  * BAR Mask
   4825  * Description: Value to write to the BAR MASK registers in the EP
   4826  * Core PCI Config registers The lower 3 bits of cipMaskCfg register
   4827  * define the BAR register number Write to this register will
   4828  * initiate the DBI access to the EP Core. The cipBarMaskCfg register
   4829  * should be setup before writing to this register. [31:1] = Mask
   4830  * value [0] = 1: BAR is enabled; 0: BAR is disabled. Note that the
   4831  * BAR must be enabled ([0] == 1) before the Mask value will be
   4832  * written into the actual bar mask register. If the BAR is disabled
   4833  * ([0]==0), two writes to this register are required before the Mask
   4834  * value is written into the actual bar mask register. Refer to EP
   4835  * core data book for more details.
   4836  *
   4837  * Fields:
   4838  */
   4839 typedef union {
   4840 	uint32_t value;
   4841 	struct {
   4842 #if defined(_BIG_ENDIAN)
   4843 		uint32_t	data:32;
   4844 #else
   4845 		uint32_t	data:32;
   4846 #endif
   4847 	} bits;
   4848 } cip_bar_mask_t;
   4849 
   4850 
   4851 /*
   4852  * Register: CipLdsv0Stat
   4853  * LDSV0 Status (for debug purpose)
   4854  * Description: Returns the status of LDSV0 Flags regardless of their
   4855  * group
   4856  *
   4857  * Fields:
   4858  */
   4859 typedef union {
   4860 	uint32_t value;
   4861 	struct {
   4862 #if defined(_BIG_ENDIAN)
   4863 		uint32_t	data:32;
   4864 #else
   4865 		uint32_t	data:32;
   4866 #endif
   4867 	} bits;
   4868 } cip_ldsv0_stat_t;
   4869 
   4870 
   4871 /*
   4872  * Register: CipLdsv1Stat
   4873  * LDSV1 Status (for debug purpose)
   4874  * Description: Returns the status of LDSV1 Flags regardless of their
   4875  * group
   4876  *
   4877  * Fields:
   4878  */
   4879 typedef union {
   4880 	uint32_t value;
   4881 	struct {
   4882 #if defined(_BIG_ENDIAN)
   4883 		uint32_t	data:32;
   4884 #else
   4885 		uint32_t	data:32;
   4886 #endif
   4887 	} bits;
   4888 } cip_ldsv1_stat_t;
   4889 
   4890 
   4891 /*
   4892  * Register: PeuIntrStat
   4893  * PEU Interrupt Status
   4894  * Description: Returns the parity error status of all of the PEU
   4895  * RAMs, and external (to peu) block pio access errors. External
   4896  * block pio access errors could be due to either host or SPI
   4897  * initiated accesses. These fields are RO and can be cleared only
   4898  * through a cip reset All these errors feed to devErrStat.peuErr1
   4899  * which in turn feed to LDSV1.devErr1
   4900  * Partity Error bits: These bits log the very first parity error
   4901  * detected in a particular memory. The corresponding memory location
   4902  * is logged in respective perrLoc registers. External Block PIO
   4903  * Access Error bits: These bits log the very first error that
   4904  * resulted in access error. The corresponding address is logged in
   4905  * respective accErrLog registers.
   4906  * These bits can be set by writing a '1' to the corresponding
   4907  * mirror bit in the peuIntrStatMirror register.
   4908  * Note: PEU RAM Parity Errors and their corresponding interrupt:
   4909  * When these bits are set and the device error status interrupt is
   4910  * not masked, the PEU attempts to send the corresponding interrupt
   4911  * back to the RC. Depending on which ram is impacted and the
   4912  * corresponding logic impacted in the EP core, a coherent interrupt
   4913  * message may not be sent in all cases. For the times when the EP
   4914  * core is unable to send an interrupt, the SPI interface is to be
   4915  * used for error diagnosis as the PEU interrupt status is logged
   4916  * regardless of whether the interrupt is sent to the RC. The
   4917  * following data was collected via simulation: -Parity error
   4918  * impacted rams that likely will be able to send an interrupt:
   4919  * npDataq, pDataq, cplDataq, hcr. -Parity error impacted rams that
   4920  * may not be able to send an interrupt: npHdrq, pHdrq, cplHdrq, MSIx
   4921  * table, retryram, retrysot.
   4922  *
   4923  * Fields:
   4924  *     Error indication from SPROM Controller for Sprom Download
   4925  *     access This error indicates that a parity error was detected
   4926  *     from SRAM. For more details, please refer to SPROM Controller
   4927  *     PRM.
   4928  *     Error indication from TDC for PIO access The error location
   4929  *     and type are logged in tdcPioaccErrLog
   4930  *     Error indication from RDC for PIO access The error location
   4931  *     and type are logged in rdcPioaccErrLog
   4932  *     Error indication from PFC for PIO access The error location
   4933  *     and type are logged in pfcPioaccErrLog
   4934  *     Error indication from VMAC for PIO access The error location
   4935  *     and type are logged in vmacPioaccErrLog
   4936  *     memory in PCIe data path and value unknown until packet flow
   4937  *     starts.
   4938  *     memory in PCIe data path and value unknown until packet flow
   4939  *     starts.
   4940  *     memory in PCIe data path and value unknown until packet flow
   4941  *     starts.
   4942  *     memory in PCIe data path and value unknown until packet flow
   4943  *     starts.
   4944  *     memory in PCIe data path and value unknown until packet flow
   4945  *     starts.
   4946  *     memory in PCIe data path and value unknown until packet flow
   4947  *     starts.
   4948  *     memory in PCIe data path and value unknown until packet flow
   4949  *     starts.
   4950  *     memory in PCIe data path and value unknown until packet flow
   4951  *     starts.
   4952  */
   4953 typedef union {
   4954 	uint32_t value;
   4955 	struct {
   4956 #if defined(_BIG_ENDIAN)
   4957 		uint32_t	rsrvd:11;
   4958 		uint32_t	spc_acc_err:1;
   4959 		uint32_t	tdc_pioacc_err:1;
   4960 		uint32_t	rdc_pioacc_err:1;
   4961 		uint32_t	pfc_pioacc_err:1;
   4962 		uint32_t	vmac_pioacc_err:1;
   4963 		uint32_t	rsrvd1:6;
   4964 		uint32_t	cpl_hdrq_parerr:1;
   4965 		uint32_t	cpl_dataq_parerr:1;
   4966 		uint32_t	retryram_xdlh_parerr:1;
   4967 		uint32_t	retrysotram_xdlh_parerr:1;
   4968 		uint32_t	p_hdrq_parerr:1;
   4969 		uint32_t	p_dataq_parerr:1;
   4970 		uint32_t	np_hdrq_parerr:1;
   4971 		uint32_t	np_dataq_parerr:1;
   4972 		uint32_t	eic_msix_parerr:1;
   4973 		uint32_t	hcr_parerr:1;
   4974 #else
   4975 		uint32_t	hcr_parerr:1;
   4976 		uint32_t	eic_msix_parerr:1;
   4977 		uint32_t	np_dataq_parerr:1;
   4978 		uint32_t	np_hdrq_parerr:1;
   4979 		uint32_t	p_dataq_parerr:1;
   4980 		uint32_t	p_hdrq_parerr:1;
   4981 		uint32_t	retrysotram_xdlh_parerr:1;
   4982 		uint32_t	retryram_xdlh_parerr:1;
   4983 		uint32_t	cpl_dataq_parerr:1;
   4984 		uint32_t	cpl_hdrq_parerr:1;
   4985 		uint32_t	rsrvd1:6;
   4986 		uint32_t	vmac_pioacc_err:1;
   4987 		uint32_t	pfc_pioacc_err:1;
   4988 		uint32_t	rdc_pioacc_err:1;
   4989 		uint32_t	tdc_pioacc_err:1;
   4990 		uint32_t	spc_acc_err:1;
   4991 		uint32_t	rsrvd:11;
   4992 #endif
   4993 	} bits;
   4994 } peu_intr_stat_t;
   4995 
   4996 
   4997 /*
   4998  * Register: PeuIntrMask
   4999  * Parity Error Status Mask
   5000  * Description: Masks for interrupt generation for block and parity
   5001  * error in the PEU RAMs For the VNM errors (spc, tdc, rdc, pfc, &
   5002  * vmac), note that the interrupt message to the host will be delayed
   5003  * from the actual moment that the error is detected until the host
   5004  * does a PIO access and this mask is cleared.
   5005  *
   5006  * Fields:
   5007  *     1: Mask interrupt generation for access error from SPROM
   5008  *     Controller
   5009  *     1: Mask interrupt generation for PIO access error from TDC
   5010  *     1: Mask interrupt generation for PIO access error from RDC
   5011  *     1: Mask interrupt generation for PIO access error from PFC
   5012  *     1: Mask interrupt generation for PIO access error from VMAC
   5013  *     1: Mask interrupt generation for parity error from Completion
   5014  *     Header Q memory
   5015  *     1: Mask interrupt generation for parity error from Completion
   5016  *     Data Q memory
   5017  *     1: Mask interrupt generation for parity error from Retry
   5018  *     memory
   5019  *     1: Mask interrupt generation for parity error from Retry SOT
   5020  *     memory
   5021  *     1: Mask interrupt generation for parity error from Posted
   5022  *     Header Q memory
   5023  *     1: Mask interrupt generation for parity error from Posted Data
   5024  *     Q memory
   5025  *     1: Mask interrupt generation for parity error from Non-Posted
   5026  *     Header Q memory
   5027  *     1: Mask interrupt generation for parity error from Non-Posted
   5028  *     Data Q memory
   5029  *     1: Mask interrupt generation for parity error from MSIX memory
   5030  *     1: Mask interrupt generation for parity error from HCR memory
   5031  */
   5032 typedef union {
   5033 	uint32_t value;
   5034 	struct {
   5035 #if defined(_BIG_ENDIAN)
   5036 		uint32_t	rsrvd:11;
   5037 		uint32_t	spc_acc_err_mask:1;
   5038 		uint32_t	tdc_pioacc_err_mask:1;
   5039 		uint32_t	rdc_pioacc_err_mask:1;
   5040 		uint32_t	pfc_pioacc_err_mask:1;
   5041 		uint32_t	vmac_pioacc_err_mask:1;
   5042 		uint32_t	rsrvd1:6;
   5043 		uint32_t	cpl_hdrq_parerr_mask:1;
   5044 		uint32_t	cpl_dataq_parerr_mask:1;
   5045 		uint32_t	retryram_xdlh_parerr_mask:1;
   5046 		uint32_t	retrysotram_xdlh_parerr_mask:1;
   5047 		uint32_t	p_hdrq_parerr_mask:1;
   5048 		uint32_t	p_dataq_parerr_mask:1;
   5049 		uint32_t	np_hdrq_parerr_mask:1;
   5050 		uint32_t	np_dataq_parerr_mask:1;
   5051 		uint32_t	eic_msix_parerr_mask:1;
   5052 		uint32_t	hcr_parerr_mask:1;
   5053 #else
   5054 		uint32_t	hcr_parerr_mask:1;
   5055 		uint32_t	eic_msix_parerr_mask:1;
   5056 		uint32_t	np_dataq_parerr_mask:1;
   5057 		uint32_t	np_hdrq_parerr_mask:1;
   5058 		uint32_t	p_dataq_parerr_mask:1;
   5059 		uint32_t	p_hdrq_parerr_mask:1;
   5060 		uint32_t	retrysotram_xdlh_parerr_mask:1;
   5061 		uint32_t	retryram_xdlh_parerr_mask:1;
   5062 		uint32_t	cpl_dataq_parerr_mask:1;
   5063 		uint32_t	cpl_hdrq_parerr_mask:1;
   5064 		uint32_t	rsrvd1:6;
   5065 		uint32_t	vmac_pioacc_err_mask:1;
   5066 		uint32_t	pfc_pioacc_err_mask:1;
   5067 		uint32_t	rdc_pioacc_err_mask:1;
   5068 		uint32_t	tdc_pioacc_err_mask:1;
   5069 		uint32_t	spc_acc_err_mask:1;
   5070 		uint32_t	rsrvd:11;
   5071 #endif
   5072 	} bits;
   5073 } peu_intr_mask_t;
   5074 
   5075 
   5076 /*
   5077  * Register: PeuIntrStatMirror
   5078  * Parity Error Status Mirror
   5079  * Description: Mirror bits for Parity error generation in the PEU
   5080  * RAMs When set, the corresponding parity error is generated ; this
   5081  * will cause an interrupt to occur if the respective mask bit is not
   5082  * set. As the mirror of the Parity Error Status Register, clearing
   5083  * of the status bits is controlled by how the Parity Error Status
   5084  * Register is cleared. These bits cannot be cleared by writing 0 to
   5085  * this register.
   5086  *
   5087  * Fields:
   5088  */
   5089 typedef union {
   5090 	uint32_t value;
   5091 	struct {
   5092 #if defined(_BIG_ENDIAN)
   5093 		uint32_t	rsrvd:11;
   5094 		uint32_t	spc_acc_err_mirror:1;
   5095 		uint32_t	tdc_pioacc_err_mirror:1;
   5096 		uint32_t	rdc_pioacc_err_mirror:1;
   5097 		uint32_t	pfc_pioacc_err_mirror:1;
   5098 		uint32_t	vmac_pioacc_err_mirror:1;
   5099 		uint32_t	rsrvd1:6;
   5100 		uint32_t	cpl_hdrq_parerr_mirror:1;
   5101 		uint32_t	cpl_dataq_parerr_mirror:1;
   5102 		uint32_t	retryram_xdlh_parerr_mirror:1;
   5103 		uint32_t	retrysotram_xdlh_parerr_mirror:1;
   5104 		uint32_t	p_hdrq_parerr_mirror:1;
   5105 		uint32_t	p_dataq_parerr_mirror:1;
   5106 		uint32_t	np_hdrq_parerr_mirror:1;
   5107 		uint32_t	np_dataq_parerr_mirror:1;
   5108 		uint32_t	eic_msix_parerr_mirror:1;
   5109 		uint32_t	hcr_parerr_mirror:1;
   5110 #else
   5111 		uint32_t	hcr_parerr_mirror:1;
   5112 		uint32_t	eic_msix_parerr_mirror:1;
   5113 		uint32_t	np_dataq_parerr_mirror:1;
   5114 		uint32_t	np_hdrq_parerr_mirror:1;
   5115 		uint32_t	p_dataq_parerr_mirror:1;
   5116 		uint32_t	p_hdrq_parerr_mirror:1;
   5117 		uint32_t	retrysotram_xdlh_parerr_mirror:1;
   5118 		uint32_t	retryram_xdlh_parerr_mirror:1;
   5119 		uint32_t	cpl_dataq_parerr_mirror:1;
   5120 		uint32_t	cpl_hdrq_parerr_mirror:1;
   5121 		uint32_t	rsrvd1:6;
   5122 		uint32_t	vmac_pioacc_err_mirror:1;
   5123 		uint32_t	pfc_pioacc_err_mirror:1;
   5124 		uint32_t	rdc_pioacc_err_mirror:1;
   5125 		uint32_t	tdc_pioacc_err_mirror:1;
   5126 		uint32_t	spc_acc_err_mirror:1;
   5127 		uint32_t	rsrvd:11;
   5128 #endif
   5129 	} bits;
   5130 } peu_intr_stat_mirror_t;
   5131 
   5132 
   5133 /*
   5134  * Register: CplHdrqPerrLoc
   5135  * Completion Header Queue Parity Error Location
   5136  * Description: Returns the location of the first parity error
   5137  * detected in Completion Header Q
   5138  *
   5139  * Fields:
   5140  */
   5141 typedef union {
   5142 	uint32_t value;
   5143 	struct {
   5144 #if defined(_BIG_ENDIAN)
   5145 		uint32_t	rsrvd:16;
   5146 		uint32_t	cpl_hdrq_parerr_loc:16;
   5147 #else
   5148 		uint32_t	cpl_hdrq_parerr_loc:16;
   5149 		uint32_t	rsrvd:16;
   5150 #endif
   5151 	} bits;
   5152 } cpl_hdrq_perr_loc_t;
   5153 
   5154 
   5155 /*
   5156  * Register: CplDataqPerrLoc
   5157  * Completion Data Queue Parity Error Location
   5158  * Description: Returns the location of the first parity error
   5159  * detected in Completion Data Q
   5160  *
   5161  * Fields:
   5162  */
   5163 typedef union {
   5164 	uint32_t value;
   5165 	struct {
   5166 #if defined(_BIG_ENDIAN)
   5167 		uint32_t	rsrvd:16;
   5168 		uint32_t	cpl_dataq_parerr_loc:16;
   5169 #else
   5170 		uint32_t	cpl_dataq_parerr_loc:16;
   5171 		uint32_t	rsrvd:16;
   5172 #endif
   5173 	} bits;
   5174 } cpl_dataq_perr_loc_t;
   5175 
   5176 
   5177 /*
   5178  * Register: RetrPerrLoc
   5179  * Retry RAM Parity Error Location
   5180  * Description: Returns the location of the first parity error
   5181  * detected in Retry RAM
   5182  *
   5183  * Fields:
   5184  */
   5185 typedef union {
   5186 	uint32_t value;
   5187 	struct {
   5188 #if defined(_BIG_ENDIAN)
   5189 		uint32_t	rsrvd:16;
   5190 		uint32_t	retr_parerr_loc:16;
   5191 #else
   5192 		uint32_t	retr_parerr_loc:16;
   5193 		uint32_t	rsrvd:16;
   5194 #endif
   5195 	} bits;
   5196 } retr_perr_loc_t;
   5197 
   5198 
   5199 /*
   5200  * Register: RetrSotPerrLoc
   5201  * Retry SOT RAM Parity Error Location
   5202  * Description: Returns the location of the first parity error
   5203  * detected in Retry RAM SOT
   5204  *
   5205  * Fields:
   5206  */
   5207 typedef union {
   5208 	uint32_t value;
   5209 	struct {
   5210 #if defined(_BIG_ENDIAN)
   5211 		uint32_t	rsrvd:16;
   5212 		uint32_t	retr_sot_parerr_loc:16;
   5213 #else
   5214 		uint32_t	retr_sot_parerr_loc:16;
   5215 		uint32_t	rsrvd:16;
   5216 #endif
   5217 	} bits;
   5218 } retr_sot_perr_loc_t;
   5219 
   5220 
   5221 /*
   5222  * Register: PHdrqPerrLoc
   5223  * Posted Header Queue Parity Error Location
   5224  * Description: Returns the location of the first parity error
   5225  * detected in Posted Header Q
   5226  *
   5227  * Fields:
   5228  */
   5229 typedef union {
   5230 	uint32_t value;
   5231 	struct {
   5232 #if defined(_BIG_ENDIAN)
   5233 		uint32_t	rsrvd:16;
   5234 		uint32_t	p_hdrq_parerr_loc:16;
   5235 #else
   5236 		uint32_t	p_hdrq_parerr_loc:16;
   5237 		uint32_t	rsrvd:16;
   5238 #endif
   5239 	} bits;
   5240 } p_hdrq_perr_loc_t;
   5241 
   5242 
   5243 /*
   5244  * Register: PDataqPerrLoc
   5245  * Posted Data Queue Parity Error Location
   5246  * Description: Returns the location of the first parity error
   5247  * detected in Posted Data Q
   5248  *
   5249  * Fields:
   5250  */
   5251 typedef union {
   5252 	uint32_t value;
   5253 	struct {
   5254 #if defined(_BIG_ENDIAN)
   5255 		uint32_t	rsrvd:16;
   5256 		uint32_t	p_dataq_parerr_loc:16;
   5257 #else
   5258 		uint32_t	p_dataq_parerr_loc:16;
   5259 		uint32_t	rsrvd:16;
   5260 #endif
   5261 	} bits;
   5262 } p_dataq_perr_loc_t;
   5263 
   5264 
   5265 /*
   5266  * Register: NpHdrqPerrLoc
   5267  * Non-Posted Header Queue Parity Error Location
   5268  * Description: Returns the location of the first parity error
   5269  * detected in Non-Posted Header Q
   5270  *
   5271  * Fields:
   5272  */
   5273 typedef union {
   5274 	uint32_t value;
   5275 	struct {
   5276 #if defined(_BIG_ENDIAN)
   5277 		uint32_t	rsrvd:16;
   5278 		uint32_t	np_hdrq_parerr_loc:16;
   5279 #else
   5280 		uint32_t	np_hdrq_parerr_loc:16;
   5281 		uint32_t	rsrvd:16;
   5282 #endif
   5283 	} bits;
   5284 } np_hdrq_perr_loc_t;
   5285 
   5286 
   5287 /*
   5288  * Register: NpDataqPerrLoc
   5289  * Non-Posted Data Queue Parity Error Location
   5290  * Description: Returns the location of the first parity error
   5291  * detected in Non-Posted Data Q
   5292  *
   5293  * Fields:
   5294  */
   5295 typedef union {
   5296 	uint32_t value;
   5297 	struct {
   5298 #if defined(_BIG_ENDIAN)
   5299 		uint32_t	rsrvd:16;
   5300 		uint32_t	np_dataq_parerr_loc:16;
   5301 #else
   5302 		uint32_t	np_dataq_parerr_loc:16;
   5303 		uint32_t	rsrvd:16;
   5304 #endif
   5305 	} bits;
   5306 } np_dataq_perr_loc_t;
   5307 
   5308 
   5309 /*
   5310  * Register: MsixPerrLoc
   5311  * MSIX Parity Error Location
   5312  * Description: Returns the location of the first parity error
   5313  * detected in MSIX memory
   5314  *
   5315  * Fields:
   5316  */
   5317 typedef union {
   5318 	uint32_t value;
   5319 	struct {
   5320 #if defined(_BIG_ENDIAN)
   5321 		uint32_t	rsrvd:16;
   5322 		uint32_t	eic_msix_parerr_loc:16;
   5323 #else
   5324 		uint32_t	eic_msix_parerr_loc:16;
   5325 		uint32_t	rsrvd:16;
   5326 #endif
   5327 	} bits;
   5328 } msix_perr_loc_t;
   5329 
   5330 
   5331 /*
   5332  * Register: HcrPerrLoc
   5333  * HCR Memory Parity Error Location
   5334  * Description: Returns the location of the first parity error
   5335  * detected in HCR Memory
   5336  *
   5337  * Fields:
   5338  */
   5339 typedef union {
   5340 	uint32_t value;
   5341 	struct {
   5342 #if defined(_BIG_ENDIAN)
   5343 		uint32_t	rsrvd:16;
   5344 		uint32_t	hcr_parerr_loc:16;
   5345 #else
   5346 		uint32_t	hcr_parerr_loc:16;
   5347 		uint32_t	rsrvd:16;
   5348 #endif
   5349 	} bits;
   5350 } hcr_perr_loc_t;
   5351 
   5352 
   5353 /*
   5354  * Register: TdcPioaccErrLog
   5355  * TDC PIO Access Error Location
   5356  * Description: Returns the location of the first transaction
   5357  * location that resulted in error
   5358  *
   5359  * Fields:
   5360  *     Type of access error 0 : Block returned error condition 1 :
   5361  *     Transaction resulted in time out by CIP
   5362  *     Transaction Location that resulted in error
   5363  */
   5364 typedef union {
   5365 	uint32_t value;
   5366 	struct {
   5367 #if defined(_BIG_ENDIAN)
   5368 		uint32_t	rsrvd:11;
   5369 		uint32_t	tdc_pioacc_err_type:1;
   5370 		uint32_t	tdc_pioacc_err_loc:20;
   5371 #else
   5372 		uint32_t	tdc_pioacc_err_loc:20;
   5373 		uint32_t	tdc_pioacc_err_type:1;
   5374 		uint32_t	rsrvd:11;
   5375 #endif
   5376 	} bits;
   5377 } tdc_pioacc_err_log_t;
   5378 
   5379 
   5380 /*
   5381  * Register: RdcPioaccErrLog
   5382  * RDC PIO Access Error Location
   5383  * Description: Returns the location of the first transaction
   5384  * location that resulted in error
   5385  *
   5386  * Fields:
   5387  *     Type of access error 0 : Block returned error condition 1 :
   5388  *     Transaction resulted in time out by CIP
   5389  *     Transaction Location that resulted in error
   5390  */
   5391 typedef union {
   5392 	uint32_t value;
   5393 	struct {
   5394 #if defined(_BIG_ENDIAN)
   5395 		uint32_t	rsrvd:11;
   5396 		uint32_t	rdc_pioacc_err_type:1;
   5397 		uint32_t	rdc_pioacc_err_loc:20;
   5398 #else
   5399 		uint32_t	rdc_pioacc_err_loc:20;
   5400 		uint32_t	rdc_pioacc_err_type:1;
   5401 		uint32_t	rsrvd:11;
   5402 #endif
   5403 	} bits;
   5404 } rdc_pioacc_err_log_t;
   5405 
   5406 
   5407 /*
   5408  * Register: PfcPioaccErrLog
   5409  * PFC PIO Access Error Location
   5410  * Description: Returns the location of the first transaction
   5411  * location that resulted in error
   5412  *
   5413  * Fields:
   5414  *     Type of access error 0 : Block returned error condition 1 :
   5415  *     Transaction resulted in time out by CIP
   5416  *     Transaction Location that resulted in error
   5417  */
   5418 typedef union {
   5419 	uint32_t value;
   5420 	struct {
   5421 #if defined(_BIG_ENDIAN)
   5422 		uint32_t	rsrvd:11;
   5423 		uint32_t	pfc_pioacc_err_type:1;
   5424 		uint32_t	pfc_pioacc_err_loc:20;
   5425 #else
   5426 		uint32_t	pfc_pioacc_err_loc:20;
   5427 		uint32_t	pfc_pioacc_err_type:1;
   5428 		uint32_t	rsrvd:11;
   5429 #endif
   5430 	} bits;
   5431 } pfc_pioacc_err_log_t;
   5432 
   5433 
   5434 /*
   5435  * Register: VmacPioaccErrLog
   5436  * VMAC PIO Access Error Location
   5437  * Description: Returns the location of the first transaction
   5438  * location that resulted in error
   5439  *
   5440  * Fields:
   5441  *     Type of access error 0 : Block returned error condition 1 :
   5442  *     Transaction resulted in time out by CIP
   5443  *     Transaction Location that resulted in error
   5444  */
   5445 typedef union {
   5446 	uint32_t value;
   5447 	struct {
   5448 #if defined(_BIG_ENDIAN)
   5449 		uint32_t	rsrvd:11;
   5450 		uint32_t	vmac_pioacc_err_type:1;
   5451 		uint32_t	vmac_pioacc_err_loc:20;
   5452 #else
   5453 		uint32_t	vmac_pioacc_err_loc:20;
   5454 		uint32_t	vmac_pioacc_err_type:1;
   5455 		uint32_t	rsrvd:11;
   5456 #endif
   5457 	} bits;
   5458 } vmac_pioacc_err_log_t;
   5459 
   5460 
   5461 /*
   5462  * Register: LdGrpCtrl
   5463  * Logical Device Group Control
   5464  * Description: LD Group assignment
   5465  * Fields:
   5466  *     Logical device group number of this logical device
   5467  */
   5468 typedef union {
   5469 	uint32_t value;
   5470 	struct {
   5471 #if defined(_BIG_ENDIAN)
   5472 		uint32_t	rsrvd:27;
   5473 		uint32_t	num:5;
   5474 #else
   5475 		uint32_t	num:5;
   5476 		uint32_t	rsrvd:27;
   5477 #endif
   5478 	} bits;
   5479 } ld_grp_ctrl_t;
   5480 
   5481 
   5482 /*
   5483  * Register: DevErrStat
   5484  * Device Error Status
   5485  * Description: Device Error Status logs errors that cannot be
   5486  * attributed to a given dma channel. It does not duplicate errors
   5487  * already observable via specific block logical device groups.
   5488  * Device Error Status bits [31:16] feed LDSV0.devErr0 Device Error
   5489  * Status bits [15:0] feed LDSV1.devErr1
   5490  * Fields:
   5491  *     Set to 1 if Reorder Buffer/Reorder Table has a single bit
   5492  *     ecc/parity error. This error condition is asserted by TDC to
   5493  *     PEU.
   5494  *     Set to 1 if RX Ctrl or Data FIFO has a single bit ecc error.
   5495  *     This error condition is asserted by RDC to PEU.
   5496  *     Set to 1 if any of the external block accesses have resulted
   5497  *     in error or if a parity error was detected in the SPROM
   5498  *     internal ram. Refer to peuIntrStat for the errors that
   5499  *     contribute to this bit.
   5500  *     Set to 1 if Reorder Buffer/Reorder Table has a double bit
   5501  *     ecc/parity error. This error condition is asserted by TDC to
   5502  *     PEU.
   5503  *     Set to 1 if RX Ctrl or Data FIFO has a double bit ecc error.
   5504  *     This error condition is asserted by RDC to PEU.
   5505  *     Set to 1 if any PEU ram (MSI-X, retrybuf/sot, p/np/cpl queues)
   5506  *     has a parity error Refer to peuIntrStat for the errors that
   5507  *     contribute to this bit.
   5508  */
   5509 typedef union {
   5510 	uint32_t value;
   5511 	struct {
   5512 #if defined(_BIG_ENDIAN)
   5513 		uint32_t	rsrvd:13;
   5514 		uint32_t	tdc_err0:1;
   5515 		uint32_t	rdc_err0:1;
   5516 		uint32_t	rsrvd1:1;
   5517 		uint32_t	rsrvd2:12;
   5518 		uint32_t	vnm_pio_err1:1;
   5519 		uint32_t	tdc_err1:1;
   5520 		uint32_t	rdc_err1:1;
   5521 		uint32_t	peu_err1:1;
   5522 #else
   5523 		uint32_t	peu_err1:1;
   5524 		uint32_t	rdc_err1:1;
   5525 		uint32_t	tdc_err1:1;
   5526 		uint32_t	vnm_pio_err1:1;
   5527 		uint32_t	rsrvd2:12;
   5528 		uint32_t	rsrvd1:1;
   5529 		uint32_t	rdc_err0:1;
   5530 		uint32_t	tdc_err0:1;
   5531 		uint32_t	rsrvd:13;
   5532 #endif
   5533 	} bits;
   5534 } dev_err_stat_t;
   5535 
   5536 
   5537 /*
   5538  * Register: DevErrMask
   5539  * Device Error Mask
   5540  * Description: Device Error Mask (gates devErrStat)
   5541  * Fields:
   5542  *     Mask for TDC error0
   5543  *     Mask for RDC error0
   5544  *     Mask for VNM PIO Access error
   5545  *     Mask for TDC error1
   5546  *     Mask for RDC error1
   5547  *     Mask for PEU memories parity error
   5548  */
   5549 typedef union {
   5550 	uint32_t value;
   5551 	struct {
   5552 #if defined(_BIG_ENDIAN)
   5553 		uint32_t	rsrvd:13;
   5554 		uint32_t	tdc_mask0:1;
   5555 		uint32_t	rdc_mask0:1;
   5556 		uint32_t	rsrvd1:1;
   5557 		uint32_t	rsrvd2:12;
   5558 		uint32_t	vnm_pio_mask1:1;
   5559 		uint32_t	tdc_mask1:1;
   5560 		uint32_t	rdc_mask1:1;
   5561 		uint32_t	peu_mask1:1;
   5562 #else
   5563 		uint32_t	peu_mask1:1;
   5564 		uint32_t	rdc_mask1:1;
   5565 		uint32_t	tdc_mask1:1;
   5566 		uint32_t	vnm_pio_mask1:1;
   5567 		uint32_t	rsrvd2:12;
   5568 		uint32_t	rsrvd1:1;
   5569 		uint32_t	rdc_mask0:1;
   5570 		uint32_t	tdc_mask0:1;
   5571 		uint32_t	rsrvd:13;
   5572 #endif
   5573 	} bits;
   5574 } dev_err_mask_t;
   5575 
   5576 
   5577 /*
   5578  * Register: LdIntrTimRes
   5579  * Logical Device Interrupt Timer Resolution
   5580  * Description: Logical Device Interrupt Timer Resolution
   5581  * Fields:
   5582  *     Timer resolution in 250 MHz cycles
   5583  */
   5584 typedef union {
   5585 	uint32_t value;
   5586 	struct {
   5587 #if defined(_BIG_ENDIAN)
   5588 		uint32_t	rsrvd:12;
   5589 		uint32_t	res:20;
   5590 #else
   5591 		uint32_t	res:20;
   5592 		uint32_t	rsrvd:12;
   5593 #endif
   5594 	} bits;
   5595 } ld_intr_tim_res_t;
   5596 
   5597 
   5598 /*
   5599  * Register: LDSV0
   5600  * Logical Device State Vector 0
   5601  * Description: Logical Device State Vector 0
   5602  * Fields:
   5603  *     Interrupt from mail box3 to HOST
   5604  *     Interrupt from mail box2 to HOST
   5605  *     Interrupt from mail box1 to HOST
   5606  *     Interrupt from mail box0 to HOST
   5607  *     Flag0 bits for Network MAC
   5608  *     Flag0 bits for Virtual MAC
   5609  *     Flag0 bits for Tx DMA channels 3-0
   5610  *     Flag0 bits for Rx DMA channels 3-0
   5611  */
   5612 typedef union {
   5613 	uint32_t value;
   5614 	struct {
   5615 #if defined(_BIG_ENDIAN)
   5616 		uint32_t	dev_err0:1;
   5617 		uint32_t	rsrvd:7;
   5618 		uint32_t	mbox3_irq:1;
   5619 		uint32_t	mbox2_irq:1;
   5620 		uint32_t	mbox1_irq:1;
   5621 		uint32_t	mbox0_irq:1;
   5622 		uint32_t	rsrvd1:1;
   5623 		uint32_t	nmac_f0:1;
   5624 		uint32_t	pfc_f0:1;
   5625 		uint32_t	vmac_f0:1;
   5626 		uint32_t	rsrvd2:4;
   5627 		uint32_t	tdc_f0:4;
   5628 		uint32_t	rsrvd3:4;
   5629 		uint32_t	rdc_f0:4;
   5630 #else
   5631 		uint32_t	rdc_f0:4;
   5632 		uint32_t	rsrvd3:4;
   5633 		uint32_t	tdc_f0:4;
   5634 		uint32_t	rsrvd2:4;
   5635 		uint32_t	vmac_f0:1;
   5636 		uint32_t	pfc_f0:1;
   5637 		uint32_t	nmac_f0:1;
   5638 		uint32_t	rsrvd1:1;
   5639 		uint32_t	mbox0_irq:1;
   5640 		uint32_t	mbox1_irq:1;
   5641 		uint32_t	mbox2_irq:1;
   5642 		uint32_t	mbox3_irq:1;
   5643 		uint32_t	rsrvd:7;
   5644 		uint32_t	dev_err0:1;
   5645 #endif
   5646 	} bits;
   5647 } ldsv0_t;
   5648 
   5649 
   5650 /*
   5651  * Register: LDSV1
   5652  * Logical Device State Vector 1
   5653  * Description: Logical Device State Vector 1
   5654  * Fields:
   5655  *     Flag1 bits for Network MAC
   5656  *     Flag1 bits for Tx DMA channels 3-0
   5657  *     Flag1 bits for Rx DMA channels 3-0
   5658  */
   5659 typedef union {
   5660 	uint32_t value;
   5661 	struct {
   5662 #if defined(_BIG_ENDIAN)
   5663 		uint32_t	dev_err1:1;
   5664 		uint32_t	rsrvd:7;
   5665 		uint32_t	rsrvd1:5;
   5666 		uint32_t	nmac_f1:1;
   5667 		uint32_t	rsrvd2:1;
   5668 		uint32_t	rsrvd3:1;
   5669 		uint32_t	rsrvd4:4;
   5670 		uint32_t	tdc_f1:4;
   5671 		uint32_t	rsrvd5:4;
   5672 		uint32_t	rdc_f1:4;
   5673 #else
   5674 		uint32_t	rdc_f1:4;
   5675 		uint32_t	rsrvd5:4;
   5676 		uint32_t	tdc_f1:4;
   5677 		uint32_t	rsrvd4:4;
   5678 		uint32_t	rsrvd3:1;
   5679 		uint32_t	rsrvd2:1;
   5680 		uint32_t	nmac_f1:1;
   5681 		uint32_t	rsrvd1:5;
   5682 		uint32_t	rsrvd:7;
   5683 		uint32_t	dev_err1:1;
   5684 #endif
   5685 	} bits;
   5686 } ldsv1_t;
   5687 
   5688 
   5689 /*
   5690  * Register: LdIntrMask
   5691  * Logical Device Interrupt Mask
   5692  * Description: Logical Device Interrupt Mask
   5693  * Fields:
   5694  *     Flag1 mask for logical device N (0-31)
   5695  *     Flag0 mask for logical device N (0-31)
   5696  */
   5697 typedef union {
   5698 	uint32_t value;
   5699 	struct {
   5700 #if defined(_BIG_ENDIAN)
   5701 		uint32_t	rsrvd:30;
   5702 		uint32_t	ldf1_mask:1;
   5703 		uint32_t	ldf0_mask:1;
   5704 #else
   5705 		uint32_t	ldf0_mask:1;
   5706 		uint32_t	ldf1_mask:1;
   5707 		uint32_t	rsrvd:30;
   5708 #endif
   5709 	} bits;
   5710 } ld_intr_mask_t;
   5711 
   5712 
   5713 /*
   5714  * Register: LdIntrMgmt
   5715  * Logical Device Interrupt Management
   5716  * Description: Logical Device Interrupt Management
   5717  * Fields:
   5718  *     SW arms the logical device for interrupt. Cleared by HW after
   5719  *     interrupt issued. (1 = arm)
   5720  *     Timer set by SW. Hardware counts down.
   5721  */
   5722 typedef union {
   5723 	uint32_t value;
   5724 	struct {
   5725 #if defined(_BIG_ENDIAN)
   5726 		uint32_t	arm:1;
   5727 		uint32_t	rsrvd:25;
   5728 		uint32_t	timer:6;
   5729 #else
   5730 		uint32_t	timer:6;
   5731 		uint32_t	rsrvd:25;
   5732 		uint32_t	arm:1;
   5733 #endif
   5734 	} bits;
   5735 } ld_intr_mgmt_t;
   5736 
   5737 
   5738 /*
   5739  * Register: SID
   5740  * System Interrupt Data
   5741  * Description: System Interrupt Data (MSI Vectors)
   5742  * Fields:
   5743  *     Data sent along with the interrupt
   5744  */
   5745 typedef union {
   5746 	uint32_t value;
   5747 	struct {
   5748 #if defined(_BIG_ENDIAN)
   5749 		uint32_t	rsrvd:27;
   5750 		uint32_t	data:5;
   5751 #else
   5752 		uint32_t	data:5;
   5753 		uint32_t	rsrvd:27;
   5754 #endif
   5755 	} bits;
   5756 } sid_t;
   5757 
   5758 
   5759 #ifdef	__cplusplus
   5760 }
   5761 #endif
   5762 
   5763 #endif	/* _HXGE_PEU_HW_H */
   5764