xref: /onnv-gate/usr/src/uts/common/sys/scsi/adapters/pmcs/pmcs_reg.h (revision 12060:9f5bdb2db498)
110696SDavid.Hollister@Sun.COM /*
210696SDavid.Hollister@Sun.COM  * CDDL HEADER START
310696SDavid.Hollister@Sun.COM  *
410696SDavid.Hollister@Sun.COM  * The contents of this file are subject to the terms of the
510696SDavid.Hollister@Sun.COM  * Common Development and Distribution License (the "License").
610696SDavid.Hollister@Sun.COM  * You may not use this file except in compliance with the License.
710696SDavid.Hollister@Sun.COM  *
810696SDavid.Hollister@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
910696SDavid.Hollister@Sun.COM  * or http://www.opensolaris.org/os/licensing.
1010696SDavid.Hollister@Sun.COM  * See the License for the specific language governing permissions
1110696SDavid.Hollister@Sun.COM  * and limitations under the License.
1210696SDavid.Hollister@Sun.COM  *
1310696SDavid.Hollister@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
1410696SDavid.Hollister@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1510696SDavid.Hollister@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
1610696SDavid.Hollister@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
1710696SDavid.Hollister@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
1810696SDavid.Hollister@Sun.COM  *
1910696SDavid.Hollister@Sun.COM  * CDDL HEADER END
20*12060SDavid.Hollister@Sun.COM  */
21*12060SDavid.Hollister@Sun.COM /*
22*12060SDavid.Hollister@Sun.COM  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
2310696SDavid.Hollister@Sun.COM  */
2410696SDavid.Hollister@Sun.COM /*
2510696SDavid.Hollister@Sun.COM  * PMC 8x6G register definitions
2610696SDavid.Hollister@Sun.COM  */
2710696SDavid.Hollister@Sun.COM #ifndef	_PMCS_REG_H
2810696SDavid.Hollister@Sun.COM #define	_PMCS_REG_H
2910696SDavid.Hollister@Sun.COM #ifdef	__cplusplus
3010696SDavid.Hollister@Sun.COM extern "C" {
3110696SDavid.Hollister@Sun.COM #endif
3210696SDavid.Hollister@Sun.COM 
3310696SDavid.Hollister@Sun.COM /*
3410696SDavid.Hollister@Sun.COM  * PCI Constants
3510696SDavid.Hollister@Sun.COM  */
3610696SDavid.Hollister@Sun.COM #define	PMCS_VENDOR_ID	0x11F8
3710696SDavid.Hollister@Sun.COM #define	PMCS_DEVICE_ID	0x8001
3810696SDavid.Hollister@Sun.COM 
3910696SDavid.Hollister@Sun.COM #define	PMCS_PM8001_REV_A	0
4010696SDavid.Hollister@Sun.COM #define	PMCS_PM8001_REV_B	1
4110696SDavid.Hollister@Sun.COM #define	PMCS_PM8001_REV_C	2
4210696SDavid.Hollister@Sun.COM 
4310696SDavid.Hollister@Sun.COM #define	PMCS_REGSET_0		1
4410696SDavid.Hollister@Sun.COM #define	PMCS_REGSET_1		2
4510696SDavid.Hollister@Sun.COM #define	PMCS_REGSET_2		3
4610696SDavid.Hollister@Sun.COM #define	PMCS_REGSET_3		4
4710696SDavid.Hollister@Sun.COM 
4810696SDavid.Hollister@Sun.COM 
4910696SDavid.Hollister@Sun.COM /*
5010696SDavid.Hollister@Sun.COM  * PCIe BARs - 4 64KB memory regions
5110696SDavid.Hollister@Sun.COM  *
5210696SDavid.Hollister@Sun.COM  *	BAR0-1	64KiB
5310696SDavid.Hollister@Sun.COM  *	BAR2-3	64KiB
5410696SDavid.Hollister@Sun.COM  *	BAR4	64KiB
5510696SDavid.Hollister@Sun.COM  *	BAR5	64KiB
5610696SDavid.Hollister@Sun.COM  */
5710696SDavid.Hollister@Sun.COM 
5810696SDavid.Hollister@Sun.COM /*
5910696SDavid.Hollister@Sun.COM  * The PMC 8x6G registers are defined by BARs in PCIe space.
6010696SDavid.Hollister@Sun.COM  *
6110696SDavid.Hollister@Sun.COM  * Four memory region BARS are used.
6210696SDavid.Hollister@Sun.COM  *
6310696SDavid.Hollister@Sun.COM  * The first is for the Messaging Unit.
6410696SDavid.Hollister@Sun.COM  *
6510696SDavid.Hollister@Sun.COM  * The second 64KiB region contains the PCS/PMA registers and some of the
6610696SDavid.Hollister@Sun.COM  * Top-Level registers.
6710696SDavid.Hollister@Sun.COM  *
6810696SDavid.Hollister@Sun.COM  * The third 64KiB region is a 64KiB window on the rest of the chip registers
6910696SDavid.Hollister@Sun.COM  * which can be shifted by writing a register in the second region.
7010696SDavid.Hollister@Sun.COM  *
7110696SDavid.Hollister@Sun.COM  * The fourth 64KiB region is for the message passing area.
7210696SDavid.Hollister@Sun.COM  */
7310696SDavid.Hollister@Sun.COM 
7410696SDavid.Hollister@Sun.COM /*
7510696SDavid.Hollister@Sun.COM  * Messaging Unit Register Offsets
7610696SDavid.Hollister@Sun.COM  */
7710696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IBDB		0x04	/* Inbound Doorbell */
7810696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IBDB_CLEAR	0x20	/* InBound Doorbell Clear */
7910696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_OBDB		0x3c	/* OutBound Doorbell */
8010696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_OBDB_CLEAR	0x40	/* OutBound Doorbell Clear */
8110696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_SCRATCH0	0x44	/* Scratchpad 0 */
8210696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_SCRATCH1	0x48	/* Scratchpad 1 */
8310696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_SCRATCH2	0x4C	/* Scratchpad 2 */
8410696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_SCRATCH3	0x50	/* Scratchpad 3 */
8510696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH0	0x54	/* Host Scratchpad 0 */
8610696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH1	0x58	/* Host Scratchpad 1 */
8710696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH2	0x5C	/* Host Scratchpad 2 */
8810696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH3	0x60	/* Host Scratchpad 3 */
8910696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH4	0x64	/* Host Scratchpad 4 */
9010696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH5	0x68	/* Host Scratchpad 5 */
9110696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH6	0x6C	/* Host Scratchpad 6 */
9210696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SCRATCH7	0x70	/* Host Scratchpad 7 */
9310696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_OBDB_MASK	0x74	/* Outbound Doorbell Mask */
9410696SDavid.Hollister@Sun.COM 
9510696SDavid.Hollister@Sun.COM /*
9610696SDavid.Hollister@Sun.COM  * Inbound Doorbell and Doorbell Clear Definitions
9710696SDavid.Hollister@Sun.COM  * NB: The Doorbell Clear register is only used on RevA/8000 parts.
9810696SDavid.Hollister@Sun.COM  */
9910696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IBDB_MPIIU	0x08	/* Initiate Unfreeze */
10010696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IBDB_MPIIF	0x04	/* Initiate Freeze */
10110696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IBDB_MPICTU	0x02	/* Initiate MPI Termination */
10210696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IBDB_MPIINI	0x01	/* Initiate MPI */
10310696SDavid.Hollister@Sun.COM 
10410696SDavid.Hollister@Sun.COM /*
10510696SDavid.Hollister@Sun.COM  * Outbound Doorbell and Doorbell Clear Register
10610696SDavid.Hollister@Sun.COM  *
10710696SDavid.Hollister@Sun.COM  * The Doorbell Clear register is only used on RevA/8000 parts.
10810696SDavid.Hollister@Sun.COM  *
10910696SDavid.Hollister@Sun.COM  * Each bit of the ODR is mapped 1-to-1 to a MSI or MSI-X vector
11010696SDavid.Hollister@Sun.COM  * table entry. There are 32 MSI and 16 MSI-X entries. The top
11110696SDavid.Hollister@Sun.COM  * 16 bits are mapped to the low 16 bits for MSI-X. For legacy
11210696SDavid.Hollister@Sun.COM  * INT-X, any bit will generate a host interrupt.
11310696SDavid.Hollister@Sun.COM  *
11410696SDavid.Hollister@Sun.COM  * Each bit in the Outbound Doorbell Clear is used to clear the
11510696SDavid.Hollister@Sun.COM  * corresponding bit in the ODR. For INT-X it also then deasserts
11610696SDavid.Hollister@Sun.COM  * any interrupt condition.
11710696SDavid.Hollister@Sun.COM  */
11810696SDavid.Hollister@Sun.COM #define	PMCS_MSI_INTS	32
11910696SDavid.Hollister@Sun.COM #define	PMCS_MSIX_INTS	16
12010696SDavid.Hollister@Sun.COM 
12110696SDavid.Hollister@Sun.COM /*
12210696SDavid.Hollister@Sun.COM  * Scratchpad 0 Definitions
12310696SDavid.Hollister@Sun.COM  *
12410696SDavid.Hollister@Sun.COM  * When the AAP is ready state (see Scratchpad 1), bits 31:26 is the offset
12510696SDavid.Hollister@Sun.COM  * within PCIe space for another BAR that, when mapped, will point to a region
12610696SDavid.Hollister@Sun.COM  * that conains the MPI Configuration table (the offset of which is in bits
12710696SDavid.Hollister@Sun.COM  * 25:0 of this register)
12810696SDavid.Hollister@Sun.COM  *
12910696SDavid.Hollister@Sun.COM  * When the AAP is in error state, this register contains additional error
13010696SDavid.Hollister@Sun.COM  * information.
13110696SDavid.Hollister@Sun.COM  */
13210696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_MPI_BAR_SHIFT		26
13310696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_MPI_OFFSET_MASK	((1 << PMCS_MSGU_MPI_BAR_SHIFT) - 1)
13410696SDavid.Hollister@Sun.COM 
13510696SDavid.Hollister@Sun.COM /*
13610696SDavid.Hollister@Sun.COM  * Scratchpad 1 Definitions
13710696SDavid.Hollister@Sun.COM  *
13810696SDavid.Hollister@Sun.COM  * The bottom two bits are the AAP state of the 8x6G.
13910696SDavid.Hollister@Sun.COM  *
14010696SDavid.Hollister@Sun.COM  * When the AAP is in error state, bits 31:10 contain the error indicator.
14110696SDavid.Hollister@Sun.COM  *
14210696SDavid.Hollister@Sun.COM  */
14310696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_STATE_MASK	0x03
14410696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_STATE_POR		0
14510696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_STATE_SOFT_RESET	1
14610696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_STATE_ERROR	2
14710696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_STATE_READY	3
14810696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_SFR_PROGRESS	0x04
14910696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_AAP_ERROR_MASK	0xfffffc00
15010696SDavid.Hollister@Sun.COM 
15110696SDavid.Hollister@Sun.COM /*
15210696SDavid.Hollister@Sun.COM  * Scratchpad 2 Definitions
15310696SDavid.Hollister@Sun.COM  *
15410696SDavid.Hollister@Sun.COM  * Bits 31:10 contain error information if the IOP is in error state.
15510696SDavid.Hollister@Sun.COM  */
15610696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IOP_STATE_MASK	0x03
15710696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IOP_STATE_POR		0
15810696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IOP_STATE_SOFT_RESET	1
15910696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IOP_STATE_ERROR	2
16010696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_IOP_STATE_READY	3
16110696SDavid.Hollister@Sun.COM 
16210696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_HOST_SOFT_RESET_READY	0x04
16310696SDavid.Hollister@Sun.COM #define	PMCS_MSGU_CPU_SOFT_RESET_READY	0x08
16410696SDavid.Hollister@Sun.COM 
16510696SDavid.Hollister@Sun.COM /*
16610696SDavid.Hollister@Sun.COM  * Scratchpad 3 Definitions
16710696SDavid.Hollister@Sun.COM  *
16810696SDavid.Hollister@Sun.COM  * Contains additional error information if the IOP is in error state
16910696SDavid.Hollister@Sun.COM  * (see Scratchpad 2)
17010696SDavid.Hollister@Sun.COM  */
17110696SDavid.Hollister@Sun.COM 
17210696SDavid.Hollister@Sun.COM /*
17310696SDavid.Hollister@Sun.COM  * Host Scratchpad 0
17410696SDavid.Hollister@Sun.COM  * Soft Reset Signature
17510696SDavid.Hollister@Sun.COM  */
17610696SDavid.Hollister@Sun.COM #define	HST_SFT_RESET_SIG		0x252ACBCD
17710696SDavid.Hollister@Sun.COM 
17810696SDavid.Hollister@Sun.COM /*
17910696SDavid.Hollister@Sun.COM  * Host Scratchpad 1
18010696SDavid.Hollister@Sun.COM  *
18110696SDavid.Hollister@Sun.COM  * This is a bit mask for freeze or unfreeze operations for IQs 0..31
18210696SDavid.Hollister@Sun.COM  */
18310696SDavid.Hollister@Sun.COM 
18410696SDavid.Hollister@Sun.COM /*
18510696SDavid.Hollister@Sun.COM  * Host Scratchpad 2
18610696SDavid.Hollister@Sun.COM  *
18710696SDavid.Hollister@Sun.COM  * This is a bit mask for freeze or unfreeze operations for IQs 32..63
18810696SDavid.Hollister@Sun.COM  */
18910696SDavid.Hollister@Sun.COM 
19010696SDavid.Hollister@Sun.COM /*
19110696SDavid.Hollister@Sun.COM  * Outbound Doorbell Mask Register
19210696SDavid.Hollister@Sun.COM  *
19310696SDavid.Hollister@Sun.COM  * Each bit set here masks bits and interrupt assertion for the corresponding
19410696SDavid.Hollister@Sun.COM  * bit (and vector) in the ODR.
19510696SDavid.Hollister@Sun.COM  */
19610696SDavid.Hollister@Sun.COM 
19710696SDavid.Hollister@Sun.COM /*
19810696SDavid.Hollister@Sun.COM  * GSM Registers
19910696SDavid.Hollister@Sun.COM  */
20010696SDavid.Hollister@Sun.COM #define	GSM_BASE_MASK				0x00ffff
20110696SDavid.Hollister@Sun.COM #define	NMI_EN_VPE0_IOP				0x60418
20210696SDavid.Hollister@Sun.COM #define	NMI_EN_VPE0_AAP1			0x70418
20310696SDavid.Hollister@Sun.COM #define	RB6_ACCESS				0x6A80C0
20410696SDavid.Hollister@Sun.COM #define	GSM_CFG_AND_RESET			0x700000
20510696SDavid.Hollister@Sun.COM #define	RAM_ECC_DOUBLE_ERROR_INDICATOR		0x700018
20610696SDavid.Hollister@Sun.COM #define	READ_ADR_PARITY_CHK_EN			0x700038
20710696SDavid.Hollister@Sun.COM #define	WRITE_ADR_PARITY_CHK_EN			0x700040
20810696SDavid.Hollister@Sun.COM #define	WRITE_DATA_PARITY_CHK_EN		0x700048
20910696SDavid.Hollister@Sun.COM #define	READ_ADR_PARITY_ERROR_INDICATOR		0x700058
21010696SDavid.Hollister@Sun.COM #define	WRITE_ADR_PARITY_ERROR_INDICATOR	0x700060
21110696SDavid.Hollister@Sun.COM #define	WRITE_DATA_PARITY_ERROR_INDICATOR	0x700068
21210696SDavid.Hollister@Sun.COM 
21311980SDavid.Hollister@Sun.COM #define	GSM_FLASH_BASE_UPPER			0x18
21411980SDavid.Hollister@Sun.COM #define	GSM_FLASH_BASE				0x40000000
21511980SDavid.Hollister@Sun.COM #define	GSM_FLASH_ILA				GSM_FLASH_BASE
21611980SDavid.Hollister@Sun.COM #define	GSM_FLASH_IMG_FLAGS			(GSM_FLASH_BASE + 0x400000)
21711980SDavid.Hollister@Sun.COM 
21811980SDavid.Hollister@Sun.COM #define	PMCS_IMG_FLAG_A				0x01
21911980SDavid.Hollister@Sun.COM 
22010696SDavid.Hollister@Sun.COM /*
22110696SDavid.Hollister@Sun.COM  * GSM Share Memory, IO Status Table and Ring Buffer
22210696SDavid.Hollister@Sun.COM  */
22310696SDavid.Hollister@Sun.COM #define	GSM_SM_BLKSZ				0x10000
22410696SDavid.Hollister@Sun.COM #define	GSM_SM_BASE				0x400000
22510696SDavid.Hollister@Sun.COM #define	IO_STATUS_TABLE_BASE			0x640000
22610696SDavid.Hollister@Sun.COM #define	RING_BUF_STORAGE_0			0x680000
22710696SDavid.Hollister@Sun.COM #define	RING_BUF_STORAGE_1			0x690000
22810696SDavid.Hollister@Sun.COM #define	RING_BUF_PTR_ACC_BASE			0x6A0000
22910696SDavid.Hollister@Sun.COM 
23010696SDavid.Hollister@Sun.COM #define	IO_STATUS_TABLE_BLKNM			0x4
23110696SDavid.Hollister@Sun.COM #define	GSM_SM_BLKNM				0x10
23210696SDavid.Hollister@Sun.COM #define	RING_BUF_PTR_OFF			0x1000
23310696SDavid.Hollister@Sun.COM #define	RING_BUF_PTR_SIZE			0xFF8
23410696SDavid.Hollister@Sun.COM #define	RING_BUF_ACC_OFF			0x8000
23510696SDavid.Hollister@Sun.COM #define	RING_BUF_ACC_SIZE			0xFF8
23610696SDavid.Hollister@Sun.COM 
23710696SDavid.Hollister@Sun.COM /*
23810696SDavid.Hollister@Sun.COM  * GSM Configuration and Reset Bits
23910696SDavid.Hollister@Sun.COM  */
24010696SDavid.Hollister@Sun.COM #define	MST_XCBI_SW_RSTB		(1 << 14)
24110696SDavid.Hollister@Sun.COM #define	COM_SLV_SW_RSTB			(1 << 13)
24210696SDavid.Hollister@Sun.COM #define	QSSP_SW_RSTB			(1 << 12)
24310696SDavid.Hollister@Sun.COM #define	RAAE_SW_RSTB			(1 << 11)
24410696SDavid.Hollister@Sun.COM #define	RB_1_SW_RSTB			(1 << 9)
24510696SDavid.Hollister@Sun.COM #define	SM_SW_RSTB			(1 << 8)
24610696SDavid.Hollister@Sun.COM 
24710696SDavid.Hollister@Sun.COM #define	COHERENCY_GAP_SHIFT		4
24810696SDavid.Hollister@Sun.COM #define	COHERENCY_GAP_MASK		0xf0
24910696SDavid.Hollister@Sun.COM #define	COHERENCY_GAP_DEFAULT		(8 << COHERENCY_GAP_SHIFT)
25010696SDavid.Hollister@Sun.COM 
25110696SDavid.Hollister@Sun.COM #define	COHERENCY_MODE			(1 << 3)
25210696SDavid.Hollister@Sun.COM #define	RB_WSTRB_ERRCHK_EN		(1 << 2)
25310696SDavid.Hollister@Sun.COM #define	RAAE_PORT2_EN			(1 << 1)
25410696SDavid.Hollister@Sun.COM #define	GSM_WCI_MODE			(1 << 0)
25510696SDavid.Hollister@Sun.COM #define	PMCS_SOFT_RESET_BITS		\
25610696SDavid.Hollister@Sun.COM 	(COM_SLV_SW_RSTB|QSSP_SW_RSTB|RAAE_SW_RSTB|RB_1_SW_RSTB|SM_SW_RSTB)
25710696SDavid.Hollister@Sun.COM 
25810696SDavid.Hollister@Sun.COM #define	RB6_NMI_SIGNATURE		0x00001234
25910696SDavid.Hollister@Sun.COM 
26010696SDavid.Hollister@Sun.COM /*
26110696SDavid.Hollister@Sun.COM  * PMCS PCI Configuration Registers
26210696SDavid.Hollister@Sun.COM  */
26310696SDavid.Hollister@Sun.COM #define	PMCS_PCI_PMC			0x40
26410696SDavid.Hollister@Sun.COM #define	PMCS_PCI_PMCSR			0x44
26510696SDavid.Hollister@Sun.COM #define	PMCS_PCI_MSI			0x50
26610696SDavid.Hollister@Sun.COM #define	PMCS_PCI_MAL			0x54
26710696SDavid.Hollister@Sun.COM #define	PMCS_PCI_MAU			0x58
26810696SDavid.Hollister@Sun.COM #define	PMCS_PCI_MD			0x5C
26910696SDavid.Hollister@Sun.COM #define	PMCS_PCI_PCIE			0x70
27010696SDavid.Hollister@Sun.COM #define	PMCS_PCI_DEV_CAP		0x74
27110696SDavid.Hollister@Sun.COM #define	PMCS_PCI_DEV_CTRL		0x78
27210696SDavid.Hollister@Sun.COM #define	PMCS_PCI_LINK_CAP		0x7C
27310696SDavid.Hollister@Sun.COM #define	PMCS_PCI_LINK_CTRL		0x80
27410696SDavid.Hollister@Sun.COM #define	PMCS_PCI_MSIX_CAP		0xAC
27510696SDavid.Hollister@Sun.COM #define	PMCS_PCI_TBL_OFFSET		0xB0
27610696SDavid.Hollister@Sun.COM #define	PMCS_PCI_PBA_OFFSET		0xB4
27710696SDavid.Hollister@Sun.COM #define	PMCS_PCI_PCIE_CAP_HD		0x100
27810696SDavid.Hollister@Sun.COM #define	PMCS_PCI_UE_STAT		0x104
27910696SDavid.Hollister@Sun.COM #define	PMCS_PCI_UE_MASK		0x108
28010696SDavid.Hollister@Sun.COM #define	PMCS_PCI_UE_SEV			0x10C
28110696SDavid.Hollister@Sun.COM #define	PMCS_PCI_CE_STAT		0x110
28210696SDavid.Hollister@Sun.COM #define	PMCS_PCI_CE_MASK		0x114
28310696SDavid.Hollister@Sun.COM #define	PMCS_PCI_ADV_ERR_CTRL		0x118
28410696SDavid.Hollister@Sun.COM #define	PMCS_PCI_HD_LOG_DW		0x11C
28510696SDavid.Hollister@Sun.COM 
28610696SDavid.Hollister@Sun.COM /*
28710696SDavid.Hollister@Sun.COM  * Top Level Registers
28810696SDavid.Hollister@Sun.COM  */
28910696SDavid.Hollister@Sun.COM /* these registers are in MEMBASE-III */
29010696SDavid.Hollister@Sun.COM #define	PMCS_SPC_RESET			0x0
29110696SDavid.Hollister@Sun.COM #define	PMCS_SPC_BOOT_STRAP		0x8
29210696SDavid.Hollister@Sun.COM #define	PMCS_SPC_DEVICE_ID		0x20
29310696SDavid.Hollister@Sun.COM #define	PMCS_DEVICE_REVISION		0x24
29410696SDavid.Hollister@Sun.COM /* these registers are in MEMBASE-II */
29510696SDavid.Hollister@Sun.COM #define	PMCS_EVENT_INT_ENABLE		0x3040
29610696SDavid.Hollister@Sun.COM #define	PMCS_EVENT_INT_STAT		0x3044
29710696SDavid.Hollister@Sun.COM #define	PMCS_ERROR_INT_ENABLE		0x3048
29810696SDavid.Hollister@Sun.COM #define	PMCS_ERROR_INT_STAT		0x304C
29910696SDavid.Hollister@Sun.COM #define	PMCS_AXI_TRANS			0x3258
30011980SDavid.Hollister@Sun.COM #define	PMCS_AXI_TRANS_UPPER		0x3268
30110696SDavid.Hollister@Sun.COM #define	PMCS_OBDB_AUTO_CLR		0x335C
30210696SDavid.Hollister@Sun.COM #define	PMCS_INT_COALESCING_TIMER	0x33C0
30310696SDavid.Hollister@Sun.COM #define	PMCS_INT_COALESCING_CONTROL	0x33C4
30410696SDavid.Hollister@Sun.COM 
30510696SDavid.Hollister@Sun.COM 
30610696SDavid.Hollister@Sun.COM /*
30710696SDavid.Hollister@Sun.COM  * Chip Reset Register Bits (PMCS_SPC_RESET)
30810696SDavid.Hollister@Sun.COM  *
30910696SDavid.Hollister@Sun.COM  * NB: all bits are inverted. That is, the normal state is '1'.
31010696SDavid.Hollister@Sun.COM  * When '0' is set, the action is taken.
31110696SDavid.Hollister@Sun.COM  */
31210696SDavid.Hollister@Sun.COM #define	PMCS_SPC_HARD_RESET		0x00
31310696SDavid.Hollister@Sun.COM #define	PMCS_SPC_HARD_RESET_CLR		0xffffffff
31410696SDavid.Hollister@Sun.COM 
31510696SDavid.Hollister@Sun.COM 
31610696SDavid.Hollister@Sun.COM #define	SW_DEVICE_RSTB			(1 << 31)
31710696SDavid.Hollister@Sun.COM #define	PCIE_PC_SXCBI_ARESETN		(1 << 26)
31810696SDavid.Hollister@Sun.COM #define	PMIC_CORE_RSTB			(1 << 25)
31910696SDavid.Hollister@Sun.COM #define	PMIC_SXCBI_ARESETN		(1 << 24)
32010696SDavid.Hollister@Sun.COM #define	LMS_SXCBI_ARESETN		(1 << 23)
32110696SDavid.Hollister@Sun.COM #define	PCS_SXCBI_ARESETN		(1 << 22)
32210696SDavid.Hollister@Sun.COM #define	PCIE_SFT_RSTB			(1 << 21)
32310696SDavid.Hollister@Sun.COM #define	PCIE_PWR_RSTB			(1 << 20)
32410696SDavid.Hollister@Sun.COM #define	PCIE_AL_SXCBI_ARESETN		(1 << 19)
32510696SDavid.Hollister@Sun.COM #define	BDMA_SXCBI_ARESETN		(1 << 18)
32610696SDavid.Hollister@Sun.COM #define	BDMA_CORE_RSTB			(1 << 17)
32710696SDavid.Hollister@Sun.COM #define	DDR2_RSTB			(1 << 16)
32810696SDavid.Hollister@Sun.COM #define	GSM_RSTB			(1 << 8)
32910696SDavid.Hollister@Sun.COM #define	PCS_RSTB			(1 << 7)
33010696SDavid.Hollister@Sun.COM #define	PCS_LM_RSTB			(1 << 6)
33110696SDavid.Hollister@Sun.COM #define	PCS_AAP2_SS_RSTB		(1 << 5)
33210696SDavid.Hollister@Sun.COM #define	PCS_AAP1_SS_RSTB		(1 << 4)
33310696SDavid.Hollister@Sun.COM #define	PCS_IOP_SS_RSTB			(1 << 3)
33410696SDavid.Hollister@Sun.COM #define	PCS_SPBC_RSTB			(1 << 2)
33510696SDavid.Hollister@Sun.COM #define	RAAE_RSTB			(1 << 1)
33610696SDavid.Hollister@Sun.COM #define	OSSP_RSTB			(1 << 0)
33710696SDavid.Hollister@Sun.COM 
33810696SDavid.Hollister@Sun.COM 
33910696SDavid.Hollister@Sun.COM /*
34010696SDavid.Hollister@Sun.COM  * Timer Enables Register
34110696SDavid.Hollister@Sun.COM  */
34210696SDavid.Hollister@Sun.COM #define	PMCS_TENABLE_WINDOW_OFFSET	0x30000
34310696SDavid.Hollister@Sun.COM #define	PMCS_TENABLE_BASE		0x0209C
34410696SDavid.Hollister@Sun.COM #define	PMCS_TENABLE_MULTIPLIER		0x04000
34510696SDavid.Hollister@Sun.COM 
34610696SDavid.Hollister@Sun.COM /*
34710696SDavid.Hollister@Sun.COM  * Special register (MEMBASE-III) for Step 5.5 in soft reset sequence to set
34810696SDavid.Hollister@Sun.COM  * GPIO into tri-state mode (temporary workaround for 1.07.xx beta firmware)
34910696SDavid.Hollister@Sun.COM  */
35010696SDavid.Hollister@Sun.COM #define	PMCS_GPIO_TRISTATE_MODE_ADDR	0x9010C
35110696SDavid.Hollister@Sun.COM #define	PMCS_GPIO_TSMODE_BIT0		(1 << 0)
35210696SDavid.Hollister@Sun.COM #define	PMCS_GPIO_TSMODE_BIT1		(1 << 1)
35310696SDavid.Hollister@Sun.COM 
354*12060SDavid.Hollister@Sun.COM /*
355*12060SDavid.Hollister@Sun.COM  * SAS/SATA PHY Layer Registers
356*12060SDavid.Hollister@Sun.COM  * These are in MEMBASE-III (i.e. in GSM space)
357*12060SDavid.Hollister@Sun.COM  */
358*12060SDavid.Hollister@Sun.COM #define	OPEN_RETRY_INTERVAL(phy)	\
359*12060SDavid.Hollister@Sun.COM 	(phy < 4) ? (0x330B4 + (0x4000 * (phy))) : \
360*12060SDavid.Hollister@Sun.COM 	(0x430B4 + (0x4000 * (phy - 4)))
361*12060SDavid.Hollister@Sun.COM 
362*12060SDavid.Hollister@Sun.COM #define	OPEN_RETRY_INTERVAL_DEF		20
363*12060SDavid.Hollister@Sun.COM #define	OPEN_RETRY_INTERVAL_MAX		0x7FFF
36410696SDavid.Hollister@Sun.COM 
36510696SDavid.Hollister@Sun.COM /*
36610696SDavid.Hollister@Sun.COM  * Register Access Inline Functions
36710696SDavid.Hollister@Sun.COM  */
36810696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_msgunit(pmcs_hw_t *, uint32_t);
36911980SDavid.Hollister@Sun.COM uint32_t pmcs_rd_gsm_reg(pmcs_hw_t *, uint8_t, uint32_t);
37010696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_topunit(pmcs_hw_t *, uint32_t);
37110696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_mpi_tbl(pmcs_hw_t *, uint32_t);
37210696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_gst_tbl(pmcs_hw_t *, uint32_t);
37310696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_iqc_tbl(pmcs_hw_t *, uint32_t);
37410696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_oqc_tbl(pmcs_hw_t *, uint32_t);
37510696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_iqci(pmcs_hw_t *, uint32_t);
37610696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_iqpi(pmcs_hw_t *, uint32_t);
37710696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_oqci(pmcs_hw_t *, uint32_t);
37810696SDavid.Hollister@Sun.COM uint32_t pmcs_rd_oqpi(pmcs_hw_t *, uint32_t);
37910696SDavid.Hollister@Sun.COM 
38010696SDavid.Hollister@Sun.COM void pmcs_wr_msgunit(pmcs_hw_t *, uint32_t, uint32_t);
38110696SDavid.Hollister@Sun.COM void pmcs_wr_gsm_reg(pmcs_hw_t *, uint32_t, uint32_t);
38210696SDavid.Hollister@Sun.COM void pmcs_wr_topunit(pmcs_hw_t *, uint32_t, uint32_t);
38310696SDavid.Hollister@Sun.COM void pmcs_wr_mpi_tbl(pmcs_hw_t *, uint32_t, uint32_t);
38410696SDavid.Hollister@Sun.COM void pmcs_wr_gst_tbl(pmcs_hw_t *, uint32_t, uint32_t);
38510696SDavid.Hollister@Sun.COM void pmcs_wr_iqc_tbl(pmcs_hw_t *, uint32_t, uint32_t);
38610696SDavid.Hollister@Sun.COM void pmcs_wr_oqc_tbl(pmcs_hw_t *, uint32_t, uint32_t);
38710696SDavid.Hollister@Sun.COM void pmcs_wr_iqci(pmcs_hw_t *, uint32_t, uint32_t);
38810696SDavid.Hollister@Sun.COM void pmcs_wr_iqpi(pmcs_hw_t *, uint32_t, uint32_t);
38910696SDavid.Hollister@Sun.COM void pmcs_wr_oqci(pmcs_hw_t *, uint32_t, uint32_t);
39010696SDavid.Hollister@Sun.COM void pmcs_wr_oqpi(pmcs_hw_t *, uint32_t, uint32_t);
39110696SDavid.Hollister@Sun.COM 
39210696SDavid.Hollister@Sun.COM #ifdef	__cplusplus
39310696SDavid.Hollister@Sun.COM }
39410696SDavid.Hollister@Sun.COM #endif
39510696SDavid.Hollister@Sun.COM #endif	/* _PMCS_REG_H */
396