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