Module Name:    src
Committed By:   matt
Date:           Sat Dec 31 04:54:28 UTC 2011

Modified Files:
        src/sys/arch/mips/rmi [matt-nb5-mips64]: rmixl_i2creg.h rmixl_naereg.h
            rmixlp_pcie.c rmixlreg.h

Log Message:
Consolidate and complete PCITAGs.
Print/Set BARs for AHCI and SRIO.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/sys/arch/mips/rmi/rmixl_i2creg.h \
    src/sys/arch/mips/rmi/rmixl_naereg.h
cvs rdiff -u -r1.1.2.4 -r1.1.2.5 src/sys/arch/mips/rmi/rmixlp_pcie.c
cvs rdiff -u -r1.1.2.17 -r1.1.2.18 src/sys/arch/mips/rmi/rmixlreg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/rmi/rmixl_i2creg.h
diff -u src/sys/arch/mips/rmi/rmixl_i2creg.h:1.1.2.1 src/sys/arch/mips/rmi/rmixl_i2creg.h:1.1.2.2
--- src/sys/arch/mips/rmi/rmixl_i2creg.h:1.1.2.1	Sat Dec 24 01:57:54 2011
+++ src/sys/arch/mips/rmi/rmixl_i2creg.h	Sat Dec 31 04:54:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: rmixl_i2creg.h,v 1.1.2.1 2011/12/24 01:57:54 matt Exp $	*/
+/*	$NetBSD: rmixl_i2creg.h,v 1.1.2.2 2011/12/31 04:54:28 matt Exp $	*/
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -38,8 +38,8 @@
  * XLP I2C Controller defintions
  */
 
-#define	RMIXLP_I2C0_PCITAG		_RMIXL_PCITAG(0,6,2)
-#define	RMIXLP_I2C1_PCITAG		_RMIXL_PCITAG(0,6,3)
+#define	RMIXLP_I2C1_PCITAG		_RMIXL_PCITAG(0,6,2)
+#define	RMIXLP_I2C2_PCITAG		_RMIXL_PCITAG(0,6,3)
 #define	RMIXLP_I2C_CFG_OFFSET		_RMIXL_OFFSET(0x40)
 #define	RMIXLP_I2C_IOSIZE		_RMIXL_OFFSET(0x40)
 
Index: src/sys/arch/mips/rmi/rmixl_naereg.h
diff -u src/sys/arch/mips/rmi/rmixl_naereg.h:1.1.2.1 src/sys/arch/mips/rmi/rmixl_naereg.h:1.1.2.2
--- src/sys/arch/mips/rmi/rmixl_naereg.h:1.1.2.1	Sat Dec 24 01:57:54 2011
+++ src/sys/arch/mips/rmi/rmixl_naereg.h	Sat Dec 31 04:54:28 2011
@@ -31,17 +31,38 @@
 #define _MIPS_RMI_RMIXL_NAEREG_H
 
 /*
- * RX P2P Descriptor
+ * RX P2P Descriptor (slightly different betewen XLS/XLR and XLP).
  */
-#define	RMIXL_NEA_RXD_CONTEXT			__BITS(63,54)
+#define	RMIXLS_NEA_RXD_EOP			__BIT(63)
+#define	RMIXLS_NEA_RXD_STATUS			__BITS(62,56)
+#define	RMIXLS_NEA_RXD_CLASSID			__BITS(55,54)
+#define	RMIXLP_NEA_RXD_CONTEXT			__BITS(59,54)
 #define	RMIXL_NEA_RXD_LENGTH			__BITS(53,40)
-#define	RMIXL_NEA_RXD_ADDRESS			__BITS(39,6)
-#define	RMIXL_NEA_RXD_UP			__BIT(5)
-#define	RMIXL_NEA_RXD_ERR			__BIT(4)
-#define	RMIXL_NEA_RXD_IC			__BIT(3)
-#define	RMIXL_NEA_RXD_TC			__BIT(2)
-#define	RMIXL_NEA_RXD_PP			__BIT(1)
-#define	RMIXL_NEA_RXD_P2P			__BIT(0)
+/*
+ * L2 cacheline aligned address
+ */
+#define	RMIXL_NEA_RXD_ADDRESS			__BITS(39,5)
+#define	RMIXLP_NEA_RXD_UP			__BIT(5)
+#define	RMIXLP_NEA_RXD_ERR			__BIT(4)
+#define	RMIXLS_NEA_RXD_UP			__BIT(4)
+#define	RMIXLS_NEA_RXD_PORTID			__BIT(3,0)
+#define	RMIXLP_NEA_RXD_IC			__BIT(3) // IP CSUM valid
+#define	RMIXLP_NEA_RXD_TC			__BIT(2) // TCP CSUM valid
+#define	RMIXLP_NEA_RXD_PP			__BIT(1) // Prepad present
+#define	RMIXLP_NEA_RXD_P2P			__BIT(0)
+
+/*
+ * RXD Status field for XLS/XLR.
+ */
+#define	RMIXLS_RXD_STATUS_ERROR			__BIT(6)
+#define	RMIXLS_RXD_STATUS_OK_BROADCAST		__BIT(5)
+#define	RMIXLS_RXD_STATUS_OK_MULTICAST		__BIT(4)
+#define	RMIXLS_RXD_STATUS_OK_UNICAST		__BIT(3)
+#define	RMIXLS_RXD_STATUS_ERROR_CODE		__BIT(2)
+#define	RMIXLS_RXD_STATUS_ERROR_CRC		__BIT(1)
+#define	RMIXLS_RXD_STATUS_OK_MACADDR		__BITS(2,1)
+#define	RMIXLS_RXD_STATUS_ERROR_LENGTH		__BIT(0)
+#define	RMIXLS_RXD_STATUS_OK_VLAN		__BIT(0)
 
 #define	RMIXL_NEA_TXD_TYPE			__BITS(63,62)
 #define	RMIXL_NEA_TXD_RDEX			__BIT(61)
@@ -88,13 +109,19 @@
 #define	RMIXL_NEA_MSCD2_CRC_INS_OFFS		__BITS(15,0)
 
 #define	RMIXL_NEA_TXFBD_TYPE			__BITS(63,62)
-#define	RMIXL_NEA_TXFBD_RDX			__BIT(61)
-#define	RMIXL_NEA_TXFBD__RSRVD0			__BITS(60,58)
-#define	RMIXL_NEA_TXFBD_TS_VALID		__BIT(57)
-#define	RMIXL_NEA_TXFBD_TX_DONE			__BIT(56)
-#define	RMIXL_NEA_TXFBD_MAX_COLL_LATE_ABORT	__BIT(55)
-#define	RMIXL_NEA_TXFBD_UNDERRUN		__BIT(54)
-#define	RMIXL_NEA_TXFBD__RSRVD1			__BITS(53,50)
+#define	RMIXLP_NEA_TXFBD_RDX			__BIT(61)
+#define	RMIXLP_NEA_TXFBD__RSRVD0		__BITS(60,58)
+#define	RMIXLS_NEA_TXFBD_COLLISION		__BIT(61)
+#define	RMIXLS_NEA_TXFBD_BUS_ERROR		__BIT(60)
+#define	RMIXLS_NEA_TXFBD_UNDERRUN		__BIT(59)
+#define	RMIXLS_NEA_TXFBD_ABORT			__BIT(58)
+#define	RMIXLP_NEA_TXFBD_TS_VALID		__BIT(57)
+#define	RMIXLP_NEA_TXFBD_TX_DONE		__BIT(56)
+#define	RMIXLP_NEA_TXFBD_MAX_COLL_LATE_ABORT	__BIT(55)
+#define	RMIXLP_NEA_TXFBD_UNDERRUN		__BIT(54)
+#define	RMIXLS_NEA_TXFBD_PORT_ID		__BITS(57,54)
+#define	RMIXLP_NEA_TXFBD__RSRVD1		__BITS(53,50)
+#define	RMIXLS_NEA_TXFBD_LENGTH			__BITS(53,40) // always 0
 #define	RMIXL_NEA_TXFBD_CONTEXT			__BITS(49,40)
 #define	RMIXL_NEA_TXFBD_ADDRESS			__BITS(39,0)
 
@@ -102,6 +129,16 @@
 #define	RMIXL_NEA_RXFID_ADDRESS			__BITS(39,6)
 #define	RMIXL_NEA_RXFID__RSRVD1			__BITS(5,0)
 
+#define	RMIXL_NAE_GMAC0_BASE(n)			(0x0000 + 0x2000*(n))
+#define	RMIXL_NAE_GMAC1_BASE(n)			(0x0200 + 0x2000*(n))
+#define	RMIXL_NAE_GMAC2_BASE(n)			(0x0400 + 0x2000*(n))
+#define	RMIXL_NAE_GMAC3_BASE(n)			(0x0600 + 0x2000*(n))
+#define	RMIXL_NAE_XGMAC0_BASE(n)		(0x0800 + 0x2000*(n))
+#define	RMIXL_NAE_PHY_BASE(n)			(0x1e00 + 0x2000*(n))
+#define	RMIXL_NAE_BASE(n)			0xe000
+
+/* SGMII (GMAC) Registers */
+
 #define RMIXL_GMAC_CONF1		_RMIXL_OFFSET(0x00) /* MAC Configuration 1 */
 #define RMIXL_GMAC_CONF2		_RMIXL_OFFSET(0x01) /* MAC Configuration 2 */
 #define RMIXL_GMAC_IPG_IFG		_RMIXL_OFFSET(0x02) /* Interpacket Gap/IFG */
@@ -286,4 +323,307 @@ rmixl_gmac_station_addr_lo_make(const ui
 #define RMIXL_GMAC_FILTER_CONFIG_MA1V		__BIT(1) /* MAC Address 1 Valid */
 #define RMIXL_GMAC_FILTER_CONFIG_MA0V		__BIT(0) /* MAC Address 0 Valid */
 
+/* NEA Ingress Path Registers */
+
+#define RMIXL_NAE_RX_CONFIG			_RMIXL_OFFSET(0x10) // Receive Configuration
+#define RMIXL_NAE_RX_IF_BASE_CONFIG0		_RMIXL_OFFSET(0x12) // Receive Interface Base Config 0
+#define RMIXL_NAE_RX_IF_BASE_CONFIG1		_RMIXL_OFFSET(0x13) // Receive Interface Base Config 1
+#define RMIXL_NAE_RX_IF_BASE_CONFIG2		_RMIXL_OFFSET(0x14) // Receive Interface Base Config 2
+#define RMIXL_NAE_RX_IF_BASE_CONFIG3		_RMIXL_OFFSET(0x15) // Receive Interface Base Config 3
+#define RMIXL_NAE_RX_IF_BASE_CONFIG4		_RMIXL_OFFSET(0x16) // Receive Interface Base Config 4
+#define RMIXL_NAE_RX_IF_BASE_CONFIG5		_RMIXL_OFFSET(0x17) // Receive Interface Base Config 5
+#define RMIXL_NAE_RX_IF_BASE_CONFIG6		_RMIXL_OFFSET(0x18) // Receive Interface Base Config 6
+#define RMIXL_NAE_RX_IF_BASE_CONFIG7		_RMIXL_OFFSET(0x19) // Receive Interface Base Config 7
+#define RMIXL_NAE_RX_IF_BASE_CONFIG8		_RMIXL_OFFSET(0x1A) // Receive Interface Base Config 8
+#define RMIXL_NAE_RX_IF_BASE_CONFIG9		_RMIXL_OFFSET(0x1B) // Receive Interface Base Config 9
+#define RMIXL_NAE_RX_IF_VEC_VALID		_RMIXL_OFFSET(0x1C) // Receive Interface Vector Valid
+#define RMIXL_NAE_RX_IF_SLOT_CAL		_RMIXL_OFFSET(0x1D) // Receive Calendar Valid Slots
+#define RMIXL_NAE_PARSER_CONFIG			_RMIXL_OFFSET(0x1E) // Parser Configuration
+#define RMIXL_NAE_PARSER_SEQ_FIFO_CFG		_RMIXL_OFFSET(0x1F) // Parser Sequence FIFO Carvings
+#define RMIXL_NAE_FREE_IN_LIFO_CFG		_RMIXL_OFFSET(0x20) // Free-In LIFO Carvings
+#define RMIXL_NAE_RX_BUFFER_BASE_DEPTH_ADDR	_RMIXL_OFFSET(0x21) // Receive Buffer Base Depth Carvings Index
+#define RMIXL_NAE_RX_BUFFER_BASE_DEPTH		_RMIXL_OFFSET(0x22) // Receive Buffer Base Depth Carvings
+#define RMIXL_NAE_RX_UCORE_CFG			_RMIXL_OFFSET(0x23) // Receive Micro-core Configuration Register
+#define RMIXL_NAE_RX_UCORE_CAM_MASK0_CFG	_RMIXL_OFFSET(0x24) // Receive Micro-core CAM Mask0 Configuration Registers
+#define RMIXL_NAE_RX_UCORE_CAM_MASK1_CFG	_RMIXL_OFFSET(0x25) // Receive Micro-core CAM Mask1 Configuration Registers
+#define RMIXL_NAE_RX_UCORE_CAM_MASK2_CFG	_RMIXL_OFFSET(0x26) // Receive Micro-core CAM Mask2 Configuration Registers
+#define RMIXL_NAE_RX_UCORE_CAM_MASK3_CFG	_RMIXL_OFFSET(0x27) // Receive Micro-core CAM Mask3 Configuration Registers
+#define RMIXL_NAE_FREE_IN_LIFO_UNIQ_SZ_CFG	_RMIXL_OFFSET(0x28) // Free-In LIFO Descriptor Size Register
+#define RMIXL_NAE_RX_CRC_POLY0_CFG		_RMIXL_OFFSET(0x2A) // Receive CRC Polynomial Register 0
+#define RMIXL_NAE_RX_CRC_POLY1_CFG		_RMIXL_OFFSET(0x2B) // Receive CRC Polynomial Register 1
+#define RMIXL_NAE_FREE_SPILL0_MEM_CFG		_RMIXL_OFFSET(0x2C) // Spill Memory Regioning Register 0
+#define RMIXL_NAE_FREE_SPILL1_MEM_CFG		_RMIXL_OFFSET(0x2D) // Spill Memory Regioning Register 1
+#define RMIXL_NAE_FREE_LIFO_THRESHOLD_CFG	_RMIXL_OFFSET(0x2E) // Free-In LIFO Threshold Configuration Register
+#define RMIXL_NAE_FLOW_CRC16_POLY_CFG		_RMIXL_OFFSET(0x2F) // FlowID CRC16 Polynomial Configuration
+#define RMIXL_NAE_TEST				_RMIXL_OFFSET(0x5F) // Test Register
+#define RMIXL_NAE_BIU_TIMEOUT_CFG		_RMIXL_OFFSET(0x60) // Bus Interface Unit Timeout Configuration
+#define RMIXL_NAE_BIU_CFG			_RMIXL_OFFSET(0x61) // Bus Interface Unit Configuration
+#define RMIXL_NAE_RX_FREE_LIFO_POP		_RMIXL_OFFSET(0x62) // Receive Free-In LIFO Pop Configuration
+#define RMIXL_NAE_RX_DSBL_ECC			_RMIXL_OFFSET(0x63) // Receive Disable ECC
+#define RMIXL_NAE_FLOW_BASE_MASK_CFG		_RMIXL_OFFSET(0x80) // FlowID Base Mask Register
+#define RMIXL_NAE_POE_CLASS_SETUP_CFG		_RMIXL_OFFSET(0x81) // POE Class Setup Configuration Register
+#define RMIXL_NAE_UCO_IFACE_MASK_CFG		_RMIXL_OFFSET(0x82) // Micro-core Interface Mask Configuraton Register
+#define RMIXL_NAE_RX_BUFFER_XOFFON_THRESH	_RMIXL_OFFSET(0x83) // Receive Buffer XOFF/XON Threshold
+#define RMIXL_NAE_FLOW_TABLE1_CFG		_RMIXL_OFFSET(0x84) // Flow Table 1
+#define RMIXL_NAE_FLOW_CLASS_BASE_MASK		_RMIXL_OFFSET(0x85) // Flow Class Base Mask
+#define RMIXL_NAE_FLOW_TABLE3_CFG		_RMIXL_OFFSET(0x86) // Flow Table 3
+#define RMIXL_NAE_RX_FREE_LIFO_THRESH		_RMIXL_OFFSET(0x87) // Receive Free-In LIFO Threshold
+#define RMIXL_NAE_RX_PARSER_UNCLA		_RMIXL_OFFSET(0x88) // Receive Parser Unclassify
+#define RMIXL_NAE_RX_BUFF_INTR_THRESH		_RMIXL_OFFSET(0x89) // Receive Buffer Interrupt Threshold
+#define RMIXL_NAE_IFACE_FIFO_CFG		_RMIXL_OFFSET(0x8A) // Interface FIFO Carvings Register
+#define RMIXL_NAE_PARSER_SEQ_FIFOTH_CFG		_RMIXL_OFFSET(0x8B) // Parser Sequence FIFO Threshold Configuration Register
+#define RMIXL_NAE_RX_ERRINJ_CTRL0		_RMIXL_OFFSET(0x8C) // Receive Error Injection Control Register 0
+#define RMIXL_NAE_RX_ERRINJ_CTRL1		_RMIXL_OFFSET(0x8D) // Receive Error Injection Control Register 1
+#define RMIXL_NAE_RX_ERR_LATCH0			_RMIXL_OFFSET(0x8E) // Receive Error Latch Register 0
+#define RMIXL_NAE_RX_ERR_LATCH1			_RMIXL_OFFSET(0x8F) // Receive Error Latch Register 1
+#define RMIXL_NAE_RX_PERF_CTR_CFG		_RMIXL_OFFSET(0xA0) // Receive Performance Counter Configuration Register
+#define RMIXL_NAE_RX_PERF_CTR_VAL		_RMIXL_OFFSET(0xA1) // Receive Performance Counter Value Register
+
+	// NAE Hardware Parser Registers
+
+#define RMIXL_NAE_L2_TYPE_PORTn(n)		_RMIXL_OFFSET(0x210+(n)) // L2 Type 0-19
+#define RMIXL_NAE_L3_CTABLE_MASK0		_RMIXL_OFFSET(0x22C) // L3 CAM Table Masks
+#define RMIXL_NAE_L3_CTABLE_MASK1		_RMIXL_OFFSET(0x22D) // L3 CAM Table Masks
+#define RMIXL_NAE_L3_CTABLE_MASK2		_RMIXL_OFFSET(0x22E) // L3 CAM Table Masks
+#define RMIXL_NAE_L3_CTABLE_MASK3		_RMIXL_OFFSET(0x22F) // L3 CAM Table Masks
+#define RMIXL_NAE_L3_CTABLE_EVENn(n)		_RMIXL_OFFSET(0x230+2*(n)) // L3 CAM Table Even 0-15
+#define RMIXL_NAE_L3_CTABLE_ODDn(n)		_RMIXL_OFFSET(0x231+2*(n)) // L3 CAM Table Odd 0-15
+#define RMIXL_NAE_L4_CTABLEn(n)			_RMIXL_OFFSET(0x250+(n)) // L4 CAM Table 0-15
+#define RMIXL_NAE_IPV6_EXT_HEAD0		_RMIXL_OFFSET(0x260) // IPv6 Extension Headers
+#define RMIXL_NAE_IPV6_EXT_HEAD1		_RMIXL_OFFSET(0x261) // IPv6 Extension Headers
+#define RMIXL_NAE_VLAN_TYPES01			_RMIXL_OFFSET(0x262) // VLAN Headers
+#define RMIXL_NAE_VLAN_TYPES23			_RMIXL_OFFSET(0x263) // VLAN Headers
+
+	// Egress Path Registers
+#define RMIXL_NAE_TX_CONFIG			_RMIXL_OFFSET(0x11) // Transmit Configuration
+#define RMIXL_NAE_DMA_TX_CREDIT_TH		_RMIXL_OFFSET(0x29) // DMA Transmit Credit Threshold
+#define RMIXL_NAE_STG1_STG2CRDT_CMD		_RMIXL_OFFSET(0x30) // Stage1 to Stage2 Credit Command
+#define RMIXL_NAE_STG2_EHCRDT_CMD		_RMIXL_OFFSET(0x32) // Stage2 to Exit Hold FIFO Credit Command
+#define RMIXL_NAE_STG2_FREECRDT_CMD		_RMIXL_OFFSET(0x34) // Stage2 Free FIFO Credit Command
+#define RMIXL_NAE_STG2_STRCRDT_CMD		_RMIXL_OFFSET(0x36) // Stage2 to Micro-Struct FIFO Credit Command
+#define RMIXL_NAE_VFBID_DESTMAP_CMD		_RMIXL_OFFSET(0x3A) // VFBID to Destination Map Command
+#define RMIXL_NAE_STG1_PMEM_PROG		_RMIXL_OFFSET(0x3C) // Stage1 Context Memory Pointer Setup
+#define RMIXL_NAE_STG2_PMEM_PROG		_RMIXL_OFFSET(0x3E) // Stage2 Context Memory Pointer Setup
+#define RMIXL_NAE_EH_PMEM_PROG			_RMIXL_OFFSET(0x40) // Exit Hold Context Memory Pointer Setup
+#define RMIXL_NAE_FREE_PMEM_PROG		_RMIXL_OFFSET(0x42) // Free Context Memory Pointer Setup
+#define RMIXL_NAE_TX_DDR_ACTVLIST_CMD		_RMIXL_OFFSET(0x44) // Transmit DRR Active List Setup
+#define RMIXL_NAE_TX_IF_BURSTMAX_CMD		_RMIXL_OFFSET(0x46) // Transmit Interface Burst Max Setup
+#define RMIXL_NAE_TX_IF_ENABLE_CMD		_RMIXL_OFFSET(0x48) // Transmit Interface Enable Command
+#define RMIXL_NAE_TX_PKTLEN_PMEM_CMD		_RMIXL_OFFSET(0x4A) // Transmit Pktlen Pointer Memory Setup
+#define RMIXL_NAE_TX_SCHED_MAP_CMD0		_RMIXL_OFFSET(0x4C) // Transmit Context Scheduling and Mapping Setup
+#define RMIXL_NAE_TX_SCHED_MAP_CMD1		_RMIXL_OFFSET(0x4D) // Transmit Context Scheduling and Mapping Setup
+#define RMIXL_NAE_EGR_NIOR_CAL_LEN		_RMIXL_OFFSET(0x4E) // Egress NetIOR Credit Calendar Length
+#define RMIXL_NAE_TX_PKT_PMEM_CMD0		_RMIXL_OFFSET(0x50) // Transmit Packet Pointer Memory Setup 0
+#define RMIXL_NAE_TX_PKT_PMEM_CMD1		_RMIXL_OFFSET(0x51) // Transmit Packet Pointer Memory Setup 1
+#define RMIXL_NAE_EGR_NIOR_CRDT_CAL_CMD		_RMIXL_OFFSET(0x52) // Egress NetIOR Credit Calendar Setup
+#define RMIXL_NAE_TX_SCHED_CTRL			_RMIXL_OFFSET(0x53) // Transmit Scheduler Control
+#define RMIXL_NAE_TX_CRC_POLY0			_RMIXL_OFFSET(0x54) // Transmit CRC Polynomial 0
+#define RMIXL_NAE_TX_CRC_POLY1			_RMIXL_OFFSET(0x55) // Transmit CRC Polynomial 1
+#define RMIXL_NAE_TX_CRC_POLY2			_RMIXL_OFFSET(0x56) // Transmit CRC Polynomial 2
+#define RMIXL_NAE_TX_CRC_POLY3			_RMIXL_OFFSET(0x57) // Transmit CRC Polynomial 3
+#define RMIXL_NAE_STR_PMEM_CMD			_RMIXL_OFFSET(0x58) // MicroStruct Descriptor Pointer
+#define RMIXL_NAE_TX_IORCRDT_INIT		_RMIXL_OFFSET(0x59) // Transmit Network Interface Credit Initialization
+#define RMIXL_NAE_TX_DSBL_ECC			_RMIXL_OFFSET(0x5A) // Transmit Disable ECC
+#define RMIXL_NAE_TX_IORCRDT_IGNORE		_RMIXL_OFFSET(0x5B) // Transmit Network Interface Credit Ignore
+#define RMIXL_NAE_TX_BW_VALUE0			_RMIXL_OFFSET(0x64) // Transmit Bandwidth Value 0
+#define RMIXL_NAE_TX_BW_VALUE1			_RMIXL_OFFSET(0x65) // Transmit Bandwidth Value 1
+#define RMIXL_NAE_TX_BW_VALUE2			_RMIXL_OFFSET(0x66) // Transmit Bandwidth Value 2
+#define RMIXL_NAE_TX_BW_VALUE3			_RMIXL_OFFSET(0x67) // Transmit Bandwidth Value 3
+#define RMIXL_NAE_TX_BW_CHOICE_CMD		_RMIXL_OFFSET(0x68) // Transmit Bandwidth Select
+#define RMIXL_NAE_NAE_FREQ_CMD			_RMIXL_OFFSET(0x69) // NAE Frequency Select
+#define RMIXL_NAE_NAE_TX_XOFF_RD_CMD		_RMIXL_OFFSET(0x6A) // Transmit XOFF Read Command
+#define RMIXL_NAE_IFn_1588_TMSTMP_HI(n)		_RMIXL_OFFSET(0x300+2*(n)) // Interface 0-18 1588 Timestamp High
+#define RMIXL_NAE_IFn_1588_TMSTMP_LO(n)		_RMIXL_OFFSET(0x301+2*(n)) // Interface 0-18 1588 Timestamp Low
+#define RMIXL_NAE_TX_EL0			_RMIXL_OFFSET(0x328) // Transmit RAM Error Log 0
+#define RMIXL_NAE_TX_EL1			_RMIXL_OFFSET(0x329) // Transmit RAM Error Log 1
+#define RMIXL_NAE_EIC0				_RMIXL_OFFSET(0x32A) // Error Injection Control 0
+#define RMIXL_NAE_EIC1				_RMIXL_OFFSET(0x32B) // Error Injection Control 1
+#define RMIXL_NAE_STG1_STG2CRDT_STATUS		_RMIXL_OFFSET(0x32C) // Stage1 to Stage2 Credit Status
+#define RMIXL_NAE_STG2_EHCRDT_STATUS		_RMIXL_OFFSET(0x32D) // Stage2 to Exit Hold FIFO Credit Status
+#define RMIXL_NAE_STG2_FREECRDT_STATUS		_RMIXL_OFFSET(0x32E) // Stage2 to FreeFIFO Credit Status
+#define RMIXL_NAE_STG2_STRCRDT_STATUS		_RMIXL_OFFSET(0x32F) // Stage2 to Micro-Struct FIFO Credit Status
+#define RMIXL_NAE_TX_PERF_CNTR_INTR_STATUS	_RMIXL_OFFSET(0x330) // Transmit Performance Counter Interrupt Status
+#define RMIXL_NAE_TX_PERF_CNTR_ROLL_STATUS	_RMIXL_OFFSET(0x331) // Transmit Performance Counter Roll Status
+#define RMIXL_NAE_TX_PERF_CNTR0			_RMIXL_OFFSET(0x332) // Transmit Performance Counter 0
+#define RMIXL_NAE_TX_PERF_CTRL0			_RMIXL_OFFSET(0x333) // Transmit Performance Counter 0 Control
+#define RMIXL_NAE_TX_PERF_CNTR1			_RMIXL_OFFSET(0x334) // Transmit Performance Counter 1
+#define RMIXL_NAE_TX_PERF_CTRL1			_RMIXL_OFFSET(0x335) // Transmit Performance Counter 1 Control
+#define RMIXL_NAE_TX_PERF_CNTR2			_RMIXL_OFFSET(0x336) // Transmit Performance Counter 2
+#define RMIXL_NAE_TX_PERF_CTRL2			_RMIXL_OFFSET(0x337) // Transmit Performance Counter 2 Control
+#define RMIXL_NAE_TX_PERF_CNTR3			_RMIXL_OFFSET(0x338) // Transmit Performance Counter 3
+#define RMIXL_NAE_TX_PERF_CTRL3			_RMIXL_OFFSET(0x339) // Transmit Performance Counter 3 Control
+#define RMIXL_NAE_TX_PERF_CNTR4			_RMIXL_OFFSET(0x33A) // Transmit Performance Counter 4
+#define RMIXL_NAE_TX_PERF_CTRL4			_RMIXL_OFFSET(0x33B) // Transmit Performance Counter 4 Control
+#define RMIXL_NAE_TX_BW_CHOICE_STATUS		_RMIXL_OFFSET(0x33C) // Transmit Bandwidth Select Status
+#define RMIXL_NAE_NAE_TXOFF_RD_STATUS		_RMIXL_OFFSET(0x33D) // NAE Transmit XOFF Read Status
+#define RMIXL_NAE_VFBID_DESTMAP_STATUS		_RMIXL_OFFSET(0x380) // VFBID to Destination Map Status
+#define RMIXL_NAE_STG2_PMEM_STATUS		_RMIXL_OFFSET(0x381) // Stage2 Context Memory Pointer Status
+#define RMIXL_NAE_EH_PMEM_STATUS		_RMIXL_OFFSET(0x382) // Exit Hold Context Memory Pointer Status
+#define RMIXL_NAE_FREE_PMEM_STATUS		_RMIXL_OFFSET(0x383) // Free Context Memory Pointer Status
+#define RMIXL_NAE_TX_DDR_ACTVLIST_STATU	S	_RMIXL_OFFSET(0x384) // Transmit DRR Active List Status
+#define RMIXL_NAE_TX_IF_BURSTMAX_STATUS		_RMIXL_OFFSET(0x385) // Transmit Interface Burst Max Status
+#define RMIXL_NAE_TX_PKTLEN_PMEM_STATUS		_RMIXL_OFFSET(0x386) // Transmit Pktlen Pointer Memory Status
+#define RMIXL_NAE_TX_SCHED_MAP_STATUS0		_RMIXL_OFFSET(0x387) // Transmit Context Scheduling and Mapping Status0
+#define RMIXL_NAE_TX_SCHED_MAP_STATUS1		_RMIXL_OFFSET(0x388) // Transmit Context Scheduling and Mapping Status1
+#define RMIXL_NAE_TX_PKT_PMEM_STATUS		_RMIXL_OFFSET(0x389) // Transmit Packet Pointer Memory Status
+#define RMIXL_NAE_STR_PMEM_STATUS		_RMIXL_OFFSET(0x38A) // MicroStruct Pointer Memory Status
+#define RMIXL_NAE_EGR_NIOR_CAL_STATUS		_RMIXL_OFFSET(0x38B) // Egress NetIOR Credit Calendar Status
+
+	// Interrupt Registers
+#define RMIXL_NAE_NET_IF_INTR_STATn(n)		_RMIXL_OFFSET(0x280+2*(n)) // Interface 0-18 Interrupt Status Registers
+#define RMIXL_NAE_NET_IF_INTR_MASKn(n)		_RMIXL_OFFSET(0x281+2*(n)) // Interface 0-18 Interrupt Mask Registers
+#define RMIXL_NAE_NET_COMMON0_INTR_STAT		_RMIXL_OFFSET(0x2A8) // Common Interrupt Status Register 0
+#define RMIXL_NAE_NET_COMMON0_INTR_MASK		_RMIXL_OFFSET(0x2A9) // Common Interrupt Mask Register 0
+#define RMIXL_NAE_NET_COMMON1_INTR_STAT		_RMIXL_OFFSET(0x2AA) // Common Interrupt Status Register 1
+#define RMIXL_NAE_NET_COMMON1_INTR_MASK		_RMIXL_OFFSET(0x2AB) // Common Interrupt Mask Register 1
+
+	// Note: In the following registers, registers IDs are in Interface 0xE.
+	// For Block/Interface/Register decoding, see Table 11-14.
+#define RMIXL_NAE_PHY_LANE<0-3>_STATUS		_RMIXL_OFFSET(0-3) // PHY Lane <0-3> Status
+#define RMIXL_NAE_PHY_LANE<0-3>_CTRL		_RMIXL_OFFSET(4-7) // PHY Lane <0-3> Control
+#define RMIXL_NAE_SYNCE_SEL_REFCLK		_RMIXL_OFFSET(8) // Quad Sync-E Reference Clock Select Register
+
+	// Network Interface Top-Block Registers
+#define RMIXL_NAE_LANE_CFG_CPLX_0_1		_RMIXL_OFFSET(0x780) // Lane Configuration Complex 0 and 1
+#define RMIXL_NAE_LANE_CFG_CPLX_2_3		_RMIXL_OFFSET(0x781) // Lane Configuration Complex 2 and 3
+#define RMIXL_NAE_LANE_CFG_CPLX_4		_RMIXL_OFFSET(0x782) // Lane Configuration Complex 4
+
+#define RMIXL_NAE_SOFT_RESET			_RMIXL_OFFSET(0x783) // Network Interface Soft Reset Register
+#define RMIXL_NAE_1588_PTP_OFFSET_HI		_RMIXL_OFFSET(0x784) // IEEE 1588 Timer Offset High
+#define RMIXL_NAE_1588_PTP_OFFSET_LO		_RMIXL_OFFSET(0x785) // IEEE 1588 Timer Offset Low
+#define RMIXL_NAE_1588_PTP_INC_DEN		_RMIXL_OFFSET(0x786) // IEEE 1588 Incremental Denominator
+#define RMIXL_NAE_1588_PTP_INC_NUM		_RMIXL_OFFSET(0x787) // IEEE 1588 Incremental Numerator
+#define RMIXL_NAE_1588_PTP_INC_INTG		_RMIXL_OFFSET(0x788) // IEEE 1588 Incremental Integer
+#define RMIXL_NAE_1588_PTP_CONTROL		_RMIXL_OFFSET(0x789) // IEEE 1588 Control
+#define RMIXL_NAE_1588_PTP_STATUS		_RMIXL_OFFSET(0x78A) // IEEE 1588 Status
+#define RMIXL_NAE_1588_PTP_USER_VALUE_HI	_RMIXL_OFFSET(0x78B) // IEEE 1588 User Value High
+#define RMIXL_NAE_1588_PTP_USER_VALUE_LO	_RMIXL_OFFSET(0x78C) // IEEE 1588 User Value Low
+#define RMIXL_NAE_1588_PTP_TMR1_HI		_RMIXL_OFFSET(0x78D) // IEEE 1588 Timer 1 High
+#define RMIXL_NAE_1588_PTP_TMR1_LOW		_RMIXL_OFFSET(0x78E) // IEEE 1588 Timer 1 Low
+#define RMIXL_NAE_1588_PTP_TMR2_HI		_RMIXL_OFFSET(0x78F) // IEEE 1588 Timer 2 High
+#define RMIXL_NAE_1588_PTP_TMR2_LOW		_RMIXL_OFFSET(0x790) // IEEE 1588 Timer 2 Low
+#define RMIXL_NAE_1588_PTP_TMR3_HI		_RMIXL_OFFSET(0x791) // IEEE 1588 Timer 3 High
+#define RMIXL_NAE_1588_PTP_TMR3_LOW		_RMIXL_OFFSET(0x792) // IEEE 1588 Timer 3 Low
+#define RMIXL_NAE_TX_FC_CAL_IDX_TBL_CTRL	_RMIXL_OFFSET(0x793) // Tx Flow Control Calendar Index Table Control
+#define RMIXL_NAE_TX_FC_CAL_TBL_CTRL		_RMIXL_OFFSET(0x794) // Tx Flow Control Calendar Table Control
+#define RMIXL_NAE_TX_FC_CAL_TBL_DATA0		_RMIXL_OFFSET(0x795) // Tx Flow Control Table Data 0
+#define RMIXL_NAE_TX_FC_CAL_TBL_DATA1		_RMIXL_OFFSET(0x796) // Tx Flow Control Table Data 1
+#define RMIXL_NAE_TX_FC_CAL_TBL_DATA2		_RMIXL_OFFSET(0x797) // Tx Flow Control Table Data 2
+#define RMIXL_NAE_TX_FC_CAL_TBL_DATA3		_RMIXL_OFFSET(0x798) // Tx Flow Control Table Data 3
+#define RMIXL_NAE_INT_MDIO_CTRL			_RMIXL_OFFSET(0x799) // Internal MDIO Master Control
+#define RMIXL_NAE_INT_MDIO_CTRL_DATA		_RMIXL_OFFSET(0x79A) // Internal MDIO Control Data
+#define RMIXL_NAE_INT_MDIO_RD_STAT		_RMIXL_OFFSET(0x79B) // Internal MDIO Read Status
+#define RMIXL_NAE_INT_MDIO_LINK_STAT		_RMIXL_OFFSET(0x79C) // Internal MDIO MII Link Fail Status
+#define RMIXL_NAE_EXT_G0_MDIO_CTRL		_RMIXL_OFFSET(0x79D) // External Gig 0 MDIO Master Control
+#define RMIXL_NAE_EXT_G0_MDIO_CTRL_DATA		_RMIXL_OFFSET(0x79E) // External Gig 0 MDIO Master Control Data
+#define RMIXL_NAE_EXT_G0_MDIO_RD_STAT		_RMIXL_OFFSET(0x79F) // External Gig 0 MDIO Master Read Status Data
+#define RMIXL_NAE_EXT_G0_MDIO_LINK_STAT		_RMIXL_OFFSET(0x7A0) // External Gig 0 MDIO MII Link Fail Status
+#define RMIXL_NAE_EXT_G1_MDIO_CTRL		_RMIXL_OFFSET(0x7A1) // External Gig 1 MDIO Master Control
+#define RMIXL_NAE_EXT_G1_MDIO_CTRL_DATA		_RMIXL_OFFSET(0x7A2) // External Gig 1 MDIO Master Control Data
+#define RMIXL_NAE_EXT_G1_MDIO_RD_STAT		_RMIXL_OFFSET(0x7A3) // External Gig 1 MDIO Master Read Status Data
+#define RMIXL_NAE_EXT_G1_MDIO_LINK_STAT		_RMIXL_OFFSET(0x7A4) // External Gig 1 MDIO MII Link Fail Status
+#define RMIXL_NAE_EXT_XG0_MDIO_CTRL		_RMIXL_OFFSET(0x7A5) // External XGig 0 MDIO Control
+#define RMIXL_NAE_EXT_XG0_MDIO_CTRL_DATA	_RMIXL_OFFSET(0x7A6) // External XGig 0 MDIO Control Data
+#define RMIXL_NAE_EXT_XG0_MDIO_RD_STAT		_RMIXL_OFFSET(0x7A7) // External XGig 0 MDIO Read Status
+#define RMIXL_NAE_EXT_XG0_MDIO_LINK_STAT	_RMIXL_OFFSET(0x7A8) // External XGig 0 MDIO MII Link Fail Status
+#define RMIXL_NAE_EXT_XG1_MDIO_CTRL		_RMIXL_OFFSET(0x7A9) // External XGig 1 MDIO Control
+#define RMIXL_NAE_EXT_XG1_MDIO_CTRL_DATA	_RMIXL_OFFSET(0x7AA) // External XGig 1 MDIO Control Data
+#define RMIXL_NAE_EXT_XG1_MDIO_RD_STAT		_RMIXL_OFFSET(0x7AB) // External XGig 1 MDIO Read Status
+#define RMIXL_NAE_EXT_XG1_MDIO_LINK_STAT	_RMIXL_OFFSET(0x7AC) // External XGig 1 MDIO MII Link Fail Status
+#define RMIXL_NAE_GMAC_FC_SL0T0			_RMIXL_OFFSET(0x7AD) // GMAC Flow Control Slot 0
+#define RMIXL_NAE_GMAC_FC_SL0T1			_RMIXL_OFFSET(0x7AE) // GMAC Flow Control Slot 1
+#define RMIXL_NAE_GMAC_FC_SL0T2			_RMIXL_OFFSET(0x7AF) // GMAC Flow Control Slot 2
+#define RMIXL_NAE_GMAC_FC_SL0T3			_RMIXL_OFFSET(0x7B0) // GMAC Flow Control Slot 3
+#define RMIXL_NAE_NETIOR_NTB_SLOT		_RMIXL_OFFSET(0x7B1) // Network Interface to NAE Ingress Bus Slot
+#define RMIXL_NAE_NETIOR_MISC_CTRL0		_RMIXL_OFFSET(0x7B2) // Miscellaneous Control 0
+#define RMIXL_NAE_NETIOR_INT0			_RMIXL_OFFSET(0x7B3) // Interrupt 0 - Lane Fault
+#define RMIXL_NAE_NETIOR_INT0_MASK		_RMIXL_OFFSET(0x7B4) // Interrupt 0 Mask
+#define RMIXL_NAE_NETIOR_INT1			_RMIXL_OFFSET(0x7B5) // Interrupt 1 - Exception
+#define RMIXL_NAE_NETIOR_INT1_MASK		_RMIXL_OFFSET(0x7B6) // Interrupt 1 Mask
+#define RMIXL_NAE_GMAC_PFC_REPEAT		_RMIXL_OFFSET(0x7B7) // Priority Flow Control Repeat
+#define RMIXL_NAE_XGMAC_PFC_REPEAT		_RMIXL_OFFSET(0x7B8) // XGMAC Priority Flow Control Repeat
+#define RMIXL_NAE_NETIOR_MISC_CTRL1		_RMIXL_OFFSET(0x7B9) // Miscellaneous Control 1
+#define RMIXL_NAE_NETIOR_MISC_CTRL2		_RMIXL_OFFSET(0x7BA) // Miscellaneous Control 2
+#define RMIXL_NAE_NETIOR_INT2			_RMIXL_OFFSET(0x7BB) // Interrupt 2 - Transition Not Detected
+#define RMIXL_NAE_NETIOR_INT2_MASK		_RMIXL_OFFSET(0x7BC) // Interrupt 2 Mask
+#define RMIXL_NAE_NETIOR_MISC_CTRL3		_RMIXL_OFFSET(0x7BD) // Miscellaneous Control 3
+
+	// Receive Configuration (RX_CONFIG)
+
+	// Free-in descriptor Size Unique.
+	//    Free In Descriptor Size is unique per Free-In LIFO pool.
+	//    If this is set then FrInDescCLSize is not used.
+	//    To program individual Free-In LIFO Sizes use the Free-In LIFO
+	//    Descriptor Size Register (FREE_IN_LIFO_UNIQ_SZ_CFG).
+#define	RMIXL_NAE_RX_CONFIG_FSU			__BIT(31)
+	// Rx Status Mask.
+	//    The 7 error status events mask. Set each bit for the error types
+	//    shown below so that the Err bit in register
+	//    Rx Packet Descriptor Format is set.
+#define	RMIXL_NAE_RX_CONFIG_RSM			__BITS(30,24)
+	//    Bit 6: Truncated - If a packet overflows the NetIor ingress
+	//    FIFOs, it will be truncated. This is the only place a packet
+	//    can get truncated.
+#define	RMIXL_NAE_RX_CONFIG_RSM_TRUNC		__BIT(30)
+	//    Bit 5: Pause - Only for SGMII/XAUI. Pause Frames can be directly
+	//    understood and used by the hardware. If software does not want to
+	//    decode these and drops them, then this bit needs to be set.
+#define	RMIXL_NAE_RX_CONFIG_RSM_PAUSE		__BIT(29)
+	//    Bit 4: Rx OK - Good Packet
+#define	RMIXL_NAE_RX_CONFIG_RSM_RX_OK		__BIT(28)
+	//    Bit 3: LengthOutOfRange - (legacy mode, should be 0)
+#define	RMIXL_NAE_RX_CONFIG_RSM_LENGTH_RANGE	__BIT(27)
+	//    Bit 2: LengthCheckError - (legacy mode, should be 0)
+#define	RMIXL_NAE_RX_CONFIG_RSM_LENGTH_CHECK	__BIT(26)
+	//    Bit 1: Link CRC error (bit 1 in INTR_STAT register)
+	//           Could also be a "truncated packet"
+#define	RMIXL_NAE_RX_CONFIG_RSM_LINK_CRC	__BIT(25)
+	//    Bit 0: Code Error (legacy mode; reserved)
+#define	RMIXL_NAE_RX_CONFIG_RSM_CODE_ERROR	__BIT(24)
+
+#define	RMIXL_NAE_RX_CONFIG_PREPAD_SIZE		__BITS(23,22) // Pre-pad Size in 16-byte units.
+#define	RMIXL_NAE_RX_CONFIG_PREPAD_WORD3	__BITS(21,20) // Pre-pad Word 3
+#define	RMIXL_NAE_RX_CONFIG_PREPAD_WORD2	__BITS(19,18) // Pre-pad Word 2
+#define	RMIXL_NAE_RX_CONFIG_PREPAD_WORD1	__BITS(17,16) // Pre-pad Word 1
+#define	RMIXL_NAE_RX_CONFIG_PREPAD_WORD0	__BITS(15,14) // Pre-pad Word 0
+#define	RMIXL_NAE_RX_CONFIG_PREPAD_EN		__BIT(13) // Pre-pad Enable
+
+#define	RMIXL_NAE_RX_CONFIG_HPE			__BIT(12) // H/W Parser Enable
+
+	// Free-In Descriptor Size (in 64-byte Cache Lines).
+	//	If this field is set to 0, the descriptor size is 16 KB.
+#define	RMIXL_NAE_RX_CONFIG_FREEIN_DESC_SIZE	__BITS(11,4)
+
+#define	RMIXL_NAE_RX_CONFIG_DED			__BIT(3) // Device ECC Disable
+
+	// Receive Maximum Message Size minus one
+	//	The POE adds its own descriptor to the number of descriptors
+#define	RMIXL_NAE_RX_CONFIG_MMS			__BITS(2,1)
+#define	RMIXL_NAE_RX_CONFIG_MMS_ONE		0	// 1 descriptor
+#define	RMIXL_NAE_RX_CONFIG_MMS_TWO		1	// 2 descriptors
+#define	RMIXL_NAE_RX_CONFIG_MMS_THREE		2	// 3 descriptors
+#define	RMIXL_NAE_RX_CONFIG_MMS_INVALID		3	// Invalid
+
+	// Rx Enable.
+#define	RMIXL_NAE_RX_CONFIG_RE			__BIT(0)
+
+	// Receive Interface Base Config <0-9> (RX_IF_BASE_CONFIG<0-9>)
+	// Block 7, Register 0x12..0x1b (8xx/4xx)
+	// Block 7, Register 0x12..0x16 (3xx)
+	// RX_IF_BASE_CONFIG0: Complex 0 phy0/phy1 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG1: Complex 0 phy2/phy3 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG2: Complex 1 phy0/phy1 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG3: Complex 1 phy2/phy3 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG4: Complex 2 phy0/phy1 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG5: Complex 2 phy2/phy3 (EVEN/ODD) Channel Offset,
+	// These are 8xx/4xx only:
+	// RX_IF_BASE_CONFIG6: Complex 3 phy0/phy1 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG7: Complex 3 phy2/phy3 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG8: Complex 4 phy0/phy1 (EVEN/ODD) Channel Offset,
+	// RX_IF_BASE_CONFIG9: Complex 4 phy2/phy3 (EVEN/ODD) Channel Offset,
+	// On XLP 800 and 400 processors, the valid range is 0-523.
+	// On XLP 300 and 300-Lite processors, the valid range is 0-127.
+#define	RMIXL_NAE_RX_IF_BASE_CONFIG_ODD_LANE_BASE	__BITS(25,16)
+#define	RMIXL_NAE_RX_IF_BASE_CONFIG_EVEN_LANE_BASE	__BITS(9,0)
+
 #endif /* _MIPS_RMI_RMIXL_NAEREG_H */

Index: src/sys/arch/mips/rmi/rmixlp_pcie.c
diff -u src/sys/arch/mips/rmi/rmixlp_pcie.c:1.1.2.4 src/sys/arch/mips/rmi/rmixlp_pcie.c:1.1.2.5
--- src/sys/arch/mips/rmi/rmixlp_pcie.c:1.1.2.4	Fri Dec 30 06:42:29 2011
+++ src/sys/arch/mips/rmi/rmixlp_pcie.c	Sat Dec 31 04:54:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: rmixlp_pcie.c,v 1.1.2.4 2011/12/30 06:42:29 matt Exp $	*/
+/*	$NetBSD: rmixlp_pcie.c,v 1.1.2.5 2011/12/31 04:54:28 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rmixlp_pcie.c,v 1.1.2.4 2011/12/30 06:42:29 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rmixlp_pcie.c,v 1.1.2.5 2011/12/31 04:54:28 matt Exp $");
 
 #include "opt_pci.h"
 #include "pci.h"
@@ -655,7 +655,9 @@ rmixlp_pcie_configure_bus(struct rmixlp_
 		mem = rmixlp_pcie_set_bus0_bar0(sc, RMIXLP_OHCI3_PCITAG, mem);
 		mem = rmixlp_pcie_set_bus0_bar0(sc, RMIXLP_NAE_PCITAG, mem);
 		mem = rmixlp_pcie_set_bus0_bar0(sc, RMIXLP_POE_PCITAG, mem);
+		mem = rmixlp_pcie_set_bus0_bar0(sc, RMIXLP_AHCI_PCITAG, mem);
 		mem = rmixlp_pcie_set_bus0_bar0(sc, RMIXLP_FMN_PCITAG, mem);
+		mem = rmixlp_pcie_set_bus0_bar0(sc, RMIXLP_SRIO_PCITAG, mem);
 	} else {
 		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_EHCI0_PCITAG);
 		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_OHCI0_PCITAG);
@@ -665,7 +667,9 @@ rmixlp_pcie_configure_bus(struct rmixlp_
 		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_OHCI3_PCITAG);
 		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_NAE_PCITAG);
 		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_POE_PCITAG);
+		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_AHCI_PCITAG);
 		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_FMN_PCITAG);
+		rmixlp_pcie_print_bus0_bar0(sc, RMIXLP_SRIO_PCITAG);
 	}
 
 	for (size_t i = 0; i < 4; i++) {

Index: src/sys/arch/mips/rmi/rmixlreg.h
diff -u src/sys/arch/mips/rmi/rmixlreg.h:1.1.2.17 src/sys/arch/mips/rmi/rmixlreg.h:1.1.2.18
--- src/sys/arch/mips/rmi/rmixlreg.h:1.1.2.17	Sat Dec 31 04:30:52 2011
+++ src/sys/arch/mips/rmi/rmixlreg.h	Sat Dec 31 04:54:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: rmixlreg.h,v 1.1.2.17 2011/12/31 04:30:52 matt Exp $	*/
+/*	$NetBSD: rmixlreg.h,v 1.1.2.18 2011/12/31 04:54:28 matt Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -591,7 +591,6 @@
  * lists "Reg ID" values not offsets
  * Offsets are relative to RMIXL_IO_DEV_BRIDGE
  */
-#define	RMIXL_PIC_PCITAG		_RMIXL_PCITAG(0, 0, 4)
 #define	RMIXL_PIC_CONTROL		_RMIXL_OFFSET(0x0)
 #define	RMIXL_PIC_IPIBASE		_RMIXL_OFFSET(0x4)
 #define	RMIXL_PIC_INTRACK		_RMIXL_OFFSET(0x6)
@@ -789,16 +788,8 @@
 #define	RMIXLP_PIC_INT_GPIO_PENDING_PICPENDB	__BITS(11,0)
 
 /*
- * RMIXLP Uart
- */
-#define	RMIXLP_UART1_PCITAG		_RMIXL_PCITAG(0, 6, 0)
-#define	RMIXLP_UART2_PCITAG		_RMIXL_PCITAG(0, 6, 1)
-
-/*
  * GPIO Controller registers
  */
-#define	RMIXLP_GPIO_PCITAG		_RMIXL_PCITAG(0, 6, 4)
-
 /* GPIO Signal Registers */
 #define RMIXL_GPIO_INT_ENB		_RMIXL_OFFSET(0x0)	/* Interrupt Enable register */
 #define RMIXL_GPIO_INT_INV		_RMIXL_OFFSET(0x1)	/* Interrupt Inversion register */
@@ -1257,7 +1248,6 @@
 /*
  * XLP PCIe Host Bridge Registers
  */
-#define	RMIXLP_SBC_PCITAG		_RMIXL_PCITAG(0, 0, 0)
 #ifndef RMIXLP_SBC_PCIE_ECFG_PBASE
 #define	RMIXLP_SBC_PCIE_ECFG_PBASE	0x18000000
 #endif
@@ -1406,20 +1396,13 @@
 #define RMIXLP_SBC_GPIO_TSW		_RMIXL_OFFSET(0x309) /* General I/O Time Slot Weight Register */
 #define RMIXLP_SBC_FLASH_TSW		_RMIXL_OFFSET(0x30A) /* Flash Time Slot Weight Register (NAND/NOR/SPI/MMC/SD) */
 #define RMIXLP_SBC_NAE_TSW		_RMIXL_OFFSET(0x30B) /* Network Acceleration Engine Time Slot Weight Register */
-#define RMIXLP_SBC_FNM_TSW		_RMIXL_OFFSET(0x30C) /* Fast Messaging Network Time Slot Weight Register */
+#define RMIXLP_SBC_FMN_TSW		_RMIXL_OFFSET(0x30C) /* Fast Messaging Network Time Slot Weight Register */
 #define RMIXLP_SBC_DMAENG_TSW		_RMIXL_OFFSET(0x30D) /* Data Transfer and RAID Engine Slot Weight Register */
 #define RMIXLP_SBC_SEC_TSW		_RMIXL_OFFSET(0x30E) /* Security Engine Slot Weight Register */
 #define RMIXLP_SBC_RSAECC_TSW		_RMIXL_OFFSET(0x30F) /* RSA/ECC Engine Slot Weight Register */
 #define RMIXLP_SBC_BRIDGE_DATA_COUNTER	_RMIXL_OFFSET(0x310) /* Bridge Data Counter Register */
 #define RMIXLP_SBC_BYTE_SWAP		_RMIXL_OFFSET(0x311) /* Byte Swap Register */
 
-#define	RMIXLP_EHCI0_PCITAG		_RMIXL_PCITAG(0,2,0)
-#define	RMIXLP_OHCI0_PCITAG		_RMIXL_PCITAG(0,2,1)
-#define	RMIXLP_OHCI1_PCITAG		_RMIXL_PCITAG(0,2,2)
-#define	RMIXLP_EHCI1_PCITAG		_RMIXL_PCITAG(0,2,3)
-#define	RMIXLP_OHCI2_PCITAG		_RMIXL_PCITAG(0,2,4)
-#define	RMIXLP_OHCI3_PCITAG		_RMIXL_PCITAG(0,2,5)
-
 #define	RMIXLP_USB_CTL0			_RMIXL_OFFSET(0x41)
 #define	RMIXLP_USB_BYTE_SWAP_DIS	_RMIXL_OFFSET(0x49)
 #define	RMIXLP_USB_PHY0			_RMIXL_OFFSET(0x4A)
@@ -1446,10 +1429,48 @@
 #define	RMIXLP_USB_PHY0_PHYDETVBUS	__BIT(1)
 #define	RMIXLP_USB_PHY0_USBPHYRESET	__BIT(0)
 
+#define	RMIXLP_SBC_PCITAG		_RMIXL_PCITAG(0,0,0)
+#define	RMIXLP_ICI1_PCITAG		_RMIXL_PCITAG(0,0,1)
+#define	RMIXLP_ICI2_PCITAG		_RMIXL_PCITAG(0,0,2)
+#define	RMIXLP_ICI3_PCITAG		_RMIXL_PCITAG(0,0,3)
+#define	RMIXLP_PIC_PCITAG		_RMIXL_PCITAG(0,0,4)
+
+#define	RMIXLP_PCIPORT0_PCITAG		_RMIXL_PCITAG(0,0,0)
+#define	RMIXLP_PCIPORT1_PCITAG		_RMIXL_PCITAG(0,1,0)
+#define	RMIXLP_PCIPORT2_PCITAG		_RMIXL_PCITAG(0,2,0)
+#define	RMIXLP_PCIPORT3_PCITAG		_RMIXL_PCITAG(0,3,0)
+
+#define	RMIXLP_EHCI0_PCITAG		_RMIXL_PCITAG(0,2,0)
+#define	RMIXLP_OHCI0_PCITAG		_RMIXL_PCITAG(0,2,1)
+#define	RMIXLP_OHCI1_PCITAG		_RMIXL_PCITAG(0,2,2)
+#define	RMIXLP_EHCI1_PCITAG		_RMIXL_PCITAG(0,2,3)
+#define	RMIXLP_OHCI2_PCITAG		_RMIXL_PCITAG(0,2,4)
+#define	RMIXLP_OHCI3_PCITAG		_RMIXL_PCITAG(0,2,5)
+
 #define	RMIXLP_NAE_PCITAG		_RMIXL_PCITAG(0,3,0)
 #define	RMIXLP_POE_PCITAG		_RMIXL_PCITAG(0,3,1)
+#define	RMIXLP_AHCI_PCITAG		_RMIXL_PCITAG(0,3,2)
+
 #define	RMIXLP_FMN_PCITAG		_RMIXL_PCITAG(0,4,0)
 
+#define	RMIXLP_DMA_PCITAG		_RMIXL_PCITAG(0,5,0)
+#define	RMIXLP_SAE_PCITAG		_RMIXL_PCITAG(0,5,1)
+#define	RMIXLP_PKE_PCITAG		_RMIXL_PCITAG(0,5,2)
+#define	RMIXLP_SRIO_PCITAG		_RMIXL_PCITAG(0,5,3)
+#define	RMIXLP_RXE_PCITAG		_RMIXL_PCITAG(0,5,4)
+
+#define	RMIXLP_UART1_PCITAG		_RMIXL_PCITAG(0,6,0)
+#define	RMIXLP_UART2_PCITAG		_RMIXL_PCITAG(0,6,1)
+#define	RMIXLP_I2C1_PCITAG		_RMIXL_PCITAG(0,6,2)
+#define	RMIXLP_I2C2_PCITAG		_RMIXL_PCITAG(0,6,3)
+#define	RMIXLP_GPIO_PCITAG		_RMIXL_PCITAG(0,6,4)
+#define	RMIXLP_SM_PCITAG		_RMIXL_PCITAG(0,6,5)
+#define	RMIXLP_JTAG_PCITAG		_RMIXL_PCITAG(0,6,6)
+
+#define	RMIXLP_NOR_PCITAG		_RMIXL_PCITAG(0,7,0)
+#define	RMIXLP_NAND_PCITAG		_RMIXL_PCITAG(0,7,1)
+#define	RMIXLP_SPI_PCITAG		_RMIXL_PCITAG(0,7,2)
+#define	RMIXLP_MMC_PCITAG		_RMIXL_PCITAG(0,7,3)
 /*
  * PCI PCIe control (contains the IRT info)
  */
@@ -1465,7 +1486,6 @@
 /*
  * XLP System Management Registers
  */
-#define	RMIXLP_SM_PCITAG		_RMIXL_PCITAG(0, 6, 5)
 #define	RMIXLP_SM_CHIP_RESET		_RMIXL_OFFSET(0x40)
 #define	RMIXLP_SM_POWER_ON_RESET_CFG	_RMIXL_OFFSET(0x41)
 #define	RMIXLP_SM_EFUSE_DEVICE_CFG_STATUS0 _RMIXL_OFFSET(0x42)
@@ -1488,7 +1508,6 @@
 #define	RMIXLP_SM_POWER_ON_RESET_CFG_NORSP	__BIT(4)
 #define	RMIXLP_SM_POWER_ON_RESET_CFG_BD		__BITS(3,0)
 
-#define	RMIXLP_NOR_PCITAG		_RMIXL_PCITAG(0,7,0)
 #define	RMIXLP_NOR_NCS			8
 #define	RMIXLP_NOR_CS_BASEADDRESSn(n)	_RMIXL_OFFSET(0x40+(n))
 #define	RMIXLP_NOR_CS_BASELIMITn(n)	_RMIXL_OFFSET(0x48+(n))
@@ -1636,11 +1655,9 @@
 
 	// RDY/BSY Status. 1: NOR device is ready.
 #define	RMIXLP_NOR_STATUS_RDYBSY		__BIT(0)
-#define	RMIXLP_NAND_PCITAG		_RMIXL_PCITAG(0,7,1)
 
 #define	RMIXLP_NAND_RDYBSY_SEL		_RMIXL_OFFSET(0x81)
 
-#define	RMIXLP_SPI_PCITAG		_RMIXL_PCITAG(0,7,2)
 
 #define	RMIXLP_SPI_CS_CONFIG(n)		_RMIXL_OFFSET(0x40+0x10*(n))
 #define	RMIXLP_SPI_CS_FDIV(n)		_RMIXL_OFFSET(0x41+0x10*(n))
@@ -1700,7 +1717,6 @@
 
 #define	RMIXLP_SPI_GPIO_PINS		__BITS(28,22)
 
-#define	RMIXLP_MMC_PCITAG		_RMIXL_PCITAG(0,7,3)
 #define	RMIXLP_MMC_SLOTSIZE		_RMIXL_OFFSET(0x40)
 
 #define	RMIXLP_MMC_SLOT0		_RMIXL_OFFSET(0x40)

Reply via email to