Home | History | Annotate | Line # | Download | only in rmi
rmixlreg.h revision 1.1.2.21
      1 /*	rmixlreg.h,v 1.1.2.20 2012/01/19 08:06:54 matt Exp	*/
      2 
      3 /*-
      4  * Copyright (c) 2009 The NetBSD Foundation, Inc.
      5  * All rights reserved.
      6  *
      7  * This code is derived from software contributed to The NetBSD Foundation
      8  * by Cliff Neighbors
      9  *
     10  * Redistribution and use in source and binary forms, with or without
     11  * modification, are permitted provided that the following conditions
     12  * are met:
     13  * 1. Redistributions of source code must retain the above copyright
     14  *    notice, this list of conditions and the following disclaimer.
     15  * 2. Redistributions in binary form must reproduce the above copyright
     16  *    notice, this list of conditions and the following disclaimer in the
     17  *    documentation and/or other materials provided with the distribution.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  * POSSIBILITY OF SUCH DAMAGE.
     30  */
     31 
     32 
     33 #ifndef _MIPS_RMI_RMIXLREG_H_
     34 #define _MIPS_RMI_RMIXLREG_H_
     35 
     36 #include <sys/endian.h>
     37 
     38 /*
     39  * on chip I/O register byte order is
     40  * BIG ENDIAN regardless of code model
     41  */
     42 #define RMIXL_IOREG_VADDR(o)				\
     43 	(volatile uint32_t *)MIPS_PHYS_TO_KSEG1(	\
     44 		rmixl_configuration.rc_io.r_pbase + (o))
     45 #define RMIXL_IOREG_READ(o)     be32toh(*RMIXL_IOREG_VADDR(o))
     46 #define RMIXL_IOREG_WRITE(o,v)  *RMIXL_IOREG_VADDR(o) = htobe32(v)
     47 
     48 
     49 /*
     50  * RMIXL Coprocessor 2 registers:
     51  */
     52 #ifdef _LOCORE
     53 #define _(n)    __CONCAT($,n)
     54 #else
     55 #define _(n)    n
     56 #endif
     57 /*
     58  * Note CP2 FMN register scope or "context"
     59  *	L   : Local		: per thread register
     60  *	G   : Global       	: per FMN Station (per core) register
     61  *	L/G : "partly global"	: ???
     62  * Global regs should be managed by a single thread
     63  * (see XLS PRM "Coprocessor 2 Register Summary")
     64  */
     65 					/*		context ---------------+	*/
     66 					/*		#sels --------------+  |	*/
     67 					/*		#regs -----------+  |  |	*/
     68 					/* What:	#bits --+	 |  |  |	*/
     69 					/*			v	 v  v  v	*/
     70 #define RMIXL_COP_2_TXBUF	_(0)	/* Transmit Buffers	64	[1][4] L	*/
     71 #define RMIXL_COP_2_RXBUF	_(1)	/* Receive Buffers	64	[1][4] L	*/
     72 #define RMIXL_COP_2_MSG_STS	_(2)	/* Mesage Status	32	[1][2] L/G	*/
     73 #define RMIXL_COP_2_MSG_CFG	_(3)	/* Message Config	32	[1][2] G	*/
     74 #define RMIXL_COP_2_MSG_BSZ	_(4)	/* Message Bucket Size	32	[1][8] G	*/
     75 #define RMIXL_COP_2_CREDITS	_(16)	/* Credit Counters	 8     [16][8] G	*/
     76 
     77 #define	RMIXLP_COP_2_MSG_TX_STS	_(2)	/* Tx Mesage Status	32	[1][1] L	*/
     78 #define	RMIXLP_COP_2_MSG_RX_STS	_(3)	/* Rx Mesage Status	32	[1][1] L	*/
     79 #define	RMIXLP_COP_2_MSG_STS1	_(4)	/* Mesage Queue Status	32	[1][1] G	*/
     80 #define	RMIXLP_COP_2_MSG_CFG	_(5)	/* Mesage Intr Config	32	[1][1] L	*/
     81 #define	RMIXLP_COP_2_MSG_ERR	_(6)	/* Mesage Error		32	[1][4] G	*/
     82 #define	RMIXLP_COP_2_CREDITS	_(9)	/* Output/Input Credits	64/32	[1][2] G	*/
     83 
     84 /*
     85  * MsgStatus: RMIXL_COP_2_MSG_STS (CP2 Reg 2, Select 0) bits
     86  */
     87 #define RMIXL_MSG_STS0_RFBE		__BITS(31,24)	/* RX FIFO Buckets bit mask
     88 							 *  0=not empty
     89 							 *  1=empty
     90 							 */
     91 #define RMIXL_MSG_STS0_RESV		__BIT(23)
     92 #define RMIXL_MSG_STS0_RMSID		__BITS(22,16)	/* Source ID */
     93 #define RMIXL_MSG_STS0_RMSC		__BITS(15,8)	/* RX Message Software Code */
     94 #define RMIXL_MSG_STS0_RMS		__BITS(7,6)	/* RX Message Size (minus 1) */
     95 #define RMIXL_MSG_STS0_LEF		__BIT(5)	/* Load Empty Fail */
     96 #define RMIXL_MSG_STS0_LPF		__BIT(4)	/* Load Pending Fail */
     97 #define RMIXL_MSG_STS0_LMP		__BIT(3)	/* Load Message Pending */
     98 #define RMIXL_MSG_STS0_SCF		__BIT(2)	/* Send Credit Fail */
     99 #define RMIXL_MSG_STS0_SPF		__BIT(1)	/* Send Pending Fail */
    100 #define RMIXL_MSG_STS0_SMP		__BIT(0)	/* Send Message Pending */
    101 #define RMIXL_MSG_STS0_ERRS	\
    102 		(RMIXL_MSG_STS0_LEF|RMIXL_MSG_STS0_LPF|RMIXL_MSG_STS0_LMP \
    103 		|RMIXL_MSG_STS0_SCF|RMIXL_MSG_STS0_SPF|RMIXL_MSG_STS0_SMP)
    104 
    105 /*
    106  * MsgStatus1: RMIXL_COP_2_MSG_STS (CP2 Reg 2, Select 1) bits
    107  */
    108 #define RMIXL_MSG_STS1_RESV		__BIT(31)
    109 #define RMIXL_MSG_STS1_C		__BIT(30)	/* Credit Overrun Error */
    110 #define RMIXL_MSG_STS1_CCFCME		__BITS(29,23)	/* Credit Counter of Free Credit Message with Error */
    111 #define RMIXL_MSG_STS1_SIDFCME		__BITS(22,16)	/* Source ID of Free Credit Message with Error */
    112 #define RMIXL_MSG_STS1_T		__BIT(15)	/* Invalid Target Error */
    113 #define RMIXL_MSG_STS1_F		__BIT(14)	/* Receive Queue "Write When Full" Error */
    114 #define RMIXL_MSG_STS1_SIDE		__BITS(13,7)	/* Source ID of incoming msg with Error */
    115 #define RMIXL_MSG_STS1_DIDE		__BITS(6,0)	/* Destination ID of the incoming message Message with Error */
    116 #define RMIXL_MSG_STS1_ERRS	\
    117 		(RMIXL_MSG_STS1_C|RMIXL_MSG_STS1_T|RMIXL_MSG_STS1_F)
    118 
    119 /*
    120  * MsgConfig: RMIXL_COP_2_MSG_CFG (CP2 Reg 3, Select 0) bits
    121  */
    122 #define RMIXL_MSG_CFG0_WM		__BITS(31,24)	/* Watermark level */
    123 #define RMIXL_MSG_CFG0_RESa		__BITS(23,22)
    124 #define RMIXL_MSG_CFG0_IV		__BITS(21,16)	/* Interrupt Vector */
    125 #define RMIXL_MSG_CFG0_RESb		__BITS(15,12)
    126 #define RMIXL_MSG_CFG0_ITM		__BITS(11,8)	/* Interrupt Thread Mask */
    127 #define RMIXL_MSG_CFG0_RESc		__BITS(7,2)
    128 #define RMIXL_MSG_CFG0_WIE		__BIT(1)	/* Watermark Interrupt Enable */
    129 #define RMIXL_MSG_CFG0_EIE		__BIT(0)	/* Receive Queue Not Empty Enable */
    130 #define RMIXL_MSG_CFG0_RESV	\
    131 		(RMIXL_MSG_CFG0_RESa|RMIXL_MSG_CFG0_RESb|RMIXL_MSG_CFG0_RESc)
    132 
    133 /*
    134  * MsgConfig1: RMIXL_COP_2_MSG_CFG (CP2 Reg 3, Select 1) bits
    135  * Note: reg width is 64 bits in PRM reg description, but 32 bits in reg summary
    136  */
    137 #define RMIXL_MSG_CFG1_RESV		__BITS(63,3)
    138 #define RMIXL_MSG_CFG1_T		__BIT(2)	/* Trace Mode Enable */
    139 #define RMIXL_MSG_CFG1_C		__BIT(1)	/* Credit Over-run Interrupt Enable */
    140 #define RMIXL_MSG_CFG1_M		__BIT(0)	/* Messaging Errors Interrupt Enable */
    141 
    142 
    143 /*
    144  * MsgBucketSize: RMIXL_COP_2_MSG_BSZ (CP2 Reg 4, Select [0..7]) bits
    145  * Note: reg width is 64 bits in PRM reg description, but 32 bits in reg summary
    146  * Size:
    147  * - 0 means bucket disabled, else
    148  * - must be power of 2
    149  * - must be >=4
    150  */
    151 #define RMIXL_MSG_BSZ_RESV		__BITS(63,8)
    152 #define RMIXL_MSG_BSZ_SIZE		__BITS(7,0)
    153 
    154 /*
    155  * RMIXLP COP0 Registers
    156  */
    157 #define	RMIXLP_MSG_TX_STS_TQF		__BIT(24)	// Transmit Queue Full
    158 #define	RMIXLP_MSG_TX_STS_DCF		__BITS(19,4)	// Destination Flow Control Count
    159 #define	RMIXLP_MSG_TX_STS_DFCF		__BIT(3)	// ECC error during OQ credit read
    160 #define	RMIXLP_MSG_TX_STS_PS		__BIT(2)	// Failed for Pending Synchronization
    161 #define	RMIXLP_MSG_TX_STS_IQC		__BIT(1)	// Insufficient input queue credits
    162 #define	RMIXLP_MSG_TX_STS_OQC		__BIT(0)	// Insufficient output queue credits
    163 
    164 #define RMIXLP_MSG_RX_STS_RXQVCE	__BITS(31,28)	// Receive Queue VC[0-3] Empty.
    165 #define RMIXLP_MSG_RX_STS_RXQVC3E	__BIT(31)	// Receive Queue VC[3] Empty.
    166 #define RMIXLP_MSG_RX_STS_RXQVC2E	__BIT(30)	// Receive Queue VC[2] Empty.
    167 #define RMIXLP_MSG_RX_STS_RXQVC1E	__BIT(29)	// Receive Queue VC[1] Empty.
    168 #define RMIXLP_MSG_RX_STS_RXQVC0E	__BIT(28)	// Receive Queue VC[0] Empty.
    169 #define RMIXLP_MSG_RX_STS_SM1		__BITS(27,26)	// Receive message Size (DW) Minus 1
    170 #define RMIXLP_MSG_RX_STS_SC		__BITS(25,18)	// Software Code sent by the MSGSND
    171 #define RMIXLP_MSG_RX_STS_MLFE		__BIT(17)	// MSGLD ECC fatal error
    172 #define RMIXLP_MSG_RX_STS_SID		__BITS(15,4)	// Source ID of the sending station.
    173 #define RMIXLP_MSG_RX_STS_PRF		__BIT(1)	// 1: MSGLD Pop Request Failure
    174 #define RMIXLP_MSG_RX_STS_LMEF		__BIT(0)	// 1: MSGLD Fail
    175 
    176 #define	RMIXLP_MSG_STS1_VCE		__BITS(27,24)	// VCE[3:0] indicates the active status of VC[3:0], where a bit set to 1 indicates the corresponding VC is empty.
    177 #define	RMIXLP_MSG_STS1_RWF		__BIT(23)	// CPU Receive Queue Written when Full (if set to 1).
    178 #define	RMIXLP_MSG_STS1_ICO		__BIT(22)	// FMN Input Credit Overflow hardware error. Message source queue ID unusable.
    179 #define	RMIXLP_MSG_STS1_OCO		__BIT(21)	// FMN Output Credit Overflow hardware error. Message destination queue ID unusable.
    180 #define	RMIXLP_MSG_STS1_ME		__BIT(20)	// 1: Message Error
    181 #define	RMIXLP_MSG_STS1_VC_PEND		__BITS(19,16)	// Interrupt pending for vectors 0 to 3 on a thread. Once the message is asserted, a bit corresponding to the VC is cleared by hardware. Software must set this bit once the message is handled; else no further interrupts would be generated for this VC.
    182 #define	RMIXLP_MSG_STS1_MSGSTA		__BIT(12)	// During the output queue credit return process, if a single or multi bit ECC error happens in the COP2 RAM, then COP2 sets the MSGSTA bit of each thread. Msgsnd from any thread will check respective MSGSTA and it fails the msgsnd if it is set to 1. The MSGSTA bit of each thread must be cleared by a system reset or MTC2 instruction before the next msgsnd successfully executes.
    183 #define	RMIXLP_MSG_STS1_OQID		__BITS(11,0)	// Output Queue ID that caused the OCO field to be set.
    184 
    185 #define	RMIXLP_MSG_CFG_INTVEC		__BITS(21,16)	// Interrupt Vector Number
    186 #define	RMIXLP_MSG_CFG_ECC_EN		__BIT(8)	// Enabled COP2 Output Queue RAM ECC
    187 #define	RMIXLP_MSG_CFG_VC3POP_EN	__BIT(4)	// 1: VC3 Pop Msg Request Mode Enable
    188 #define	RMIXLP_MSG_CFG_VC2POP_EN	__BIT(3)	// 1: VC2 Pop Msg Request Mode Enable
    189 #define	RMIXLP_MSG_CFG_VC1POP_EN	__BIT(2)	// 1: VC1 Pop Msg Request Mode Enable
    190 #define	RMIXLP_MSG_CFG_VC0POP_EN	__BIT(1)	// 1: VC0 Pop Msg Request Mode Enable
    191 #define	RMIXLP_MSG_CFG_VCPOP_EN(n)	__BIT(1+(n))	// 1: VCn Pop Msg Request Mode Enable
    192 
    193 #define	RMIXLP_MSG_IQ_CNT_STS_T3POPQ	__BITS(31,28)	// PopQ credit available for thread 3
    194 #define	RMIXLP_MSG_IQ_CNT_STS_T2POPQ	__BITS(27,24)	// PopQ credit available for thread 2
    195 #define	RMIXLP_MSG_IQ_CNT_STS_T1POPQ	__BITS(23,20)	// PopQ credit available for thread 1
    196 #define	RMIXLP_MSG_IQ_CNT_STS_T0POPQ	__BITS(19,16)	// PopQ credit available for thread 0
    197 #define	RMIXLP_MSG_IQ_CNT_STS_TPOPQ(n)	__BITS(19+4*(n),16+4*(n))
    198 #define	RMIXLP_MSG_IQ_CNT_STS_T3PUSHQ	__BITS(15,12)	// PushQ credit available for thread 3
    199 #define	RMIXLP_MSG_IQ_CNT_STS_T2PUSHQ	__BITS(11, 8)	// PushQ credit available for thread 2
    200 #define	RMIXLP_MSG_IQ_CNT_STS_T1PUSHQ	__BITS( 7, 4)	// PushQ credit available for thread 1
    201 #define	RMIXLP_MSG_IQ_CNT_STS_T0PUSHQ	__BITS( 3, 0)	// PushQ credit available for thread 0
    202 #define	RMIXLP_MSG_IQ_CNT_STS_TPUSHQ(n)	__BITS( 3+4*(n), 0+4*(n))
    203 
    204 /*
    205  * RMIXL Processor Control Register addresses
    206  * - Offset  in bits  7..0
    207  * - BlockID in bits 15..8
    208  */
    209 #define RMIXL_PCR_THREADEN			0x0000
    210 #define RMIXL_PCR_SOFTWARE_SLEEP		0x0001
    211 #define RMIXL_PCR_SCHEDULING			0x0002
    212 #define RMIXL_PCR_SCHEDULING_COUNTERS		0x0003
    213 #define RMIXL_PCR_BHRPM				0x0004
    214 #define RMIXL_PCR_IFU_DEFEATURE			0x0006
    215 #define RMIXL_PCR_ICU_DEFEATURE			0x0100
    216 #define RMIXL_PCR_ICU_ERROR_LOGGING		0x0101
    217 #define RMIXL_PCR_ICU_DEBUG_ACCESS_ADDR		0x0102
    218 #define RMIXL_PCR_ICU_DEBUG_ACCESS_DATALO	0x0103
    219 #define RMIXL_PCR_ICU_DEBUG_ACCESS_DATAHI	0x0104
    220 #define RMIXL_PCR_ICU_SAMPLING_LFSR		0x0105
    221 #define RMIXL_PCR_ICU_SAMPLING_PC		0x0106
    222 #define RMIXL_PCR_ICU_SAMPLING_SETUP		0x0107
    223 #define RMIXL_PCR_ICU_SAMPLING_TIMER		0x0108
    224 #define RMIXL_PCR_ICU_SAMPLING_PC_UPPER		0x0109
    225 #define RMIXL_PCR_IEU_DEFEATURE			0x0200
    226 #define RMIXL_PCR_TARGET_PC_REGISTER		0x0207
    227 #define RMIXL_PCR_L1D_CONFIG0			0x0300
    228 #define RMIXL_PCR_L1D_CONFIG1			0x0301
    229 #define RMIXL_PCR_L1D_CONFIG2			0x0302
    230 #define RMIXL_PCR_L1D_CONFIG3			0x0303
    231 #define RMIXL_PCR_L1D_CONFIG4			0x0304
    232 #define RMIXL_PCR_L1D_STATUS			0x0305
    233 #define RMIXL_PCR_L1D_DEFEATURE			0x0306
    234 #define RMIXL_PCR_L1D_DEBUG0			0x0307
    235 #define RMIXL_PCR_L1D_DEBUG1			0x0308
    236 #define RMIXL_PCR_L1D_CACHE_ERROR_LOG		0x0309
    237 #define RMIXL_PCR_L1D_CACHE_ERROR_OVF_LO	0x030A
    238 #define RMIXL_PCR_L1D_CACHE_INTERRUPT		0x030B
    239 #define RMIXL_PCR_MMU_SETUP			0x0400
    240 #define RMIXL_PCR_PRF_SMP_EVENT			0x0500
    241 #define RMIXL_PCR_RF_SMP_RPLY_BUF		0x0501
    242 
    243 /* PCR bit defines TBD */
    244 
    245 /* XLP Instruction Fetch Unit Registers */
    246 #define RMIXLP_PCR_IFU_THREAD_EN		0x0000
    247 #define RMIXLP_PCR_IFU_SW_SLEEP			0x0001
    248 #define RMIXLP_PCR_IFU_THREAD_SCHED_MODE	0x0002
    249 #define RMIXLP_PCR_IFU_THREAD_SCHED_COUNTER	0x0003
    250 #define RMIXLP_PCR_IFU_BHR_PROG_MASK		0x0004
    251 #define RMIXLP_PCR_IFU_SLEEP_STATE		0x0006
    252 #define RMIXLP_PCR_IFU_BRUB_RESERVE		0x0007
    253 
    254 /* XLP Instruction Cache Unit Registers */
    255 #define	RMIXLP_PCR_ICU_DEFEATURE		0x0100
    256 #define	RMIXLP_PCR_ICU_CACHE_ERR_INT		0x0101	/* RW1C */
    257 #define	RMIXLP_PCR_ICU_ERR_LOG0			0x0110
    258 #define	RMIXLP_PCR_ICU_ERR_LOG1			0x0111
    259 #define	RMIXLP_PCR_ICU_ERR_LOG2			0x0112
    260 #define	RMIXLP_PCR_ICU_ERR_INJECT0		0x0113
    261 #define	RMIXLP_PCR_ICU_ERR_INJECT1		0x0114
    262 
    263 /* XLP Load Store Unit Registers */
    264 #define	RMIXLP_PCR_LSU_CONFIG0			0x0300
    265 #define	RMIXLP_PCR_LSU_CONFIG1			0x0301
    266 #define	RMIXLP_PCR_LSU_DEFEATURE		0x0304
    267 #define	RMIXLP_PCR_LSU_DEBUG_ADDR		0x0305
    268 #define	RMIXLP_PCR_LSU_DEBUG_DATA		0x0306
    269 #define	RMIXLP_PCR_LSU_CERR_LOG0		0x0308
    270 #define	RMIXLP_PCR_LSU_CERR_LOG1		0x0309
    271 #define	RMIXLP_PCR_LSU_CERR_INJ0		0x030a
    272 #define	RMIXLP_PCR_LSU_CERR_INJ1		0x030b
    273 #define	RMIXLP_PCR_LSU_CERR_INT			0x030c
    274 
    275 #define	RMIXLP_PCR_LSE_DEFEATURE_EUL		__BIT(30)
    276 
    277 /* XLP MMU Registers */
    278 #define	RMIXLP_PCR_MMU_SETUP			0x0400
    279 #define	RMIXLP_PCR_LFSRSEED			0x0401
    280 #define	RMIXLP_PCR_HPW_NUM_PAGE_LVL		0x0410
    281 #define	RMIXLP_PCR_PGWKR_PGDBASE		0x0411
    282 #define	RMIXLP_PCR_PGWKR_PGDSHIFT		0x0412
    283 #define	RMIXLP_PCR_PGWKR_PGDMASK		0x0413
    284 #define	RMIXLP_PCR_PGWKR_PUDSHIFT		0x0414
    285 #define	RMIXLP_PCR_PGWKR_PUDMASK		0x0415
    286 #define	RMIXLP_PCR_PGWKR_PMDSHIFT		0x0416
    287 #define	RMIXLP_PCR_PGWKR_PMDMASK		0x0417
    288 #define	RMIXLP_PCR_PGWKR_PTESHIFT		0x0418
    289 #define	RMIXLP_PCR_PGWKR_PTEMASK		0x0419
    290 
    291 #define	RMIXLP_PCR_MMU_SETUP_CACHEOFF		__BIT(14)
    292 #define	RMIXLP_PCR_MMU_SETUP_HASHFUNCTIONEN	__BIT(13)
    293 #define	RMIXLP_PCR_MMU_SETUP_XLP1PTESTYLE	__BIT(4)
    294 #define	RMIXLP_PCR_MMU_SETUP_2XX_EET		__BIT(3)
    295 #define	RMIXLP_PCR_MMU_SETUP_LOCCLKGATE		__BIT(3)
    296 #define	RMIXLP_PCR_MMU_SETUP_TLB_GLOBAL		__BIT(0)
    297 #define	RMIXLP_PCR_PGWKR_PxxSHIFT_MASK		__BITS(5,0)
    298 #define	RMIXLP_PCR_PGWKR_PxxMASK_MASK		__BITS(31,0)
    299 
    300 /* XLP L2 Cache Registers */
    301 #define	RMIXLP_PCR_L2_FTR_CTL0			0x800
    302 #define	RMIXLP_PCR_L2_FTR_CTL1			0x801
    303 #define	RMIXLP_PCR_L2_CRERR_INT_VID		0x802
    304 #define	RMIXLP_PCR_L2_DIS_WAY			0x803
    305 #define	RMIXLP_PCR_L2_ERR_LOG0			0x810
    306 #define	RMIXLP_PCR_L2_ERR_LOG1			0x811
    307 #define	RMIXLP_PCR_L2_ERR_LOG2			0x812
    308 #define	RMIXLP_PCR_L2_ERR_INJ0			0x813
    309 #define	RMIXLP_PCR_L2_ERR_INJ1			0x814
    310 
    311 /* XLP Mapping Unit Registers */
    312 #define	RMIXLP_PCR_MAP_T0_LRQ_MASK		0x0602
    313 #define	RMIXLP_PCR_MAP_T1_LRQ_MASK		0x0603
    314 #define	RMIXLP_PCR_MAP_T2_LRQ_MASK		0x0604
    315 #define	RMIXLP_PCR_MAP_T3_LRQ_MASK		0x0605
    316 #define	RMIXLP_PCR_MAP_T0_SRQ_MASK		0x0606
    317 #define	RMIXLP_PCR_MAP_T1_SRQ_MASK		0x0607
    318 #define	RMIXLP_PCR_MAP_T2_SRQ_MASK		0x0608
    319 #define	RMIXLP_PCR_MAP_T3_SRQ_MASK		0x0609
    320 #define	RMIXLP_PCR_MAP_THREAD_MODE		0x0a00
    321 #define	RMIXLP_PCR_MAP_EXT_EBASE_ENABLE		0x0a02
    322 #define	RMIXLP_PCR_MAP_CCD_CONFIG		0x0a02
    323 #define	RMIXLP_PCR_MAP_T0_DEBUG_MODE		0x0a03
    324 #define	RMIXLP_PCR_MAP_T1_DEBUG_MODE		0x0a04
    325 #define	RMIXLP_PCR_MAP_T2_DEBUG_MODE		0x0a05
    326 #define	RMIXLP_PCR_MAP_T3_DEBUG_MODE		0x0a06
    327 #define	RMIXLP_PCR_MAP_THREAD_STATE		0x0a10
    328 #define	RMIXLP_PCR_MAP_T0_CCD_STATUS		0x0a11
    329 #define	RMIXLP_PCR_MAP_T1_CCD_STATUS		0x0a12
    330 #define	RMIXLP_PCR_MAP_T2_CCD_STATUS		0x0a13
    331 #define	RMIXLP_PCR_MAP_T3_CCD_STATUS		0x0a14
    332 
    333 /*
    334  * Memory Distributed Interconnect (MDI) System Memory Map
    335  */
    336 #define RMIXL_PHYSADDR_MAX	0xffffffffffLL		/* 1TB Physical Address space */
    337 #define RMIXL_IO_DEV_PBASE	0x1ef00000		/* default phys. from XL[RS]_IO_BAR */
    338 #define RMIXL_IO_DEV_VBASE	MIPS_PHYS_TO_KSEG1(RMIXL_IO_DEV_PBASE)
    339 							/* default virtual base address */
    340 #define RMIXL_IO_DEV_SIZE	0x100000		/* I/O Conf. space is 1MB region */
    341 
    342 
    343 
    344 /*
    345  * Peripheral and I/O Configuration Region of Memory
    346  *
    347  * These are relocatable; we run using the reset value defaults,
    348  * and we expect to inherit those intact from the boot firmware.
    349  *
    350  * Many of these overlap between XLR and XLS, exceptions are ifdef'ed.
    351  *
    352  * Device region offsets are relative to RMIXL_IO_DEV_PBASE.
    353  */
    354 #define RMIXL_IO_DEV_BRIDGE	0x00000	/* System Bridge Controller (SBC) */
    355 #define RMIXL_IO_DEV_DDR_CHNA	0x01000	/* DDR1/DDR2 DRAM_A Channel, Port MA */
    356 #define RMIXL_IO_DEV_DDR_CHNB	0x02000	/* DDR1/DDR2 DRAM_B Channel, Port MB */
    357 #define RMIXL_IO_DEV_DDR_CHNC	0x03000	/* DDR1/DDR2 DRAM_C Channel, Port MC */
    358 #define RMIXL_IO_DEV_DDR_CHND	0x04000	/* DDR1/DDR2 DRAM_D Channel, Port MD */
    359 #if defined(MIPS64_XLR)
    360 #define RMIXL_IO_DEV_SRAM	0x07000	/* SRAM Controller, Port SA */
    361 #endif	/* MIPS64_XLR */
    362 #define RMIXL_IO_DEV_PIC	0x08000	/* Programmable Interrupt Controller */
    363 #if defined(MIPS64_XLR)
    364 #define RMIXL_IO_DEV_PCIX	0x09000	/* PCI-X */
    365 #define RMIXL_IO_DEV_PCIX_EL	\
    366 	RMIXL_IO_DEV_PCIX		/* PXI-X little endian */
    367 #define RMIXL_IO_DEV_PCIX_EB	\
    368 	(RMIXL_IO_DEV_PCIX | __BIT(11))	/* PXI-X big endian */
    369 #define RMIXL_IO_DEV_HT		0x0a000	/* HyperTransport */
    370 #endif	/* MIPS64_XLR */
    371 #define RMIXL_IO_DEV_SAE	0x0b000	/* Security Acceleration Engine */
    372 #if defined(MIPS64_XLS)
    373 #define XAUI_INTERFACE_0	0x0c000	/* XAUI Interface_0 */
    374 					/*  when SGMII Interface_[0-3] are not used */
    375 #define RMIXL_IO_DEV_GMAC_0	0x0c000	/* SGMII-Interface_0, Port SGMII0 */
    376 #define RMIXL_IO_DEV_GMAC_1	0x0d000	/* SGMII-Interface_1, Port SGMII1 */
    377 #define RMIXL_IO_DEV_GMAC_2	0x0e000	/* SGMII-Interface_2, Port SGMII2 */
    378 #define RMIXL_IO_DEV_GMAC_3	0x0f000	/* SGMII-Interface_3, Port SGMII3 */
    379 #endif	/* MIPS64_XLS */
    380 #if defined(MIPS64_XLR)
    381 #define RMIXL_IO_DEV_GMAC_A	0x0c000	/* RGMII-Interface_0, Port RA */
    382 #define RMIXL_IO_DEV_GMAC_B	0x0d000	/* RGMII-Interface_1, Port RB */
    383 #define RMIXL_IO_DEV_GMAC_C	0x0e000	/* RGMII-Interface_2, Port RC */
    384 #define RMIXL_IO_DEV_GMAC_D	0x0f000	/* RGMII-Interface_3, Port RD */
    385 #define RMIXL_IO_DEV_SPI4_A	0x10000	/* SPI-4.2-Interface_A, Port XA */
    386 #define RMIXL_IO_DEV_XGMAC_A	0x11000	/* XGMII-Interface_A, Port XA */
    387 #define RMIXL_IO_DEV_SPI4_B	0x12000	/* SPI-4.2-Interface_B, Port XB */
    388 #define RMIXL_IO_DEV_XGMAC_B	0x13000	/* XGMII-Interface_B, Port XB */
    389 #endif	/* MIPS64_XLR */
    390 #define RMIXL_IO_DEV_UART_1	0x14000	/* UART_1 (16550 w/ ax4 addrs) */
    391 #define RMIXL_IO_DEV_UART_2	0x15000	/* UART_2 (16550 w/ ax4 addrs) */
    392 #define RMIXL_IO_DEV_I2C_1	0x16000	/* I2C_1 */
    393 #define RMIXL_IO_DEV_I2C_2	0x17000	/* I2C_2 */
    394 #define RMIXL_IO_DEV_GPIO	0x18000	/* GPIO */
    395 #define RMIXL_IO_DEV_FLASH	0x19000	/* Flash ROM */
    396 #define RMIXL_IO_DEV_DMA	0x1a000	/* DMA */
    397 #define RMIXL_IO_DEV_L2		0x1b000	/* L2 Cache */
    398 #define RMIXL_IO_DEV_TB		0x1c000	/* Trace Buffer */
    399 #if defined(MIPS64_XLS)
    400 #define RMIXL_IO_DEV_CDE	0x1d000	/* Compression/Decompression Engine */
    401 #define RMIXL_IO_DEV_PCIE_BE	0x1e000	/* PCI-Express_BE */
    402 #define RMIXL_IO_DEV_PCIE_LE	0x1f000	/* PCI-Express_LE */
    403 #define RMIXL_IO_DEV_SRIO_BE	0x1e000	/* SRIO_BE */
    404 #define RMIXL_IO_DEV_SRIO_LE	0x1f000	/* SRIO_LE */
    405 #define RMIXL_IO_DEV_XAUI_1	0x20000	/* XAUI Interface_1 */
    406 					/*  when SGMII Interface_[4-7] are not used */
    407 #define RMIXL_IO_DEV_GMAC_4	0x20000	/* SGMII-Interface_4, Port SGMII4 */
    408 #define RMIXL_IO_DEV_GMAC_5	0x21000	/* SGMII-Interface_5, Port SGMII5 */
    409 #define RMIXL_IO_DEV_GMAC_6	0x22000	/* SGMII-Interface_6, Port SGMII6 */
    410 #define RMIXL_IO_DEV_GMAC_7	0x23000	/* SGMII-Interface_7, Port SGMII7 */
    411 #define RMIXL_IO_DEV_USB_A	0x24000	/* USB Interface Low Address Space */
    412 #define RMIXL_IO_DEV_USB_B	0x25000	/* USB Interface High Address Space */
    413 #endif	/* MIPS64_XLS */
    414 
    415 
    416 /*
    417  * the Programming Reference Manual
    418  * lists "Reg ID" values not offsets;
    419  * offset = id * 4
    420  */
    421 #define _RMIXL_OFFSET(id)	((id) * 4)
    422 #define _RMIXL_PCITAG(b,d,f)	((((((b) << 5) | (d)) << 3) | (f)) << 12)
    423 #define	_RMIXL_PCITAG_BUS(t)	(((t) >> 20) & 255)
    424 #define	_RMIXL_PCITAG_DEV(t)	(((t) >> 15) & 31)
    425 #define	_RMIXL_PCITAG_FUNC(t)	(((t) >> 12) & 7)
    426 #define	_RMIXL_PCITAG_OFFSET(t)	(((t) >>  0) & 4095)
    427 
    428 
    429 /*
    430  * System Bridge Controller registers
    431  * offsets are relative to RMIXL_IO_DEV_BRIDGE
    432  */
    433 #define RMIXL_SBC_DRAM_NBARS		8
    434 #define RMIXL_SBC_DRAM_BAR(n)		_RMIXL_OFFSET(0x000 + (n))
    435 					/* DRAM Region Base Address Regs[0-7] */
    436 #define RMIXL_SBC_DRAM_CHNAC_DTR(n)	_RMIXL_OFFSET(0x008 + (n))
    437 					/* DRAM Region Channels A,C Address Translation Regs[0-7] */
    438 #define RMIXL_SBC_DRAM_CHNBD_DTR(n)	_RMIXL_OFFSET(0x010 + (n))
    439 					/* DRAM Region Channels B,D Address Translation Regs[0-7] */
    440 #define RMIXL_SBC_DRAM_BRIDGE_CFG	_RMIXL_OFFSET(0x18)	/* SBC DRAM config reg */
    441 #define RMIXL_SBC_IO_BAR		_RMIXL_OFFSET(0x19)	/* I/O Config Base Addr reg */
    442 #define RMIXL_SBC_FLASH_BAR		_RMIXL_OFFSET(0x1a)	/* Flash Memory Base Addr reg */
    443 #if defined(MIPS64_XLR)
    444 #define RMIXLR_SBC_SRAM_BAR		_RMIXL_OFFSET(0x1b)	/* SRAM Base Addr reg */
    445 #define RMIXLR_SBC_HTMEM_BAR		_RMIXL_OFFSET(0x1c)	/* HyperTransport Mem Base Addr reg */
    446 #define RMIXLR_SBC_HTINT_BAR		_RMIXL_OFFSET(0x1d)	/* HyperTransport Interrupt Base Addr reg */
    447 #define RMIXLR_SBC_HTPIC_BAR		_RMIXL_OFFSET(0x1e)	/* HyperTransport Legacy PIC Base Addr reg */
    448 #define RMIXLR_SBC_HTSM_BAR		_RMIXL_OFFSET(0x1f)	/* HyperTransport System Management Base Addr reg */
    449 #define RMIXLR_SBC_HTIO_BAR		_RMIXL_OFFSET(0x20)	/* HyperTransport IO Base Addr reg */
    450 #define RMIXLR_SBC_HTCFG_BAR		_RMIXL_OFFSET(0x21)	/* HyperTransport Configuration Base Addr reg */
    451 #define RMIXLR_SBC_PCIX_CFG_BAR		_RMIXL_OFFSET(0x22)	/* PCI-X Configuration Base Addr reg */
    452 #define RMIXLR_SBC_PCIX_MEM_BAR		_RMIXL_OFFSET(0x23)	/* PCI-X Mem Base Addr reg */
    453 #define RMIXLR_SBC_PCIX_IO_BAR		_RMIXL_OFFSET(0x24)	/* PCI-X IO Base Addr reg */
    454 #define RMIXLR_SBC_SYS2IO_CREDITS	_RMIXL_OFFSET(0x35)	/* System Bridge I/O Transaction Credits register */
    455 #endif	/* MIPS64_XLR */
    456 #if defined(MIPS64_XLS)
    457 #define RMIXLS_SBC_PCIE_CFG_BAR		_RMIXL_OFFSET(0x40)	/* PCI Configuration BAR */
    458 #define RMIXLS_SBC_PCIE_ECFG_BAR	_RMIXL_OFFSET(0x41)	/* PCI Extended Configuration BAR */
    459 #define RMIXLS_SBC_PCIE_MEM_BAR		_RMIXL_OFFSET(0x42)	/* PCI Memory region BAR */
    460 #define RMIXLS_SBC_PCIE_IO_BAR		_RMIXL_OFFSET(0x43)	/* PCI IO region BAR */
    461 #endif	/* MIPS64_XLS */
    462 
    463 /*
    464  * Address Error registers
    465  * offsets are relative to RMIXL_IO_DEV_BRIDGE
    466  */
    467 #define RMIXL_ADDR_ERR_DEVICE_MASK	_RMIXL_OFFSET(0x25)	/* Address Error Device Mask */
    468 #define RMIXL_ADDR_ERR_DEVICE_MASK_2	_RMIXL_OFFSET(0x44)	/* extension of Device Mask */
    469 #define RMIXL_ADDR_ERR_AERR0_LOG1	_RMIXL_OFFSET(0x26)	/* Address Error Set 0 Log 1 */
    470 #define RMIXL_ADDR_ERR_AERR0_LOG2	_RMIXL_OFFSET(0x27)	/* Address Error Set 0 Log 2 */
    471 #define RMIXL_ADDR_ERR_AERR0_LOG3	_RMIXL_OFFSET(0x28)	/* Address Error Set 0 Log 3 */
    472 #define RMIXL_ADDR_ERR_AERR0_DEVSTAT	_RMIXL_OFFSET(0x29)	/* Address Error Set 0 irpt status */
    473 #define RMIXL_ADDR_ERR_AERR1_LOG1	_RMIXL_OFFSET(0x2a)	/* Address Error Set 1 Log 1 */
    474 #define RMIXL_ADDR_ERR_AERR1_LOG2	_RMIXL_OFFSET(0x2b)	/* Address Error Set 1 Log 2 */
    475 #define RMIXL_ADDR_ERR_AERR1_LOG3	_RMIXL_OFFSET(0x2c)	/* Address Error Set 1 Log 3 */
    476 #define RMIXL_ADDR_ERR_AERR1_DEVSTAT	_RMIXL_OFFSET(0x2d)	/* Address Error Set 1 irpt status */
    477 #define RMIXL_ADDR_ERR_AERR0_EN		_RMIXL_OFFSET(0x2e)	/* Address Error Set 0 irpt enable */
    478 #define RMIXL_ADDR_ERR_AERR0_UPG	_RMIXL_OFFSET(0x2f)	/* Address Error Set 0 Upgrade */
    479 #define RMIXL_ADDR_ERR_AERR0_CLEAR	_RMIXL_OFFSET(0x30)	/* Address Error Set 0 irpt clear */
    480 #define RMIXL_ADDR_ERR_AERR1_CLEAR	_RMIXL_OFFSET(0x31)	/* Address Error Set 1 irpt clear */
    481 #define RMIXL_ADDR_ERR_SBE_COUNTS	_RMIXL_OFFSET(0x32)	/* Single Bit Error Counts */
    482 #define RMIXL_ADDR_ERR_DBE_COUNTS	_RMIXL_OFFSET(0x33)	/* Double Bit Error Counts */
    483 #define RMIXL_ADDR_ERR_BITERR_INT_EN	_RMIXL_OFFSET(0x33)	/* Bit Error intr enable */
    484 
    485 /*
    486  * RMIXL_SBC_FLASH_BAR bit defines
    487  */
    488 #define RMIXL_FLASH_BAR_BASE		__BITS(31,16)	/* phys address bits 39:24 */
    489 #define RMIXL_FLASH_BAR_TO_BA(r)	\
    490 		(((r) & RMIXL_FLASH_BAR_BASE) << (24 - 16))
    491 #define RMIXL_FLASH_BAR_MASK		__BITS(15,5)	/* phys address mask bits 34:24 */
    492 #define RMIXL_FLASH_BAR_TO_MASK(r)	\
    493 		(((((r) & RMIXL_FLASH_BAR_MASK)) << (24 - 5)) | __BITS(23, 0))
    494 #define RMIXL_FLASH_BAR_RESV		__BITS(4,1)	/* (reserved) */
    495 #define RMIXL_FLASH_BAR_ENB		__BIT(0)	/* 1=Enable */
    496 #define RMIXL_FLASH_BAR_MASK_MAX	RMIXL_FLASH_BAR_TO_MASK(RMIXL_FLASH_BAR_MASK)
    497 
    498 /*
    499  * RMIXL_SBC_DRAM_BAR bit defines
    500  */
    501 #define RMIXL_DRAM_BAR_BASE_ADDR	__BITS(31,16)	/* bits 39:24 of Base Address */
    502 #define DRAM_BAR_TO_BASE(r)	\
    503 		(((r) & RMIXL_DRAM_BAR_BASE_ADDR) << (24 - 16))
    504 #define RMIXL_DRAM_BAR_ADDR_MASK	__BITS(15,4)	/* bits 35:24 of Address Mask */
    505 #define DRAM_BAR_TO_SIZE(r)	\
    506 		((((r) & RMIXL_DRAM_BAR_ADDR_MASK) + __BIT(4)) << (24 - 4))
    507 #define RMIXL_DRAM_BAR_INTERLEAVE	__BITS(3,1)	/* Interleave Mode */
    508 #define RMIXL_DRAM_BAR_STATUS		__BIT(0)	/* 1='region enabled' */
    509 
    510 /*
    511  * RMIXL_SBC_DRAM_CHNAC_DTR and
    512  * RMIXL_SBC_DRAM_CHNBD_DTR bit defines
    513  *	insert 'divisions' (0, 1 or 2) bits
    514  *	of value 'partition'
    515  *	at 'position' bit location.
    516  */
    517 #define RMIXL_DRAM_DTR_RESa		__BITS(31,14)
    518 #define RMIXL_DRAM_DTR_PARTITION	__BITS(13,12)
    519 #define RMIXL_DRAM_DTR_RESb		__BITS(11,10)
    520 #define RMIXL_DRAM_DTR_DIVISIONS	__BITS(9,8)
    521 #define RMIXL_DRAM_DTR_RESc		__BITS(7,6)
    522 #define RMIXL_DRAM_DTR_POSITION		__BITS(5,0)
    523 #define RMIXL_DRAM_DTR_RESV	\
    524 		(RMIXL_DRAM_DTR_RESa|RMIXL_DRAM_DTR_RESb|RMIXL_DRAM_DTR_RESc)
    525 
    526 /*
    527  * RMIXL_SBC_DRAM_BRIDGE_CFG bit defines
    528  */
    529 #define RMIXL_DRAM_CFG_RESa		__BITS(31,13)
    530 #define RMIXL_DRAM_CFG_CHANNEL_MODE	__BIT(12)
    531 #define RMIXL_DRAM_CFG_RESb		__BIT(11)
    532 #define RMIXL_DRAM_CFG_INTERLEAVE_MODE	__BITS(10,8)
    533 #define RMIXL_DRAM_CFG_RESc		__BITS(7,5)
    534 #define RMIXL_DRAM_CFG_BUS_MODE		__BIT(4)
    535 #define RMIXL_DRAM_CFG_RESd		__BITS(3,2)
    536 #define RMIXL_DRAM_CFG_DRAM_MODE	__BITS(1,0)	/* 1=DDR2 */
    537 
    538 /*
    539  * RMIXL_SBC_XLR_PCIX_CFG_BAR bit defines
    540  */
    541 #define RMIXL_PCIX_CFG_BAR_BASE		__BITS(31,17)	/* phys address bits 39:25 */
    542 #define RMIXL_PCIX_CFG_BAR_BA_SHIFT	(25 - 17)
    543 #define RMIXL_PCIX_CFG_BAR_TO_BA(r)	\
    544 		(((r) & RMIXL_PCIX_CFG_BAR_BASE) << RMIXL_PCIX_CFG_BAR_BA_SHIFT)
    545 #define RMIXL_PCIX_CFG_BAR_RESV		__BITS(16,1)	/* (reserved) */
    546 #define RMIXL_PCIX_CFG_BAR_ENB		__BIT(0)	/* 1=Enable */
    547 #define RMIXL_PCIX_CFG_SIZE		__BIT(25)
    548 #define RMIXL_PCIX_CFG_BAR(ba, en)	\
    549 		((uint32_t)(((ba) >> (25 - 17)) | ((en) ? RMIXL_PCIX_CFG_BAR_ENB : 0)))
    550 
    551 /*
    552  * RMIXLR_SBC_PCIX_MEM_BAR bit defines
    553  */
    554 #define RMIXL_PCIX_MEM_BAR_BASE		__BITS(31,16)	/* phys address bits 39:24 */
    555 #define RMIXL_PCIX_MEM_BAR_TO_BA(r)	\
    556 		(((r) & RMIXL_PCIX_MEM_BAR_BASE) << (24 - 16))
    557 #define RMIXL_PCIX_MEM_BAR_MASK		__BITS(15,1)	/* phys address mask bits 38:24 */
    558 #define RMIXL_PCIX_MEM_BAR_TO_SIZE(r)	\
    559 		((((r) & RMIXL_PCIX_MEM_BAR_MASK) + 2) << (24 - 1))
    560 #define RMIXL_PCIX_MEM_BAR_ENB		__BIT(0)	/* 1=Enable */
    561 #define RMIXL_PCIX_MEM_BAR(ba, en)	\
    562 		((uint32_t)(((ba) >> (24 - 16)) | ((en) ? RMIXL_PCIX_MEM_BAR_ENB : 0)))
    563 
    564 /*
    565  * RMIXLR_SBC_PCIX_IO_BAR bit defines
    566  */
    567 #define RMIXL_PCIX_IO_BAR_BASE		__BITS(31,18)	/* phys address bits 39:26 */
    568 #define RMIXL_PCIX_IO_BAR_TO_BA(r)	\
    569 		(((r) & RMIXL_PCIX_IO_BAR_BASE) << (26 - 18))
    570 #define RMIXL_PCIX_IO_BAR_RESV		__BITS(17,7)	/* (reserve) */
    571 #define RMIXL_PCIX_IO_BAR_MASK		__BITS(6,1)	/* phys address mask bits 31:26 */
    572 #define RMIXL_PCIX_IO_BAR_TO_SIZE(r)	\
    573 		((((r) & RMIXL_PCIX_IO_BAR_MASK) + 2) << (26 - 1))
    574 #define RMIXL_PCIX_IO_BAR_ENB		__BIT(0)	/* 1=Enable */
    575 #define RMIXL_PCIX_IO_BAR(ba, en)	\
    576 		((uint32_t)(((ba) >> (26 - 18)) | ((en) ? RMIXL_PCIX_IO_BAR_ENB : 0)))
    577 
    578 
    579 /*
    580  * RMIXLS_SBC_PCIE_CFG_BAR bit defines
    581  */
    582 #define RMIXL_PCIE_CFG_BAR_BASE	__BITS(31,17)	/* phys address bits 39:25 */
    583 #define RMIXL_PCIE_CFG_BAR_BA_SHIFT	(25 - 17)
    584 #define RMIXL_PCIE_CFG_BAR_TO_BA(r)	\
    585 		(((r) & RMIXL_PCIE_CFG_BAR_BASE) << RMIXL_PCIE_CFG_BAR_BA_SHIFT)
    586 #define RMIXL_PCIE_CFG_BAR_RESV		__BITS(16,1)	/* (reserved) */
    587 #define RMIXL_PCIE_CFG_BAR_ENB		__BIT(0)	/* 1=Enable */
    588 #define RMIXL_PCIE_CFG_SIZE		__BIT(25)
    589 #define RMIXL_PCIE_CFG_BAR(ba, en)	\
    590 		((uint32_t)(((ba) >> (25 - 17)) | ((en) ? RMIXL_PCIE_CFG_BAR_ENB : 0)))
    591 
    592 /*
    593  * RMIXLS_SBC_PCIE_ECFG_BAR bit defines
    594  * (PCIe extended config space)
    595  */
    596 #define RMIXL_PCIE_ECFG_BAR_BASE	__BITS(31,21)	/* phys address bits 39:29 */
    597 #define RMIXL_PCIE_ECFG_BAR_BA_SHIFT	(29 - 21)
    598 #define RMIXL_PCIE_ECFG_BAR_TO_BA(r)	\
    599 		(((r) & RMIXL_PCIE_ECFG_BAR_BASE) << RMIXL_PCIE_ECFG_BAR_BA_SHIFT)
    600 #define RMIXL_PCIE_ECFG_BAR_RESV	__BITS(20,1)	/* (reserved) */
    601 #define RMIXL_PCIE_ECFG_BAR_ENB		__BIT(0)	/* 1=Enable */
    602 #define RMIXL_PCIE_ECFG_SIZE		__BIT(29)
    603 #define RMIXL_PCIE_ECFG_BAR(ba, en)	\
    604 		((uint32_t)(((ba) >> (29 - 21)) | ((en) ? RMIXL_PCIE_ECFG_BAR_ENB : 0)))
    605 
    606 /*
    607  * RMIXLS_SBC_PCIE_MEM_BAR bit defines
    608  */
    609 #define RMIXL_PCIE_MEM_BAR_BASE		__BITS(31,16)	/* phys address bits 39:24 */
    610 #define RMIXL_PCIE_MEM_BAR_TO_BA(r)	\
    611 		(((r) & RMIXL_PCIE_MEM_BAR_BASE) << (24 - 16))
    612 #define RMIXL_PCIE_MEM_BAR_MASK		__BITS(15,1)	/* phys address mask bits 38:24 */
    613 #define RMIXL_PCIE_MEM_BAR_TO_SIZE(r)	\
    614 		((((r) & RMIXL_PCIE_MEM_BAR_MASK) + 2) << (24 - 1))
    615 #define RMIXL_PCIE_MEM_BAR_ENB		__BIT(0)	/* 1=Enable */
    616 #define RMIXL_PCIE_MEM_BAR(ba, en)	\
    617 		((uint32_t)(((ba) >> (24 - 16)) | ((en) ? RMIXL_PCIE_MEM_BAR_ENB : 0)))
    618 
    619 /*
    620  * RMIXLS_SBC_PCIE_IO_BAR bit defines
    621  */
    622 #define RMIXL_PCIE_IO_BAR_BASE		__BITS(31,18)	/* phys address bits 39:26 */
    623 #define RMIXL_PCIE_IO_BAR_TO_BA(r)	\
    624 		(((r) & RMIXL_PCIE_IO_BAR_BASE) << (26 - 18))
    625 #define RMIXL_PCIE_IO_BAR_RESV		__BITS(17,7)	/* (reserve) */
    626 #define RMIXL_PCIE_IO_BAR_MASK		__BITS(6,1)	/* phys address mask bits 31:26 */
    627 #define RMIXL_PCIE_IO_BAR_TO_SIZE(r)	\
    628 		((((r) & RMIXL_PCIE_IO_BAR_MASK) + 2) << (26 - 1))
    629 #define RMIXL_PCIE_IO_BAR_ENB		__BIT(0)	/* 1=Enable */
    630 #define RMIXL_PCIE_IO_BAR(ba, en)	\
    631 		((uint32_t)(((ba) >> (26 - 18)) | ((en) ? RMIXL_PCIE_IO_BAR_ENB : 0)))
    632 
    633 
    634 /*
    635  * Programmable Interrupt Controller registers
    636  * the Programming Reference Manual table 10.4
    637  * lists "Reg ID" values not offsets
    638  * Offsets are relative to RMIXL_IO_DEV_BRIDGE
    639  */
    640 #define	RMIXL_PIC_CONTROL		_RMIXL_OFFSET(0x0)
    641 #define	RMIXL_PIC_IPIBASE		_RMIXL_OFFSET(0x4)
    642 #define	RMIXL_PIC_INTRACK		_RMIXL_OFFSET(0x6)
    643 #define	RMIXL_PIC_WATCHdOGMAXVALUE0	_RMIXL_OFFSET(0x8)
    644 #define	RMIXL_PIC_WATCHDOGMAXVALUE1	_RMIXL_OFFSET(0x9)
    645 #define	RMIXL_PIC_WATCHDOGMASK0		_RMIXL_OFFSET(0xa)
    646 #define	RMIXL_PIC_WATCHDOGMASK1		_RMIXL_OFFSET(0xb)
    647 #define	RMIXL_PIC_WATCHDOGHEARTBEAT0	_RMIXL_OFFSET(0xc)
    648 #define	RMIXL_PIC_WATCHDOGHEARTBEAT1	_RMIXL_OFFSET(0xd)
    649 #define	RMIXL_PIC_IRTENTRYC0(n)		_RMIXL_OFFSET(0x40 + (n))	/* 0<=n<=31 */
    650 #define	RMIXL_PIC_IRTENTRYC1(n)		_RMIXL_OFFSET(0x80 + (n))	/* 0<=n<=31 */
    651 #define	RMIXL_PIC_SYSTMRMAXVALC0(n)	_RMIXL_OFFSET(0x100 + (n))	/* 0<=n<=7 */
    652 #define	RMIXL_PIC_SYSTMRMAXVALC1(n)	_RMIXL_OFFSET(0x110 + (n))	/* 0<=n<=7 */
    653 #define	RMIXL_PIC_SYSTMRC0(n)		_RMIXL_OFFSET(0x120 + (n))	/* 0<=n<=7 */
    654 #define	RMIXL_PIC_SYSTMRC1(n)		_RMIXL_OFFSET(0x130 + (n))	/* 0<=n<=7 */
    655 
    656 /*
    657  * RMIXL_PIC_CONTROL bits
    658  */
    659 #define RMIXL_PIC_CONTROL_WATCHDOG_ENB	__BIT(0)
    660 #define RMIXL_PIC_CONTROL_GEN_NMI	__BITS(2,1)	/* do NMI after n WDog irpts */
    661 #define RMIXL_PIC_CONTROL_GEN_NMIn(n)	(((n) << 1) & RMIXL_PIC_CONTROL_GEN_NMI)
    662 #define RMIXL_PIC_CONTROL_RESa		__BITS(7,3)
    663 #define RMIXL_PIC_CONTROL_TIMER_ENB	__BITS(15,8)	/* per-Timer enable bits */
    664 #define RMIXL_PIC_CONTROL_TIMER_ENBn(n)	((1 << (8 + (n))) & RMIXL_PIC_CONTROL_TIMER_ENB)
    665 #define RMIXL_PIC_CONTROL_RESb		__BITS(31,16)
    666 #define RMIXL_PIC_CONTROL_RESV		\
    667 		(RMIXL_PIC_CONTROL_RESa|RMIXL_PIC_CONTROL_RESb)
    668 
    669 /*
    670  * RMIXL_PIC_IPIBASE bits
    671  */
    672 #define RMIXL_PIC_IPIBASE_VECTORNUM	__BITS(5,0)
    673 #define RMIXL_PIC_IPIBASE_RESa		__BIT(6)	/* undocumented bit */
    674 #define RMIXL_PIC_IPIBASE_BCAST		__BIT(7)
    675 #define RMIXL_PIC_IPIBASE_NMI		__BIT(8)
    676 #define RMIXL_PIC_IPIBASE_ID		__BITS(31,16)
    677 #define RMIXL_PIC_IPIBASE_ID_RESb	__BITS(31,23)
    678 #define RMIXL_PIC_IPIBASE_ID_CORE	__BITS(22,20)	/* Physical CPU ID */
    679 #define RMIXL_PIC_IPIBASE_ID_CORE_SHIFT		20
    680 #define RMIXL_PIC_IPIBASE_ID_RESc	__BITS(19,18)
    681 #define RMIXL_PIC_IPIBASE_ID_THREAD	__BITS(17,16)	/* Thread ID */
    682 #define RMIXL_PIC_IPIBASE_ID_THREAD_SHIFT	16
    683 #define RMIXL_PIC_IPIBASE_ID_RESV	\
    684 		(RMIXL_PIC_IPIBASE_ID_RESa|RMIXL_PIC_IPIBASE_ID_RESb	\
    685 		|RMIXL_PIC_IPIBASE_ID_RESc)
    686 #define	RMIXL_PIC_IPIBASE_MAKE(nmi, core, thread, tag)		\
    687 	(__SHIFTIN((nmi), RMIXL_PIC_IPIBASE_NMI)		\
    688 	 | __SHIFTIN((core), RMIXL_PIC_IPIBASE_ID_CORE)		\
    689 	 | __SHIFTIN((thread), RMIXL_PIC_IPIBASE_ID_THREAD)	\
    690 	 | __SHIFTIN((tag), RMIXL_PIC_IPIBASE_VECTORNUM))
    691 
    692 /*
    693  * RMIXL_PIC_IRTENTRYC0 bits
    694  * IRT Entry low word
    695  */
    696 #define RMIXL_PIC_IRTENTRYC0_TMASK	__BITS(7,0)	/* Thread Mask */
    697 #define RMIXL_PIC_IRTENTRYC0_RESa	__BITS(3,2)	/* write as 0 */
    698 #define RMIXL_PIC_IRTENTRYC0_RESb	__BITS(31,8)	/* write as 0 */
    699 #define RMIXL_PIC_IRTENTRYC0_RESV	\
    700 		(RMIXL_PIC_IRTENTRYC0_RESa | RMIXL_PIC_IRTENTRYC0_RESb)
    701 
    702 /*
    703  * RMIXL_PIC_IRTENTRYC1 bits
    704  * IRT Entry high word
    705  */
    706 #define RMIXL_PIC_IRTENTRYC1_INTVEC	__BITS(5,0)	/* maps to bit# in CPU's EIRR */
    707 #define RMIXL_PIC_IRTENTRYC1_GL		__BIT(6)	/* 0=Global; 1=Local */
    708 #define RMIXL_PIC_IRTENTRYC1_NMI	__BIT(7)	/* 0=Maskable; 1=NMI */
    709 #define RMIXL_PIC_IRTENTRYC1_RESV	__BITS(28,8)
    710 #define RMIXL_PIC_IRTENTRYC1_P		__BIT(29)	/* 0=Rising/High; 1=Falling/Low */
    711 #define RMIXL_PIC_IRTENTRYC1_TRG	__BIT(30)	/* 0=Edge; 1=Level */
    712 #define RMIXL_PIC_IRTENTRYC1_VALID	__BIT(31)	/* 0=Invalid; 1=Valid IRT Entry */
    713 
    714 /*
    715  * GPIO Controller registers
    716  */
    717 /* GPIO Signal Registers */
    718 #define RMIXL_GPIO_INT_ENB		_RMIXL_OFFSET(0x0)	/* Interrupt Enable register */
    719 #define RMIXL_GPIO_INT_INV		_RMIXL_OFFSET(0x1)	/* Interrupt Inversion register */
    720 #define RMIXL_GPIO_IO_DIR		_RMIXL_OFFSET(0x2)	/* I/O Direction register */
    721 #define RMIXL_GPIO_OUTPUT		_RMIXL_OFFSET(0x3)	/* Output Write register */
    722 #define RMIXL_GPIO_INPUT		_RMIXL_OFFSET(0x4)	/* Intput Read register */
    723 #define RMIXL_GPIO_INT_CLR		_RMIXL_OFFSET(0x5)	/* Interrupt Inversion register */
    724 #define RMIXL_GPIO_INT_STS		_RMIXL_OFFSET(0x6)	/* Interrupt Status register */
    725 #define RMIXL_GPIO_INT_TYP		_RMIXL_OFFSET(0x7)	/* Interrupt Type register */
    726 #define RMIXL_GPIO_RESET		_RMIXL_OFFSET(0x8)	/* XLS Soft Reset register */
    727 
    728 /*
    729  * RMIXL_GPIO_RESET bits
    730  */
    731 #define RMIXL_GPIO_RESET_RESV		__BITS(31,1)
    732 #define RMIXL_GPIO_RESET_RESET		__BIT(0)
    733 
    734 
    735 /* GPIO System Control Registers */
    736 #define RMIXL_GPIO_RESET_CFG		_RMIXL_OFFSET(0x15)	/* Reset Configuration register */
    737 #define RMIXL_GPIO_THERMAL_CSR		_RMIXL_OFFSET(0x16)	/* Thermal Control/Status register */
    738 #define RMIXL_GPIO_THERMAL_SHFT		_RMIXL_OFFSET(0x17)	/* Thermal Shift register */
    739 #define RMIXL_GPIO_BIST_ALL_STS		_RMIXL_OFFSET(0x18)	/* BIST All Status register */
    740 #define RMIXL_GPIO_BIST_EACH_STS	_RMIXL_OFFSET(0x19)	/* BIST Each Status register */
    741 #define RMIXL_GPIO_SGMII_0_3_PHY_CTL	_RMIXL_OFFSET(0x20)	/* SGMII #0..3 PHY Control register */
    742 #define RMIXL_GPIO_AUI_0_PHY_CTL	_RMIXL_OFFSET(0x20)	/* AUI port#0  PHY Control register */
    743 #define RMIXL_GPIO_SGMII_4_7_PLL_CTL	_RMIXL_OFFSET(0x21)	/* SGMII #4..7 PLL Control register */
    744 #define RMIXL_GPIO_AUI_1_PLL_CTL	_RMIXL_OFFSET(0x21)	/* AUI port#1  PLL Control register */
    745 #define RMIXL_GPIO_SGMII_4_7_PHY_CTL	_RMIXL_OFFSET(0x22)	/* SGMII #4..7 PHY Control register */
    746 #define RMIXL_GPIO_AUI_1_PHY_CTL	_RMIXL_OFFSET(0x22)	/* AUI port#1  PHY Control register */
    747 #define RMIXL_GPIO_INT_MAP		_RMIXL_OFFSET(0x25)	/* Interrupt Map to PIC, 0=int14, 1=int30 */
    748 #define RMIXL_GPIO_EXT_INT		_RMIXL_OFFSET(0x26)	/* External Interrupt control register */
    749 #define RMIXL_GPIO_CPU_RST		_RMIXL_OFFSET(0x28)	/* CPU Reset control register */
    750 #define RMIXL_GPIO_LOW_PWR_DIS		_RMIXL_OFFSET(0x29)	/* Low Power Dissipation register */
    751 #define RMIXL_GPIO_RANDOM		_RMIXL_OFFSET(0x2b)	/* Low Power Dissipation register */
    752 #define RMIXL_GPIO_CPU_CLK_DIS		_RMIXL_OFFSET(0x2d)	/* CPU Clock Disable register */
    753 
    754 /*
    755  * RMIXL_GPIO_RESET_CFG bits
    756  */
    757 #define RMIXL_GPIO_RESET_CFG_RESa		__BITS(31,28)
    758 #define RMIXL_GPIO_RESET_CFG_PCIE_SRIO_SEL	__BITS(27,26)	/* PCIe or SRIO Select:
    759 								 * 00 = PCIe selected, SRIO not available
    760 								 * 01 = SRIO selected, 1.25 Gbaud (1.0 Gbps)
    761 								 * 10 = SRIO selected, 2.25 Gbaud (2.0 Gbps)
    762 								 * 11 = SRIO selected, 3.125 Gbaud (2.5 Gbps)
    763 								 */
    764 #define RMIXL_GPIO_RESET_CFG_XAUI_PORT1_SEL	__BIT(25)	/* XAUI Port 1 Select:
    765 								 *  0 = Disabled - Port is SGMII ports 4-7
    766 								 *  1 = Enabled -  Port is 4-lane XAUI Port 1
    767 								 */
    768 #define RMIXL_GPIO_RESET_CFG_XAUI_PORT0_SEL	__BIT(24)	/* XAUI Port 0 Select:
    769 								 *  0 = Disabled - Port is SGMII ports 0-3
    770 								 *  1 = Enabled -  Port is 4-lane XAUI Port 0
    771 								 */
    772 #define RMIXL_GPIO_RESET_CFG_RESb		__BIT(23)
    773 #define RMIXL_GPIO_RESET_CFG_USB_DEV		__BIT(22)	/* USB Device:
    774 								 *  0 = Device Mode
    775 								 *  1 = Host Mode
    776 								 */
    777 #define RMIXL_GPIO_RESET_CFG_PCIE_CFG		__BITS(21,20)	/* PCIe or SRIO configuration */
    778 #define RMIXL_GPIO_RESET_CFG_FLASH33_EN		__BIT(19)	/* Flash 33 MHZ Enable:
    779 								 *  0 = 66.67 MHz
    780 								 *  1 = 33.33 MHz
    781 								 */
    782 #define RMIXL_GPIO_RESET_CFG_BIST_DIAG_EN	__BIT(18)	/* BIST Diagnostics enable */
    783 #define RMIXL_GPIO_RESET_CFG_BIST_RUN_EN	__BIT(18)	/* BIST Run enable */
    784 #define RMIXL_GPIO_RESET_CFG_NOOT_NAND		__BIT(16)	/* Enable boot from NAND Flash */
    785 #define RMIXL_GPIO_RESET_CFG_BOOT_PCMCIA	__BIT(15)	/* Enable boot from PCMCIA */
    786 #define RMIXL_GPIO_RESET_CFG_FLASH_CFG		__BIT(14)	/* Flash 32-bit Data Configuration:
    787 								 *  0 = 32-bit address / 16-bit data
    788 								 *  1 = 32-bit address / 32-bit data
    789 								 */
    790 #define RMIXL_GPIO_RESET_CFG_PCMCIA_EN		__BIT(13)	/* PCMCIA Enable Status */
    791 #define RMIXL_GPIO_RESET_CFG_PARITY_EN		__BIT(12)	/* Parity Enable Status */
    792 #define RMIXL_GPIO_RESET_CFG_BIGEND		__BIT(11)	/* Big Endian Mode Enable Status */
    793 #define RMIXL_GPIO_RESET_CFG_PLL1_OUT_DIV	__BITS(10,8)	/* PLL1 (Core PLL) Output Divider */
    794 #define RMIXL_GPIO_RESET_CFG_PLL1_FB_DIV	__BITS(7,0)	/* PLL1 Feedback Divider */
    795 
    796 /*
    797  * RMIXL_GPIO_LOW_PWR_DIS bits
    798  * except as noted, all bits are:
    799  *  0 = feature enable (default)
    800  *  1 = feature disable
    801  */
    802 /* XXX defines are for XLS6xx, XLS4xx-Lite and XLS4xx Devices */
    803 #define RMIXL_GPIO_LOW_PWR_DIS_LP		__BIT(0)	/* Low Power disable */
    804 #define RMIXL_GPIO_LOW_PWR_DIS_GMAC_QD_0	__BIT(1)	/* GMAC Quad 0 (GMAC 0..3) disable */
    805 #define RMIXL_GPIO_LOW_PWR_DIS_GMAC_QD_1	__BIT(2)	/* GMAC Quad 1 (GMAC 4..7) disable */
    806 #define RMIXL_GPIO_LOW_PWR_DIS_USB		__BIT(3)	/* USB disable */
    807 #define RMIXL_GPIO_LOW_PWR_DIS_PCIE		__BIT(4)	/* PCIE disable */
    808 #define RMIXL_GPIO_LOW_PWR_DIS_CDE		__BIT(5)	/* Compression/Decompression Engine disable */
    809 #define RMIXL_GPIO_LOW_PWR_DIS_DMA		__BIT(6)	/* DMA Engine disable */
    810 #define RMIXL_GPIO_LOW_PWR_DIS_SAE		__BITS(8,7)	/* Security Acceleration Engine disable:
    811 								 *  00 = enable (default)
    812 								 *  01 = reserved
    813 								 *  10 = reserved
    814 								 *  11 = disable
    815 								 */
    816 #define RMIXL_GPIO_LOW_PWR_DIS_RESV		__BITS(31,9)
    817 
    818 /*
    819  * Peripheral I/O bus (Flash/PCMCIA) controller registers
    820  */
    821 #define RMIXL_FLASH_NCS			10			/* number of chip selects */
    822 #define RMIXL_FLASH_CS_BOOT		0			/* CS0 is boot flash */
    823 #define RMIXL_FLASH_CS_PCMCIA_CF	6			/* CS6 is PCMCIA compact flash */
    824 #define RMIXL_FLASH_CSBASE_ADDRn(n)	_RMIXL_OFFSET(0x00+(n))	/* CSn Base Address reg */
    825 #define RMIXL_FLASH_CSADDR_MASKn(n)	_RMIXL_OFFSET(0x10+(n))	/* CSn Address Mask reg */
    826 #define RMIXL_FLASH_CSDEV_PARMn(n)	_RMIXL_OFFSET(0x20+(n))	/* CSn Device Parameter reg */
    827 #define RMIXL_FLASH_CSTIME_PARMAn(n)	_RMIXL_OFFSET(0x30+(n))	/* CSn Timing Parameters A reg */
    828 #define RMIXL_FLASH_CSTIME_PARMBn(n)	_RMIXL_OFFSET(0x40+(n))	/* CSn Timing Parameters B reg */
    829 #define RMIXL_FLASH_INT_MASK		_RMIXL_OFFSET(0x50)	/* Flash Interrupt Mask reg */
    830 #define RMIXL_FLASH_INT_STATUS		_RMIXL_OFFSET(0x60)	/* Flash Interrupt Status reg */
    831 #define RMIXL_FLASH_ERROR_STATUS	_RMIXL_OFFSET(0x70)	/* Flash Error Status reg */
    832 #define RMIXL_FLASH_ERROR_ADDR		_RMIXL_OFFSET(0x80)	/* Flash Error Address reg */
    833 
    834 /*
    835  * RMIXL_FLASH_CSDEV_PARMn bits
    836  */
    837 #define RMIXL_FLASH_CSDEV_RESV		__BITS(31,16)
    838 #define RMIXL_FLASH_CSDEV_BFN		__BIT(15)		/* Boot From Nand
    839 								 *  0=Boot from NOR or
    840 								 *    PCCard Type 1 Flash
    841 								 *  1=Boot from NAND
    842 								 */
    843 #define RMIXL_FLASH_CSDEV_NANDEN	__BIT(14)		/* NAND Flash Enable
    844 								 *  0=NOR
    845 								 *  1=NAND
    846 								 */
    847 #define RMIXL_FLASH_CSDEV_ADVTYPE	__BIT(13)		/* Add Valid Sensing Type
    848 								 *  0=level
    849 								 *  1=pulse
    850 								 */
    851 #define RMIXL_FLASH_CSDEV_PARITY_TYPE	__BIT(12)		/* Parity Type
    852 								 *  0=even
    853 								 *  1=odd
    854 								 */
    855 #define RMIXL_FLASH_CSDEV_PARITY_EN	__BIT(11)		/* Parity Enable */
    856 #define RMIXL_FLASH_CSDEV_GENIF_EN	__BIT(10)		/* Generic PLD/FPGA interface mode
    857 								 *  if this bit is set, then
    858 								 *  GPIO[13:10] cannot be used
    859 								 *  for interrupts
    860 								 */
    861 #define RMIXL_FLASH_CSDEV_PCMCIA_EN	__BIT(9)		/* PCMCIA Interface mode */
    862 #define RMIXL_FLASH_CSDEV_DWIDTH	__BITS(8,7)		/* Data Bus Width:
    863 								 *  00: 8 bit
    864 								 *  01: 16 bit
    865 								 *  10: 32 bit
    866 								 *  11: 8 bit
    867 								 */
    868 #define RMIXL_FLASH_CSDEV_DWIDTH_SHFT	7
    869 #define RMIXL_FLASH_CSDEV_MX_ADDR	__BIT(6)		/* Multiplexed Address
    870 								 *  0: non-muxed
    871 								 *      AD[31:24] = Data,
    872 								 *	AD[23:0] = Addr
    873 								 *  1: muxed
    874 								 *      External latch required
    875 								 */
    876 #define RMIXL_FLASH_CSDEV_WAIT_POL	__BIT(5)		/* WAIT polarity
    877 								 *  0: Active high
    878 								 *  1: Active low
    879 								 */
    880 #define RMIXL_FLASH_CSDEV_WAIT_EN	__BIT(4)		/* Enable External WAIT Ack mode */
    881 #define RMIXL_FLASH_CSDEV_BURST		__BITS(3,1)		/* Burst Length:
    882 								 *  000: 2x
    883 								 *  001: 4x
    884 								 *  010: 8x
    885 								 *  011: 16x
    886 								 *  100: 32x
    887 								 */
    888 #define RMIXL_FLASH_CSDEV_BURST_SHFT	1
    889 #define RMIXL_FLASH_CSDEV_BURST_EN	__BITS(0)		/* Burst Enable */
    890 
    891 
    892 /*
    893  * NAND Flash Memory Control registers
    894  */
    895 #define RMIXL_NAND_CLEn(n)		_RMIXL_OFFSET(0x90+(n))	/* CSn 8-bit CLE command value reg */
    896 #define RMIXL_NAND_ALEn(n)		_RMIXL_OFFSET(0xa0+(n))	/* CSn 8-bit ALE address phase reg */
    897 
    898 
    899 /*
    900  * PCIE Interface Controller registers
    901  */
    902 #define RMIXL_PCIE_CTRL1		_RMIXL_OFFSET(0x0)
    903 #define RMIXL_PCIE_CTRL2		_RMIXL_OFFSET(0x1)
    904 #define RMIXL_PCIE_CTRL3		_RMIXL_OFFSET(0x2)
    905 #define RMIXL_PCIE_CTRL4		_RMIXL_OFFSET(0x3)
    906 #define RMIXL_PCIE_CTRL			_RMIXL_OFFSET(0x4)
    907 #define RMIXL_PCIE_IOBM_TIMER		_RMIXL_OFFSET(0x5)
    908 #define RMIXL_PCIE_MSI_CMD		_RMIXL_OFFSET(0x6)
    909 #define RMIXL_PCIE_MSI_RESP		_RMIXL_OFFSET(0x7)
    910 #define RMIXL_PCIE_DWC_CRTL5		_RMIXL_OFFSET(0x8)	/* not on XLS408Lite, XLS404Lite */
    911 #define RMIXL_PCIE_DWC_CRTL6		_RMIXL_OFFSET(0x9)	/* not on XLS408Lite, XLS404Lite */
    912 #define RMIXL_PCIE_IOBM_SWAP_MEM_BASE	_RMIXL_OFFSET(0x10)
    913 #define RMIXL_PCIE_IOBM_SWAP_MEM_LIMIT	_RMIXL_OFFSET(0x11)
    914 #define RMIXL_PCIE_IOBM_SWAP_IO_BASE	_RMIXL_OFFSET(0x12)
    915 #define RMIXL_PCIE_IOBM_SWAP_IO_LIMIT	_RMIXL_OFFSET(0x13)
    916 #define RMIXL_PCIE_TRGT_CHRNT_MEM_BASE	_RMIXL_OFFSET(0x14)
    917 #define RMIXL_PCIE_TRGT_CHRNT_MEM_LIMIT	_RMIXL_OFFSET(0x15)
    918 #define RMIXL_PCIE_TRGT_L2ALC_MEM_BASE	_RMIXL_OFFSET(0x16)
    919 #define RMIXL_PCIE_TRGT_L2ALC_MEM_LIMIT	_RMIXL_OFFSET(0x17)
    920 #define RMIXL_PCIE_TRGT_REX_MEM_BASE	_RMIXL_OFFSET(0x18)
    921 #define RMIXL_PCIE_TRGT_REX_MEM_LIMIT	_RMIXL_OFFSET(0x19)
    922 #define RMIXL_PCIE_EP_MEM_BASE		_RMIXL_OFFSET(0x1a)
    923 #define RMIXL_PCIE_EP_MEM_LIMIT		_RMIXL_OFFSET(0x1b)
    924 #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY0	_RMIXL_OFFSET(0x1c)
    925 #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY1	_RMIXL_OFFSET(0x1d)
    926 #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY2	_RMIXL_OFFSET(0x1e)
    927 #define RMIXL_PCIE_EP_ADDR_MAP_ENTRY3	_RMIXL_OFFSET(0x1f)
    928 #define RMIXL_PCIE_LINK0_STATE		_RMIXL_OFFSET(0x20)
    929 #define RMIXL_PCIE_LINK1_STATE		_RMIXL_OFFSET(0x21)
    930 #define RMIXL_PCIE_IOBM_INT_STATUS	_RMIXL_OFFSET(0x22)
    931 #define RMIXL_PCIE_IOBM_INT_ENABLE	_RMIXL_OFFSET(0x23)
    932 #define RMIXL_PCIE_LINK0_MSI_STATUS	_RMIXL_OFFSET(0x24)
    933 #define RMIXL_PCIE_LINK1_MSI_STATUS	_RMIXL_OFFSET(0x25)
    934 #define RMIXL_PCIE_LINK0_MSI_ENABLE	_RMIXL_OFFSET(0x26)
    935 #define RMIXL_PCIE_LINK1_MSI_ENABLE	_RMIXL_OFFSET(0x27)
    936 #define RMIXL_PCIE_LINK0_INT_STATUS0	_RMIXL_OFFSET(0x28)
    937 #define RMIXL_PCIE_LINK1_INT_STATUS0	_RMIXL_OFFSET(0x29)
    938 #define RMIXL_PCIE_LINK0_INT_STATUS1	_RMIXL_OFFSET(0x2a)
    939 #define RMIXL_PCIE_LINK1_INT_STATUS1	_RMIXL_OFFSET(0x2b)
    940 #define RMIXL_PCIE_LINK0_INT_ENABLE0	_RMIXL_OFFSET(0x2c)
    941 #define RMIXL_PCIE_LINK1_INT_ENABLE0	_RMIXL_OFFSET(0x2d)
    942 #define RMIXL_PCIE_LINK0_INT_ENABLE1	_RMIXL_OFFSET(0x2e)
    943 #define RMIXL_PCIE_LINK1_INT_ENABLE1	_RMIXL_OFFSET(0x2f)
    944 #define RMIXL_PCIE_PHY_CR_CMD		_RMIXL_OFFSET(0x30)
    945 #define RMIXL_PCIE_PHY_CR_WR_DATA	_RMIXL_OFFSET(0x31)
    946 #define RMIXL_PCIE_PHY_CR_RESP		_RMIXL_OFFSET(0x32)
    947 #define RMIXL_PCIE_PHY_CR_RD_DATA	_RMIXL_OFFSET(0x33)
    948 #define RMIXL_PCIE_IOBM_ERR_CMD		_RMIXL_OFFSET(0x34)
    949 #define RMIXL_PCIE_IOBM_ERR_LOWER_ADDR	_RMIXL_OFFSET(0x35)
    950 #define RMIXL_PCIE_IOBM_ERR_UPPER_ADDR	_RMIXL_OFFSET(0x36)
    951 #define RMIXL_PCIE_IOBM_ERR_BE		_RMIXL_OFFSET(0x37)
    952 #define RMIXL_PCIE_LINK2_STATE		_RMIXL_OFFSET(0x60)	/* not on XLS408Lite, XLS404Lite */
    953 #define RMIXL_PCIE_LINK3_STATE		_RMIXL_OFFSET(0x61)	/* not on XLS408Lite, XLS404Lite */
    954 #define RMIXL_PCIE_LINK2_MSI_STATUS	_RMIXL_OFFSET(0x64)	/* not on XLS408Lite, XLS404Lite */
    955 #define RMIXL_PCIE_LINK3_MSI_STATUS	_RMIXL_OFFSET(0x65)	/* not on XLS408Lite, XLS404Lite */
    956 #define RMIXL_PCIE_LINK2_MSI_ENABLE	_RMIXL_OFFSET(0x66)	/* not on XLS408Lite, XLS404Lite */
    957 #define RMIXL_PCIE_LINK3_MSI_ENABLE	_RMIXL_OFFSET(0x67)	/* not on XLS408Lite, XLS404Lite */
    958 #define RMIXL_PCIE_LINK2_INT_STATUS0	_RMIXL_OFFSET(0x68)	/* not on XLS408Lite, XLS404Lite */
    959 #define RMIXL_PCIE_LINK3_INT_STATUS0	_RMIXL_OFFSET(0x69)	/* not on XLS408Lite, XLS404Lite */
    960 #define RMIXL_PCIE_LINK2_INT_STATUS1	_RMIXL_OFFSET(0x6a)	/* not on XLS408Lite, XLS404Lite */
    961 #define RMIXL_PCIE_LINK3_INT_STATUS1	_RMIXL_OFFSET(0x6b)	/* not on XLS408Lite, XLS404Lite */
    962 #define RMIXL_PCIE_LINK2_INT_ENABLE0	_RMIXL_OFFSET(0x6c)	/* not on XLS408Lite, XLS404Lite */
    963 #define RMIXL_PCIE_LINK3_INT_ENABLE0	_RMIXL_OFFSET(0x6d)	/* not on XLS408Lite, XLS404Lite */
    964 #define RMIXL_PCIE_LINK2_INT_ENABLE1	_RMIXL_OFFSET(0x6e)	/* not on XLS408Lite, XLS404Lite */
    965 #define RMIXL_PCIE_LINK3_INT_ENABLE1	_RMIXL_OFFSET(0x6f)	/* not on XLS408Lite, XLS404Lite */
    966 #define RMIXL_VC0_POSTED_RX_QUEUE_CTRL	_RMIXL_OFFSET(0x1d2)
    967 #define RMIXL_VC0_POSTED_BUFFER_DEPTH	_RMIXL_OFFSET(0x1ea)
    968 #define RMIXL_PCIE_MSG_TX_THRESHOLD	_RMIXL_OFFSET(0x308)
    969 #define RMIXL_PCIE_MSG_BUCKET_SIZE_0	_RMIXL_OFFSET(0x320)
    970 #define RMIXL_PCIE_MSG_BUCKET_SIZE_1	_RMIXL_OFFSET(0x321)
    971 #define RMIXL_PCIE_MSG_BUCKET_SIZE_2	_RMIXL_OFFSET(0x322)
    972 #define RMIXL_PCIE_MSG_BUCKET_SIZE_3	_RMIXL_OFFSET(0x323)
    973 #define RMIXL_PCIE_MSG_BUCKET_SIZE_4	_RMIXL_OFFSET(0x324)	/* not on XLS408Lite, XLS404Lite */
    974 #define RMIXL_PCIE_MSG_BUCKET_SIZE_5	_RMIXL_OFFSET(0x325)	/* not on XLS408Lite, XLS404Lite */
    975 #define RMIXL_PCIE_MSG_BUCKET_SIZE_6	_RMIXL_OFFSET(0x326)	/* not on XLS408Lite, XLS404Lite */
    976 #define RMIXL_PCIE_MSG_BUCKET_SIZE_7	_RMIXL_OFFSET(0x327)	/* not on XLS408Lite, XLS404Lite */
    977 #define RMIXL_PCIE_MSG_CREDIT_FIRST	_RMIXL_OFFSET(0x380)
    978 #define RMIXL_PCIE_MSG_CREDIT_LAST	_RMIXL_OFFSET(0x3ff)
    979 
    980 /*
    981  * USB General Interface registers
    982  * these are opffset from REGSPACE selected by __BIT(12) == 1
    983  *	RMIXL_IOREG_VADDR(RMIXL_IO_DEV_USB_B + reg)
    984  * see Tables 18-7 and 18-14 in the XLS PRM
    985  */
    986 #define RMIXL_USB_GEN_CTRL1		0x00
    987 #define RMIXL_USB_GEN_CTRL2		0x04
    988 #define RMIXL_USB_GEN_CTRL3		0x08
    989 #define RMIXL_USB_IOBM_TIMER		0x0C
    990 #define RMIXL_USB_VBUS_TIMER		0x10
    991 #define RMIXL_USB_BYTESWAP_EN		0x14
    992 #define RMIXL_USB_COHERENT_MEM_BASE	0x40
    993 #define RMIXL_USB_COHERENT_MEM_LIMIT	0x44
    994 #define RMIXL_USB_L2ALLOC_MEM_BASE	0x48
    995 #define RMIXL_USB_L2ALLOC_MEM_LIMIT	0x4C
    996 #define RMIXL_USB_READEX_MEM_BASE	0x50
    997 #define RMIXL_USB_READEX_MEM_LIMIT	0x54
    998 #define RMIXL_USB_PHY_STATUS		0xC0
    999 #define RMIXL_USB_INTERRUPT_STATUS	0xC4
   1000 #define RMIXL_USB_INTERRUPT_ENABLE	0xC8
   1001 
   1002 /*
   1003  * RMIXL_USB_GEN_CTRL1 bits
   1004  */
   1005 #define RMIXL_UG_CTRL1_RESV		__BITS(31,2)
   1006 #define RMIXL_UG_CTRL1_HOST_RST		__BIT(1)	/* Resets the Host Controller
   1007 							 *  0: reset
   1008 							 *  1: normal operation
   1009 							 */
   1010 #define RMIXL_UG_CTRL1_DEV_RST		__BIT(0)	/* Resets the Device Controller
   1011 							 *  0: reset
   1012 							 *  1: normal operation
   1013 							 */
   1014 
   1015 /*
   1016  * RMIXL_USB_GEN_CTRL2 bits
   1017  */
   1018 #define RMIXL_UG_CTRL2_RESa		__BITS(31,20)
   1019 #define RMIXL_UG_CTRL2_TX_TUNE_1	__BITS(19,18)	/* Port_1 Transmitter Tuning for High-Speed Operation.
   1020 							 *  00: ~-4.5%
   1021 							 *  01: Design default
   1022 							 *  10: ~+4.5%
   1023 							 *  11: ~+9% = Recommended Operating setting
   1024 							 */
   1025 #define RMIXL_UG_CTRL2_TX_TUNE_0	__BITS(17,16)	/* Port_0 Transmitter Tuning for High-Speed Operation
   1026 							 *  11:  Recommended Operating condition
   1027 							 */
   1028 #define RMIXL_UG_CTRL2_RESb		__BIT(15)
   1029 #define RMIXL_UG_CTRL2_WEAK_PDEN	__BIT(14)	/* 500kOhm Pull-Down Resistor on D+ and D- Enable */
   1030 #define RMIXL_UG_CTRL2_DP_PULLUP_ESD	__BIT(13)	/* D+ Pull-Up Resistor Enable */
   1031 #define RMIXL_UG_CTRL2_ESD_TEST_MODE	__BIT(12)	/* D+ Pull-Up Resistor Control Select */
   1032 #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_H_1	\
   1033 					__BIT(11)	/* Port_1 High-Byte Transmit Bit-Stuffing Enable */
   1034 #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_H_0	\
   1035 					__BIT(10)	/* Port_0 High-Byte Transmit Bit-Stuffing Enable */
   1036 #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_L_1	\
   1037 					__BIT(9)	/* Port_1 Low-Byte Transmit Bit-Stuffing Enable */
   1038 #define RMIXL_UG_CTRL2_TX_BIT_STUFF_EN_L_0	\
   1039 					__BIT(8)	/* Port_0 Low-Byte Transmit Bit-Stuffing Enable */
   1040 #define RMIXL_UG_CTRL2_RESc		__BITS(7,6)
   1041 #define RMIXL_UG_CTRL2_LOOPBACK_ENB_1	__BIT(5)	/* Port_1 Loopback Test Enable */
   1042 #define RMIXL_UG_CTRL2_LOOPBACK_ENB_0	__BIT(4)	/* Port_0 Loopback Test Enable */
   1043 #define RMIXL_UG_CTRL2_DEVICE_VBUS	__BIT(3)	/* VBUS detected (Device mode only) */
   1044 #define RMIXL_UG_CTRL2_PHY_PORT_RST_1	__BIT(2)	/* Resets Port_1 of the PHY
   1045 							 *  1: normal operation
   1046 							 *  0: reset
   1047 							 */
   1048 #define RMIXL_UG_CTRL2_PHY_PORT_RST_0	__BIT(1)	/* Resets Port_0 of the PHY
   1049 							 *  1: normal operation
   1050 							 *  0: reset
   1051 							 */
   1052 #define RMIXL_UG_CTRL2_PHY_RST		__BIT(0)	/* Resets the PHY
   1053 							 *  1: normal operation
   1054 							 *  0: reset
   1055 							 */
   1056 #define RMIXL_UG_CTRL2_RESV	\
   1057 	(RMIXL_UG_CTRL2_RESa | RMIXL_UG_CTRL2_RESb | RMIXL_UG_CTRL2_RESc)
   1058 
   1059 
   1060 /*
   1061  * RMIXL_USB_GEN_CTRL3 bits
   1062  */
   1063 #define RMIXL_UG_CTRL3_RESa		__BITS(31,11)
   1064 #define RMIXL_UG_CTRL3_PREFETCH_SIZE	__BITS(10,8)	/* The pre-fetch size for a memory read transfer
   1065 							 * between USB Interface and DI station.
   1066 							 * Valid value ranges is from 1 to 4.
   1067 							 */
   1068 #define RMIXL_UG_CTRL3_RESb		__BIT(7)
   1069 #define RMIXL_UG_CTRL3_DEV_UPPERADDR	__BITS(6,1)	/* Device controller address space selector */
   1070 #define RMIXL_UG_CTRL3_USB_FLUSH	__BIT(0)	/* Flush the USB interface */
   1071 
   1072 /*
   1073  * RMIXL_USB_PHY_STATUS bits
   1074  */
   1075 #define RMIXL_UB_PHY_STATUS_RESV	__BITS(31,1)
   1076 #define RMIXL_UB_PHY_STATUS_VBUS	__BIT(0)	/* USB VBUS status */
   1077 
   1078 /*
   1079  * RMIXL_USB_INTERRUPT_STATUS and RMIXL_USB_INTERRUPT_ENABLE bits
   1080  */
   1081 #define RMIXL_UB_INTERRUPT_RESV		__BITS(31,6)
   1082 #define RMIXL_UB_INTERRUPT_FORCE	__BIT(5)	/* USB force interrupt */
   1083 #define RMIXL_UB_INTERRUPT_PHY		__BIT(4)	/* USB PHY interrupt */
   1084 #define RMIXL_UB_INTERRUPT_DEV		__BIT(3)	/* USB Device Controller interrupt */
   1085 #define RMIXL_UB_INTERRUPT_EHCI		__BIT(2)	/* USB EHCI interrupt */
   1086 #define RMIXL_UB_INTERRUPT_OHCI_1	__BIT(1)	/* USB OHCI #1 interrupt */
   1087 #define RMIXL_UB_INTERRUPT_OHCI_0	__BIT(0)	/* USB OHCI #0 interrupt */
   1088 #define RMIXL_UB_INTERRUPT_MAX		5
   1089 
   1090 
   1091 /*
   1092  * USB Device Controller registers
   1093  * these are opffset from REGSPACE selected by __BIT(12) == 0
   1094  *	RMIXL_IOREG_VADDR(RMIXL_IO_DEV_USB_A + reg)
   1095  * see Table 18-7 in the XLS PRM
   1096  */
   1097 #define RMIXL_USB_UDC_GAHBCFG		0x008	/* UDC Configuration A (UDC_GAHBCFG) */
   1098 #define RMIXL_USB_UDC_GUSBCFG		0x00C	/* UDC Configuration B (UDC_GUSBCFG) */
   1099 #define RMIXL_USB_UDC_GRSTCTL		0x010	/* UDC Reset */
   1100 #define RMIXL_USB_UDC_GINTSTS		0x014	/* UDC Interrupt Register */
   1101 #define RMIXL_USB_UDC_GINTMSK		0x018	/* UDC Interrupt Mask Register */
   1102 #define RMIXL_USB_UDC_GRXSTSP		0x020	/* UDC Receive Status Read /Pop Register (Read Only) */
   1103 #define RMIXL_USB_UDC_GRXFSIZ		0x024	/* UDC Receive FIFO Size Register */
   1104 #define RMIXL_USB_UDC_GNPTXFSIZ		0x028	/* UDC Non-periodic Transmit FIFO Size Register */
   1105 #define RMIXL_USB_UDC_GUID		0x03C	/* UDC User ID Register (UDC_GUID) */
   1106 #define RMIXL_USB_UDC_GSNPSID		0x040	/* UDC ID Register (Read Only) */
   1107 #define RMIXL_USB_UDC_GHWCFG1		0x044	/* UDC User HW Config1 Register (Read Only) */
   1108 #define RMIXL_USB_UDC_GHWCFG2		0x048	/* UDC User HW Config2 Register (Read Only) */
   1109 #define RMIXL_USB_UDC_GHWCFG3		0x04C	/* UDC User HW Config3 Register (Read Only) */
   1110 #define RMIXL_USB_UDC_GHWCFG4		0x050	/* UDC User HW Config4 Register (Read Only) */
   1111 #define RMIXL_USB_UDC_DPTXFSIZ0		0x104
   1112 #define RMIXL_USB_UDC_DPTXFSIZ1		0x108
   1113 #define RMIXL_USB_UDC_DPTXFSIZ2		0x10c
   1114 #define RMIXL_USB_UDC_DPTXFSIZn(n)	(0x104 + (4 * (n)))
   1115 						/* UDC Device IN Endpoint Transmit FIFO-n
   1116 						   Size Registers (UDC_DPTXFSIZn) */
   1117 #define RMIXL_USB_UDC_DCFG		0x800	/* UDC Configuration C */
   1118 #define RMIXL_USB_UDC_DCTL		0x804	/* UDC Control Register */
   1119 #define RMIXL_USB_UDC_DSTS		0x808	/* UDC Status Register (Read Only) */
   1120 #define RMIXL_USB_UDC_DIEPMSK		0x810	/* UDC Device IN Endpoint Common
   1121 						   Interrupt Mask Register (UDC_DIEPMSK) */
   1122 #define RMIXL_USB_UDC_DOEPMSK		0x814	/* UDC Device OUT Endpoint Common Interrupt Mask register */
   1123 #define RMIXL_USB_UDC_DAINT		0x818	/* UDC Device All Endpoints Interrupt Register */
   1124 #define RMIXL_USB_UDC_DAINTMSK		0x81C	/* UDC Device All Endpoints Interrupt Mask Register */
   1125 #define RMIXL_USB_UDC_DTKNQR3		0x830	/* Device Threshold Control Register */
   1126 #define RMIXL_USB_UDC_DTKNQR4		0x834	/* Device IN Endpoint FIFO Empty Interrupt Mask Register */
   1127 #define RMIXL_USB_UDC_DIEPCTL		0x900	/* Device Control IN Endpoint 0 Control Register */
   1128 #define RMIXL_USB_UDC_DIEPINT		0x908	/* Device IN Endpoint 0 Interrupt Register */
   1129 #define RMIXL_USB_UDC_DIEPTSIZ		0x910	/* Device IN Endpoint 0 Transfer Size Register */
   1130 #define RMIXL_USB_UDC_DIEPDMA		0x914	/* Device IN Endpoint 0 DMA Address Register */
   1131 #define RMIXL_USB_UDC_DTXFSTS		0x918	/* Device IN Endpoint Transmit FIFO Status Register */
   1132 #define RMIXL_USB_DEV_IN_ENDPT(d,n)	(0x920 + ((d) * 0x20) + ((n) * 4))
   1133 						/* Device IN Endpoint #d Register #n */
   1134 
   1135 /*
   1136  * FMN non-core station configuration registers
   1137  */
   1138 #define RMIXL_FMN_BS_FIRST		_RMIXL_OFFSET(0x320)
   1139 
   1140 /*
   1141  * SGMII bucket size regs
   1142  */
   1143 #define RMIXL_FMN_BS_SGMII_UNUSED0	_RMIXL_OFFSET(0x320)	/* initialize as 0 */
   1144 #define RMIXL_FMN_BS_SGMII_FCB		_RMIXL_OFFSET(0x321)	/* Free Credit Bucket size */
   1145 #define RMIXL_FMN_BS_SGMII_TX0		_RMIXL_OFFSET(0x322)
   1146 #define RMIXL_FMN_BS_SGMII_TX1		_RMIXL_OFFSET(0x323)
   1147 #define RMIXL_FMN_BS_SGMII_TX2		_RMIXL_OFFSET(0x324)
   1148 #define RMIXL_FMN_BS_SGMII_TX3		_RMIXL_OFFSET(0x325)
   1149 #define RMIXL_FMN_BS_SGMII_UNUSED1	_RMIXL_OFFSET(0x326)	/* initialize as 0 */
   1150 #define RMIXL_FMN_BS_SGMII_FCB1		_RMIXL_OFFSET(0x327)	/* Free Credit Bucket1 size */
   1151 
   1152 /*
   1153  * SAE bucket size regs
   1154  */
   1155 #define RMIXL_FMN_BS_SAE_PIPE0		_RMIXL_OFFSET(0x320)
   1156 #define RMIXL_FMN_BS_SAE_RSA_PIPE	_RMIXL_OFFSET(0x321)
   1157 
   1158 /*
   1159  * DMA bucket size regs
   1160  */
   1161 #define RMIXL_FMN_BS_DMA_CHAN0		_RMIXL_OFFSET(0x320)
   1162 #define RMIXL_FMN_BS_DMA_CHAN1		_RMIXL_OFFSET(0x321)
   1163 #define RMIXL_FMN_BS_DMA_CHAN2		_RMIXL_OFFSET(0x322)
   1164 #define RMIXL_FMN_BS_DMA_CHAN3		_RMIXL_OFFSET(0x323)
   1165 
   1166 /*
   1167  * CDE bucket size regs
   1168  */
   1169 #define RMIXL_FMN_BS_CDE_FREE_DESC	_RMIXL_OFFSET(0x320)
   1170 #define RMIXL_FMN_BS_CDE_COMPDECOMP	_RMIXL_OFFSET(0x321)
   1171 
   1172 /*
   1173  * PCIe bucket size regs
   1174  */
   1175 #define RMIXL_FMN_BS_PCIE_TX0		_RMIXL_OFFSET(0x320)
   1176 #define RMIXL_FMN_BS_PCIE_RX0		_RMIXL_OFFSET(0x321)
   1177 #define RMIXL_FMN_BS_PCIE_TX1		_RMIXL_OFFSET(0x322)
   1178 #define RMIXL_FMN_BS_PCIE_RX1		_RMIXL_OFFSET(0x323)
   1179 #define RMIXL_FMN_BS_PCIE_TX2		_RMIXL_OFFSET(0x324)
   1180 #define RMIXL_FMN_BS_PCIE_RX2		_RMIXL_OFFSET(0x325)
   1181 #define RMIXL_FMN_BS_PCIE_TX3		_RMIXL_OFFSET(0x326)
   1182 #define RMIXL_FMN_BS_PCIE_RX3		_RMIXL_OFFSET(0x327)
   1183 
   1184 /*
   1185  * non-core Credit Counter offsets
   1186  */
   1187 #define RMIXL_FMN_CC_FIRST		_RMIXL_OFFSET(0x380)
   1188 #define RMIXL_FMN_CC_LAST		_RMIXL_OFFSET(0x3ff)
   1189 
   1190 /*
   1191  * non-core Credit Counter bit defines
   1192  */
   1193 #define RMIXL_FMN_CC_RESV		__BITS(31,8)
   1194 #define RMIXL_FMN_CC_COUNT		__BITS(7,0)
   1195 
   1196 /*
   1197  * USB Host Controller register base addrs
   1198  * these are offset from REGSPACE selected by __BIT(12) == 0
   1199  *	RMIXL_IOREG_VADDR(RMIXL_IO_DEV_USB_A + reg)
   1200  * see Table 18-14 in the XLS PRM
   1201  * specific Host Controller is selected by __BITS(11,10)
   1202  */
   1203 #define RMIXL_USB_HOST_EHCI_BASE	0x000
   1204 #define RMIXL_USB_HOST_0HCI0_BASE	0x400
   1205 #define RMIXL_USB_HOST_0HCI1_BASE	0x800
   1206 #define RMIXL_USB_HOST_RESV		0xc00
   1207 #define RMIXL_USB_HOST_MASK		0xc00
   1208 
   1209 #define	RMIXLP_SBC_PCITAG		_RMIXL_PCITAG(0,0,0)
   1210 #define	RMIXLP_ICI1_PCITAG		_RMIXL_PCITAG(0,0,1)
   1211 #define	RMIXLP_ICI2_PCITAG		_RMIXL_PCITAG(0,0,2)
   1212 #define	RMIXLP_ICI3_PCITAG		_RMIXL_PCITAG(0,0,3)
   1213 #define	RMIXLP_PIC_PCITAG		_RMIXL_PCITAG(0,0,4)
   1214 
   1215 #define	RMIXLP_PCIPORT0_PCITAG		_RMIXL_PCITAG(0,1,0)
   1216 #define	RMIXLP_PCIPORT1_PCITAG		_RMIXL_PCITAG(0,1,1)
   1217 #define	RMIXLP_PCIPORT2_PCITAG		_RMIXL_PCITAG(0,1,2)
   1218 #define	RMIXLP_PCIPORT3_PCITAG		_RMIXL_PCITAG(0,1,3)
   1219 
   1220 #define	RMIXLP_EHCI0_PCITAG		_RMIXL_PCITAG(0,2,0)
   1221 #define	RMIXLP_OHCI0_PCITAG		_RMIXL_PCITAG(0,2,1)
   1222 #define	RMIXLP_OHCI1_PCITAG		_RMIXL_PCITAG(0,2,2)
   1223 #define	RMIXLP_EHCI1_PCITAG		_RMIXL_PCITAG(0,2,3)
   1224 #define	RMIXLP_OHCI2_PCITAG		_RMIXL_PCITAG(0,2,4)
   1225 #define	RMIXLP_OHCI3_PCITAG		_RMIXL_PCITAG(0,2,5)
   1226 
   1227 #define	RMIXLP_NAE_PCITAG		_RMIXL_PCITAG(0,3,0)
   1228 #define	RMIXLP_POE_PCITAG		_RMIXL_PCITAG(0,3,1)
   1229 #define	RMIXLP_AHCI_PCITAG		_RMIXL_PCITAG(0,3,2)
   1230 
   1231 #define	RMIXLP_FMN_PCITAG		_RMIXL_PCITAG(0,4,0)
   1232 
   1233 #define	RMIXLP_DMA_PCITAG		_RMIXL_PCITAG(0,5,0)
   1234 #define	RMIXLP_SAE_PCITAG		_RMIXL_PCITAG(0,5,1)
   1235 #define	RMIXLP_PKE_PCITAG		_RMIXL_PCITAG(0,5,2)
   1236 #define	RMIXLP_CDE_PCITAG		_RMIXL_PCITAG(0,5,3)
   1237 #define	RMIXLP_SRIO_PCITAG		_RMIXL_PCITAG(0,5,4)
   1238 #define	RMIXLP_RXE_PCITAG		_RMIXL_PCITAG(0,5,5)
   1239 
   1240 #define	RMIXLP_UART1_PCITAG		_RMIXL_PCITAG(0,6,0)
   1241 #define	RMIXLP_UART2_PCITAG		_RMIXL_PCITAG(0,6,1)
   1242 #define	RMIXLP_I2C1_PCITAG		_RMIXL_PCITAG(0,6,2)
   1243 #define	RMIXLP_I2C2_PCITAG		_RMIXL_PCITAG(0,6,3)
   1244 #define	RMIXLP_GPIO_PCITAG		_RMIXL_PCITAG(0,6,4)
   1245 #define	RMIXLP_SM_PCITAG		_RMIXL_PCITAG(0,6,5)
   1246 #define	RMIXLP_JTAG_PCITAG		_RMIXL_PCITAG(0,6,6)
   1247 
   1248 #define	RMIXLP_NOR_PCITAG		_RMIXL_PCITAG(0,7,0)
   1249 #define	RMIXLP_NAND_PCITAG		_RMIXL_PCITAG(0,7,1)
   1250 #define	RMIXLP_SPI_PCITAG		_RMIXL_PCITAG(0,7,2)
   1251 #define	RMIXLP_MMC_PCITAG		_RMIXL_PCITAG(0,7,3)
   1252 /*
   1253  * PCI PCIe control (contains the IRT info)
   1254  */
   1255 #define	PCI_RMIXLP_OQCOUNT		_RMIXL_OFFSET(0x30)
   1256 #define	PCI_RMIXLP_POE_FLOWS		_RMIXL_OFFSET(0x30)
   1257 #define	PCI_RMIXLP_ONCHIP		_RMIXL_OFFSET(0x31)
   1258 #define	PCI_RMIXLP_OFFCHIP		_RMIXL_OFFSET(0x32)
   1259 #define	PCI_RMIXLP_CONTEXTS		_RMIXL_OFFSET(0x35)
   1260 #define	PCI_RMIXLP_STATID		_RMIXL_OFFSET(0x3c)
   1261 #define	PCI_RMIXLP_IRTINFO		_RMIXL_OFFSET(0x3d)
   1262 
   1263 #define	PCI_RMIXLP_STATID_BASE(x)	(((x) >> 0) & 0xfff)
   1264 #define	PCI_RMIXLP_STATID_COUNT(x)	(((x) >> 16) & 0xfff)
   1265 
   1266 #define	PCI_RMIXLP_IRTINFO_BASE(x)	(((x) >> 0) & 0xfff)
   1267 #define	PCI_RMIXLP_IRTINFO_COUNT(x)	(((x) >> 16) & 0xfff)
   1268 
   1269 /*
   1270  * XLP PCIe Host Bridge (Device 0 Function 0) Registers
   1271  */
   1272 #ifndef RMIXLP_SBC_PCIE_ECFG_PBASE
   1273 #define	RMIXLP_SBC_PCIE_ECFG_PBASE	0x18000000
   1274 #endif
   1275 #define	RMIXLP_SBC_PCIE_ECFG_VBASE	MIPS_PHYS_TO_KSEG1(RMIXLP_SBC_PCIE_ECFG_PBASE)
   1276 #define RMIXLP_SBC_NBU_MODE		_RMIXL_OFFSET(0x40)	/* Memory I/O mode */
   1277 #define RMIXLP_SBC_PCIE_CFG_BASE	_RMIXL_OFFSET(0x41)	/* PCI Configuration BAR */
   1278 #define RMIXLP_SBC_PCIE_CFG_LIMIT	_RMIXL_OFFSET(0x42)	/* PCI Configuration Limit */
   1279 #define RMIXLP_SBC_PCIE_ECFG_BASE	_RMIXL_OFFSET(0x43)	/* PCI Extended Configuration BAR */
   1280 #define RMIXLP_SBC_PCIE_ECFG_LIMIT	_RMIXL_OFFSET(0x44)	/* PCI Extended Configuration Limit */
   1281 #define RMIXLP_SBC_BUSNUM_BARn(n)	_RMIXL_OFFSET(0x45+(n))	/* Bus Number BAR reg */
   1282 #define	RMIXLP_SBC_NBUSNUM_BAR		7	/* PCIe: 0-3, ICI: 4-7 */
   1283 #define RMIXLP_SBC_FLASH_BASEn(n)	_RMIXL_OFFSET(0x4c+(n))	/* Flash Memory BAR */
   1284 #define RMIXLP_SBC_FLASH_LIMITn(n)	_RMIXL_OFFSET(0x50+(n))	/* Flash Memory Limit reg */
   1285 #define	RMIXLP_SBC_NFLASH		4
   1286 #define RMIXLP_SBC_DRAM_BASEn(n)	_RMIXL_OFFSET(0x54+(n))	/* DRAM[n] BAR */
   1287 #define RMIXLP_SBC_DRAM_LIMITn(n)	_RMIXL_OFFSET(0x5c+(n))	/* DRAM[n] Limit */
   1288 #define RMIXLP_SBC_DRAM_XLATIONn(n)	_RMIXL_OFFSET(0x6c+(n))	/* DRAM[n] Translation */
   1289 #define	RMIXLP_SBC_NDRAM		8
   1290 #define RMIXLP_SBC_PCIE_MEM_BASEn(n)	_RMIXL_OFFSET(0x74+(n))	/* PCI Memory region BAR */
   1291 #define RMIXLP_SBC_PCIE_MEM_LIMITn(n)	_RMIXL_OFFSET(0x78+(n))	/* PCI Memory region Limit */
   1292 #define	RMIXLP_SBC_NPCIE_MEM		4
   1293 #define RMIXLP_SBC_PCIE_IO_BASEn(n)	_RMIXL_OFFSET(0x7c+(n))	/* PCI IO region BAR */
   1294 #define RMIXLP_SBC_PCIE_IO_LIMITn(n)	_RMIXL_OFFSET(0x80+(n))	/* PCI IO region LimitAR */
   1295 #define	RMIXLP_SBC_NPCIE_IO		4
   1296 
   1297 #define	_RMIXLP_SBC_X_TO_PA(x,r)	\
   1298 		((uint64_t)((r) & RMIXLP_SBC_##x##_MASK) << 8)
   1299 #define	_RMIXLP_SBC_PA_TO_X(x,r)	\
   1300 		(((uint64_t)(r) >> 8) & RMIXLP_SBC_##x##_MASK)
   1301 #define	_RMIXLP_SBC_X_SIZE(x,b,l)	\
   1302 		((l)-(b)+(__LOWEST_SET_BIT(RMIXLP_SBC_##x##_MASK) << 8))
   1303 
   1304 #define	RMIXLP_SBC_DRAM_MASK		__BITS(31,12)	/* phys address bits 39:20 */
   1305 #define	RMIXLP_SBC_PCIE_CFG_MASK	__BITS(31,16)	/* phys address bits 39:24 */
   1306 #define	RMIXLP_SBC_PCIE_ECFG_MASK	__BITS(31,12)	/* phys address bits 39:20 */
   1307 #define	RMIXLP_SBC_PCIE_MEM_MASK	__BITS(31,12)	/* phys address bits 39:20 */
   1308 #define	RMIXLP_SBC_PCIE_IO_MASK		__BITS(31,12)	/* phys address bits 39:20 */
   1309 #define	RMIXLP_SBC_SRIO_MEM_MASK	__BITS(31,12)	/* phys address bits 39:20 */
   1310 
   1311 #define	RMIXLP_SBC_DRAM_SIZE(b,l)	_RMIXLP_SBC_X_SIZE(DRAM,b,l)
   1312 #define	RMIXLP_SBC_PCIE_CFG_SIZE(b,l)	_RMIXLP_SBC_X_SIZE(PCIE_CFG,b,l)
   1313 #define	RMIXLP_SBC_PCIE_ECFG_SIZE(b,l)	_RMIXLP_SBC_X_SIZE(PCIE_ECFG,b,l)
   1314 #define	RMIXLP_SBC_PCIE_MEM_SIZE(b,l)	_RMIXLP_SBC_X_SIZE(PCIE_MEM,b,l)
   1315 #define	RMIXLP_SBC_PCIE_IO_SIZE(b,l)	_RMIXLP_SBC_X_SIZE(PCIE_IO,b,l)
   1316 #define	RMIXLP_SBC_SRIO_MEM_SIZE(b,l)	_RMIXLP_SBC_X_SIZE(SRIO_MEM,b,l)
   1317 
   1318 #define	RMIXLP_SBC_DRAM_TO_PA(r)	_RMIXLP_SBC_X_TO_PA(DRAM,r)
   1319 #define	RMIXLP_SBC_PCIE_CFG_TO_PA(r)	_RMIXLP_SBC_X_TO_PA(PCIE_CFG,r)
   1320 #define	RMIXLP_SBC_PCIE_ECFG_TO_PA(r)	_RMIXLP_SBC_X_TO_PA(PCIE_ECFG,r)
   1321 #define	RMIXLP_SBC_PCIE_MEM_TO_PA(r)	_RMIXLP_SBC_X_TO_PA(PCIE_MEM,r)
   1322 #define	RMIXLP_SBC_PCIE_IO_TO_PA(r)	_RMIXLP_SBC_X_TO_PA(PCIE_IO,r)
   1323 #define	RMIXLP_SBC_SRIO_MEM_TO_PA(r)	_RMIXLP_SBC_X_TO_PA(SRIO_MEM,r)
   1324 
   1325 #define	RMIXLP_SBC_PA_TO_DRAM(r)	_RMIXLP_SBC_PA_TO_X(DRAM,r)
   1326 #define	RMIXLP_SBC_PA_TO_PCIE_CFG(r)	_RMIXLP_SBC_PA_TO_X(PCIE_CFG,r)
   1327 #define	RMIXLP_SBC_PA_TO_PCIE_ECFG(r)	_RMIXLP_SBC_PA_TO_X(PCIE_ECFG,r)
   1328 #define	RMIXLP_SBC_PA_TO_PCIE_MEM(r)	_RMIXLP_SBC_PA_TO_X(PCIE_MEM,r)
   1329 #define	RMIXLP_SBC_PA_TO_PCIE_IO(r)	_RMIXLP_SBC_PA_TO_X(PCIE_IO,r)
   1330 #define	RMIXLP_SBC_PA_TO_SRIO_MEM(r)	_RMIXLP_SBC_PA_TO_X(SRIO_MEM,r)
   1331 
   1332 /*
   1333  * For each PCIe link, its subordinate buses must be programed into its
   1334  * BusNum_BAR register.  This is in addition to the normal PCIe registers
   1335  * on the PCIe link device itself.
   1336  */
   1337 #define	RMIXLP_SBC_BUSNUM_BAR_ENABLE	__BIT(0)
   1338 #define	RMIXLP_SBC_BUSNUM_BAR_SECBUS	__BITS(15,8)
   1339 #define	RMIXLP_SBC_BUSNUM_BAR_SUBBUS	__BITS(23,16)
   1340 #define	RMIXLP_SBC_BUSNUM_BAR_MASK	__BITS(23,8)
   1341 
   1342 #define	RMIXLP_SBC_EVCNT_CTRL1		_RMIXL_OFFSET(0x90) /* Event Counter 1 Control Register */
   1343 #define	RMIXLP_SBC_EVCNT_LOW1		_RMIXL_OFFSET(0x91) /* Event Counter 1 Low Register */
   1344 #define	RMIXLP_SBC_EVCNT_HIGH1		_RMIXL_OFFSET(0x92) /* Event Counter 1 High Register */
   1345 #define	RMIXLP_SBC_EVCNT_CTRL2		_RMIXL_OFFSET(0x93) /* Event Counter 2 Control Register */
   1346 #define	RMIXLP_SBC_EVCNT_LOW2		_RMIXL_OFFSET(0x94) /* Event Counter 2 Low Register */
   1347 #define	RMIXLP_SBC_EVCNT_HIGH2		_RMIXL_OFFSET(0x95) /* Event Counter 2 High Register */
   1348 
   1349 #define RMIXLP_SBC_TRCBUF_MATCH_RQST0	_RMIXL_OFFSET(0x96) /* Trace Buffer Match Request Register 0 */
   1350 #define RMIXLP_SBC_TRCBUF_MATCH_RQST1	_RMIXL_OFFSET(0x97) /* Trace Buffer MAtch Request Register 1 */
   1351 #define RMIXLP_SBC_TRCBUF_MATCH_ADDRLO	_RMIXL_OFFSET(0x98) /* Trace Buffer Match Request Address Low Register */
   1352 #define RMIXLP_SBC_TRCBUF_MATCH_ADDRHI	_RMIXL_OFFSET(0x99) /* Trace Buffer Match Request Address High Register */
   1353 #define RMIXLP_SBC_TRCBUF_CTRL		_RMIXL_OFFSET(0x9A) /* Trace Buffer Control Register */
   1354 #define RMIXLP_SBC_TRCBUF_INIT		_RMIXL_OFFSET(0x9B) /* Trace Buffer Initialization Register */
   1355 #define RMIXLP_SBC_TRCBUF_ACCESS	_RMIXL_OFFSET(0x9C) /* Trace Buffer Access Register */
   1356 #define RMIXLP_SBC_TRCBUF_READDATA(n)	_RMIXL_OFFSET(0x9D+(n)) /* Trace Buffer Read Data Registers <0-3> */
   1357 #define RMIXLP_SBC_NTRCBUF_READDATA	4
   1358 #define RMIXLP_SBC_TRCBUF_STATUS	_RMIXL_OFFSET(0xA1) /* Trace Buffer Status Register */
   1359 
   1360 #define RMIXLP_SBC_ADDR_ERROR0		_RMIXL_OFFSET(0xA2) /* Address Error Register 0 */
   1361 #define RMIXLP_SBC_ADDR_ERROR1		_RMIXL_OFFSET(0xA3) /* Address Error Register 1 */
   1362 #define RMIXLP_SBC_ADDR_ERROR2		_RMIXL_OFFSET(0xA4) /* Address Error Register 2 */
   1363 #define RMIXLP_SBC_TAGECC_ADDR_ERROR0	_RMIXL_OFFSET(0xA5) /* Tag ECC Address Error Register 0 */
   1364 #define RMIXLP_SBC_TAGECC_ADDR_ERROR1	_RMIXL_OFFSET(0xA6) /* Tag ECC Address Error Register 1 */
   1365 #define RMIXLP_SBC_TAGECC_ADDR_ERROR2	_RMIXL_OFFSET(0xA7) /* Tag ECC Address Error Register 2 */
   1366 #define RMIXLP_SBC_LINE_FLUSH_LOW	_RMIXL_OFFSET(0xA8) /* Line Flush Low Register */
   1367 #define RMIXLP_SBC_LINE_FLUSH_HIGH	_RMIXL_OFFSET(0xA9) /* Line Flush High Register */
   1368 #define RMIXLP_SBC_NODE_ID		_RMIXL_OFFSET(0xAA) /* Node ID Register */
   1369 #define RMIXLP_SBC_ERROR_INT_ENABLE	_RMIXL_OFFSET(0xAB) /* Error Interrupt Enable Register */
   1370 #define RMIXLP_SBC_TIMEOUT_ERROR0	_RMIXL_OFFSET(0xAC) /* Timeout Error Register 0 */
   1371 #define RMIXLP_SBC_TIMEOUT_ERROR1	_RMIXL_OFFSET(0xAD) /* Timeout Error Register 1 */
   1372 #define RMIXLP_SBC_TIMEOUT_ERROR2	_RMIXL_OFFSET(0xAE) /* Timeout Error Register 2 */
   1373 #define RMIXLP_SBC_SRIO_MEM_BASE	_RMIXL_OFFSET(0xAF) /* SRIO Memory Base Address Register */
   1374 #define RMIXLP_SBC_SRIO_MEM_LIMIT	_RMIXL_OFFSET(0xB0) /* SRIO Memory Limit Address Register */
   1375 
   1376 /*
   1377  * XLP L3 Cache Registers
   1378  */
   1379 #define RMIXLP_SBC_L3_LINE_LCK0			_RMIXL_OFFSET(0xC0)
   1380 #define RMIXLP_SBC_L3_LINE_LCK1			_RMIXL_OFFSET(0xC1)
   1381 #define RMIXLP_SBC_L3_ACCESS_CMD		_RMIXL_OFFSET(0xC2)
   1382 #define RMIXLP_SBC_L3_ACCESS_ADDR		_RMIXL_OFFSET(0xC3)
   1383 #define RMIXLP_SBC_L3_ACCESS_DATA0		_RMIXL_OFFSET(0xC4)
   1384 #define RMIXLP_SBC_L3_ACCESS_DATA1		_RMIXL_OFFSET(0xC5)
   1385 #define RMIXLP_SBC_L3_ACCESS_DATA2		_RMIXL_OFFSET(0xC6)
   1386 #define RMIXLP_SBC_L3_WAY_PART0			_RMIXL_OFFSET(0xC7)
   1387 #define RMIXLP_SBC_L3_WAY_PART1			_RMIXL_OFFSET(0xC8)
   1388 #define RMIXLP_SBC_L3_WAY_PART4			_RMIXL_OFFSET(0xCB)
   1389 #define RMIXLP_SBC_L3_WAY_PART5			_RMIXL_OFFSET(0xCC)
   1390 #define RMIXLP_SBC_L3_WAY_PART6			_RMIXL_OFFSET(0xCD)
   1391 #define RMIXLP_SBC_L3_PERF_CTL_REG0		_RMIXL_OFFSET(0xCE)
   1392 #define RMIXLP_SBC_L3_PERF_CNT_REG0		_RMIXL_OFFSET(0xCF)
   1393 #define RMIXLP_SBC_L3_PERF_CTL_REG1		_RMIXL_OFFSET(0xD0)
   1394 #define RMIXLP_SBC_L3_PERF_CNT_REG1		_RMIXL_OFFSET(0xD1)
   1395 #define RMIXLP_SBC_L3_PERF_CTL_REG2		_RMIXL_OFFSET(0xD2)
   1396 #define RMIXLP_SBC_L3_PERF_CNT_REG2		_RMIXL_OFFSET(0xD3)
   1397 #define RMIXLP_SBC_L3_PERF_CTL_REG3		_RMIXL_OFFSET(0xD4)
   1398 #define RMIXLP_SBC_L3_PERF_CNT_REG3		_RMIXL_OFFSET(0xD5)
   1399 #define RMIXLP_SBC_L3_ERROR_INJ_CTL_REG0	_RMIXL_OFFSET(0xD6)
   1400 #define RMIXLP_SBC_L3_ERROR_INJ_CTL_REG1	_RMIXL_OFFSET(0xD7)
   1401 #define RMIXLP_SBC_L3_ERROR_INJ_CTL_REG2	_RMIXL_OFFSET(0xD8)
   1402 #define RMIXLP_SBC_L3_ERROR_LOG_REG0		_RMIXL_OFFSET(0xD9)
   1403 #define RMIXLP_SBC_L3_ERROR_LOG_REG1		_RMIXL_OFFSET(0xDA)
   1404 #define RMIXLP_SBC_L3_ERROR_LOG_REG2		_RMIXL_OFFSET(0xDB)
   1405 #define RMIXLP_SBC_L3_INTERRUPT_EN_REG		_RMIXL_OFFSET(0xDC)
   1406 
   1407 /*
   1408  * XLP Time Slot Weight Registers
   1409  */
   1410 #define RMIXLP_SBC_PCIE_LINK_TSW(n)	_RMIXL_OFFSET(0x300+(n)) /* PCIe Link 0 Time Slot Weight Register */
   1411 #define	RMIXLP_SBC_NPCIE_LINK_TSW	4
   1412 #define RMIXLP_SBC_USB_TSW		_RMIXL_OFFSET(0x304) /* USB Time Slot Weight Register */
   1413 #define RMIXLP_SBC_POE_TSW		_RMIXL_OFFSET(0x305) /* Packet Ordering Engine Time Slot Weight Register */
   1414 #define RMIXLP_SBC_SATA_TSW		_RMIXL_OFFSET(0x306) /* SATA Weight Register */
   1415 #define RMIXLP_SBC_SRIO_TSW		_RMIXL_OFFSET(0x307) /* SRIO Weight Register */
   1416 #define RMIXLP_SBC_REGEX_TSW		_RMIXL_OFFSET(0x308) /* RegEx Weight Register */
   1417 #define RMIXLP_SBC_GPIO_TSW		_RMIXL_OFFSET(0x309) /* General I/O Time Slot Weight Register */
   1418 #define RMIXLP_SBC_FLASH_TSW		_RMIXL_OFFSET(0x30A) /* Flash Time Slot Weight Register (NAND/NOR/SPI/MMC/SD) */
   1419 #define RMIXLP_SBC_NAE_TSW		_RMIXL_OFFSET(0x30B) /* Network Acceleration Engine Time Slot Weight Register */
   1420 #define RMIXLP_SBC_FMN_TSW		_RMIXL_OFFSET(0x30C) /* Fast Messaging Network Time Slot Weight Register */
   1421 #define RMIXLP_SBC_DMAENG_TSW		_RMIXL_OFFSET(0x30D) /* Data Transfer and RAID Engine Slot Weight Register */
   1422 #define RMIXLP_SBC_SEC_TSW		_RMIXL_OFFSET(0x30E) /* Security Engine Slot Weight Register */
   1423 #define RMIXLP_SBC_RSAECC_TSW		_RMIXL_OFFSET(0x30F) /* RSA/ECC Engine Slot Weight Register */
   1424 #define RMIXLP_SBC_BRIDGE_DATA_COUNTER	_RMIXL_OFFSET(0x310) /* Bridge Data Counter Register */
   1425 #define RMIXLP_SBC_BYTE_SWAP		_RMIXL_OFFSET(0x311) /* Byte Swap Register */
   1426 
   1427 /*
   1428  * RMIXLP PIC (device 0 function 4) registers
   1429  * (all are 64-bit except when noted)
   1430  */
   1431 #define	RMIXLP_PIC_CTRL			_RMIXL_OFFSET(0x40)
   1432 #define	RMIXLP_PIC_BYTESWAP		_RMIXL_OFFSET(0x42)
   1433 #define	RMIXLP_PIC_STATUS		_RMIXL_OFFSET(0x44)
   1434 #define	RMIXLP_PIC_INT_TIMEOUT		_RMIXL_OFFSET(0x46)
   1435 #define	RMIXLP_PIC_ICI0_INT_TIMEOUT	_RMIXL_OFFSET(0x48)
   1436 					/* nothing at 0x4a */
   1437 #define	RMIXLP_PIC_IPI_CTRL		_RMIXL_OFFSET(0x4e)
   1438 #define	RMIXLP_PIC_INT_ACK		_RMIXL_OFFSET(0x50)
   1439 #define	RMIXLP_PIC_INT_PENDING0		_RMIXL_OFFSET(0x52) /* IRT 0..63 */
   1440 #define	RMIXLP_PIC_INT_PENDING1		_RMIXL_OFFSET(0x54) /* IRT 64..127 */
   1441 #define	RMIXLP_PIC_INT_PENDING2		_RMIXL_OFFSET(0x56) /* IRT 128..160 */
   1442 #define	RMIXLP_PIC_WATCHDOG0_MAXVAL	_RMIXL_OFFSET(0x58)
   1443 #define	RMIXLP_PIC_WATCHDOG0_COUNT	_RMIXL_OFFSET(0x5a)
   1444 #define	RMIXLP_PIC_WATCHDOG0_ENABLE0	_RMIXL_OFFSET(0x5c)
   1445 					/* nothing at 0x5e */
   1446 #define	RMIXLP_PIC_WATCHDOG0_BEATCMD	_RMIXL_OFFSET(0x60)
   1447 #define	RMIXLP_PIC_WATCHDOG0_BEAT0	_RMIXL_OFFSET(0x62)
   1448 #define	RMIXLP_PIC_WATCHDOG0_BEAT1	_RMIXL_OFFSET(0x64)
   1449 #define	RMIXLP_PIC_WATCHDOG1_MAXVAL	_RMIXL_OFFSET(0x66)
   1450 #define	RMIXLP_PIC_WATCHDOG1_COUNT	_RMIXL_OFFSET(0x68)
   1451 #define	RMIXLP_PIC_WATCHDOG1_ENABLE	_RMIXL_OFFSET(0x6a)
   1452 					/* nothing at 0x6c */
   1453 #define	RMIXLP_PIC_WATCHDOG1_BEATCMD	_RMIXL_OFFSET(0x6e)
   1454 #define	RMIXLP_PIC_WATCHDOG1_BEAT	_RMIXL_OFFSET(0x70)
   1455 					/* nothing at 0x72 */
   1456 #define	RMIXLP_PIC_SYSTEMTIMER_MAXVALUE(n)	_RMIXL_OFFSET(0x74+2*(n))
   1457 #define	RMIXLP_PIC_SYSTEMTIMER_COUNT(n)	_RMIXL_OFFSET(0x84+2*(n))
   1458 #define	RMIXLP_PIC_INT_THREAD_ENABLE01(n) _RMIXL_OFFSET(0x94+4*(n))
   1459 #define	RMIXLP_PIC_INT_THREAD_ENABLE23(n) _RMIXL_OFFSET(0x96+4*(n))
   1460 #define	RMIXLP_PIC_IRTENTRY(n)		_RMIXL_OFFSET(0xb4+2*(n))
   1461 #define	RMIXLP_PIC_INT_BROADCAST_ENABLE	_RMIXL_OFFSET(0x292)	/* 32-bit */
   1462 #define	RMIXLP_PIC_INT_GPIO_PENDING	_RMIXL_OFFSET(0x293)	/* 32-bit */
   1463 
   1464 /*
   1465  * RMIXLP_PIC_CTRL bits
   1466  */
   1467 #define	RMIXLP_PIC_CTRL_ITV	__BITS(64,32)	/* Interrupt Timeout Value */
   1468 #define	RMIXLP_PIC_CTRL_STE	__BITS(17,10)	/* System Timer Enable */
   1469 #define	RMIXLP_PIC_CTRL_WWR1	__BITS(9,8)	/* Watchdog Wraparound Reset1 */
   1470 #define	RMIXLP_PIC_CTRL_WWR0	__BITS(7,6)	/* Watchdog Wraparound Reset0 */
   1471 #define	RMIXLP_PIC_CTRL_WWN1	__BITS(5,4)	/* Watchdog Wraparound NMI1 */
   1472 #define	RMIXLP_PIC_CTRL_WWN0	__BITS(3,2)	/* Watchdog Wraparound NMI0 */
   1473 #define	RMIXLP_PIC_CTRL_WTE	__BITS(1,0)	/* Watchdog Timer Enable */
   1474 #define	RMIXLP_PIC_CTRL_WTE1	__BIT(1)	/* Watchdog Timer 1 Enable */
   1475 #define	RMIXLP_PIC_CTRL_WTE0	__BIT(0)	/* Watchdog Timer 0 Enable */
   1476 
   1477 /*
   1478  * RMIXLP_PIC_STATUS bits
   1479  */
   1480 #define	RMIXLP_PIC_STATUS_ITE	__BIT(32)	/* Interrupt Timeout */
   1481 #define	RMIXLP_PIC_STATUS_STS	__BITS(11,4)	/* SystemTimer */
   1482 #define	RMIXLP_PIC_STATUS_WNS	__BITS(3,2)	/* Watchdog NMI Interrupt */
   1483 #define	RMIXLP_PIC_STATUS_WIS	__BITS(1,0)	/* Watchdog Interrupt */
   1484 
   1485 /*
   1486  * RMIXLP_PIC_INT_TIMEOUT and RMIXLP_PIC_ICI0_INT_TIMEOUT bits
   1487  */
   1488 #define	RMIXLP_PIC_IPI_TIMEOUT_INTPEND		__BITS(51,36)	/* ?? */
   1489 #define	RMIXLP_PIC_IPI_TIMEOUT_INTNUM		__BITS(35,28)	/* IRT # */
   1490 #define	RMIXLP_PIC_IPI_TIMEOUT_INTEN		__BIT(27)	/* Int Enable */
   1491 #define	RMIXLP_PIC_IPI_TIMEOUT_INTVEC		__BITS(25,20)	/* Int Vector */
   1492 #define	RMIXLP_PIC_IPI_TIMEOUT_INTCPU		__BITS(19,16)	/* Dest CPU */
   1493 #define	RMIXLP_PIC_IPI_TIMEOUT_INTDEST		__BITS(15,0)	/* Dest */
   1494 
   1495 /*
   1496  * RMIXLP_PIC_IPI_CTRL bits
   1497  */
   1498 #define	RMIXLP_PIC_IPI_CTRL_NMI		__BIT(32)	/* 1=NMI; 0=Maskable */
   1499 #define	RMIXLP_PIC_IPI_CTRL_RIV		__BITS(25,20)	/* Which bit in EIRR */
   1500 #define	RMIXLP_PIC_IPI_CTRL_DT		__BITS(15,0)	/* Dest Thread Enbs */
   1501 #define	RMIXLP_PIC_IPI_CTRL_MAKE(nmi, tmask, tag)		\
   1502 	(__SHIFTIN((nmi), RMIXLP_PIC_IPI_CTRL_NMI)		\
   1503 	 | __SHIFTIN((tag), RMIXLP_PIC_IPI_CTRL_RIV)		\
   1504 	 | __SHIFTIN((tmask), RMIXLP_PIC_IPI_CTRL_DT))
   1505 
   1506 /*
   1507  * RMIXLP_PIC_INT_ACK bits
   1508  */
   1509 #define	RMIXLP_PIC_INT_ACK_THREAD	__BITS(11,8)	/* Thr # if PicIntBrd */
   1510 #define	RMIXLP_PIC_INT_ACK_ACK		__BITS(7,0)	/* IRT # */
   1511 
   1512 /*
   1513  * RMIXLP_WATCHDOG_BEATCMD
   1514  *
   1515  * write 32 * node + 4 * cpu + thread (e.g. cpu_id) to set heartbeat.
   1516  */
   1517 
   1518 /*
   1519  * RMIXLP_PIC_INT_THREAD_ENABLE bits
   1520  */
   1521 #define	RMIXLP_PIC_INT_ITE	__BITS(15,0)
   1522 
   1523 /*
   1524  * RMIXLP_PIC_IRTENTRY bits
   1525  */
   1526 
   1527 /* bits 63-32 are reserved */
   1528 #define	RMIXLP_PIC_IRTENTRY_EN		__BIT(31)	/* 1=Enable; 0=Disable */
   1529 #define	RMIXLP_PIC_IRTENTRY_NMI		__BIT(29)	/* 1=NMI; 0=Maskable */
   1530 #define	RMIXLP_PIC_IRTENTRY_LOCAL	__BIT(28)	/* 1=Local; 0=Global */
   1531 #define RMIXLP_PIC_IRTENTRY_INTVEC	__BITS(25,20)	/* maps to bit# in CPU's EIRR */
   1532 #define	RMIXLP_PIC_IRTENTRY_DT		__BIT(19)	/* 1=ID; 0=ITE */
   1533 #define	RMIXLP_PIC_IRTENTRY_DT_ID	__SHIFTIN(1, RMIXLP_PIC_IRTENTRY_DT)
   1534 #define	RMIXLP_PIC_IRTENTRY_DT_ITE	__SHIFTIN(0, RMIXLP_PIC_IRTENTRY_DT)
   1535 #define RMIXLP_PIC_IRTENTRY_DB		__BITS(18,16)	/* NodeId/CpuID[2]; ITE# */
   1536 #define	RMIXLP_PIC_IRTENTRY_ITE(n)	__SHIFTIN((n), RMIXLP_PIC_IRTENTRY_DB)
   1537 #define RMIXLP_PIC_IRTENTRY_DTE		__BITS(15,0)	/* Destination Thread Enables */
   1538 
   1539 /*
   1540  * RMIXLP_PIC_INT_BROADCAST_ENABLE bits
   1541  */
   1542 #define	RMIXLP_PIC_INT_BROADCAST_ENABLE_PICINTBCMOD	__BITS(27,16)
   1543 #define	RMIXLP_PIC_INT_BROADCAST_ENABLE_PICINTBCEN	__BITS(11,0)
   1544 
   1545 /*
   1546  * RMIXLP_PIC_INT_GPIO_PENDING bits
   1547  */
   1548 #define	RMIXLP_PIC_INT_GPIO_PENDING_PICPENDB	__BITS(11,0)
   1549 
   1550 /*
   1551  * PCIe Link (Device 1) Registers
   1552  */
   1553 #define	RMIXLP_PCIE_GEN2_CTL		_RMIXL_OFFSET(0x203)
   1554 #define	RMIXLP_PCIE_CTL0		_RMIXL_OFFSET(0x240)
   1555 #define	RMIXLP_PCIE_CTL1		_RMIXL_OFFSET(0x241)
   1556 #define	RMIXLP_PCIE_PHY_ACC_CTL		_RMIXL_OFFSET(0x242)
   1557 #define	RMIXLP_PCIE_PHY_ACC_DATA	_RMIXL_OFFSET(0x243)
   1558 #define	RMIXLP_PCIE_PHY_BMI_TIMEOUT	_RMIXL_OFFSET(0x244)
   1559 #define	RMIXLP_PCIE_PHY_BSI_TIMEOUT	_RMIXL_OFFSET(0x245)
   1560 #define	RMIXLP_PCIE_BYTE_SWAP		_RMIXL_OFFSET(0x246)
   1561 #define	RMIXLP_PCIE_BYTE_SWAP_MEM_BASE	_RMIXL_OFFSET(0x247)
   1562 #define	RMIXLP_PCIE_BYTE_SWAP_MEM_LIMIT	_RMIXL_OFFSET(0x248)
   1563 #define	RMIXLP_PCIE_BYTE_SWAP_IO_BASE	_RMIXL_OFFSET(0x249)
   1564 #define	RMIXLP_PCIE_BYTE_SWAP_IO_LIMIT	_RMIXL_OFFSET(0x24a)
   1565 #define	RMIXLP_PCIE_RDEX_MEM_BASE	_RMIXL_OFFSET(0x24b)
   1566 #define	RMIXLP_PCIE_RDEX_MEM_LIMIT	_RMIXL_OFFSET(0x24c)
   1567 #define	RMIXLP_PCIE_CACHE_ALLOC_BASE	_RMIXL_OFFSET(0x24d)
   1568 #define	RMIXLP_PCIE_CACHE_ALLOC_LIMIT	_RMIXL_OFFSET(0x24e)
   1569 #define	RMIXLP_PCIE_MSIX_BASE		_RMIXL_OFFSET(0x24f) // EP
   1570 #define	RMIXLP_PCIE_MSIX_LIMIT		_RMIXL_OFFSET(0x250) // EP
   1571 #define	RMIXLP_PCIE_ENTRY_0		_RMIXL_OFFSET(0x251) // EP
   1572 #define	RMIXLP_PCIE_ENTRY_1		_RMIXL_OFFSET(0x252) // EP
   1573 #define	RMIXLP_PCIE_ENTRY_2		_RMIXL_OFFSET(0x253) // EP
   1574 #define	RMIXLP_PCIE_ENTRY_3		_RMIXL_OFFSET(0x254) // EP
   1575 #define	RMIXLP_PCIE_ZERO_BYTE_READ	_RMIXL_OFFSET(0x255)
   1576 #define	RMIXLP_PCIE_ZERO_BYTE_ADDR_LO	_RMIXL_OFFSET(0x256)
   1577 #define	RMIXLP_PCIE_ZERO_BYTE_ADDR_HI	_RMIXL_OFFSET(0x257)
   1578 #define	RMIXLP_PCIE_MSI_CMD		_RMIXL_OFFSET(0x258) // EP
   1579 #define	RMIXLP_PCIE_MSI_ACK		_RMIXL_OFFSET(0x259) // EP
   1580 #define	RMIXLP_PCIE_MSI_STAT		_RMIXL_OFFSET(0x25a) // RC
   1581 #define	RMIXLP_PCIE_MSI_ENABLE		_RMIXL_OFFSET(0x25b) // RC
   1582 #define	RMIXLP_PCIE_MSIX_PBA		_RMIXL_OFFSET(0x25c) // EP
   1583 #define	RMIXLP_PCIE_MSIX_STAT		_RMIXL_OFFSET(0x25d) // EP
   1584 #define	RMIXLP_PCIE_LTSSM		_RMIXL_OFFSET(0x25e)
   1585 #define	RMIXLP_PCIE_INT_STAT0		_RMIXL_OFFSET(0x25f)
   1586 #define	RMIXLP_PCIE_INT_STAT1		_RMIXL_OFFSET(0x260)
   1587 #define	RMIXLP_PCIE_INT_ENAB0		_RMIXL_OFFSET(0x261)
   1588 #define	RMIXLP_PCIE_INT_ENAB1		_RMIXL_OFFSET(0x262)
   1589 
   1590 #define	RMIXLP_PCIE_GEN2_CTL_SPEED_CHNG	__BIT(17)
   1591 	// Indicates to the LTSSM whether or not to initialize a speed change
   1592 	// to Gen2speed after the link is initialized at Gen1 speed.
   1593 
   1594 #define	RMIXLP_PCIE_CTL0_REL_ORD	__BIT(31)
   1595 #define	RMIXLP_PCIE_CTL0_FAST_INIT	__BIT(30)
   1596 #define	RMIXLP_PCIE_CTL0_ST_FLUSH	__BIT(28)
   1597 #define	RMIXLP_PCIE_CTL0_LD_FLUSH	__BIT(27)
   1598 #define	RMIXLP_PCIE_CTL0_ECC_DIS	__BIT(26)
   1599 #define	RMIXLP_PCIE_CTL0_ADDR_MAP_EN	__BIT(25)
   1600 #define	RMIXLP_PCIE_CTL0_BSI_TO		__BIT(24)
   1601 #define	RMIXLP_PCIE_CTL0_BMI_TO		__BIT(23)
   1602 #define	RMIXLP_PCIE_CTL0_SYS_INT	__BIT(22)
   1603 #define	RMIXLP_PCIE_CTL0_CORE_CFG_MSG	__BIT(21)
   1604 #define	RMIXLP_PCIE_CTL0_TO_EN		__BIT(20)
   1605 #define	RMIXLP_PCIE_CTL0_PM_OFF		__BIT(19)
   1606 #define	RMIXLP_PCIE_CTL0_EMIL		__BIT(18)
   1607 #define	RMIXLP_PCIE_CTL0_CMD_COMP	__BIT(17)
   1608 #define	RMIXLP_PCIE_CTL0_PRES_DET_CH	__BIT(16)
   1609 #define	RMIXLP_PCIE_CTL0_MRL_SENSE_CH	__BIT(15)
   1610 #define	RMIXLP_PCIE_CTL0_PWR_FIT_DET	__BIT(14)
   1611 #define	RMIXLP_PCIE_CTL0_MRL_SENSE	__BIT(13)
   1612 #define	RMIXLP_PCIE_CTL0_PRES_DET	__BIT(12)
   1613 #define	RMIXLP_PCIE_CTL0_ATTN_BTN	__BIT(11)
   1614 #define	RMIXLP_PCIE_CTL0_L1_EXIT	__BIT(10)
   1615 #define	RMIXLP_PCIE_CTL0_L1_ENTR	__BIT( 9)
   1616 #define	RMIXLP_PCIE_CTL0_AUX_PWR_DET	__BIT( 8)
   1617 #define	RMIXLP_PCIE_CTL0_XMT_OME	__BIT( 7)
   1618 #define	RMIXLP_PCIE_CTL0_PWR_UP_CMD	__BIT( 6)
   1619 #define	RMIXLP_PCIE_CTL0_TX_FLIP	__BIT( 5)
   1620 #define	RMIXLP_PCIE_CTL0_RX_FLIP	__BIT( 4)
   1621 #define	RMIXLP_PCIE_CTL0_LTSS_EN	__BIT( 3)
   1622 #define	RMIXLP_PCIE_CTL0_RET_EN		__BIT( 2)
   1623 #define	RMIXLP_PCIE_CTL0_IRST		__BIT( 1)
   1624 #define	RMIXLP_PCIE_CTL0_COR_EN		__BIT( 0)
   1625 
   1626 #define	RMIXLP_PCIE_CTL1_PHY_RST	__BIT(17)
   1627 #define	RMIXLP_PCIE_CTL1_LANE_7_CALIB	__BITS(15,13)
   1628 #define	RMIXLP_PCIE_CTL1_LANE_6_CALIB	__BITS(13,12)
   1629 #define	RMIXLP_PCIE_CTL1_LANE_5_CALIB	__BITS(11,10)
   1630 #define	RMIXLP_PCIE_CTL1_LANE_4_CALIB	__BITS( 9, 8)
   1631 #define	RMIXLP_PCIE_CTL1_LANE_3_CALIB	__BITS( 7, 6)
   1632 #define	RMIXLP_PCIE_CTL1_LANE_2_CALIB	__BITS( 5, 4)
   1633 #define	RMIXLP_PCIE_CTL1_LANE_1_CALIB	__BITS( 3, 2)
   1634 #define	RMIXLP_PCIE_CTL1_LANE_0_CALIB	__BITS( 1, 0)
   1635 
   1636 #define	RMIXLP_PCIE_PHY_ACC_CTL_PHYADDR	__BITS(15, 8)
   1637 #define	RMIXLP_PCIE_PHY_ACC_CTL_PHYLANE	__BITS( 7, 0)
   1638 
   1639 #define	RMIXLP_PCIE_LTSSM_STATE		__BITS(23,18)
   1640 #define	RMIXLP_PCIE_LTSSM_PWR_STATE	__BITS(17,15)
   1641 #define	RMIXLP_PCIE_LTSSM_DLL_UP	__BITS(14)
   1642 #define	RMIXLP_PCIE_LTSSM_PHY_UP	__BITS(13)
   1643 #define	RMIXLP_PCIE_LTSSM_BUS_DEV_NUM	__BITS(12,8)	// EP
   1644 #define	RMIXLP_PCIE_LTSSM_BUS_NUM	__BITS(7,0)	// EP
   1645 
   1646 #define	RMIXLP_PCIE_INT0_CLK_LOS	__BIT(10) // loss of clock
   1647 #define	RMIXLP_PCIE_INT0_MSI		__BIT( 9) // MSI interrupt
   1648 #define	RMIXLP_PCIE_INT0_BMI		__BIT( 8) // bandwidth mgmt int
   1649 #define	RMIXLP_PCIE_INT0_ABSI		__BIT( 7) // auto band mgmt int
   1650 #define	RMIXLP_PCIE_INT0_HPI		__BIT( 6) // hot plug int
   1651 #define	RMIXLP_PCIE_INT0_PMEI		__BIT( 5) // pme int
   1652 #define	RMIXLP_PCIE_INT0_AEI		__BIT( 4) // advanced error int
   1653 #define	RMIXLP_PCIE_INT0_INTD		__BIT( 3) // int d
   1654 #define	RMIXLP_PCIE_INT0_INTC		__BIT( 2) // int c
   1655 #define	RMIXLP_PCIE_INT0_INTB		__BIT( 1) // int b
   1656 #define	RMIXLP_PCIE_INT0_INTA		__BIT( 0) // int a
   1657 
   1658 #define	RMIXLP_PCIE_INT1_BMI		__BIT(23) // link down reset
   1659 #define	RMIXLP_PCIE_INT1_ABSI		__BIT(22) // link down reset
   1660 #define	RMIXLP_PCIE_INT1_MBE_STORE	__BIT(21) // link down reset
   1661 #define	RMIXLP_PCIE_INT1_MBE_LOAD	__BIT(20) // link down reset
   1662 #define	RMIXLP_PCIE_INT1_SBE_STORE	__BIT(19) // link down reset
   1663 #define	RMIXLP_PCIE_INT1_SBE_LOAD	__BIT(18) // link down reset
   1664 #define	RMIXLP_PCIE_INT1_DMA_STORE	__BIT(17) // link down reset
   1665 #define	RMIXLP_PCIE_INT1_DMA_LOAD	__BIT(16) // link down reset
   1666 #define	RMIXLP_PCIE_INT1_BSIC2		__BIT(15) // link down reset
   1667 #define	RMIXLP_PCIE_INT1_BSIC1		__BIT(14) // link down reset
   1668 #define	RMIXLP_PCIE_INT1_BSIC0		__BIT(13) // link down reset
   1669 #define	RMIXLP_PCIE_INT1_BMIC		__BIT(12) // link down reset
   1670 #define	RMIXLP_PCIE_INT1_TO_RX		__BIT(11) // link down reset
   1671 #define	RMIXLP_PCIE_INT1_TO_ACK		__BIT(10) // link down reset
   1672 #define	RMIXLP_PCIE_INT1_PME_RX		__BIT( 9) // link down reset
   1673 #define	RMIXLP_PCIE_INT1_FATAL		__BIT( 8) // link down reset
   1674 #define	RMIXLP_PCIE_INT1_NON_FATAL	__BIT( 7) // link down reset
   1675 #define	RMIXLP_PCIE_INT1_CORE		__BIT( 6) // link down reset
   1676 #define	RMIXLP_PCIE_INT1_PME_MSI	__BIT( 5) // link down reset
   1677 #define	RMIXLP_PCIE_INT1_AE_MSI		__BIT( 4) // link down reset
   1678 #define	RMIXLP_PCIE_INT1_HP_MSI		__BIT( 3) // link down reset
   1679 #define	RMIXLP_PCIE_INT1_HP_PME		__BIT( 2) // link down reset
   1680 #define	RMIXLP_PCIE_INT1_SYS		__BIT( 1) // system error
   1681 #define	RMIXLP_PCIE_INT1_RST		__BIT( 0) // link down reset
   1682 
   1683 /*
   1684  * RMIXLP USB (Device 2) Registers
   1685  */
   1686 
   1687 #define	RMIXLP_USB_CTL0			_RMIXL_OFFSET(0x41)
   1688 #define	RMIXLP_USB_BYTE_SWAP_DIS	_RMIXL_OFFSET(0x49)
   1689 #define	RMIXLP_USB_PHY0			_RMIXL_OFFSET(0x4A)
   1690 
   1691 #define	RMIXLP_USB_CTL0_BIUTOEN		__BIT(8)
   1692 #define	RMIXLP_USB_CTL0_INCR4		__BIT(7)
   1693 #define	RMIXLP_USB_CTL0_INCR8		__BIT(6)
   1694 #define	RMIXLP_USB_CTL0_INCR16		__BIT(5)
   1695 #define	RMIXLP_USB_CTL0_0HCIINT12	__BIT(4)
   1696 #define	RMIXLP_USB_CTL0_0HCIINT1	__BIT(3)
   1697 #define	RMIXLP_USB_CTL0_0HCISTRTCLK	__BIT(2)
   1698 #define	RMIXLP_USB_CTL0_EHCI64BEN	__BIT(1)
   1699 #define	RMIXLP_USB_CTL0_USBCTLRRST	__BIT(0)
   1700 
   1701 #define	RMIXLP_USB_PHY0_PHYTXBSENH1	__BIT(11)
   1702 #define	RMIXLP_USB_PHY0_PHYTXBSTENH0	__BIT(10)
   1703 #define	RMIXLP_USB_PHY0_PHYTXBSENL1	__BIT(9)
   1704 #define	RMIXLP_USB_PHY0_PHYTXBSENL0	__BIT(8)
   1705 #define	RMIXLP_USB_PHY0_PHYLBEN1	__BIT(7)
   1706 #define	RMIXLP_USB_PHY0_PHYLBEN0	__BIT(6)
   1707 #define	RMIXLP_USB_PHY0_PHYPORTRST1	__BIT(5)
   1708 #define	RMIXLP_USB_PHY0_PHYPORTRST0	__BIT(4)
   1709 #define	RMIXLP_USB_PHY0_PHYREFCLKFREQ	__BITS(3,2)
   1710 #define	RMIXLP_USB_PHY0_PHYDETVBUS	__BIT(1)
   1711 #define	RMIXLP_USB_PHY0_USBPHYRESET	__BIT(0)
   1712 
   1713 #define	RMIXLP_USB_INTERRUPTEN		_RMIXL_OFFSET(0x4f)
   1714 #define	RMIXLP_USB_INTERRUPTEN_BIUTO1_INTEN \
   1715 					__BIT(6)
   1716 #define	RMIXLP_USB_INTERRUPTEN_BIUTO0_INTEN \
   1717 					__BIT(5)
   1718 #define	RMIXLP_USB_INTERRUPTEN_INTEN	__BIT(4)
   1719 #define	RMIXLP_USB_INTERRUPTEN_OHCIINT12_EN \
   1720 					__BIT(3)
   1721 #define	RMIXLP_USB_INTERRUPTEN_OHCIINT1_EN \
   1722 					__BIT(2)
   1723 #define	RMIXLP_USB_INTERRUPTEN_OHCIEMUL_INTEN \
   1724 					__BIT(1)
   1725 #define	RMIXLP_USB_INTERRUPTEN_PHY_INTEN \
   1726 					__BIT(0)
   1727 
   1728 /*
   1729  * XLP AHCI (deivce 3 function 2)
   1730  */
   1731 #define	RMIXLP_SATA_BYTE_SWAP_DIS	_RMIXL_OFFSET(0x25D)
   1732 
   1733 /*
   1734  * XLP FMN (device 4 function 0) BAR0 register space
   1735  */
   1736 #define	RMIXLP_FMN_OQ_CONFIG(n)		_RMIXL_OFFSET(2*(n))
   1737 #define	RMIXLP_FMN_OQ_CREDIT_CONFIG	_RMIXL_OFFSET(0x800)
   1738 #define	RMIXLP_FMN_MSG_CONF		_RMIXL_OFFSET(0x801)
   1739 #define	RMIXLP_FMN_MSG_ERR		_RMIXL_OFFSET(0x802)
   1740 #define	RMIXLP_FMN_TRACE_CONF		_RMIXL_OFFSET(0x803)
   1741 #define	RMIXLP_FMN_TRACE_ADDR_CONF0	_RMIXL_OFFSET(0x804)
   1742 #define	RMIXLP_FMN_TRACE_ADDR_CONF1	_RMIXL_OFFSET(0x805)
   1743 #define	RMIXLP_FMN_TRACE_ADDR_CONF2	_RMIXL_OFFSET(0x806)
   1744 #define	RMIXLP_FMN_MSG_SWAP		_RMIXL_OFFSET(0x807)
   1745 #define	RMIXLP_FMN_MSG_TIMEOUT		_RMIXL_OFFSET(0x808)
   1746 #define	RMIXLP_FMN_MSG_OQ_RESET		_RMIXL_OFFSET(0x809)
   1747 #define	RMIXLP_FMN_MSG_OQ_ERR_INJECT	_RMIXL_OFFSET(0x80a)
   1748 #define	RMIXLP_FMN_MSG_OQ_EVENT_CTL	_RMIXL_OFFSET(0x80b)
   1749 #define	RMIXLP_FMN_MSG_OQ_EVENT_CNT	_RMIXL_OFFSET(0x80c)
   1750 
   1751 #define	RMIXLP_FMN_OQ_CONFIG_OE		__BIT(63) // 1: Output Enable
   1752 #define	RMIXLP_FMN_OQ_CONFIG_SE		__BIT(62) // 1: Spill Enable
   1753 /* INT, LV, LT, TV, TT are valid only for OQ[0..255] */
   1754 #define	RMIXLP_FMN_OQ_CONFIG_INT	__BIT(59) // 1: Interrupt generated
   1755 #define	RMIXLP_FMN_OQ_CONFIG_LV		__BITS(58,56) // Level Interrupt Value
   1756 #define	RMIXLP_FMN_OQ_CONFIG_LV_EMTPY	0	// On-chip queue empty
   1757 #define	RMIXLP_FMN_OQ_CONFIG_LV_1QTR	1	// On-chip queue 1/4 full
   1758 #define	RMIXLP_FMN_OQ_CONFIG_LV_HALF	2	// On-chip queue half full
   1759 #define	RMIXLP_FMN_OQ_CONFIG_LV_3QTR	3	// On-chip queue 3/4 full
   1760 #define	RMIXLP_FMN_OQ_CONFIG_LV_FULL	4	// On-chip queue full
   1761 #define	RMIXLP_FMN_OQ_CONFIG_LT		__BITS(55,54) // Level Interrupt Type
   1762 #define	RMIXLP_FMN_OQ_CONFIG_LT_DISABLE	0	// Disable
   1763 #define	RMIXLP_FMN_OQ_CONFIG_LT_LOW	1	// Low watermark
   1764 #define	RMIXLP_FMN_OQ_CONFIG_LT_HIGH	2	// High watermark
   1765 #define	RMIXLP_FMN_OQ_CONFIG_TV		__BITS(53,51) // Timer Interrupt Value
   1766 #define	RMIXLP_FMN_OQ_CONFIG_TV_256	0	// 2^8 clock cycles
   1767 #define	RMIXLP_FMN_OQ_CONFIG_TV_1K	1	// 2^10 clock cycles
   1768 #define	RMIXLP_FMN_OQ_CONFIG_TV_4K	2	// 2^12 clock cycles
   1769 #define	RMIXLP_FMN_OQ_CONFIG_TV_16K	3	// 2^14 clock cycles
   1770 #define	RMIXLP_FMN_OQ_CONFIG_TV_64K	4	// 2^16 clock cycles
   1771 #define	RMIXLP_FMN_OQ_CONFIG_TV_256K	5	// 2^18 clock cycles
   1772 #define	RMIXLP_FMN_OQ_CONFIG_TV_1M	6	// 2^20 clock cycles
   1773 #define	RMIXLP_FMN_OQ_CONFIG_TV_4M	7	// 2^22 clock cycles
   1774 #define	RMIXLP_FMN_OQ_CONFIG_TT		__BITS(50,49) // Timer Interrupt Type
   1775 #define	RMIXLP_FMN_OQ_CONFIG_TT_DISABLE	0	// Disable
   1776 #define	RMIXLP_FMN_OQ_CONFIG_TT_CONSUMER 1	// Since last dequeue
   1777 #define	RMIXLP_FMN_OQ_CONFIG_TT_PRODUCER 2	// Since last enqueue
   1778 /* These are valid for all output-queues */
   1779 /* Min/Max of 64B/256KB per queue */
   1780 #define	RMIXLP_FMN_OQ_CONFIG_SB		__BITS(48,27) // Spill Base PA[39:18]
   1781 #define	RMIXLP_FMN_OQ_CONFIG_SL		__BITS(26,21) // Spill Last PA[17:12]
   1782 #define	RMIXLP_FMN_OQ_CONFIG_SS		__BITS(20,15) // Spill Start PA[17:12]
   1783 /* Min/Max of 32B/1KB per queue */
   1784 #define	RMIXLP_FMN_OQ_CONFIG_OB		__BITS(14,10) // OQ Base SRAM[14:10]
   1785 #define	RMIXLP_FMN_OQ_CONFIG_OL		__BITS( 9, 5) // OQ Last SRAM[9:5]
   1786 #define	RMIXLP_FMN_OQ_CONFIG_OS		__BITS( 4, 0) // OQ Start SRAM[9:5]
   1787 
   1788 #define	RMIXLP_FMN_OQ_CREDIT_CONFIG_UNCR_ECC_ERR \
   1789 					__BIT(41) // Error Inject
   1790 #define	RMIXLP_FMN_OQ_CREDIT_CONFIG_CR_ECC_ERR \
   1791 					__BIT(40) // Error Inject
   1792 #define	RMIXLP_FMN_OQ_CREDIT_CONFIG_CC	__BITS(39,24) // Credit Count
   1793 	// The number of output-queue credits to assign to the source
   1794 	// identified by the SID field, where the output queue is identified
   1795 	// by the DID field.
   1796 #define	RMIXLP_FMN_OQ_CREDIT_CONFIG_DID	__BITS(23,12) // Destination ID
   1797 	//  Identifies the output queue for which credits are being allocated.
   1798 #define	RMIXLP_FMN_OQ_CREDIT_CONFIG_SID	__BITS(9,0) // Source ID
   1799 	// Identifies the agent on the local node to be allocated credits.
   1800 	// Bits corresponding to Thread-Id and VC-Id are ignored for CPUs.
   1801 	// For I/O blocks, only the base ID can be allocated credits.
   1802 	// The user must make sure that the programmed source ID is legal.
   1803 
   1804 #define	RMIXLP_FMN_MSG_CONF_SH		__BIT(63) // 1: Switch Halt
   1805 #define	RMIXLP_FMN_MSG_CONF_DAS		__BITS(62,60) // Debug Address Space
   1806 #define	RMIXLP_FMN_MSG_CONF_DAS_OQ_STATUS		0
   1807 #define	RMIXLP_FMN_MSG_CONF_DAS_OQ_RAM			1
   1808 #define	RMIXLP_FMN_MSG_CONF_DAS_SPILL_FILL_ADDR_RAM	2
   1809 #define	RMIXLP_FMN_MSG_CONF_OMR		__BITS(59,54) // OqRamAddr[18:13]
   1810 #define	RMIXLP_FMN_MSG_CONF_L3TW	__BIT(18) // L3 on Trace Writes
   1811 #define	RMIXLP_FMN_MSG_CONF_L3S		__BIT(17) // L3 on Spill
   1812 #define	RMIXLP_FMN_MSG_CONF_PS		__BIT(16) // 1: Switch Halt
   1813 #define	RMIXLP_FMN_MSG_CONF_FF		__BIT(9) // Fill FIFO Error IntEn
   1814 #define	RMIXLP_FMN_MSG_CONF_ID		__BIT(8) // Ill Dest Error IntEn
   1815 #define	RMIXLP_FMN_MSG_CONF_BT		__BIT(7) // BIU Timeout Error IntEn
   1816 #define	RMIXLP_FMN_MSG_CONF_BE		__BIT(6) // BIU Error Response IntEn
   1817 #define	RMIXLP_FMN_MSG_CONF_SU		__BIT(5) // SpillFillAddrRAM UnECC IntEn
   1818 #define	RMIXLP_FMN_MSG_CONF_SC		__BIT(4) // SpillFillAddrRAM CorECC IntE
   1819 #define	RMIXLP_FMN_MSG_CONF_BU		__BIT(3) // SpillBuffer UnECC IntEn
   1820 #define	RMIXLP_FMN_MSG_CONF_BC		__BIT(2) // SpillBuffer CorECC IntEn
   1821 #define	RMIXLP_FMN_MSG_CONF_OU		__BIT(1) // OqRAM UnECC IntEn
   1822 #define	RMIXLP_FMN_MSG_CONF_OC		__BIT(0) // OqRAM CorECC IntEn
   1823 #define	RMIXLP_RMN_MSG_CONF_FATAL	\
   1824 	(RMIXLP_FMN_MSG_CONF_OU | RMIXLP_FMN_MSG_CONF_BU \
   1825 	| RMIXLP_FMN_MSG_CONF_SU | RMIXLP_FMN_MSG_CONF_BT \
   1826 	| RMIXLP_FMN_MSG_CONF_BE)
   1827 
   1828 #define	RMIXLP_FMN_MSG_ERR_RI		__BITS(58,44) //
   1829 #define	RMIXLP_FMN_MSG_ERR_RI_OQ_RAM_INDEX \
   1830 					__BITS(58,47) //
   1831 #define	RMIXLP_FMN_MSG_ERR_RI_OQ_RAM_BANK \
   1832 					__BITS(46,44) //
   1833 #define	RMIXLP_FMN_MSG_ERR_RI_SPILL_FILL_ADDR_RAM_INDEX \
   1834 					__BITS(53,44) //
   1835 #define	RMIXLP_FMN_MSG_ERR_RI_SPILL_BUFFER_RAM_INDEX \
   1836 					__BITS(53,46) //
   1837 #define	RMIXLP_FMN_MSG_ERR_RI_SPILL_BUFFER_RAM_BANK \
   1838 					__BITS(45,44) //
   1839 #define	RMIXLP_FMN_MSG_ERR_SD_OQ_RAM	__BITS(40,32) //
   1840 #define	RMIXLP_FMN_MSG_ERR_SD_SPILL_FILL_ADDR_RAM \
   1841 					__BITS(39,32) //
   1842 #define	RMIXLP_FMN_MSG_ERR_SD_SPILL_BUFFER_RAM \
   1843 					__BITS(28,32) //
   1844 #define	RMIXLP_FMN_MSG_ERR_OQID		__BITS(27,16) // OutputQueue ID
   1845 #define	RMIXLP_FMN_MSG_ERR_EC		__BITS(15,12) // Error Code [ID..OC]
   1846 #define	RMIXLP_FMN_MSG_ERR_FF		__BIT(9) // Fill FIFO Error Error
   1847 #define	RMIXLP_FMN_MSG_ERR_ID		__BIT(8) // Ill Dest Error Error
   1848 #define	RMIXLP_FMN_MSG_ERR_BT		__BIT(7) // BIU Timeout Error Error
   1849 #define	RMIXLP_FMN_MSG_ERR_BE		__BIT(6) // BIU Error Response Error
   1850 #define	RMIXLP_FMN_MSG_ERR_SU		__BIT(5) // SpillFillAddrRAM UnECC Error
   1851 #define	RMIXLP_FMN_MSG_ERR_SC		__BIT(4) // SpillFillAddrRAM CorECC Err
   1852 #define	RMIXLP_FMN_MSG_ERR_BU		__BIT(3) // SpillBuffer UnECC Error
   1853 #define	RMIXLP_FMN_MSG_ERR_BC		__BIT(2) // SpillBuffer CorECC Error
   1854 #define	RMIXLP_FMN_MSG_ERR_OU		__BIT(1) // OqRAM UnECC Error
   1855 #define	RMIXLP_FMN_MSG_ERR_OC		__BIT(0) // OqRAM CorECC Error
   1856 
   1857 /*
   1858  * RMIXLP GPIO (device 6 function 4) registers
   1859  */
   1860 #define RMIXLP_GPIO_PADOE(g)		_RMIXL_OFFSET(0x40+(g)) // Pad Output Enable Register 0
   1861 #define RMIXLP_GPIO_PADOE0		_RMIXL_OFFSET(0x40) // Pad Output Enable Register 0
   1862 #define RMIXLP_GPIO_PADOE1		_RMIXL_OFFSET(0x41) // Pad Output Enable Register 1
   1863 #define RMIXLP_GPIO_PADDRV(g)		_RMIXL_OFFSET(0x42+(g)) // Pad Drive Register 0
   1864 #define RMIXLP_GPIO_PADDRV0		_RMIXL_OFFSET(0x42) // Pad Drive Register 0
   1865 #define RMIXLP_GPIO_PADDRV1		_RMIXL_OFFSET(0x43) // Pad Drive Register 1
   1866 #define RMIXLP_GPIO_PADSAMPLE(g)	_RMIXL_OFFSET(0x44+(g)) // Pad Sample Register 0
   1867 #define RMIXLP_GPIO_PADSAMPLE0		_RMIXL_OFFSET(0x44) // Pad Sample Register 0
   1868 #define RMIXLP_GPIO_PADSAMPLE1		_RMIXL_OFFSET(0x45) // Pad Sample Register 1
   1869 #define RMIXLP_GPIO_INTEN(n,g)		_RMIXL_OFFSET(0x46+2*(n)+(g)) // Interrupt 0 Enable Register 0
   1870 #define RMIXLP_GPIO_INTEN0(n)		_RMIXL_OFFSET(0x46+2*(n)) // Interrupt 0 Enable Register 0
   1871 #define RMIXLP_GPIO_INTEN1(n)		_RMIXL_OFFSET(0x47+2*(n)) // Interrupt 0 Enable Register 0
   1872 #define RMIXLP_GPIO_8XX_INTPOL(g)	_RMIXL_OFFSET((0x4E)+(g)) // Interrupt Polarity Register 0
   1873 #define RMIXLP_GPIO_8XX_INTTYPE(g)	_RMIXL_OFFSET(0x50+(g)) // Interrupt Type Register 0
   1874 #define RMIXLP_GPIO_8XX_INTSTAT(g)	_RMIXL_OFFSET(0x52+(g)) // Interrupt Status Register 0
   1875 #define RMIXLP_GPIO_3XX_INTPOL(g)	_RMIXL_OFFSET((0x5E)+(g)) // Interrupt Polarity Register 0
   1876 #define RMIXLP_GPIO_3XX_INTTYPE(g)	_RMIXL_OFFSET(0x60+(g)) // Interrupt Type Register 0
   1877 #define RMIXLP_GPIO_3XX_INTSTAT(g)	_RMIXL_OFFSET(0x62+(g)) // Interrupt Status Register 0
   1878 
   1879 #define	RMIXLP_GPIO_8XX_MAXPINS		41	/* 41 GPIO pins */
   1880 #define	RMIXLP_GPIO_4XX_MAXPINS		41	/* 41 GPIO pins */
   1881 #define	RMIXLP_GPIO_3XX_MAXPINS		57	/* 41 GPIO pins */
   1882 #define	RMIXLP_GPIO_3XXL_MAXPINS	44	/* 44 GPIO pins */
   1883 #define	RMIXLP_GPIO_2XXL_MAXPINS	42	/* 42 GPIO pins */
   1884 
   1885 /*
   1886  * XLP System Management (device 6 function 5) Registers
   1887  */
   1888 #define	RMIXLP_SM_CHIP_RESET		_RMIXL_OFFSET(0x40)
   1889 #define	RMIXLP_SM_POWER_ON_RESET_CFG	_RMIXL_OFFSET(0x41)
   1890 #define	RMIXLP_SM_EFUSE_DEVICE_CFG_STATUS0 _RMIXL_OFFSET(0x42)
   1891 #define	RMIXLP_SM_EFUSE_DEVICE_CFG_STATUS1 _RMIXL_OFFSET(0x43)
   1892 
   1893 #define	RMIXLP_SM_POWER_ON_RESET_CFG_CPLL_DFS	__BITS(31,30)
   1894 #define	RMIXLP_SM_POWER_ON_RESET_CFG_I2LR	__BIT(29)
   1895 #define	RMIXLP_SM_POWER_ON_RESET_CFG_I1LR	__BIT(28)
   1896 #define	RMIXLP_SM_POWER_ON_RESET_CFG_I0LR	__BIT(27)
   1897 #define	RMIXLP_SM_POWER_ON_RESET_CFG_TS		__BIT(26)
   1898 #define	RMIXLP_SM_POWER_ON_RESET_CFG_CPM_2XX	__BITS(31,26)	/* 2XX */
   1899 #define	RMIXLP_SM_POWER_ON_RESET_CFG_UM		__BIT(25)
   1900 #define	RMIXLP_SM_POWER_ON_RESET_CFG_PLC	__BITS(24,23)
   1901 #define	RMIXLP_SM_POWER_ON_RESET_CFG_PM		__BITS(22,19)
   1902 #define	RMIXLP_SM_POWER_ON_RESET_CFG_SPM_2XX	__BITS(25,20)	/* 2XX */
   1903 #define	RMIXLP_SM_POWER_ON_RESET_CFG_RCS_2XX	__BITS(19,18)	/* 2XX */
   1904 #define	RMIXLP_SM_POWER_ON_RESET_CFG_CDV	__BITS(18,17)
   1905 #define	RMIXLP_SM_POWER_ON_RESET_CFG_CDF	__BITS(16,10)
   1906 #define	RMIXLP_SM_POWER_ON_RESET_CFG_PM_2XX	__BITS(13,8)	/* 2XX */
   1907 #define	RMIXLP_SM_POWER_ON_RESET_CFG_CDR	__BITS(9,8)
   1908 #define	RMIXLP_SM_POWER_ON_RESET_CFG_MC		__BIT(7)
   1909 #define	RMIXLP_SM_POWER_ON_RESET_CFG_RB		__BIT(6)
   1910 #define	RMIXLP_SM_POWER_ON_RESET_CFG_BE		__BIT(5)
   1911 #define	RMIXLP_SM_POWER_ON_RESET_CFG_NORSP	__BIT(4)
   1912 #define	RMIXLP_SM_POWER_ON_RESET_CFG_BD		__BITS(3,0)
   1913 
   1914 /*
   1915  * RMIXLP NOR (device 7 function 0)
   1916  */
   1917 #define	RMIXLP_NOR_NCS			8
   1918 #define	RMIXLP_NOR_CS_BASEADDRESSn(n)	_RMIXL_OFFSET(0x40+(n))
   1919 #define	RMIXLP_NOR_CS_BASELIMITn(n)	_RMIXL_OFFSET(0x48+(n))
   1920 #define	RMIXLP_NOR_CS_DEVPARMn(n)	_RMIXL_OFFSET(0x50+(n))
   1921 #define	RMIXLP_NOR_CS_DEVTIME0n(n)	_RMIXL_OFFSET(0x58+2*(n))
   1922 #define	RMIXLP_NOR_CS_DEVTIME1n(n)	_RMIXL_OFFSET(0x59+2*(n))
   1923 #define	RMIXLP_NOR_SYSCTRL		_RMIXL_OFFSET(0x68)
   1924 #define	RMIXLP_NOR_BYTESWAP		_RMIXL_OFFSET(0x69)
   1925 #define	RMIXLP_NOR_ERRLOG0		_RMIXL_OFFSET(0x6a)
   1926 #define	RMIXLP_NOR_ERRLOG1		_RMIXL_OFFSET(0x6b)
   1927 #define	RMIXLP_NOR_ERRLOG2		_RMIXL_OFFSET(0x6c)
   1928 #define	RMIXLP_NOR_ID_TIMEOUT_VAL	_RMIXL_OFFSET(0x6d)
   1929 #define	RMIXLP_NOR_INSTAT		_RMIXL_OFFSET(0x6e)
   1930 #define	RMIXLP_NOR_INTEN		_RMIXL_OFFSET(0x6f)
   1931 #define	RMIXLP_NOR_STATUS		_RMIXL_OFFSET(0x70)
   1932 
   1933 #define	RMIXLP_NOR_CS_ADDRESS_TO_PA(r)	((uint64_t)(r) << 8)
   1934 #define	RMIXLP_NOR_PA_TO_CS_ADDRESS(r)	((uint64_t)(r) >> 8)
   1935 #define	RMIXLP_NOR_CS_SIZE(b,l)		((l)-(b)+256)
   1936 
   1937 	// Interface Byte signal Enable.
   1938 	//   0:	Disables programmable data width selection
   1939 	//   1: Enables programmable data width selection
   1940 #define RMIXLP_NOR_CS_DEVPARM_BE		__BIT(16)
   1941 	// Little Endian.
   1942 	//   0:Big Endian
   1943 	//   1:Little Endian
   1944 #define RMIXLP_NOR_CS_DEVPARM_LE		__BIT(13)
   1945 #define RMIXLP_NOR_CS_DEVPARM_DW		__BITS(12,11) // Device Data Width
   1946 #define RMIXLP_NOR_CS_DEVPARM_DW_8_BITS		0
   1947 #define RMIXLP_NOR_CS_DEVPARM_DW_16_BITS	1
   1948 #define RMIXLP_NOR_CS_DEVPARM_DW_32_BITS	2
   1949 	// Multiplexed/non-multiplexed device data/address mode
   1950 	//   0:Non-multiplexed (only valid if field DW is set to 0)
   1951 	//   1:Multiplexed data and address bus
   1952 #define RMIXLP_NOR_CS_DEVPARM_MUX		__BIT(10)
   1953 	// Wait/Ready signal Polarity
   1954 	//   0:Wait active high
   1955 	//   1:Wait active low
   1956 #define RMIXLP_NOR_CS_DEVPARM_WRP		__BIT(9)
   1957 	// Wait/ready signal Write interface Enable.
   1958 	// Enables/disables wait-acknowledge mode during write cycles.
   1959 	//   0: Enable device Wait mode. External IO_WAIT_L signal is used.
   1960 	//   1: Disable Wait mode; external IO_WAIT_L signal is not used.
   1961 #define RMIXLP_NOR_CS_DEVPARM_WWE		__BIT(8)
   1962 	// Wait/Ready signal Read interface Enable.
   1963 	// Enables/disables wait-acknowledge mode during read cycles.
   1964 	//   0: Enable device Wait mode. External IO_WAIT_L signal is used.
   1965 	//   1: Disable Wait mode; external IO_WAIT_L signal is not used.
   1966 	//	This signal is distinct from the RYBY (Ready/Busy) signal,
   1967 	//	which is shared by all Flash devices.
   1968 #define RMIXLP_NOR_CS_DEVPARM_WRE		__BIT(7)
   1969 	// Synchronous Read Data Burst Enabled (when set to 1).
   1970 #define RMIXLP_NOR_CS_DEVPARM_SRDBE		__BIT(5)
   1971 	// Word-align Address.
   1972 	// If set to 1, address bits are word-aligned.
   1973 	// This allows address bits of a 16-bit Flash device to connect to XLP
   1974 	// address bits [24:1] instead of [23:0] or the address bits of a 32-bit
   1975 	// Flash device to connect to XLP address bits [25:2] instead of [23:0].
   1976 #define RMIXLP_NOR_CS_DEVPARM_WA		__BIT(2)
   1977 #define RMIXLP_NOR_CS_DEVPARM_FLASH_TYPE	__BITS(1,0)	// Flash Type
   1978 #define	RMIXLP_NOR_CS_DEVPARM_FLASH_TYPE_NOR	0	//   NOR Flash
   1979 #define	RMIXLP_NOR_CS_DEVPARM_FLASH_TYPE_ONCHIP	1	//   On-chip ROM
   1980 
   1981 	// CS to CS timing.
   1982 	//   This field indicates the number of clock cycles from the falling
   1983 	//   edge of IO_CSn to the next falling edge of IO_CSn, where n = 0-7.
   1984 #define RMIXLP_NOR_DEVTIME0_CS_TO_CS	__BITS(31,28)
   1985 
   1986 	// WE to CS timing.
   1987 	//   This field indicates the number of clock cycles from the rising
   1988 	//   edge of IO_WE_L to the rising edge of IO_CSn_L.
   1989 #define RMIXLP_NOR_DEVTIME0_WE_TO_CS	__BITS(27,24)
   1990 
   1991 	// OE to CS timing.
   1992 	//   This field indicates the number of clock cycles from the rising
   1993 	//   edge of IO_OE_L to the rising edge of IO_CSn_L.
   1994 #define RMIXLP_NOR_DEVTIME0_OE_TO_CS	__BITS(23,22)
   1995 
   1996 	// CS to WE timing.
   1997 	//   This field indicates the number of clock cycles from the falling
   1998 	//   edge of IO_CSn_L to the falling edge of IO_WE_L
   1999 #define RMIXLP_NOR_DEVTIME0_CS_TO_WE	__BITS(21,19)
   2000 
   2001 	// CS to OE timing.
   2002 	//   This field indicates the number of clock cycles from the falling
   2003 	//   edge of IO_CSn_L to the falling edge of IO_OE_L.
   2004 #define RMIXLP_NOR_DEVTIME0_CS_TO_OE	__BITS(18,16)
   2005 
   2006 	// Wait/Ready to Data timing.
   2007 	//   This field indicates the number of clock cycles from the falling
   2008 	//   edge of IO_WE_L to when data is available on a write, or the
   2009 	//   falling edge of IO_OE_L to when date is available on a read.
   2010 #define RMIXLP_NOR_DEVTIME0_WAIT_TO_DATA __BITS(15,11)
   2011 
   2012 	// OE to Wait timing.
   2013 	//   This field indicates the IO_WE_L to wait time on a write,
   2014 	//   or the IO_OE_L to wait time on a read.
   2015 #define RMIXLP_NOR_DEVTIME0_OE_TO_WAIT	__BITS(10,6)
   2016 
   2017 	// ALE to CS timing.
   2018 	//   This field indicates the number of clock cycles from the falling
   2019 	//   edge of IO_ALE to the falling edge of IO_CSn_L. This field is
   2020 	//   encoded as follows:
   2021 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS	___BITS(5,3)
   2022 	//	000: IO_CSn_L is one cycle ahead of IO_ALE.
   2023 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_AHEAD1	0
   2024 	//	001: IO_CSn_L is aligned with IO_ALE.
   2025 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_ALIGNED	1
   2026 	//	010-111: IO_ALE is ahead of IO_CSn_L.
   2027 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_BEHIND1	2
   2028 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_BEHIND2	3
   2029 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_BEHIND3	4
   2030 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_BEHIND4	5
   2031 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_BEHIND5	6
   2032 #define RMIXLP_NOR_DEVTIME0_ALE_TO_CS_BEHIND6	7
   2033 
   2034 	// ALE pulse width.
   2035 	//   This field indicates the number of clock cycles from the falling
   2036 	//   edge of IO_ALE to the rising edge of IO_ALE.
   2037 #define RMIXLP_NOR_DEVTIME0_ALE_WIDTH	__BITS(2,0)
   2038 
   2039 #define	RMIXLP_NOR_DEVTIME1_WAIT_TIMEOUT	__BITS(26,12)
   2040 	// Wait Timeout.
   2041 	//    If the Interrupt is an error, the Enable bit is set.
   2042 
   2043 	// RDY/BSY signal Polarity:
   2044 	//   0:Ready low, busy high
   2045 	//   1:Ready high, busy low
   2046 	// This signal is shared by all Flash devices. If any of the devices
   2047 	// puts the signal into the busy state, this signal will indicate
   2048 	// not-ready (busy) status.
   2049 #define	RMIXLP_NOR_SYSCTRL_RDYBSY_POL		__BIT(1)
   2050 
   2051 	// Interconnect Timeout Enable (if set to 1).
   2052 #define	RMIXLP_NOR_SYSCTRL_ITE			__BIT(0)
   2053 
   2054 	// RDY/BSY pin transition, if set to 1.
   2055 #define	RMIXLP_NOR_INTSTAT_RDYBSY		__BIT(0)
   2056 
   2057 	// Error Log. Setting this bit enables error logging.
   2058 #define	RMIXLP_NOR_INTEN_EL			__BIT(1)
   2059 	// RYBY Interrupt Enable. Setting this bit enables NOR Flash interrupts.
   2060 #define	RMIXLP_NOR_INTEN_RDYBSY			__BIT(0)
   2061 
   2062 	// RDY/BSY Status. 1: NOR device is ready.
   2063 #define	RMIXLP_NOR_STATUS_RDYBSY		__BIT(0)
   2064 
   2065 /*
   2066  * RMIXLP NAND (device 7 function 1)
   2067  */
   2068 #define	RMIXLP_NAND_RDYBSY_SEL		_RMIXL_OFFSET(0x81)
   2069 
   2070 /*
   2071  * RMIXLP SPI (device 7 function 2)
   2072  */
   2073 #define	RMIXLP_SPI_CS_CONFIG(n)		_RMIXL_OFFSET(0x40+0x10*(n))
   2074 #define	RMIXLP_SPI_CS_FDIV(n)		_RMIXL_OFFSET(0x41+0x10*(n))
   2075 #define	RMIXLP_SPI_CS_CMD(n)		_RMIXL_OFFSET(0x42+0x10*(n))
   2076 #define	RMIXLP_SPI_CS_STATUS(n)		_RMIXL_OFFSET(0x43+0x10*(n))
   2077 #define	RMIXLP_SPI_CS_INTEN(n)		_RMIXL_OFFSET(0x44+0x10*(n))
   2078 #define	RMIXLP_SPI_CS_FIFO_THRESH(n)	_RMIXL_OFFSET(0x45+0x10*(n))
   2079 #define	RMIXLP_SPI_CS_FIFO_WCNT(n)	_RMIXL_OFFSET(0x46+0x10*(n))
   2080 #define	RMIXLP_SPI_CS_TXDATA_FIFO(n)	_RMIXL_OFFSET(0x47+0x10*(n))
   2081 #define	RMIXLP_SPI_CS_RXDATA_FIFO(n)	_RMIXL_OFFSET(0x48+0x10*(n))
   2082 #define	RMIXLP_SPI_SYSCNTRL		_RMIXL_OFFSET(0x80)
   2083 
   2084 #define	RMIXLP_SPI_CS_CONFIG_RXCAP	__BIT(11) // RX capture on phase drive
   2085 #define	RMIXLP_SPI_CS_CONFIG_LSBFE	__BIT(10) // LSB first enable
   2086 #define	RMIXLP_SPI_CS_CONFIG_CSTODATA	__BITS(9,8) // chip select polarity 1:high
   2087 #define	RMIXLP_SPI_CS_CONFIG_SBPOL	__BIT(6) // start bit polarity 1:high
   2088 #define	RMIXLP_SPI_CS_CONFIG_SBE	__BIT(6) // start bit enable 1:enabled
   2089 #define	RMIXLP_SPI_CS_CONFIG_RXMISO	__BIT(5) // 0: RX MOSI, 1: RX MISO
   2090 #define	RMIXLP_SPI_CS_CONFIG_TXMOSI	__BIT(4) // 1: TX enable for MOSI pin
   2091 #define	RMIXLP_SPI_CS_CONFIG_TXMISO	__BIT(3) // 1: TX enable for MISO pin
   2092 #define	RMIXLP_SPI_CS_CONFIG_CSPOL	__BIT(2) // chip select polarity 1:high
   2093 #define	RMIXLP_SPI_CS_CONFIG_CPOL	__BIT(1) // clock polarity 1:high
   2094 #define	RMIXLP_SPI_CS_CONFIG_CPHA	__BIT(0) // SPI_CLK clock phase select
   2095 
   2096 #define	RMIXLP_SPI_CS_FDIV_CNT		__BITS(15,0) // divisor (min of 16)
   2097 
   2098 #define	RMIXLP_SPI_CS_CMD_XFERBITCNT	__BITS(31,16) // total # of bits - 1
   2099 #define	RMIXLP_SPI_CS_CMD_CONT		__BIT(4)
   2100 #define	RMIXLP_SPI_CS_CMD_CMD		__BITS(3,0)
   2101 #define	RMIXLP_SPI_CS_CMD_IDLE		0
   2102 #define	RMIXLP_SPI_CS_CMD_TX		1
   2103 #define	RMIXLP_SPI_CS_CMD_RX		2
   2104 #define	RMIXLP_SPI_CS_CMD_TXRX		3
   2105 
   2106 #define	RMIXLP_SPI_CS_STATUS_RXOF	__BIT(5) // RX FIFO overflow
   2107 #define	RMIXLP_SPI_CS_STATUS_TXUF	__BIT(4) // TX FIFO underflow
   2108 #define	RMIXLP_SPI_CS_STATUS_RXTHRESH	__BIT(3) // RX FIFO threshold crossed
   2109 #define	RMIXLP_SPI_CS_STATUS_TXTHRESH	__BIT(2) // TX FIFO threshold crossed
   2110 #define	RMIXLP_SPI_CS_STATUS_XFERDONE	__BIT(1) // Transfer is complete (RO)
   2111 #define	RMIXLP_SPI_CS_STATUS_XFERPEND	__BIT(1) // Transfer is pending (RO)
   2112 
   2113 #define	RMIXLP_SPI_CS_INTEN_RXOF	__BIT(4) // RX FIFO overflow
   2114 #define	RMIXLP_SPI_CS_INTEN_TXUF	__BIT(3) // TX FIFO underflow
   2115 #define	RMIXLP_SPI_CS_INTEN_RXTHRESH	__BIT(2) // RX FIFO threshold crossed
   2116 #define	RMIXLP_SPI_CS_INTEN_TXTHRESH	__BIT(1) // TX FIFO threshold crossed
   2117 #define	RMIXLP_SPI_CS_INTEN_XFERDONE	__BIT(0) // Transfer is complete
   2118 
   2119 #define	RMIXLP_SPI_CS_FIFO_THRESH_TXFIFO __BITS(7,4)
   2120 #define	RMIXLP_SPI_CS_FIFO_THRESH_RXFIFO __BITS(3,0)
   2121 
   2122 #define	RMIXLP_SPI_CS_FIFO_WCNT_TXFIFO	__BITS(7,4)
   2123 #define	RMIXLP_SPI_CS_FIFO_WCNT_RXFIFO	__BITS(3,0)
   2124 
   2125 #define	RMIXLP_SPI_SYSCNTRL_PMEN	__BIT(8) // Pin muxing enable
   2126 #define	RMIXLP_SPI_SYSCNTRL_CLKDSI(n)	__BIT(4+(n)) // Clock disable for chan
   2127 #define	RMIXLP_SPI_SYSCNTRL_RESET(n)	__BIT(0+(n)) // Reset SPI channel n
   2128 
   2129 #define	RMIXLP_SPI_GPIO_PINS		__BITS(28,22)
   2130 
   2131 /*
   2132  * RMIXLP SD/MMC (device 7 function 3)
   2133  */
   2134 #define	RMIXLP_MMC_SLOTSIZE		_RMIXL_OFFSET(0x40)
   2135 
   2136 #define	RMIXLP_MMC_SLOT0		_RMIXL_OFFSET(0x40)
   2137 #define	RMIXLP_MMC_SLOT1		_RMIXL_OFFSET(0x80)
   2138 #define	RMIXLP_MMC_SYSCTRL		_RMIXL_OFFSET(0xC0)
   2139 #define	RMIXLP_MMC_CAPCFG0_S(n)		_RMIXL_OFFSET(0xC1+5*(n))
   2140 #define	RMIXLP_MMC_CAPCFG1_S(n)		_RMIXL_OFFSET(0xC2+5*(n))
   2141 #define	RMIXLP_MMC_INIT_PRESET_S(n)	_RMIXL_OFFSET(0xC3+5*(n))
   2142 #define	RMIXLP_MMC_DEF_PRESET_S(n)	_RMIXL_OFFSET(0xC4+5*(n))
   2143 
   2144 #define	RMIXLP_MMC_SYSCTRL_DELAY	__BITS(21,19)
   2145 #define	RMIXLP_MMC_SYSCTRL_RT		__BIT(8)
   2146 #define	RMIXLP_MMC_SYSCTRL_WP1		__BIT(7)
   2147 #define	RMIXLP_MMC_SYSCTRL_WP0		__BIT(6)
   2148 #define	RMIXLP_MMC_SYSCTRL_RD_EX	__BIT(5)
   2149 #define	RMIXLP_MMC_SYSCTRL_CA		__BIT(4)
   2150 #define	RMIXLP_MMC_SYSCTRL_EN1		__BIT(3)
   2151 #define	RMIXLP_MMC_SYSCTRL_EN0		__BIT(2)
   2152 #define	RMIXLP_MMC_SYSCTRL_EN(n)	__BIT(2+(n))
   2153 #define	RMIXLP_MMC_SYSCTRL_CLK_DIS	__BIT(1)
   2154 #define	RMIXLP_MMC_SYSCTRL_RST		__BIT(0)
   2155 
   2156 #define	RMIXLP_MMC_CAPCFG0_S_EMB	__BIT(17) // Extended Media Bus
   2157 
   2158 #define	RMIXLP_MMC_GPIO_PINS0		\
   2159 	(__BITS(10,0) | __BIT(29) | __BIT(31))
   2160 #define	RMIXLP_MMC_GPIO_PINS1		\
   2161 	(__BITS(21,11) | __BIT(28) | __BIT(30))
   2162 #define	RMIXLP_MMC_GPIO_PINS(slot)	\
   2163 	(slot == 0 ? RMIXLP_MMC_GPIO_PINS0 : RMIXLP_MMC_GPIO_PINS1)
   2164 
   2165 #endif	/* _MIPS_RMI_RMIXLREG_H_ */
   2166