xref: /onnv-gate/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_nx.h (revision 12279:f13874aa8143)
111924SDaniel.Beauregard@Sun.COM /*
211924SDaniel.Beauregard@Sun.COM  * CDDL HEADER START
311924SDaniel.Beauregard@Sun.COM  *
411924SDaniel.Beauregard@Sun.COM  * The contents of this file are subject to the terms of the
511924SDaniel.Beauregard@Sun.COM  * Common Development and Distribution License (the "License").
611924SDaniel.Beauregard@Sun.COM  * You may not use this file except in compliance with the License.
711924SDaniel.Beauregard@Sun.COM  *
811924SDaniel.Beauregard@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
911924SDaniel.Beauregard@Sun.COM  * or http://www.opensolaris.org/os/licensing.
1011924SDaniel.Beauregard@Sun.COM  * See the License for the specific language governing permissions
1111924SDaniel.Beauregard@Sun.COM  * and limitations under the License.
1211924SDaniel.Beauregard@Sun.COM  *
1311924SDaniel.Beauregard@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
1411924SDaniel.Beauregard@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1511924SDaniel.Beauregard@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
1611924SDaniel.Beauregard@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
1711924SDaniel.Beauregard@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
1811924SDaniel.Beauregard@Sun.COM  *
1911924SDaniel.Beauregard@Sun.COM  * CDDL HEADER END
2011924SDaniel.Beauregard@Sun.COM  */
2111924SDaniel.Beauregard@Sun.COM 
2211924SDaniel.Beauregard@Sun.COM /*
2311924SDaniel.Beauregard@Sun.COM  * Copyright 2010 QLogic Corporation.  All rights reserved.
2411924SDaniel.Beauregard@Sun.COM  * Use is subject to license terms.
2511924SDaniel.Beauregard@Sun.COM  */
2611924SDaniel.Beauregard@Sun.COM 
2711924SDaniel.Beauregard@Sun.COM #ifndef	_QL_NX_H
2811924SDaniel.Beauregard@Sun.COM #define	_QL_NX_H
2911924SDaniel.Beauregard@Sun.COM 
3011924SDaniel.Beauregard@Sun.COM /*
3111924SDaniel.Beauregard@Sun.COM  * ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
3211924SDaniel.Beauregard@Sun.COM  *
3311924SDaniel.Beauregard@Sun.COM  * ***********************************************************************
3411924SDaniel.Beauregard@Sun.COM  * *									**
3511924SDaniel.Beauregard@Sun.COM  * *				NOTICE					**
3611924SDaniel.Beauregard@Sun.COM  * *		COPYRIGHT (C) 1996-2010 QLOGIC CORPORATION		**
3711924SDaniel.Beauregard@Sun.COM  * *			ALL RIGHTS RESERVED				**
3811924SDaniel.Beauregard@Sun.COM  * *									**
3911924SDaniel.Beauregard@Sun.COM  * ***********************************************************************
4011924SDaniel.Beauregard@Sun.COM  *
4111924SDaniel.Beauregard@Sun.COM  */
4211924SDaniel.Beauregard@Sun.COM 
4311924SDaniel.Beauregard@Sun.COM #ifdef	__cplusplus
4411924SDaniel.Beauregard@Sun.COM extern "C" {
4511924SDaniel.Beauregard@Sun.COM #endif
4611924SDaniel.Beauregard@Sun.COM 
4711924SDaniel.Beauregard@Sun.COM #define	NX_P3_A0	0x30
4811924SDaniel.Beauregard@Sun.COM #define	NX_P3_A2	0x32
4911924SDaniel.Beauregard@Sun.COM #define	NX_P3_B0	0x40
5011924SDaniel.Beauregard@Sun.COM #define	NX_P3_B1	0x41
5111924SDaniel.Beauregard@Sun.COM #define	NX_P3_B2	0x42
5211924SDaniel.Beauregard@Sun.COM #define	NX_P3P_A0	0x50
53*12279SDaniel.Beauregard@Sun.COM #define	NX_P3P_B0	0x54
5411924SDaniel.Beauregard@Sun.COM 
5511924SDaniel.Beauregard@Sun.COM #define	NX_IS_REVISION_P3(REVISION)	(REVISION >= NX_P3_A0)
5611924SDaniel.Beauregard@Sun.COM #define	NX_IS_REVISION_P3PLUS(REVISION)	(REVISION >= NX_P3P_A0)
5711924SDaniel.Beauregard@Sun.COM 
5811924SDaniel.Beauregard@Sun.COM /*
5911924SDaniel.Beauregard@Sun.COM  * Following are the states of the Phantom. Phantom will set them and
6011924SDaniel.Beauregard@Sun.COM  * Host will read to check if the fields are correct.
6111924SDaniel.Beauregard@Sun.COM  */
6211924SDaniel.Beauregard@Sun.COM #define	PHAN_INITIALIZE_START		0xff00
6311924SDaniel.Beauregard@Sun.COM #define	PHAN_INITIALIZE_FAILED		0xffff
6411924SDaniel.Beauregard@Sun.COM #define	PHAN_INITIALIZE_COMPLETE	0xff01
6511924SDaniel.Beauregard@Sun.COM 
6611924SDaniel.Beauregard@Sun.COM /* Host writes the following to notify that it has done the init-handshake */
6711924SDaniel.Beauregard@Sun.COM #define	PHAN_INITIALIZE_ACK		0xf00f
6811924SDaniel.Beauregard@Sun.COM #define	PHAN_PEG_RCV_INITIALIZED	0xff01
6911924SDaniel.Beauregard@Sun.COM #define	PHAN_PEG_RCV_START_INITIALIZE	0xff00
7011924SDaniel.Beauregard@Sun.COM 
7111924SDaniel.Beauregard@Sun.COM /* CRB_RELATED */
7211924SDaniel.Beauregard@Sun.COM #define	NIC_CRB_BASE		(UNM_CAM_RAM(0x200))
7311924SDaniel.Beauregard@Sun.COM #define	NIC_CRB_BASE_2		(UNM_CAM_RAM(0x700))
7411924SDaniel.Beauregard@Sun.COM #define	UNM_NIC_REG(X)		(NIC_CRB_BASE + (X))
7511924SDaniel.Beauregard@Sun.COM #define	UNM_NIC_REG_2(X)	(NIC_CRB_BASE_2 + (X))
7611924SDaniel.Beauregard@Sun.COM 
7711924SDaniel.Beauregard@Sun.COM #define	CRB_CUT_THRU_PAGE_SIZE	(UNM_CAM_RAM(0x170))
7811924SDaniel.Beauregard@Sun.COM 
7911924SDaniel.Beauregard@Sun.COM #define	CRB_DEV_PARTITION_INFO	(UNM_CAM_RAM(0x14c))
8011924SDaniel.Beauregard@Sun.COM #define	CRB_DEV_STATE		(UNM_CAM_RAM(0x140))
8111924SDaniel.Beauregard@Sun.COM #define	CRB_DRV_IDC_VERSION	(UNM_CAM_RAM(0x174))
8211924SDaniel.Beauregard@Sun.COM #define	CRB_DRV_ACTIVE		(UNM_CAM_RAM(0x138))
8311924SDaniel.Beauregard@Sun.COM #define	CRB_DRV_STATE		(UNM_CAM_RAM(0x144))
8411924SDaniel.Beauregard@Sun.COM #define	CRB_DRV_SCRATCH		(UNM_CAM_RAM(0x148))
85*12279SDaniel.Beauregard@Sun.COM #define	CRB_FCOE_PORT_0_REQIN 	(UNM_CAM_RAM(0x1b8))
86*12279SDaniel.Beauregard@Sun.COM #define	CRB_FCOE_PORT_1_REQIN	(UNM_CAM_RAM(0x1bc))
8711924SDaniel.Beauregard@Sun.COM 
8811924SDaniel.Beauregard@Sun.COM /* Every driver should use these Device State */
8911924SDaniel.Beauregard@Sun.COM #define	NX_DEV_COLD		1
9011924SDaniel.Beauregard@Sun.COM #define	NX_DEV_INITIALIZING 	2
9111924SDaniel.Beauregard@Sun.COM #define	NX_DEV_READY		3
9211924SDaniel.Beauregard@Sun.COM #define	NX_DEV_NEED_RESET	4
9311924SDaniel.Beauregard@Sun.COM #define	NX_DEV_NEED_QUIESCENT 	5
9411924SDaniel.Beauregard@Sun.COM #define	NX_DEV_FAILED		6
9511924SDaniel.Beauregard@Sun.COM #define	NX_DEV_QUIESCENT	7
9611924SDaniel.Beauregard@Sun.COM 
9711924SDaniel.Beauregard@Sun.COM #define	NX_IDC_VERSION		0x1
9811924SDaniel.Beauregard@Sun.COM 
9911924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_PRODUCER_OFFSET	(UNM_NIC_REG(0x08))
10011924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_CONSUMER_OFFSET	(UNM_NIC_REG(0x0c))
10111924SDaniel.Beauregard@Sun.COM #define	CRB_PAUSE_ADDR_LO	(UNM_NIC_REG(0x10)) /* C0 EPG BUG  */
10211924SDaniel.Beauregard@Sun.COM #define	CRB_PAUSE_ADDR_HI	(UNM_NIC_REG(0x14))
10311924SDaniel.Beauregard@Sun.COM #define	NX_CDRP_CRB_OFFSET	(UNM_NIC_REG(0x18))
10411924SDaniel.Beauregard@Sun.COM #define	NX_ARG1_CRB_OFFSET	(UNM_NIC_REG(0x1c))
10511924SDaniel.Beauregard@Sun.COM #define	NX_ARG2_CRB_OFFSET	(UNM_NIC_REG(0x20))
10611924SDaniel.Beauregard@Sun.COM #define	NX_ARG3_CRB_OFFSET	(UNM_NIC_REG(0x24))
10711924SDaniel.Beauregard@Sun.COM #define	NX_SIGN_CRB_OFFSET	(UNM_NIC_REG(0x28))
10811924SDaniel.Beauregard@Sun.COM #define	CRB_CMDPEG_CMDRING	(UNM_NIC_REG(0x38))
10911924SDaniel.Beauregard@Sun.COM #define	CRB_HOST_DUMMY_BUF_ADDR_HI	(UNM_NIC_REG(0x3c))
11011924SDaniel.Beauregard@Sun.COM #define	CRB_HOST_DUMMY_BUF_ADDR_LO	(UNM_NIC_REG(0x40))
11111924SDaniel.Beauregard@Sun.COM #define	CRB_CMDPEG_STATE	(UNM_NIC_REG(0x50))
11211924SDaniel.Beauregard@Sun.COM #define	BOOT_LOADER_DIMM_STATUS	(UNM_NIC_REG(0x54))
11311924SDaniel.Beauregard@Sun.COM #define	CRB_GLOBAL_INT_COAL	(UNM_NIC_REG(0x64)) /* intrt coalescing */
11411924SDaniel.Beauregard@Sun.COM #define	CRB_INT_COAL_MODE	(UNM_NIC_REG(0x68))
11511924SDaniel.Beauregard@Sun.COM #define	CRB_MAX_RCV_BUFS	(UNM_NIC_REG(0x6c))
11611924SDaniel.Beauregard@Sun.COM #define	CRB_TX_INT_THRESHOLD	(UNM_NIC_REG(0x70))
11711924SDaniel.Beauregard@Sun.COM #define	CRB_RX_PKT_TIMER	(UNM_NIC_REG(0x74))
11811924SDaniel.Beauregard@Sun.COM #define	CRB_TX_PKT_TIMER	(UNM_NIC_REG(0x78))
11911924SDaniel.Beauregard@Sun.COM #define	CRB_RX_PKT_CNT		(UNM_NIC_REG(0x7c))
12011924SDaniel.Beauregard@Sun.COM #define	CRB_RX_TMR_CNT		(UNM_NIC_REG(0x80))
12111924SDaniel.Beauregard@Sun.COM #define	CRB_RCV_INTR_COUNT	(UNM_NIC_REG(0x84))
12211924SDaniel.Beauregard@Sun.COM #define	CRB_XG_STATE		(UNM_NIC_REG(0x94)) /* XG Link status */
12311924SDaniel.Beauregard@Sun.COM #define	CRB_XG_STATE_P3		(UNM_NIC_REG(0x98)) /* XG PF Link status */
12411924SDaniel.Beauregard@Sun.COM #define	CRB_TX_STATE		(UNM_NIC_REG(0xac)) /* Debug -performance */
12511924SDaniel.Beauregard@Sun.COM #define	CRB_TX_COUNT		(UNM_NIC_REG(0xb0))
12611924SDaniel.Beauregard@Sun.COM #define	CRB_RX_STATE		(UNM_NIC_REG(0xb4))
12711924SDaniel.Beauregard@Sun.COM #define	CRB_RX_PERF_DEBUG_1	(UNM_NIC_REG(0xb8))
12811924SDaniel.Beauregard@Sun.COM #define	CRB_RX_LRO_CONTROL	(UNM_NIC_REG(0xbc)) /* LRO On/OFF */
12911924SDaniel.Beauregard@Sun.COM #define	CRB_MPORT_MODE		(UNM_NIC_REG(0xc4)) /* Multiport Mode */
13011924SDaniel.Beauregard@Sun.COM #define	CRB_DMA_SHIFT		(UNM_NIC_REG(0xcc)) /* DMA mask extension */
13111924SDaniel.Beauregard@Sun.COM #define	CRB_INT_VECTOR		(UNM_NIC_REG(0xd4))
13211924SDaniel.Beauregard@Sun.COM #define	CRB_PF_LINK_SPEED_1	(UNM_NIC_REG(0xe8))
13311924SDaniel.Beauregard@Sun.COM #define	CRB_PF_LINK_SPEED_2	(UNM_NIC_REG(0xec))
13411924SDaniel.Beauregard@Sun.COM #define	CRB_PF_MAX_LINK_SPEED_1	(UNM_NIC_REG(0xf0))
13511924SDaniel.Beauregard@Sun.COM #define	CRB_PF_MAX_LINK_SPEED_2	(UNM_NIC_REG(0xf4))
13611924SDaniel.Beauregard@Sun.COM #define	CRB_HOST_DUMMY_BUF	(UNM_NIC_REG(0xfc))
13711924SDaniel.Beauregard@Sun.COM 
13811924SDaniel.Beauregard@Sun.COM /* used for ethtool tests */
13911924SDaniel.Beauregard@Sun.COM #define	CRB_SCRATCHPAD_TEST	(UNM_NIC_REG(0x280))
14011924SDaniel.Beauregard@Sun.COM 
14111924SDaniel.Beauregard@Sun.COM #define	CRB_RCVPEG_STATE	(UNM_NIC_REG(0x13c))
14211924SDaniel.Beauregard@Sun.COM 
14311924SDaniel.Beauregard@Sun.COM #define	UNM_PEG_HALT_STATUS1	(UNM_CAM_RAM(0xa8))
14411924SDaniel.Beauregard@Sun.COM #define	UNM_PEG_HALT_STATUS2	(UNM_CAM_RAM(0xac))
14511924SDaniel.Beauregard@Sun.COM #define	UNM_PEG_ALIVE_COUNTER	(UNM_CAM_RAM(0x0b0))
14611924SDaniel.Beauregard@Sun.COM #define	UNM_FW_CAPABILITIES_1	(UNM_CAM_RAM(0x128))
14711924SDaniel.Beauregard@Sun.COM 
14811924SDaniel.Beauregard@Sun.COM /* 12 registers to store MAC addresses for 8 PCI functions */
14911924SDaniel.Beauregard@Sun.COM #define	CRB_MAC_BLOCK_START		(UNM_CAM_RAM(0x1c0))
15011924SDaniel.Beauregard@Sun.COM 
15111924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_PRODUCER_OFFSET_1	(UNM_NIC_REG(0x1ac))
15211924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_CONSUMER_OFFSET_1	(UNM_NIC_REG(0x1b0))
15311924SDaniel.Beauregard@Sun.COM #define	CRB_TEMP_STATE			(UNM_NIC_REG(0x1b4))
15411924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_PRODUCER_OFFSET_2	(UNM_NIC_REG(0x1b8))
15511924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_CONSUMER_OFFSET_2	(UNM_NIC_REG(0x1bc))
15611924SDaniel.Beauregard@Sun.COM 
15711924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_PRODUCER_OFFSET_3	(UNM_NIC_REG(0x1d0))
15811924SDaniel.Beauregard@Sun.COM #define	CRB_CMD_CONSUMER_OFFSET_3	(UNM_NIC_REG(0x1d4))
15911924SDaniel.Beauregard@Sun.COM /* sw int status/mask registers */
16011924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_0	0x1d8
16111924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_1	0x1e0
16211924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_2	0x1e4
16311924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_3	0x1e8
16411924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_4	0x450
16511924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_5	0x454
16611924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_6	0x458
16711924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_OFFSET_7	0x45c
16811924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_0		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_0))
16911924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_1		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_1))
17011924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_2		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_2))
17111924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_3		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_3))
17211924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_4		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_4))
17311924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_5		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_5))
17411924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_6		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_6))
17511924SDaniel.Beauregard@Sun.COM #define	CRB_SW_INT_MASK_7		(UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_7))
17611924SDaniel.Beauregard@Sun.COM 
17711924SDaniel.Beauregard@Sun.COM #define	CRB_NIC_DEBUG_STRUCT_BASE	(UNM_NIC_REG(0x288))
17811924SDaniel.Beauregard@Sun.COM 
17911924SDaniel.Beauregard@Sun.COM #define	CRB_NIC_CAPABILITIES_HOST	(UNM_NIC_REG(0x1a8))
18011924SDaniel.Beauregard@Sun.COM #define	CRB_NIC_CAPABILITIES_FW		(UNM_NIC_REG(0x1dc))
18111924SDaniel.Beauregard@Sun.COM #define	CRB_NIC_MSI_MODE_HOST		(UNM_NIC_REG(0x270))
18211924SDaniel.Beauregard@Sun.COM #define	CRB_NIC_MSI_MODE_FW		(UNM_NIC_REG(0x274))
18311924SDaniel.Beauregard@Sun.COM 
18411924SDaniel.Beauregard@Sun.COM #define	INTR_SCHEME_PERPORT		0x1
18511924SDaniel.Beauregard@Sun.COM #define	MSI_MODE_MULTIFUNC		0x1
18611924SDaniel.Beauregard@Sun.COM 
18711924SDaniel.Beauregard@Sun.COM #define	CRB_EPG_QUEUE_BUSY_COUNT	(UNM_NIC_REG(0x200))
18811924SDaniel.Beauregard@Sun.COM 
18911924SDaniel.Beauregard@Sun.COM #define	CRB_V2P_0			(UNM_NIC_REG(0x290))
19011924SDaniel.Beauregard@Sun.COM #define	CRB_V2P_1			(UNM_NIC_REG(0x294))
19111924SDaniel.Beauregard@Sun.COM #define	CRB_V2P_2			(UNM_NIC_REG(0x298))
19211924SDaniel.Beauregard@Sun.COM #define	CRB_V2P_3			(UNM_NIC_REG(0x29c))
19311924SDaniel.Beauregard@Sun.COM #define	CRB_V2P(port)			(CRB_V2P_0 + ((port) * 4))
19411924SDaniel.Beauregard@Sun.COM #define	CRB_DRIVER_VERSION		(UNM_NIC_REG(0x2a0))
19511924SDaniel.Beauregard@Sun.COM 
19611924SDaniel.Beauregard@Sun.COM #define	CRB_CNT_DBG1			(UNM_NIC_REG(0x2a4))
19711924SDaniel.Beauregard@Sun.COM #define	CRB_CNT_DBG2			(UNM_NIC_REG(0x2a8))
19811924SDaniel.Beauregard@Sun.COM #define	CRB_CNT_DBG3			(UNM_NIC_REG(0x2ac))
19911924SDaniel.Beauregard@Sun.COM 
20011924SDaniel.Beauregard@Sun.COM /* ends here */
20111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H0_CH_HUB_ADR	0x05
20211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H1_CH_HUB_ADR	0x0E
20311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H2_CH_HUB_ADR	0x03
20411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H3_CH_HUB_ADR	0x01
20511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H4_CH_HUB_ADR	0x06
20611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H5_CH_HUB_ADR	0x07
20711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_H6_CH_HUB_ADR	0x08
20811924SDaniel.Beauregard@Sun.COM /*
20911924SDaniel.Beauregard@Sun.COM  * WARNING:  pex_tgt_adr.v assumes if MSB of hub adr is set then it is an
21011924SDaniel.Beauregard@Sun.COM  * ILLEGAL hub!!!!!
21111924SDaniel.Beauregard@Sun.COM  */
21211924SDaniel.Beauregard@Sun.COM 
21311924SDaniel.Beauregard@Sun.COM /* Hub 0 */
21411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_MN_CRB_AGT_ADR	0x15
21511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_MS_CRB_AGT_ADR	0x25
21611924SDaniel.Beauregard@Sun.COM 
21711924SDaniel.Beauregard@Sun.COM /* Hub 1 */
21811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PS_CRB_AGT_ADR		0x73
21911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SS_CRB_AGT_ADR		0x20
22011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX3_CRB_AGT_ADR	0x0b
22111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_QMS_CRB_AGT_ADR		0x00
22211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQGS0_CRB_AGT_ADR	0x01
22311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQGS1_CRB_AGT_ADR	0x02
22411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQGS2_CRB_AGT_ADR	0x03
22511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQGS3_CRB_AGT_ADR	0x04
22611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_C2C0_CRB_AGT_ADR		0x58
22711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_C2C1_CRB_AGT_ADR		0x59
22811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_C2C2_CRB_AGT_ADR		0x5a
22911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX2_CRB_AGT_ADR	0x0a
23011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX4_CRB_AGT_ADR	0x0c
23111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX7_CRB_AGT_ADR	0x0f
23211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX9_CRB_AGT_ADR	0x12
23311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SMB_CRB_AGT_ADR		0x18
23411924SDaniel.Beauregard@Sun.COM 
23511924SDaniel.Beauregard@Sun.COM /* Hub 2 */
23611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_NIU_CRB_AGT_ADR		0x31
23711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_I2C0_CRB_AGT_ADR		0x19
23811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_I2C1_CRB_AGT_ADR		0x29
23911924SDaniel.Beauregard@Sun.COM 
24011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SN_CRB_AGT_ADR		0x10
24111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_I2Q_CRB_AGT_ADR		0x20
24211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_LPC_CRB_AGT_ADR		0x22
24311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_ROMUSB_CRB_AGT_ADR	0x21
24411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_QM_CRB_AGT_ADR		0x66
24511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQG0_CRB_AGT_ADR		0x60
24611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQG1_CRB_AGT_ADR		0x61
24711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQG2_CRB_AGT_ADR		0x62
24811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SQG3_CRB_AGT_ADR		0x63
24911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX1_CRB_AGT_ADR	0x09
25011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX5_CRB_AGT_ADR	0x0d
25111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX6_CRB_AGT_ADR	0x0e
25211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX8_CRB_AGT_ADR	0x11
25311924SDaniel.Beauregard@Sun.COM 
25411924SDaniel.Beauregard@Sun.COM /* Hub 3 */
25511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PH_CRB_AGT_ADR		0x1A
25611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_SRE_CRB_AGT_ADR		0x50
25711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_EG_CRB_AGT_ADR		0x51
25811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_RPMX0_CRB_AGT_ADR	0x08
25911924SDaniel.Beauregard@Sun.COM 
26011924SDaniel.Beauregard@Sun.COM /* Hub 4 */
26111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGN0_CRB_AGT_ADR	0x40
26211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGN1_CRB_AGT_ADR	0x41
26311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGN2_CRB_AGT_ADR	0x42
26411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGN3_CRB_AGT_ADR	0x43
26511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGNI_CRB_AGT_ADR	0x44
26611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGND_CRB_AGT_ADR	0x45
26711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGNC_CRB_AGT_ADR	0x46
26811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGR0_CRB_AGT_ADR	0x47
26911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGR1_CRB_AGT_ADR	0x48
27011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGR2_CRB_AGT_ADR	0x49
27111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGR3_CRB_AGT_ADR	0x4a
27211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGN4_CRB_AGT_ADR	0x4b
27311924SDaniel.Beauregard@Sun.COM 
27411924SDaniel.Beauregard@Sun.COM /* Hub 5 */
27511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGS0_CRB_AGT_ADR	0x40
27611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGS1_CRB_AGT_ADR	0x41
27711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGS2_CRB_AGT_ADR	0x42
27811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGS3_CRB_AGT_ADR	0x43
27911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGSI_CRB_AGT_ADR	0x44
28011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGSD_CRB_AGT_ADR	0x45
28111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PEGSC_CRB_AGT_ADR	0x46
28211924SDaniel.Beauregard@Sun.COM 
28311924SDaniel.Beauregard@Sun.COM /* Hub 6 */
28411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CAS0_CRB_AGT_ADR		0x46
28511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CAS1_CRB_AGT_ADR		0x47
28611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CAS2_CRB_AGT_ADR		0x48
28711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CAS3_CRB_AGT_ADR		0x49
28811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_NCM_CRB_AGT_ADR		0x16
28911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_TMR_CRB_AGT_ADR		0x17
29011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_XDMA_CRB_AGT_ADR		0x05
29111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_OCM0_CRB_AGT_ADR		0x06
29211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_OCM1_CRB_AGT_ADR		0x07
29311924SDaniel.Beauregard@Sun.COM 
29411924SDaniel.Beauregard@Sun.COM /* This field defines PCI/X adr [25:20] of agents on the CRB */
29511924SDaniel.Beauregard@Sun.COM 
29611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PH	0
29711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PS	1
29811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_MN	2
29911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_MS	3
30011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SRE	5
30111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_NIU	6
30211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_QMN	7
30311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQN0	8
30411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQN1	9
30511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQN2	10
30611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQN3	11
30711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_QMS	12
30811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQS0	13
30911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQS1	14
31011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQS2	15
31111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SQS3	16
31211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGN0	17
31311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGN1	18
31411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGN2	19
31511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGN3	20
31611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGN4	(UNM_HW_PX_MAP_CRB_SQS2)
31711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGND	21
31811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGNI	22
31911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGS0	23
32011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGS1	24
32111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGS2	25
32211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGS3	26
32311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGSD	27
32411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGSI	28
32511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SN	29
32611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_EG	31
32711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PH2	32
32811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PS2	33
32911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_CAM	34
33011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_CAS0	35
33111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_CAS1	36
33211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_CAS2	37
33311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_C2C0	38
33411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_C2C1	39
33511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_TIMR	40
33611924SDaniel.Beauregard@Sun.COM /*
33711924SDaniel.Beauregard@Sun.COM  * #define PX_MAP_CRB_SS      41
33811924SDaniel.Beauregard@Sun.COM  */
33911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX1		42
34011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX2		43
34111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX3		44
34211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX4		45
34311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX5		46
34411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX6		47
34511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX7		48
34611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_XDMA		49
34711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_I2Q		50
34811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_ROMUSB	51
34911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_CAS3		52
35011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX0		53
35111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX8		54
35211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_RPMX9		55
35311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_OCM0		56
35411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_OCM1		57
35511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_SMB		58
35611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_I2C0		59
35711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_I2C1		60
35811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_LPC		61
35911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGNC		62
36011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGR0		63
36111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGR1		4
36211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGR2		30
36311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_PX_MAP_CRB_PGR3		41
36411924SDaniel.Beauregard@Sun.COM 
36511924SDaniel.Beauregard@Sun.COM /*  This field defines CRB adr [31:20] of the agents */
36611924SDaniel.Beauregard@Sun.COM 
36711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_MN	((UNM_HW_H0_CH_HUB_ADR << 7) | \
36811924SDaniel.Beauregard@Sun.COM     UNM_HW_MN_CRB_AGT_ADR)
36911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PH	((UNM_HW_H0_CH_HUB_ADR << 7) | \
37011924SDaniel.Beauregard@Sun.COM     UNM_HW_PH_CRB_AGT_ADR)
37111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_MS	((UNM_HW_H0_CH_HUB_ADR << 7) | \
37211924SDaniel.Beauregard@Sun.COM     UNM_HW_MS_CRB_AGT_ADR)
37311924SDaniel.Beauregard@Sun.COM 
37411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PS	((UNM_HW_H1_CH_HUB_ADR << 7) | \
37511924SDaniel.Beauregard@Sun.COM     UNM_HW_PS_CRB_AGT_ADR)
37611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SS	((UNM_HW_H1_CH_HUB_ADR << 7) | \
37711924SDaniel.Beauregard@Sun.COM     UNM_HW_SS_CRB_AGT_ADR)
37811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX3	((UNM_HW_H1_CH_HUB_ADR << 7) | \
37911924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX3_CRB_AGT_ADR)
38011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_QMS	((UNM_HW_H1_CH_HUB_ADR << 7) | \
38111924SDaniel.Beauregard@Sun.COM     UNM_HW_QMS_CRB_AGT_ADR)
38211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQS0	((UNM_HW_H1_CH_HUB_ADR << 7) | \
38311924SDaniel.Beauregard@Sun.COM     UNM_HW_SQGS0_CRB_AGT_ADR)
38411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQS1	((UNM_HW_H1_CH_HUB_ADR << 7) | \
38511924SDaniel.Beauregard@Sun.COM     UNM_HW_SQGS1_CRB_AGT_ADR)
38611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQS2	((UNM_HW_H1_CH_HUB_ADR << 7) | \
38711924SDaniel.Beauregard@Sun.COM     UNM_HW_SQGS2_CRB_AGT_ADR)
38811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQS3	((UNM_HW_H1_CH_HUB_ADR << 7) | \
38911924SDaniel.Beauregard@Sun.COM     UNM_HW_SQGS3_CRB_AGT_ADR)
39011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_C2C0	((UNM_HW_H1_CH_HUB_ADR << 7) | \
39111924SDaniel.Beauregard@Sun.COM     UNM_HW_C2C0_CRB_AGT_ADR)
39211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_C2C1	((UNM_HW_H1_CH_HUB_ADR << 7) | \
39311924SDaniel.Beauregard@Sun.COM     UNM_HW_C2C1_CRB_AGT_ADR)
39411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX2	((UNM_HW_H1_CH_HUB_ADR << 7) | \
39511924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX2_CRB_AGT_ADR)
39611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX4	((UNM_HW_H1_CH_HUB_ADR << 7) | \
39711924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX4_CRB_AGT_ADR)
39811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX7	((UNM_HW_H1_CH_HUB_ADR << 7) | \
39911924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX7_CRB_AGT_ADR)
40011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX9	((UNM_HW_H1_CH_HUB_ADR << 7) | \
40111924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX9_CRB_AGT_ADR)
40211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SMB	((UNM_HW_H1_CH_HUB_ADR << 7) | \
40311924SDaniel.Beauregard@Sun.COM     UNM_HW_SMB_CRB_AGT_ADR)
40411924SDaniel.Beauregard@Sun.COM 
40511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_NIU	((UNM_HW_H2_CH_HUB_ADR << 7) | \
40611924SDaniel.Beauregard@Sun.COM     UNM_HW_NIU_CRB_AGT_ADR)
40711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_I2C0	((UNM_HW_H2_CH_HUB_ADR << 7) | \
40811924SDaniel.Beauregard@Sun.COM     UNM_HW_I2C0_CRB_AGT_ADR)
40911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_I2C1	((UNM_HW_H2_CH_HUB_ADR << 7) | \
41011924SDaniel.Beauregard@Sun.COM     UNM_HW_I2C1_CRB_AGT_ADR)
41111924SDaniel.Beauregard@Sun.COM 
41211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SRE	((UNM_HW_H3_CH_HUB_ADR << 7) | \
41311924SDaniel.Beauregard@Sun.COM     UNM_HW_SRE_CRB_AGT_ADR)
41411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_EG	((UNM_HW_H3_CH_HUB_ADR << 7) | \
41511924SDaniel.Beauregard@Sun.COM     UNM_HW_EG_CRB_AGT_ADR)
41611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX0	((UNM_HW_H3_CH_HUB_ADR << 7) | \
41711924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX0_CRB_AGT_ADR)
41811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_QMN	((UNM_HW_H3_CH_HUB_ADR << 7) | \
41911924SDaniel.Beauregard@Sun.COM     UNM_HW_QM_CRB_AGT_ADR)
42011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQN0	((UNM_HW_H3_CH_HUB_ADR << 7) | \
42111924SDaniel.Beauregard@Sun.COM     UNM_HW_SQG0_CRB_AGT_ADR)
42211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQN1	((UNM_HW_H3_CH_HUB_ADR << 7) | \
42311924SDaniel.Beauregard@Sun.COM     UNM_HW_SQG1_CRB_AGT_ADR)
42411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQN2	((UNM_HW_H3_CH_HUB_ADR << 7) | \
42511924SDaniel.Beauregard@Sun.COM     UNM_HW_SQG2_CRB_AGT_ADR)
42611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SQN3	((UNM_HW_H3_CH_HUB_ADR << 7) | \
42711924SDaniel.Beauregard@Sun.COM     UNM_HW_SQG3_CRB_AGT_ADR)
42811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX1	((UNM_HW_H3_CH_HUB_ADR << 7) | \
42911924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX1_CRB_AGT_ADR)
43011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX5	((UNM_HW_H3_CH_HUB_ADR << 7) | \
43111924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX5_CRB_AGT_ADR)
43211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX6	((UNM_HW_H3_CH_HUB_ADR << 7) | \
43311924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX6_CRB_AGT_ADR)
43411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_RPMX8	((UNM_HW_H3_CH_HUB_ADR << 7) | \
43511924SDaniel.Beauregard@Sun.COM     UNM_HW_RPMX8_CRB_AGT_ADR)
43611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_CAS0	((UNM_HW_H3_CH_HUB_ADR << 7) | \
43711924SDaniel.Beauregard@Sun.COM     UNM_HW_CAS0_CRB_AGT_ADR)
43811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_CAS1	((UNM_HW_H3_CH_HUB_ADR << 7) | \
43911924SDaniel.Beauregard@Sun.COM     UNM_HW_CAS1_CRB_AGT_ADR)
44011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_CAS2	((UNM_HW_H3_CH_HUB_ADR << 7) | \
44111924SDaniel.Beauregard@Sun.COM     UNM_HW_CAS2_CRB_AGT_ADR)
44211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_CAS3	((UNM_HW_H3_CH_HUB_ADR << 7) | \
44311924SDaniel.Beauregard@Sun.COM     UNM_HW_CAS3_CRB_AGT_ADR)
44411924SDaniel.Beauregard@Sun.COM 
44511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGNI	((UNM_HW_H4_CH_HUB_ADR << 7) | \
44611924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGNI_CRB_AGT_ADR)
44711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGND	((UNM_HW_H4_CH_HUB_ADR << 7) | \
44811924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGND_CRB_AGT_ADR)
44911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGN0	((UNM_HW_H4_CH_HUB_ADR << 7) | \
45011924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGN0_CRB_AGT_ADR)
45111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGN1	((UNM_HW_H4_CH_HUB_ADR << 7) | \
45211924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGN1_CRB_AGT_ADR)
45311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGN2	((UNM_HW_H4_CH_HUB_ADR << 7) | \
45411924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGN2_CRB_AGT_ADR)
45511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGN3	((UNM_HW_H4_CH_HUB_ADR << 7) | \
45611924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGN3_CRB_AGT_ADR)
45711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGN4	((UNM_HW_H4_CH_HUB_ADR << 7) | \
45811924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGN4_CRB_AGT_ADR)
45911924SDaniel.Beauregard@Sun.COM 
46011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGNC	((UNM_HW_H4_CH_HUB_ADR << 7) | \
46111924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGNC_CRB_AGT_ADR)
46211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGR0	((UNM_HW_H4_CH_HUB_ADR << 7) | \
46311924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGR0_CRB_AGT_ADR)
46411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGR1	((UNM_HW_H4_CH_HUB_ADR << 7) | \
46511924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGR1_CRB_AGT_ADR)
46611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGR2	((UNM_HW_H4_CH_HUB_ADR << 7) | \
46711924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGR2_CRB_AGT_ADR)
46811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGR3	((UNM_HW_H4_CH_HUB_ADR << 7) | \
46911924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGR3_CRB_AGT_ADR)
47011924SDaniel.Beauregard@Sun.COM 
47111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGSI	((UNM_HW_H5_CH_HUB_ADR << 7) | \
47211924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGSI_CRB_AGT_ADR)
47311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGSD	((UNM_HW_H5_CH_HUB_ADR << 7) | \
47411924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGSD_CRB_AGT_ADR)
47511924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGS0	((UNM_HW_H5_CH_HUB_ADR << 7) | \
47611924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGS0_CRB_AGT_ADR)
47711924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGS1	((UNM_HW_H5_CH_HUB_ADR << 7) | \
47811924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGS1_CRB_AGT_ADR)
47911924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGS2	((UNM_HW_H5_CH_HUB_ADR << 7) | \
48011924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGS2_CRB_AGT_ADR)
48111924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGS3	((UNM_HW_H5_CH_HUB_ADR << 7) | \
48211924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGS3_CRB_AGT_ADR)
48311924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_PGSC	((UNM_HW_H5_CH_HUB_ADR << 7) | \
48411924SDaniel.Beauregard@Sun.COM     UNM_HW_PEGSC_CRB_AGT_ADR)
48511924SDaniel.Beauregard@Sun.COM 
48611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_CAM	((UNM_HW_H6_CH_HUB_ADR << 7) | \
48711924SDaniel.Beauregard@Sun.COM     UNM_HW_NCM_CRB_AGT_ADR)
48811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_TIMR	((UNM_HW_H6_CH_HUB_ADR << 7) | \
48911924SDaniel.Beauregard@Sun.COM     UNM_HW_TMR_CRB_AGT_ADR)
49011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_XDMA	((UNM_HW_H6_CH_HUB_ADR << 7) | \
49111924SDaniel.Beauregard@Sun.COM     UNM_HW_XDMA_CRB_AGT_ADR)
49211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_SN	((UNM_HW_H6_CH_HUB_ADR << 7) | \
49311924SDaniel.Beauregard@Sun.COM     UNM_HW_SN_CRB_AGT_ADR)
49411924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_I2Q	((UNM_HW_H6_CH_HUB_ADR << 7) | \
49511924SDaniel.Beauregard@Sun.COM     UNM_HW_I2Q_CRB_AGT_ADR)
49611924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_ROMUSB	((UNM_HW_H6_CH_HUB_ADR << 7) | \
49711924SDaniel.Beauregard@Sun.COM     UNM_HW_ROMUSB_CRB_AGT_ADR)
49811924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_OCM0	((UNM_HW_H6_CH_HUB_ADR << 7) | \
49911924SDaniel.Beauregard@Sun.COM     UNM_HW_OCM0_CRB_AGT_ADR)
50011924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_OCM1	((UNM_HW_H6_CH_HUB_ADR << 7) | \
50111924SDaniel.Beauregard@Sun.COM     UNM_HW_OCM1_CRB_AGT_ADR)
50211924SDaniel.Beauregard@Sun.COM #define	UNM_HW_CRB_HUB_AGT_ADR_LPC	((UNM_HW_H6_CH_HUB_ADR << 7) | \
50311924SDaniel.Beauregard@Sun.COM     UNM_HW_LPC_CRB_AGT_ADR)
50411924SDaniel.Beauregard@Sun.COM 
50511924SDaniel.Beauregard@Sun.COM /*
50611924SDaniel.Beauregard@Sun.COM  * ROM USB CRB space is divided into 4 regions depending on decode of
50711924SDaniel.Beauregard@Sun.COM  * address bits [19:16]
50811924SDaniel.Beauregard@Sun.COM  */
50911924SDaniel.Beauregard@Sun.COM #define	ROMUSB_GLB		(UNM_CRB_ROMUSB + 0x00000)
51011924SDaniel.Beauregard@Sun.COM #define	ROMUSB_ROM		(UNM_CRB_ROMUSB + 0x10000)
51111924SDaniel.Beauregard@Sun.COM #define	ROMUSB_USB		(UNM_CRB_ROMUSB + 0x20000)
51211924SDaniel.Beauregard@Sun.COM #define	ROMUSB_DIRECT_ROM	(UNM_CRB_ROMUSB + 0x30000)
51311924SDaniel.Beauregard@Sun.COM #define	ROMUSB_TAP		(UNM_CRB_ROMUSB + 0x40000)
51411924SDaniel.Beauregard@Sun.COM 
51511924SDaniel.Beauregard@Sun.COM /* ROMUSB  GLB register definitions */
51611924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_CONTROL		(ROMUSB_GLB + 0x0000)
51711924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_STATUS		(ROMUSB_GLB + 0x0004)
51811924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_SW_RESET		(ROMUSB_GLB + 0x0008)
51911924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PAD_GPIO_I	(ROMUSB_GLB + 0x000c)
52011924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_RNG_PLL_CTL	(ROMUSB_GLB + 0x0010)
52111924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_TEST_MUX_O	(ROMUSB_GLB + 0x0014)
52211924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PLL0_CTRL	(ROMUSB_GLB + 0x0018)
52311924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PLL1_CTRL	(ROMUSB_GLB + 0x001c)
52411924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PLL2_CTRL	(ROMUSB_GLB + 0x0020)
52511924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PLL3_CTRL	(ROMUSB_GLB + 0x0024)
52611924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PLL_LOCK		(ROMUSB_GLB + 0x0028)
52711924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_EXTERN_INT	(ROMUSB_GLB + 0x002c)
52811924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PH_RST		(ROMUSB_GLB + 0x0030)
52911924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PS_RST		(ROMUSB_GLB + 0x0034)
53011924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_CAS_RST		(ROMUSB_GLB + 0x0038)
53111924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_MIU_RST		(ROMUSB_GLB + 0x003c)
53211924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_CRB_RST		(ROMUSB_GLB + 0x0040)
53311924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_TEST_MUX_SEL	(ROMUSB_GLB + 0x0044)
53411924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_MN_COM_A2T	(ROMUSB_GLB + 0x0050)
53511924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_MN_COM_A2T	(ROMUSB_GLB + 0x0050)
53611924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_REV_ID		(ROMUSB_GLB + 0x0054)
53711924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_PEGTUNE_DONE	(ROMUSB_GLB + 0x005c)
53811924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_VENDOR_DEV_ID	(ROMUSB_GLB + 0x0058)
53911924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GLB_CHIP_CLK_CTRL	(ROMUSB_GLB + 0x00a8)
54011924SDaniel.Beauregard@Sun.COM 
54111924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_GPIO(n) ((n) <= 15 ? (ROMUSB_GLB + 0x60 + (4 * (n))): \
54211924SDaniel.Beauregard@Sun.COM 	((n) <= 18) ? (ROMUSB_GLB + 0x70 + (4 * (n))) : \
54311924SDaniel.Beauregard@Sun.COM 	(ROMUSB_GLB + 0x70 + (4 * (19))))
54411924SDaniel.Beauregard@Sun.COM 
54511924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_CONTROL		(ROMUSB_ROM + 0x0000)
54611924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_INSTR_OPCODE	(ROMUSB_ROM + 0x0004)
54711924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_ADDRESS		(ROMUSB_ROM + 0x0008)
54811924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_WDATA		(ROMUSB_ROM + 0x000c)
54911924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_ABYTE_CNT	(ROMUSB_ROM + 0x0010)
55011924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_DUMMY_BYTE_CNT	(ROMUSB_ROM + 0x0014)
55111924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_RDATA		(ROMUSB_ROM + 0x0018)
55211924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_AGT_TAG		(ROMUSB_ROM + 0x001c)
55311924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_TIME_PARM	(ROMUSB_ROM + 0x0020)
55411924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_CLK_DIV		(ROMUSB_ROM + 0x0024)
55511924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_MISS_INSTR	(ROMUSB_ROM + 0x0028)
55611924SDaniel.Beauregard@Sun.COM 
55711924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_WRSR_INSTR	0x01
55811924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_PP_INSTR		0x02
55911924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_READ_INSTR	0x03
56011924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_WRDI_INSTR	0x04
56111924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_RDSR_INSTR	0x05
56211924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_WREN_INSTR	0x06
56311924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_FAST_RD_INSTR	0x0B
56411924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_RES_INSTR	0xAB
56511924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_BE_INSTR		0xC7
56611924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_DP_INSTR		0xC9
56711924SDaniel.Beauregard@Sun.COM #define	UNM_ROMUSB_ROM_SE_INSTR		0xD8
56811924SDaniel.Beauregard@Sun.COM 
56911924SDaniel.Beauregard@Sun.COM /* Lock IDs for ROM lock */
57011924SDaniel.Beauregard@Sun.COM #define	ROM_LOCK_DRIVER		0x0d417340
57111924SDaniel.Beauregard@Sun.COM 
57211924SDaniel.Beauregard@Sun.COM /* Lock IDs for PHY lock */
57311924SDaniel.Beauregard@Sun.COM #define	PHY_LOCK_DRIVER		0x44524956
57411924SDaniel.Beauregard@Sun.COM 
57511924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CRB_WINDOWSIZE	0x00100000    /* all are 1MB windows */
57611924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CRB_WINDOW(A)	(UNM_PCI_CRBSPACE + (A)*UNM_PCI_CRB_WINDOWSIZE)
57711924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_C2C_0		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_C2C0))
57811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_C2C_1		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_C2C1))
57911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_C2C_2		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_C2C2))
58011924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_CAM		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAM))
58111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_CASPER		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS))
58211924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_CASPER_0	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS0))
58311924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_CASPER_1	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS1))
58411924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_CASPER_2	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS2))
58511924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_DDR_MD		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_MS))
58611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_DDR_NET		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_MN))
58711924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_EPG		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_EG))
58811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_I2Q		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_I2Q))
58911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_NIU		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_NIU))
59011924SDaniel.Beauregard@Sun.COM /* HACK upon HACK upon HACK (for PCIE builds) */
59111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PCIX_HOST	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PH))
59211924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PCIX_HOST2	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PH2))
59311924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PCIX_MD		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PS))
59411924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PCIE		(UNM_CRB_PCIX_MD)
59511924SDaniel.Beauregard@Sun.COM /* window 1 pcie slot */
59611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PCIE2		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PS2))
59711924SDaniel.Beauregard@Sun.COM 
59811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_0	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS0))
59911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_1	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS1))
60011924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_2	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS2))
60111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_3	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS3))
60211924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_3	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS3))
60311924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_D	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGSD))
60411924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_MD_I	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGSI))
60511924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_0	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN0))
60611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_1	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN1))
60711924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_2	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN2))
60811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_3	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN3))
60911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_4	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN4))
61011924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_D	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGND))
61111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PEG_NET_I	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGNI))
61211924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PQM_MD		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_QMS))
61311924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_PQM_NET		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_QMN))
61411924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_QDR_MD		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SS))
61511924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_QDR_NET		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SN))
61611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_ROMUSB		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_ROMUSB))
61711924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_0		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX0))
61811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_1		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX1))
61911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_2		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX2))
62011924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_3		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX3))
62111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_4		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX4))
62211924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_5		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX5))
62311924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_6		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX6))
62411924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_RPMX_7		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX7))
62511924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_MD_0	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS0))
62611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_MD_1	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS1))
62711924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_MD_2	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS2))
62811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_MD_3	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS3))
62911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_NET_0	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN0))
63011924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_NET_1	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN1))
63111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_NET_2	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN2))
63211924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SQM_NET_3	(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN3))
63311924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SRE		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SRE))
63411924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_TIMER		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_TIMR))
63511924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_XDMA		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_XDMA))
63611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_I2C0		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_I2C0))
63711924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_I2C1		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_I2C1))
63811924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_OCM0		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_OCM0))
63911924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_SMB		(UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SMB))
64011924SDaniel.Beauregard@Sun.COM 
64111924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_MAX		(UNM_PCI_CRB_WINDOW(64))
64211924SDaniel.Beauregard@Sun.COM 
64311924SDaniel.Beauregard@Sun.COM /*
64411924SDaniel.Beauregard@Sun.COM  * ====================== BASE ADDRESSES ON-CHIP ======================
64511924SDaniel.Beauregard@Sun.COM  * Base addresses of major components on-chip.
64611924SDaniel.Beauregard@Sun.COM  * ====================== BASE ADDRESSES ON-CHIP ======================
64711924SDaniel.Beauregard@Sun.COM  */
64811924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_DDR_NET	0x0000000000000000
64911924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_DDR_NET_MAX	0x000000000fffffff
65011924SDaniel.Beauregard@Sun.COM 
65111924SDaniel.Beauregard@Sun.COM /*
65211924SDaniel.Beauregard@Sun.COM  * Imbus address bit used to indicate a host address. This bit is
65311924SDaniel.Beauregard@Sun.COM  * eliminated by the pcie bar and bar select before presentation
65411924SDaniel.Beauregard@Sun.COM  * over pcie.
65511924SDaniel.Beauregard@Sun.COM  */
65611924SDaniel.Beauregard@Sun.COM /* host memory via IMBUS */
65711924SDaniel.Beauregard@Sun.COM #define	NX_P2_ADDR_PCIE		0x0000000800000000
65811924SDaniel.Beauregard@Sun.COM #define	NX_P3_ADDR_PCIE		0x0000008000000000
65911924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_PCIE_MAX	0x0000000FFFFFFFFF
66011924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_OCM0		0x0000000200000000
66111924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_OCM0_MAX	0x00000002000fffff
66211924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_OCM1		0x0000000200400000
66311924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_OCM1_MAX	0x00000002004fffff
66411924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_QDR_NET	0x0000000300000000
66511924SDaniel.Beauregard@Sun.COM 
66611924SDaniel.Beauregard@Sun.COM #define	NX_P2_ADDR_QDR_NET_MAX	0x00000003001fffff
66711924SDaniel.Beauregard@Sun.COM #define	NX_P3_ADDR_QDR_NET_MAX	0x0000000303ffffff
66811924SDaniel.Beauregard@Sun.COM /*
66911924SDaniel.Beauregard@Sun.COM  * The ifdef at the bottom should go. All drivers should start using the above
67011924SDaniel.Beauregard@Sun.COM  * 2 defines.
67111924SDaniel.Beauregard@Sun.COM  */
67211924SDaniel.Beauregard@Sun.COM #ifdef P3
67311924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_QDR_NET_MAX	(NX_P3_ADDR_QDR_NET_MAX)
67411924SDaniel.Beauregard@Sun.COM #else
67511924SDaniel.Beauregard@Sun.COM #define	UNM_ADDR_QDR_NET_MAX	(NX_P2_ADDR_QDR_NET_MAX)
67611924SDaniel.Beauregard@Sun.COM #endif
67711924SDaniel.Beauregard@Sun.COM 
67811924SDaniel.Beauregard@Sun.COM #define	D3_CRB_REG_FUN0		(UNM_PCIX_PS_REG(0x0084))
67911924SDaniel.Beauregard@Sun.COM #define	D3_CRB_REG_FUN1		(UNM_PCIX_PS_REG(0x1084))
68011924SDaniel.Beauregard@Sun.COM #define	D3_CRB_REG_FUN2		(UNM_PCIX_PS_REG(0x2084))
68111924SDaniel.Beauregard@Sun.COM #define	D3_CRB_REG_FUN3		(UNM_PCIX_PS_REG(0x3084))
68211924SDaniel.Beauregard@Sun.COM 
68311924SDaniel.Beauregard@Sun.COM 
68411924SDaniel.Beauregard@Sun.COM #define	ISR_I2Q_CLR_PCI_LO	(UNM_PCIX_PS_REG(UNM_I2Q_CLR_PCI_LO))
68511924SDaniel.Beauregard@Sun.COM #define	ISR_I2Q_CLR_PCI_HI	(UNM_PCIX_PS_REG(UNM_I2Q_CLR_PCI_HI))
68611924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_ARCH_CRB_BASE	(UNM_PCI_DIRECT_CRB)
68711924SDaniel.Beauregard@Sun.COM 
68811924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_MAPSIZE		128 /* we're mapping 128MB of mem on PCI bus */
68911924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_DDR_NET		0x00000000
69011924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_DDR_NET_MAX	0x01ffffff
69111924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_DDR_MD		0x02000000
69211924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_DDR_MD_MAX	0x03ffffff
69311924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_QDR_NET		0x04000000
69411924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_QDR_NET_MAX	0x043fffff
69511924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_DIRECT_CRB	0x04400000
69611924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_DIRECT_CRB_MAX	0x047fffff
69711924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CAMQM		0x04800000
69811924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CAMQM_MAX	0x04ffffff
69911924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_OCM0		0x05000000
70011924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_OCM0_MAX	0x050fffff
70111924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_OCM1		0x05100000
70211924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_OCM1_MAX	0x051fffff
70311924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CRBSPACE	0x06000000
70411924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CRBSPACE_MAX	0x07ffffff
70511924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_128MB_SIZE	0x08000000
70611924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_32MB_SIZE	0x02000000
70711924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_2MB_SIZE	0x00200000
70811924SDaniel.Beauregard@Sun.COM 
70911924SDaniel.Beauregard@Sun.COM /*
71011924SDaniel.Beauregard@Sun.COM  * Definitions relating to access/control of the Network Interface Unit
71111924SDaniel.Beauregard@Sun.COM  * h/w block.
71211924SDaniel.Beauregard@Sun.COM  */
71311924SDaniel.Beauregard@Sun.COM /*
71411924SDaniel.Beauregard@Sun.COM  * Configuration registers.
71511924SDaniel.Beauregard@Sun.COM  */
71611924SDaniel.Beauregard@Sun.COM #define	UNM_NIU_MODE		(UNM_CRB_NIU + 0x00000)
71711924SDaniel.Beauregard@Sun.COM 
71811924SDaniel.Beauregard@Sun.COM /*
71911924SDaniel.Beauregard@Sun.COM  *   Register offsets for MN
72011924SDaniel.Beauregard@Sun.COM  */
72111924SDaniel.Beauregard@Sun.COM #define	MIU_CONTROL			(0x000)
72211924SDaniel.Beauregard@Sun.COM #define	MIU_TAG				(0x004)
72311924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_CTRL		(0x090)
72411924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_ADDR_LO		(0x094)
72511924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_ADDR_HI		(0x098)
72611924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_WRDATA_LO		(0x0a0)
72711924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_WRDATA_HI		(0x0a4)
72811924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_WRDATA(i)		(0x0a0 + (4 * (i)))
72911924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_RDDATA_LO		(0x0a8)
73011924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_RDDATA_HI		(0x0ac)
73111924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_WRDATA_UPPER_LO	(0x0b0)
73211924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_WRDATA_UPPER_HI	(0x0b4)
73311924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_RDDATA_UPPER_LO	(0x0b8)
73411924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_RDDATA_UPPER_HI	(0x0bc)
73511924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_RDDATA(i)		(0x0a8 + (4 * (i)))
73611924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_ADDR_MASK		0xfffffff8
73711924SDaniel.Beauregard@Sun.COM #define	MIU_TEST_AGT_UPPER_ADDR(off)	(0)
73811924SDaniel.Beauregard@Sun.COM 
73911924SDaniel.Beauregard@Sun.COM /* MIU_TEST_AGT_CTRL flags. work for SIU as well */
74011924SDaniel.Beauregard@Sun.COM #define	MIU_TA_CTL_START	1
74111924SDaniel.Beauregard@Sun.COM #define	MIU_TA_CTL_ENABLE	2
74211924SDaniel.Beauregard@Sun.COM #define	MIU_TA_CTL_WRITE	4
74311924SDaniel.Beauregard@Sun.COM #define	MIU_TA_CTL_BUSY		8
74411924SDaniel.Beauregard@Sun.COM 
74511924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_CTRL	(0x060)
74611924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_ADDR_LO	(0x064)
74711924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_ADDR_HI	(0x078)
74811924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_WRDATA_LO	(0x068)
74911924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_WRDATA_HI	(0x06c)
75011924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_WRDATA(i)	(0x068 + (4 * (i)))
75111924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_RDDATA_LO	(0x070)
75211924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_RDDATA_HI	(0x074)
75311924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_RDDATA(i)	(0x070 + (4 * (i)))
75411924SDaniel.Beauregard@Sun.COM 
75511924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_ADDR_MASK	0x3ffff8
75611924SDaniel.Beauregard@Sun.COM #define	SIU_TEST_AGT_UPPER_ADDR(off)	((off) >> 22)
75711924SDaniel.Beauregard@Sun.COM #define	XG_LINK_UP		0x10
75811924SDaniel.Beauregard@Sun.COM 
75911924SDaniel.Beauregard@Sun.COM 
76011924SDaniel.Beauregard@Sun.COM /* ======================  Configuration Constants ======================== */
76111924SDaniel.Beauregard@Sun.COM #define	UNM_NIU_PHY_WAITLEN	200000    /* 200ms delay in each loop */
76211924SDaniel.Beauregard@Sun.COM #define	UNM_NIU_PHY_WAITMAX	50    /* 10 seconds before we give up */
76311924SDaniel.Beauregard@Sun.COM #define	UNM_NIU_MAX_GBE_PORTS	4
76411924SDaniel.Beauregard@Sun.COM #define	UNM_NIU_MAX_XG_PORTS	2
76511924SDaniel.Beauregard@Sun.COM #define	MIN_CORE_CLK_SPEED	200
76611924SDaniel.Beauregard@Sun.COM #define	MAX_CORE_CLK_SPEED	400
76711924SDaniel.Beauregard@Sun.COM #define	ACCEPTABLE_CORE_CLK_RANGE(speed) ((speed >= MIN_CORE_CLK_SPEED) && \
76811924SDaniel.Beauregard@Sun.COM 	(speed <= MAX_CORE_CLK_SPEED))
76911924SDaniel.Beauregard@Sun.COM 
77011924SDaniel.Beauregard@Sun.COM #define	P2_TICKS_PER_SEC	2048
77111924SDaniel.Beauregard@Sun.COM #define	P2_MIN_TICKS_PER_SEC	(P2_TICKS_PER_SEC - 10)
77211924SDaniel.Beauregard@Sun.COM #define	P2_MAX_TICKS_PER_SEC	(P2_TICKS_PER_SEC + 10)
77311924SDaniel.Beauregard@Sun.COM #define	CHECK_TICKS_PER_SEC(ticks)	((ticks >= P2_MIN_TICKS_PER_SEC) &&  \
77411924SDaniel.Beauregard@Sun.COM 	(ticks <= P2_MAX_TICKS_PER_SEC))
77511924SDaniel.Beauregard@Sun.COM 
77611924SDaniel.Beauregard@Sun.COM /* CAM RAM */
77711924SDaniel.Beauregard@Sun.COM #define	UNM_CAM_RAM_BASE	 (UNM_CRB_CAM + 0x02000)
77811924SDaniel.Beauregard@Sun.COM #define	UNM_CAM_RAM(reg)	 (UNM_CAM_RAM_BASE + (reg))
77911924SDaniel.Beauregard@Sun.COM 
78011924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_NONE		0
78111924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_XG		1
78211924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_GB		2
78311924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_802_3_AP		3
78411924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_AUTO_NEG		4
78511924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_AUTO_NEG_1G	5
78611924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_AUTO_NEG_XG	6
78711924SDaniel.Beauregard@Sun.COM #define	UNM_PORT_MODE_ADDR		(UNM_CAM_RAM(0x24))
78811924SDaniel.Beauregard@Sun.COM #define	UNM_FW_PORT_MODE_ADDR		(UNM_CAM_RAM(0x28))
78911924SDaniel.Beauregard@Sun.COM #define	UNM_WOL_PORT_MODE		(UNM_CAM_RAM(0x198))
79011924SDaniel.Beauregard@Sun.COM #define	UNM_RAM_COLD_BOOT		(UNM_CAM_RAM(0x1fc))
79111924SDaniel.Beauregard@Sun.COM #define	UNM_BUS_DEV_NO			(UNM_CAM_RAM(0x114))
79211924SDaniel.Beauregard@Sun.COM 
79311924SDaniel.Beauregard@Sun.COM #define	NX_PEG_TUNE_MN_SPD_ZEROED	0x80000000
79411924SDaniel.Beauregard@Sun.COM #define	NX_BOOT_LOADER_MN_OTHER		0x100  	/* other problem with DIMM */
79511924SDaniel.Beauregard@Sun.COM #define	NX_BOOT_LOADER_MN_NOT_DDR2	0x80    /* not a DDR2 DIMM */
79611924SDaniel.Beauregard@Sun.COM #define	NX_BOOT_LOADER_MN_NO_ECC	0x40    /* ECC not supported */
79711924SDaniel.Beauregard@Sun.COM #define	NX_BOOT_LOADER_MN_WRONG_CAS	0x20    /* CL 5 not supported */
79811924SDaniel.Beauregard@Sun.COM #define	NX_BOOT_LOADER_MN_NOT_REG	0x10    /* not a registered DIMM */
79911924SDaniel.Beauregard@Sun.COM #define	NX_BOOT_LOADER_MN_ISSUE		0xff00ffff
80011924SDaniel.Beauregard@Sun.COM #define	NX_PEG_TUNE_MN_PRESENT		0x1
80111924SDaniel.Beauregard@Sun.COM #define	NX_PEG_TUNE_CAPABILITY		(UNM_CAM_RAM(0x02c))
80211924SDaniel.Beauregard@Sun.COM 
80311924SDaniel.Beauregard@Sun.COM #define	UNM_ROM_LOCK_ID			(UNM_CAM_RAM(0x100))
80411924SDaniel.Beauregard@Sun.COM #define	UNM_I2C_ROM_LOCK_ID		(UNM_CAM_RAM(0x104))
80511924SDaniel.Beauregard@Sun.COM #define	UNM_PHY_LOCK_ID			(UNM_CAM_RAM(0x120))
80611924SDaniel.Beauregard@Sun.COM #define	UNM_CRB_WIN_LOCK_ID		(UNM_CAM_RAM(0x124))
80711924SDaniel.Beauregard@Sun.COM #define	CAM_RAM_DMA_WATCHDOG_CTRL	0x14    /* See dma_watchdog_ctrl_t */
80811924SDaniel.Beauregard@Sun.COM #define	UNM_EFUSE_CHIP_ID_HIGH		(UNM_CAM_RAM(0x18))
80911924SDaniel.Beauregard@Sun.COM #define	UNM_EFUSE_CHIP_ID_LOW		(UNM_CAM_RAM(0x1c))
81011924SDaniel.Beauregard@Sun.COM 
81111924SDaniel.Beauregard@Sun.COM #define	UNM_FW_VERSION_MAJOR		(UNM_CAM_RAM(0x150))
81211924SDaniel.Beauregard@Sun.COM #define	UNM_FW_VERSION_MINOR		(UNM_CAM_RAM(0x154))
81311924SDaniel.Beauregard@Sun.COM #define	UNM_FW_VERSION_SUB		(UNM_CAM_RAM(0x158))
81411924SDaniel.Beauregard@Sun.COM #define	UNM_TCP_FW_VERSION_MAJOR_ADDR	(UNM_CAM_RAM(0x15c))
81511924SDaniel.Beauregard@Sun.COM #define	UNM_TCP_FW_VERSION_MINOR_ADDR	(UNM_CAM_RAM(0x160))
81611924SDaniel.Beauregard@Sun.COM #define	UNM_TCP_FW_VERSION_SUB_ADDR	(UNM_CAM_RAM(0x164))
81711924SDaniel.Beauregard@Sun.COM #define	UNM_FW_VERSION_BUILD		(UNM_CAM_RAM(0x168))
81811924SDaniel.Beauregard@Sun.COM #define	UNM_PCIE_REG(reg)		(UNM_CRB_PCIE + (reg))
81911924SDaniel.Beauregard@Sun.COM 
82011924SDaniel.Beauregard@Sun.COM #define	PCIE_DCR		(0x00d8)
82111924SDaniel.Beauregard@Sun.COM #define	PCIE_DB_DATA2		(0x10070)
82211924SDaniel.Beauregard@Sun.COM #define	PCIE_DB_CTRL		(0x100a0)
82311924SDaniel.Beauregard@Sun.COM #define	PCIE_DB_ADDR		(0x100a4)
82411924SDaniel.Beauregard@Sun.COM #define	PCIE_DB_DATA		(0x100a8)
82511924SDaniel.Beauregard@Sun.COM #define	PCIE_IMBUS_CONTROL	(0x101b8)
82611924SDaniel.Beauregard@Sun.COM #define	PCIE_SETUP_FUNCTION	(0x12040)
82711924SDaniel.Beauregard@Sun.COM #define	PCIE_SETUP_FUNCTION2	(0x12048)
82811924SDaniel.Beauregard@Sun.COM #define	PCIE_TGT_SPLIT_CHICKEN	(0x12080)
82911924SDaniel.Beauregard@Sun.COM #define	PCIE_CHICKEN3		(0x120c8)
83011924SDaniel.Beauregard@Sun.COM #define	PCIE_MAX_MASTER_SPLIT	(0x14048)
83111924SDaniel.Beauregard@Sun.COM #define	PCIE_MAX_DMA_XFER_SIZE	(0x1404c)
83211924SDaniel.Beauregard@Sun.COM #define	UNM_WOL_WAKE		(UNM_CAM_RAM(0x180))
83311924SDaniel.Beauregard@Sun.COM #define	UNM_WOL_CONFIG_NV	(UNM_CAM_RAM(0x184))
83411924SDaniel.Beauregard@Sun.COM #define	UNM_WOL_CONFIG		(UNM_CAM_RAM(0x188))
83511924SDaniel.Beauregard@Sun.COM #define	UNM_PRE_WOL_RX_ENABLE	(UNM_CAM_RAM(0x18c))
83611924SDaniel.Beauregard@Sun.COM #define	UNM_FW_RESET		(UNM_CAM_RAM(0x138))
83711924SDaniel.Beauregard@Sun.COM /*
83811924SDaniel.Beauregard@Sun.COM  * Following define address space withing PCIX CRB space to talk with
83911924SDaniel.Beauregard@Sun.COM  * devices on the storage side PCI bus.
84011924SDaniel.Beauregard@Sun.COM  */
84111924SDaniel.Beauregard@Sun.COM #define	PCIX_PS_MEM_SPACE	(0x90000)
84211924SDaniel.Beauregard@Sun.COM 
84311924SDaniel.Beauregard@Sun.COM #define	UNM_PCIX_PH_REG(reg)	(UNM_CRB_PCIE + (reg))
84411924SDaniel.Beauregard@Sun.COM 
84511924SDaniel.Beauregard@Sun.COM /*
84611924SDaniel.Beauregard@Sun.COM  * Configuration registers. These are the same offsets on both host and
84711924SDaniel.Beauregard@Sun.COM  * storage side PCI blocks.
84811924SDaniel.Beauregard@Sun.COM  */
84911924SDaniel.Beauregard@Sun.COM #define	PCIX_PS_OP_ADDR_LO	(0x10000) /* Used for PS PCI Memory access */
85011924SDaniel.Beauregard@Sun.COM #define	PCIX_PS_OP_ADDR_HI	(0x10004) /* via CRB  (PS side only) */
85111924SDaniel.Beauregard@Sun.COM 
85211924SDaniel.Beauregard@Sun.COM #define	PCIX_MS_WINDOW		(0x10204) /* UNUSED */
85311924SDaniel.Beauregard@Sun.COM 
85411924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW		(0x10210)
85511924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F0	(0x10210)
85611924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F1	(0x10230)
85711924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F2	(0x10250)
85811924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F3	(0x10270)
85911924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F4	(0x102ac)
86011924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F5	(0x102bc)
86111924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F6	(0x102cc)
86211924SDaniel.Beauregard@Sun.COM #define	PCIX_CRB_WINDOW_F7	(0x102dc)
86311924SDaniel.Beauregard@Sun.COM #define	PCIE_CRB_WINDOW_REG(func)	(((func) < 4) ? \
86411924SDaniel.Beauregard@Sun.COM 	(PCIX_CRB_WINDOW_F0 + (0x20 * (func))) : \
86511924SDaniel.Beauregard@Sun.COM 	(PCIX_CRB_WINDOW_F4 + (0x10 * ((func) - 4))))
86611924SDaniel.Beauregard@Sun.COM 
86711924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW		(0x10200)
86811924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F0	(0x10200)
86911924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F1	(0x10220)
87011924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F2	(0x10240)
87111924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F3	(0x10260)
87211924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F4	(0x102a0)
87311924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F5	(0x102b0)
87411924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F6	(0x102c0)
87511924SDaniel.Beauregard@Sun.COM #define	PCIX_MN_WINDOW_F7	(0x102d0)
87611924SDaniel.Beauregard@Sun.COM #define	PCIE_MN_WINDOW_REG(func)	(((func) < 4) ? \
87711924SDaniel.Beauregard@Sun.COM 	(PCIX_MN_WINDOW_F0 + (0x20 * (func))) : \
87811924SDaniel.Beauregard@Sun.COM 	(PCIX_MN_WINDOW_F4 + (0x10 * ((func) - 4))))
87911924SDaniel.Beauregard@Sun.COM 
88011924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW		(0x10208)
88111924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F0	(0x10208)
88211924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F1	(0x10228)
88311924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F2	(0x10248)
88411924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F3	(0x10268)
88511924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F4	(0x102a8)
88611924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F5	(0x102b8)
88711924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F6	(0x102c8)
88811924SDaniel.Beauregard@Sun.COM #define	PCIX_SN_WINDOW_F7	(0x102d8)
88911924SDaniel.Beauregard@Sun.COM #define	PCIE_SN_WINDOW_REG(func)	(((func) < 4) ? \
89011924SDaniel.Beauregard@Sun.COM 	(PCIX_SN_WINDOW_F0 + (0x20 * (func))) : \
89111924SDaniel.Beauregard@Sun.COM 	(PCIX_SN_WINDOW_F4 + (0x10 * ((func) - 4))))
89211924SDaniel.Beauregard@Sun.COM 
89311924SDaniel.Beauregard@Sun.COM #define	UNM_PCIX_PS_REG(reg)	(UNM_CRB_PCIX_MD + (reg))
89411924SDaniel.Beauregard@Sun.COM #define	UNM_PCIX_PS2_REG(reg)	(UNM_CRB_PCIE2 + (reg))
89511924SDaniel.Beauregard@Sun.COM #define	MANAGEMENT_COMMAND_REG	(UNM_CRB_PCIE + (4))
89611924SDaniel.Beauregard@Sun.COM 
89711924SDaniel.Beauregard@Sun.COM #define	UNM_PH_INT_MASK		(UNM_CRB_PCIE + PCIX_INT_MASK)
89811924SDaniel.Beauregard@Sun.COM 
89911924SDaniel.Beauregard@Sun.COM /*
90011924SDaniel.Beauregard@Sun.COM  * Definitions relating to access/control of the I2Q h/w block.
90111924SDaniel.Beauregard@Sun.COM  */
90211924SDaniel.Beauregard@Sun.COM /*
90311924SDaniel.Beauregard@Sun.COM  * Configuration registers.
90411924SDaniel.Beauregard@Sun.COM  */
90511924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_CONFIG		(UNM_CRB_I2Q + 0x00000)
90611924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_ENA_PCI_LO	(UNM_CRB_I2Q + 0x00010)
90711924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_ENA_PCI_HI	(UNM_CRB_I2Q + 0x00014)
90811924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_ENA_CASPER_LO	(UNM_CRB_I2Q + 0x00018)
90911924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_ENA_CASPER_HI	(UNM_CRB_I2Q + 0x0001c)
91011924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_ENA_QM_LO	(UNM_CRB_I2Q + 0x00020)
91111924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_ENA_QM_HI	(UNM_CRB_I2Q + 0x00024)
91211924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_CLR_PCI_LO	(UNM_CRB_I2Q + 0x00030)
91311924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_CLR_PCI_HI	(UNM_CRB_I2Q + 0x00034)
91411924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_CLR_CASPER_LO	(UNM_CRB_I2Q + 0x00038)
91511924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_CLR_CASPER_HI	(UNM_CRB_I2Q + 0x0003c)
91611924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_MSG_HDR_LO(I)	(UNM_CRB_I2Q + 0x00100 + (I) * 0x8)
91711924SDaniel.Beauregard@Sun.COM #define	UNM_I2Q_MSG_HDR_HI(I)	(UNM_CRB_I2Q + 0x00104 + (I) * 0x8)
91811924SDaniel.Beauregard@Sun.COM 
91911924SDaniel.Beauregard@Sun.COM #ifdef PCIX
92011924SDaniel.Beauregard@Sun.COM #define	UNM_DMA_BASE(U)		(UNM_CRB_PCIX_HOST + 0x20000 + ((U) << 16))
92111924SDaniel.Beauregard@Sun.COM #else
92211924SDaniel.Beauregard@Sun.COM #define	UNM_DMA_BASE(U)		(UNM_CRB_PCIX_MD + 0x20000 + ((U) << 6))
92311924SDaniel.Beauregard@Sun.COM #endif
92411924SDaniel.Beauregard@Sun.COM #define	UNM_DMA_COMMAND(U)	(UNM_DMA_BASE(U) + 0x00008)
92511924SDaniel.Beauregard@Sun.COM 
92611924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM2_LOCK		(0x1c010)	/* Flash lock */
92711924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM2_UNLOCK	(0x1c014)	/* Flash unlock */
92811924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM3_LOCK		(0x1c018)	/* Phy lock */
92911924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM3_UNLOCK	(0x1c01c)	/* Phy unlock */
93011924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM4_LOCK		(0x1c020)	/* I2C lock */
93111924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM4_UNLOCK	(0x1c024)	/* I2C unlock */
93211924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM5_LOCK		(0x1c028)	/* API lock */
93311924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM5_UNLOCK	(0x1c02c)	/* API unlock */
93411924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM6_LOCK		(0x1c030)	/* sw lock */
93511924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM6_UNLOCK	(0x1c034)	/* sw unlock */
93611924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM7_LOCK		(0x1c038)	/* crb win lock */
93711924SDaniel.Beauregard@Sun.COM #define	PCIE_SEM7_UNLOCK	(0x1c03c)	/* crbwin unlock */
93811924SDaniel.Beauregard@Sun.COM 
93911924SDaniel.Beauregard@Sun.COM #define	PCIE_PS_STRAP_RESET	(0x18000)
94011924SDaniel.Beauregard@Sun.COM 
94111924SDaniel.Beauregard@Sun.COM #define	M25P_INSTR_WREN		0x06
94211924SDaniel.Beauregard@Sun.COM #define	M25P_INSTR_RDSR		0x05
94311924SDaniel.Beauregard@Sun.COM #define	M25P_INSTR_PP		0x02
94411924SDaniel.Beauregard@Sun.COM #define	M25P_INSTR_SE		0xd8
94511924SDaniel.Beauregard@Sun.COM #define	CAM_RAM_P2I_ENABLE	0xc
94611924SDaniel.Beauregard@Sun.COM #define	CAM_RAM_P2D_ENABLE	0x8
94711924SDaniel.Beauregard@Sun.COM #define	PCIX_IMBTAG		(0x18004)
94811924SDaniel.Beauregard@Sun.COM 
94911924SDaniel.Beauregard@Sun.COM #define	CAM_RAM_PEG_ENABLES	0x4
95011924SDaniel.Beauregard@Sun.COM 
95111924SDaniel.Beauregard@Sun.COM /*
95211924SDaniel.Beauregard@Sun.COM  * The PCI VendorID and DeviceID for our board.
95311924SDaniel.Beauregard@Sun.COM  */
95411924SDaniel.Beauregard@Sun.COM #define	PCI_VENDOR_ID_NX8021		0x4040
95511924SDaniel.Beauregard@Sun.COM #define	PCI_DEVICE_ID_NX8021_FC		0x0101
95611924SDaniel.Beauregard@Sun.COM 
95711924SDaniel.Beauregard@Sun.COM /* ISP 3031 related declarations  */
95811924SDaniel.Beauregard@Sun.COM 
95911924SDaniel.Beauregard@Sun.COM #define	NX_MSIX_MEM_REGION_THRESHOLD	0x2000000
96011924SDaniel.Beauregard@Sun.COM #define	UNM_MSIX_TBL_SPACE  		8192
96111924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_REG_MSIX_TBL		0x44
96211924SDaniel.Beauregard@Sun.COM #define	NX_PCI_MSIX_CONTROL		0x40
96311924SDaniel.Beauregard@Sun.COM 
96411924SDaniel.Beauregard@Sun.COM typedef struct {
96511924SDaniel.Beauregard@Sun.COM 	uint32_t	valid;
96611924SDaniel.Beauregard@Sun.COM 	uint32_t	start_128M;
96711924SDaniel.Beauregard@Sun.COM 	uint32_t	end_128M;
96811924SDaniel.Beauregard@Sun.COM 	uint32_t	start_2M;
96911924SDaniel.Beauregard@Sun.COM } crb_128M_2M_sub_block_map_t;
97011924SDaniel.Beauregard@Sun.COM 
97111924SDaniel.Beauregard@Sun.COM typedef struct {
97211924SDaniel.Beauregard@Sun.COM 	crb_128M_2M_sub_block_map_t sub_block[16];
97311924SDaniel.Beauregard@Sun.COM } crb_128M_2M_block_map_t;
97411924SDaniel.Beauregard@Sun.COM 
97511924SDaniel.Beauregard@Sun.COM struct crb_addr_pair {
97611924SDaniel.Beauregard@Sun.COM 	uint32_t	addr;
97711924SDaniel.Beauregard@Sun.COM 	uint32_t	data;
97811924SDaniel.Beauregard@Sun.COM };
97911924SDaniel.Beauregard@Sun.COM 
98011924SDaniel.Beauregard@Sun.COM #define	ADDR_ERROR	((unsigned long) 0xffffffff)
98111924SDaniel.Beauregard@Sun.COM #define	MAX_CTL_CHECK	1000
98211924SDaniel.Beauregard@Sun.COM 
98311924SDaniel.Beauregard@Sun.COM /*
98411924SDaniel.Beauregard@Sun.COM  * ************************************************************************
98511924SDaniel.Beauregard@Sun.COM  *      	PCI related defines.
98611924SDaniel.Beauregard@Sun.COM  * ************************************************************************
98711924SDaniel.Beauregard@Sun.COM  */
98811924SDaniel.Beauregard@Sun.COM 
98911924SDaniel.Beauregard@Sun.COM /*
99011924SDaniel.Beauregard@Sun.COM  * Interrupt related defines.
99111924SDaniel.Beauregard@Sun.COM  */
99211924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS	(0x10118)
99311924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F1	(0x10160)
99411924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F2	(0x10164)
99511924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F3	(0x10168)
99611924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F4	(0x10360)
99711924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F5	(0x10364)
99811924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F6	(0x10368)
99911924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_STATUS_F7	(0x1036c)
100011924SDaniel.Beauregard@Sun.COM 
100111924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK	(0x10128)
100211924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F1	(0x10170)
100311924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F2	(0x10174)
100411924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F3	(0x10178)
100511924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F4	(0x10370)
100611924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F5	(0x10374)
100711924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F6	(0x10378)
100811924SDaniel.Beauregard@Sun.COM #define	PCIX_TARGET_MASK_F7	(0x1037c)
100911924SDaniel.Beauregard@Sun.COM 
101011924SDaniel.Beauregard@Sun.COM /*
101111924SDaniel.Beauregard@Sun.COM  * Message Signaled Interrupts
101211924SDaniel.Beauregard@Sun.COM  */
101311924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F0		(0x13000)
101411924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F1		(0x13004)
101511924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F2		(0x13008)
101611924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F3		(0x1300c)
101711924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F4		(0x13010)
101811924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F5		(0x13014)
101911924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F6		(0x13018)
102011924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F7		(0x1301c)
102111924SDaniel.Beauregard@Sun.COM #define	PCIX_MSI_F(FUNC)	(0x13000 +((FUNC) * 4))
102211924SDaniel.Beauregard@Sun.COM 
102311924SDaniel.Beauregard@Sun.COM /*
102411924SDaniel.Beauregard@Sun.COM  *
102511924SDaniel.Beauregard@Sun.COM  */
102611924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR		(0x10100)
102711924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_MASK		(0x10104)
102811924SDaniel.Beauregard@Sun.COM 
102911924SDaniel.Beauregard@Sun.COM /*
103011924SDaniel.Beauregard@Sun.COM  * Interrupt state machine and other bits.
103111924SDaniel.Beauregard@Sun.COM  */
103211924SDaniel.Beauregard@Sun.COM #define	PCIE_MISCCFG_RC		(0x1206c)
103311924SDaniel.Beauregard@Sun.COM 
103411924SDaniel.Beauregard@Sun.COM 
103511924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS		(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS))
103611924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F1	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F1))
103711924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F2	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F2))
103811924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F3	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F3))
103911924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F4	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F4))
104011924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F5	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F5))
104111924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F6	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F6))
104211924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_STATUS_F7	(UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F7))
104311924SDaniel.Beauregard@Sun.COM 
104411924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK))
104511924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F1		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F1))
104611924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F2		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F2))
104711924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F3		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F3))
104811924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F4		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F4))
104911924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F5		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F5))
105011924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F6		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F6))
105111924SDaniel.Beauregard@Sun.COM #define	ISR_INT_TARGET_MASK_F7		(UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F7))
105211924SDaniel.Beauregard@Sun.COM 
105311924SDaniel.Beauregard@Sun.COM #define	ISR_INT_VECTOR			(UNM_PCIX_PS_REG(PCIX_INT_VECTOR))
105411924SDaniel.Beauregard@Sun.COM #define	ISR_INT_MASK			(UNM_PCIX_PS_REG(PCIX_INT_MASK))
105511924SDaniel.Beauregard@Sun.COM #define	ISR_INT_STATE_REG		(UNM_PCIX_PS_REG(PCIE_MISCCFG_RC))
105611924SDaniel.Beauregard@Sun.COM 
105711924SDaniel.Beauregard@Sun.COM #define	ISR_MSI_INT_TRIGGER(FUNC)	(UNM_PCIX_PS_REG(PCIX_MSI_F(FUNC)))
105811924SDaniel.Beauregard@Sun.COM 
105911924SDaniel.Beauregard@Sun.COM 
106011924SDaniel.Beauregard@Sun.COM #define	ISR_IS_LEGACY_INTR_IDLE(VAL)		(((VAL) & 0x300) == 0)
106111924SDaniel.Beauregard@Sun.COM #define	ISR_IS_LEGACY_INTR_TRIGGERED(VAL)	(((VAL) & 0x300) == 0x200)
106211924SDaniel.Beauregard@Sun.COM 
106311924SDaniel.Beauregard@Sun.COM /*
106411924SDaniel.Beauregard@Sun.COM  * PCI Interrupt Vector Values.
106511924SDaniel.Beauregard@Sun.COM  */
106611924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F0	0x0080
106711924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F1	0x0100
106811924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F2	0x0200
106911924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F3	0x0400
107011924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F4	0x0800
107111924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F5	0x1000
107211924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F6	0x2000
107311924SDaniel.Beauregard@Sun.COM #define	PCIX_INT_VECTOR_BIT_F7	0x4000
107411924SDaniel.Beauregard@Sun.COM 
107511924SDaniel.Beauregard@Sun.COM #define	NX_LEGACY_INTR_CONFIG   				\
107611924SDaniel.Beauregard@Sun.COM {       							\
107711924SDaniel.Beauregard@Sun.COM 	{       						\
107811924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F0, 	\
107911924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS,  	\
108011924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK,    	\
108111924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(0) },     \
108211924SDaniel.Beauregard@Sun.COM 								\
108311924SDaniel.Beauregard@Sun.COM 	{       						\
108411924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F1, 	\
108511924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F1,     \
108611924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F1, 	\
108711924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(1) },     \
108811924SDaniel.Beauregard@Sun.COM 								\
108911924SDaniel.Beauregard@Sun.COM 	{       						\
109011924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F2, 	\
109111924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F2,     \
109211924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F2, 	\
109311924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(2) },     \
109411924SDaniel.Beauregard@Sun.COM 								\
109511924SDaniel.Beauregard@Sun.COM 	{       						\
109611924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F3, 	\
109711924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F3,     \
109811924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F3, 	\
109911924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(3) },     \
110011924SDaniel.Beauregard@Sun.COM 							        \
110111924SDaniel.Beauregard@Sun.COM 	{       					        \
110211924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F4, 	\
110311924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F4,     \
110411924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F4, 	\
110511924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(4) },     \
110611924SDaniel.Beauregard@Sun.COM 								\
110711924SDaniel.Beauregard@Sun.COM 	{       						\
110811924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F5, 	\
110911924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F5,     \
111011924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F5, 	\
111111924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(5) },     \
111211924SDaniel.Beauregard@Sun.COM 								\
111311924SDaniel.Beauregard@Sun.COM 	{       						\
111411924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F6, 	\
111511924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F6,     \
111611924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F6, 	\
111711924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(6) },     \
111811924SDaniel.Beauregard@Sun.COM 								\
111911924SDaniel.Beauregard@Sun.COM 	{       						\
112011924SDaniel.Beauregard@Sun.COM 		.int_vec_bit    = PCIX_INT_VECTOR_BIT_F7, 	\
112111924SDaniel.Beauregard@Sun.COM 		.tgt_status_reg = ISR_INT_TARGET_STATUS_F7,     \
112211924SDaniel.Beauregard@Sun.COM 		.tgt_mask_reg   = ISR_INT_TARGET_MASK_F7, 	\
112311924SDaniel.Beauregard@Sun.COM 		.pci_int_reg    = ISR_MSI_INT_TRIGGER(7) },     \
112411924SDaniel.Beauregard@Sun.COM }
112511924SDaniel.Beauregard@Sun.COM 
112611924SDaniel.Beauregard@Sun.COM #define	BOOTLD_START		0x10000
112711924SDaniel.Beauregard@Sun.COM #define	IMAGE_START		0x43000
112811924SDaniel.Beauregard@Sun.COM 
112911924SDaniel.Beauregard@Sun.COM /* Magic number to let user know flash is programmed */
113011924SDaniel.Beauregard@Sun.COM #define	UNM_BDINFO_MAGIC	0x12345678
113111924SDaniel.Beauregard@Sun.COM #define	FW_SIZE_OFFSET		0x3e840c
113211924SDaniel.Beauregard@Sun.COM 
113311924SDaniel.Beauregard@Sun.COM #define	PCI_CAP_ID_GEN		0x10
113411924SDaniel.Beauregard@Sun.COM #define	PCI_CAP_ID_PCI_E	0x10    /* PCI Express supported */
113511924SDaniel.Beauregard@Sun.COM #define	PCI_CAP_ID_EXP		0x10	/* PCI Express */
113611924SDaniel.Beauregard@Sun.COM #define	PCI_EXP_LNKSTA		18	/* Link Status */
113711924SDaniel.Beauregard@Sun.COM #define	MAX_CRB_XFORM		60
113811924SDaniel.Beauregard@Sun.COM #define	MTU_FUDGE_FACTOR	100
113911924SDaniel.Beauregard@Sun.COM 
114011924SDaniel.Beauregard@Sun.COM #define	crb_addr_transform(name) \
114111924SDaniel.Beauregard@Sun.COM 	(crb_addr_xform[UNM_HW_PX_MAP_CRB_##name] = \
114211924SDaniel.Beauregard@Sun.COM 	UNM_HW_CRB_HUB_AGT_ADR_##name << 20)
114311924SDaniel.Beauregard@Sun.COM 
114411924SDaniel.Beauregard@Sun.COM #define	MASK(n)		((1ULL << (n)) - 1)
114511924SDaniel.Beauregard@Sun.COM #define	MN_WIN(addr)	(((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff))
114611924SDaniel.Beauregard@Sun.COM /* 64K? */
114711924SDaniel.Beauregard@Sun.COM #define	OCM_WIN(addr)	(((addr & 0x1ff0000) >> 1) | ((addr >> 25) & 0x3ff))
114811924SDaniel.Beauregard@Sun.COM 
114911924SDaniel.Beauregard@Sun.COM #define	MS_WIN(addr)		(addr & 0x0ffc0000)
115011924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_MN_2M		(0)
115111924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_MS_2M		(0x80000)
115211924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_OCM0_2M		(0xc0000)
115311924SDaniel.Beauregard@Sun.COM #define	VALID_OCM_ADDR(addr)	(((addr) & 0x3f800) != 0x3f800)
115411924SDaniel.Beauregard@Sun.COM #define	GET_MEM_OFFS_2M(addr)	(addr & MASK(18))
115511924SDaniel.Beauregard@Sun.COM 
115611924SDaniel.Beauregard@Sun.COM #define	UNM_BOARDTYPE		0x4008
115711924SDaniel.Beauregard@Sun.COM #define	UNM_BOARDNUM		0x400c
115811924SDaniel.Beauregard@Sun.COM #define	UNM_CHIPNUM		0x4010
115911924SDaniel.Beauregard@Sun.COM 
116011924SDaniel.Beauregard@Sun.COM /* CRB window related */
116111924SDaniel.Beauregard@Sun.COM #define	CRB_BLK(off)		((off >> 20) & 0x3f)
116211924SDaniel.Beauregard@Sun.COM #define	CRB_SUBBLK(off)		((off >> 16) & 0xf)
116311924SDaniel.Beauregard@Sun.COM #define	CRB_WINDOW_2M		(0x130060)
116411924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CAMQM_2M_END	(0x04800800UL)
116511924SDaniel.Beauregard@Sun.COM #define	CRB_HI(off)		((crb_hub_agt[CRB_BLK(off)] << 20) | \
116611924SDaniel.Beauregard@Sun.COM 	((off) & 0xf0000))
116711924SDaniel.Beauregard@Sun.COM #define	UNM_PCI_CAMQM_2M_BASE	(0x000ff800UL)
116811924SDaniel.Beauregard@Sun.COM #define	CRB_INDIRECT_2M		(0x1e0000UL)
116911924SDaniel.Beauregard@Sun.COM /* #define	ADDR_ERROR ((unsigned long ) 0xffffffff) */
117011924SDaniel.Beauregard@Sun.COM 
117111924SDaniel.Beauregard@Sun.COM /* PCI Windowing for DDR regions.  */
117211924SDaniel.Beauregard@Sun.COM #define	QL_8021_ADDR_IN_RANGE(addr, low, high)	\
117311924SDaniel.Beauregard@Sun.COM 	(((addr) <= (high)) && ((addr) >= (low)))
117411924SDaniel.Beauregard@Sun.COM 
117511924SDaniel.Beauregard@Sun.COM #define	CRB_WIN_LOCK_TIMEOUT	100000000
117611924SDaniel.Beauregard@Sun.COM #define	ROM_LOCK_TIMEOUT	100
117711924SDaniel.Beauregard@Sun.COM #define	ROM_MAX_TIMEOUT		100
117811924SDaniel.Beauregard@Sun.COM #define	IDC_LOCK_TIMEOUT	100000000
117911924SDaniel.Beauregard@Sun.COM 
118011924SDaniel.Beauregard@Sun.COM /*
118111924SDaniel.Beauregard@Sun.COM  * IDC parameters are defined in �user area� in the flash
118211924SDaniel.Beauregard@Sun.COM  */
118311924SDaniel.Beauregard@Sun.COM #define	ROM_DEV_INIT_TIMEOUT		0x3e885c
118411924SDaniel.Beauregard@Sun.COM #define	ROM_DRV_RESET_ACK_TIMEOUT	0x3e8860
118511924SDaniel.Beauregard@Sun.COM 
118611924SDaniel.Beauregard@Sun.COM /*
118711924SDaniel.Beauregard@Sun.COM  * Global Data in ql_nx.c source file.
118811924SDaniel.Beauregard@Sun.COM  */
118911924SDaniel.Beauregard@Sun.COM 
119011924SDaniel.Beauregard@Sun.COM /*
119111924SDaniel.Beauregard@Sun.COM  * Global Function Prototypes in ql_nx.c source file.
119211924SDaniel.Beauregard@Sun.COM  */
119311924SDaniel.Beauregard@Sun.COM void ql_8021_reset_chip(ql_adapter_state_t *);
119411924SDaniel.Beauregard@Sun.COM int ql_8021_load_risc(ql_adapter_state_t *);
119511924SDaniel.Beauregard@Sun.COM void ql_8021_clr_hw_intr(ql_adapter_state_t *);
119611924SDaniel.Beauregard@Sun.COM void ql_8021_clr_fw_intr(ql_adapter_state_t *);
119711924SDaniel.Beauregard@Sun.COM void ql_8021_enable_intrs(ql_adapter_state_t *);
119811924SDaniel.Beauregard@Sun.COM void ql_8021_disable_intrs(ql_adapter_state_t *);
119911924SDaniel.Beauregard@Sun.COM void ql_8021_update_crb_int_ptr(ql_adapter_state_t *);
120011924SDaniel.Beauregard@Sun.COM int ql_8021_rom_read(ql_adapter_state_t *, uint32_t, uint32_t *);
120111924SDaniel.Beauregard@Sun.COM int ql_8021_rom_write(ql_adapter_state_t *, uint32_t, uint32_t);
120211924SDaniel.Beauregard@Sun.COM int ql_8021_rom_erase(ql_adapter_state_t *, uint32_t);
120311924SDaniel.Beauregard@Sun.COM int ql_8021_rom_wrsr(ql_adapter_state_t *, uint32_t);
120411924SDaniel.Beauregard@Sun.COM void ql_8021_set_drv_active(ql_adapter_state_t *);
120511924SDaniel.Beauregard@Sun.COM void ql_8021_clr_drv_active(ql_adapter_state_t *);
120611924SDaniel.Beauregard@Sun.COM uint32_t ql_8021_idc_handler(ql_adapter_state_t *);
120711924SDaniel.Beauregard@Sun.COM 
120811924SDaniel.Beauregard@Sun.COM #ifdef __cplusplus
120911924SDaniel.Beauregard@Sun.COM }
121011924SDaniel.Beauregard@Sun.COM #endif
121111924SDaniel.Beauregard@Sun.COM 
121211924SDaniel.Beauregard@Sun.COM #endif /* _QL_NX_H */
1213