1*7532SSean.Ye@Sun.COM /* 2*7532SSean.Ye@Sun.COM * CDDL HEADER START 3*7532SSean.Ye@Sun.COM * 4*7532SSean.Ye@Sun.COM * The contents of this file are subject to the terms of the 5*7532SSean.Ye@Sun.COM * Common Development and Distribution License (the "License"). 6*7532SSean.Ye@Sun.COM * You may not use this file except in compliance with the License. 7*7532SSean.Ye@Sun.COM * 8*7532SSean.Ye@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*7532SSean.Ye@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*7532SSean.Ye@Sun.COM * See the License for the specific language governing permissions 11*7532SSean.Ye@Sun.COM * and limitations under the License. 12*7532SSean.Ye@Sun.COM * 13*7532SSean.Ye@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*7532SSean.Ye@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*7532SSean.Ye@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*7532SSean.Ye@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*7532SSean.Ye@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*7532SSean.Ye@Sun.COM * 19*7532SSean.Ye@Sun.COM * CDDL HEADER END 20*7532SSean.Ye@Sun.COM */ 21*7532SSean.Ye@Sun.COM 22*7532SSean.Ye@Sun.COM /* 23*7532SSean.Ye@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*7532SSean.Ye@Sun.COM * Use is subject to license terms. 25*7532SSean.Ye@Sun.COM */ 26*7532SSean.Ye@Sun.COM 27*7532SSean.Ye@Sun.COM #ifndef _NB5000_H 28*7532SSean.Ye@Sun.COM #define _NB5000_H 29*7532SSean.Ye@Sun.COM 30*7532SSean.Ye@Sun.COM #ifdef __cplusplus 31*7532SSean.Ye@Sun.COM extern "C" { 32*7532SSean.Ye@Sun.COM #endif 33*7532SSean.Ye@Sun.COM 34*7532SSean.Ye@Sun.COM #include <sys/cpu_module.h> 35*7532SSean.Ye@Sun.COM 36*7532SSean.Ye@Sun.COM #define NB_5000_MAX_MEM_CONTROLLERS 2 37*7532SSean.Ye@Sun.COM #define NB_MAX_DIMMS_PER_CHANNEL (nb_chipset == INTEL_NB_7300 ? 8 : 4) 38*7532SSean.Ye@Sun.COM #define NB_MEM_BRANCH_SELECT (nb_chipset == INTEL_NB_5400 ? 2 : 3) 39*7532SSean.Ye@Sun.COM #define NB_MAX_MEM_BRANCH_SELECT 3 40*7532SSean.Ye@Sun.COM #define NB_MEM_RANK_SELECT (nb_chipset == INTEL_NB_7300 ? 7 : 5) 41*7532SSean.Ye@Sun.COM #define NB_MAX_MEM_RANK_SELECT 7 42*7532SSean.Ye@Sun.COM #define NB_RANKS_IN_SELECT 4 43*7532SSean.Ye@Sun.COM #define NB_PCI_DEV 10 44*7532SSean.Ye@Sun.COM 45*7532SSean.Ye@Sun.COM #define NB_PCI_NFUNC 4 46*7532SSean.Ye@Sun.COM 47*7532SSean.Ye@Sun.COM #define DOCMD_PEX_MASK 0x00 48*7532SSean.Ye@Sun.COM #define DOCMD_5400_PEX_MASK 0x000 49*7532SSean.Ye@Sun.COM #define DOCMD_PEX 0xf0 50*7532SSean.Ye@Sun.COM #define DOCMD_5400_PEX 0xff0 51*7532SSean.Ye@Sun.COM 52*7532SSean.Ye@Sun.COM #define SPD_BUSY 0x1000 53*7532SSean.Ye@Sun.COM #define SPD_BUS_ERROR 0x2000 54*7532SSean.Ye@Sun.COM #define SPD_READ_DATA_VALID 0x8000 55*7532SSean.Ye@Sun.COM #define SPD_EEPROM_WRITE 0xa8000000 56*7532SSean.Ye@Sun.COM #define SPD_ADDR(slave, addr) ((((slave) & 7) << 24) | (((addr) & 0xff) << 16)) 57*7532SSean.Ye@Sun.COM 58*7532SSean.Ye@Sun.COM #define MC_MIRROR 0x10000 59*7532SSean.Ye@Sun.COM #define MC_PATROL_SCRUB 0x80 60*7532SSean.Ye@Sun.COM #define MC_DEMAND_SCRUB 0x40 61*7532SSean.Ye@Sun.COM 62*7532SSean.Ye@Sun.COM #define MCA_SCHDIMM 0x4000 63*7532SSean.Ye@Sun.COM 64*7532SSean.Ye@Sun.COM #define TLOW_MAX 0x100000000ULL 65*7532SSean.Ye@Sun.COM 66*7532SSean.Ye@Sun.COM #define MTR_PRESENT(mtr) \ 67*7532SSean.Ye@Sun.COM ((mtr) & (nb_chipset == INTEL_NB_5400 ? 0x0400 : 0x0100)) 68*7532SSean.Ye@Sun.COM #define MTR_ETHROTTLE(mtr) \ 69*7532SSean.Ye@Sun.COM ((mtr) & (nb_chipset == INTEL_NB_5400 ? 0x0200 : 0x0080)) 70*7532SSean.Ye@Sun.COM #define MTR_WIDTH(mtr) \ 71*7532SSean.Ye@Sun.COM (((mtr) & (nb_chipset == INTEL_NB_5400 ? 0x0100 : 0x0040)) ? 8 : 4) 72*7532SSean.Ye@Sun.COM #define MTR_NUMBANK(mtr) \ 73*7532SSean.Ye@Sun.COM (((mtr) & (nb_chipset == INTEL_NB_5400 ? 0x0040 : 0x0020)) ? 8 : 4) 74*7532SSean.Ye@Sun.COM #define MTR_NUMRANK(mtr) \ 75*7532SSean.Ye@Sun.COM (((mtr) & (nb_chipset == INTEL_NB_5400 ? 0x0020 : 0x0010)) ? 2 : 1) 76*7532SSean.Ye@Sun.COM #define MTR_NUMROW(mtr) ((((mtr) >> 2) & 3) + 13) 77*7532SSean.Ye@Sun.COM #define MTR_NUMCOL(mtr) (((mtr) & 3) + 10) 78*7532SSean.Ye@Sun.COM 79*7532SSean.Ye@Sun.COM #define MTR_DIMMSIZE(mtr) ((1ULL << (MTR_NUMCOL(mtr) + MTR_NUMROW(mtr))) \ 80*7532SSean.Ye@Sun.COM * MTR_NUMRANK(mtr) * MTR_NUMBANK(mtr) * MTR_WIDTH(mtr)) 81*7532SSean.Ye@Sun.COM 82*7532SSean.Ye@Sun.COM /* FERR_GLOBAL and NERR_GLOBAL */ 83*7532SSean.Ye@Sun.COM #define GE_FERR_FSB3_FATAL 0x800000000ULL /* FSB3 Fatal Error */ 84*7532SSean.Ye@Sun.COM #define GE_FERR_FSB2_FATAL 0x400000000ULL /* FSB2 Fatal Error */ 85*7532SSean.Ye@Sun.COM #define GE_FERR_FSB3_NF 0x200000000ULL /* FSB3 Non-Fatal Error */ 86*7532SSean.Ye@Sun.COM #define GE_FERR_FSB2_NF 0x100000000ULL /* FSB2 Non-Fatal Error */ 87*7532SSean.Ye@Sun.COM 88*7532SSean.Ye@Sun.COM #define GE_INT_FATAL 0x80000000 /* North Bridge Internal Error */ 89*7532SSean.Ye@Sun.COM #define GE_DMA_FATAL 0x40000000 /* DMA engine Fatal Error */ 90*7532SSean.Ye@Sun.COM #define GE_FSB1_FATAL 0x20000000 /* FSB1 Fatal Error */ 91*7532SSean.Ye@Sun.COM #define GE_FSB0_FATAL 0x10000000 /* FSB0 Fatal Error */ 92*7532SSean.Ye@Sun.COM #define GE_FERR_FBD_FATAL 0x08000000 /* FBD channel Fatal Error */ 93*7532SSean.Ye@Sun.COM #define GE_FERR_FBD3_FATAL 0x08000000 /* FBD3 channel Fatal Error */ 94*7532SSean.Ye@Sun.COM #define GE_FERR_FBD2_FATAL 0x04000000 /* FBD2 channel Fatal Error */ 95*7532SSean.Ye@Sun.COM #define GE_FERR_FBD1_FATAL 0x02000000 /* FBD1 channel Fatal Error */ 96*7532SSean.Ye@Sun.COM #define GE_FERR_FBD0_FATAL 0x01000000 /* FBD0 channel Fatal Error */ 97*7532SSean.Ye@Sun.COM #define GE_FERR_THERMAL_FATAL 0x04000000 /* Thermal Fatal Error */ 98*7532SSean.Ye@Sun.COM #define GE_PCIEX9_FATAL 0x02000000 /* PCI Express device 9 Fatal Error */ 99*7532SSean.Ye@Sun.COM #define GE_PCIEX8_FATAL 0x01000000 /* PCI Express device 8 Fatal Error */ 100*7532SSean.Ye@Sun.COM #define GE_PCIEX7_FATAL 0x00800000 /* PCI Express device 7 Fatal Error */ 101*7532SSean.Ye@Sun.COM #define GE_PCIEX6_FATAL 0x00400000 /* PCI Express device 6 Fatal Error */ 102*7532SSean.Ye@Sun.COM #define GE_PCIEX5_FATAL 0x00200000 /* PCI Express device 5 Fatal Error */ 103*7532SSean.Ye@Sun.COM #define GE_PCIEX4_FATAL 0x00100000 /* PCI Express device 4 Fatal Error */ 104*7532SSean.Ye@Sun.COM #define GE_PCIEX3_FATAL 0x00080000 /* PCI Express device 3 Fatal Error */ 105*7532SSean.Ye@Sun.COM #define GE_PCIEX2_FATAL 0x00040000 /* PCI Express device 2 Fatal Error */ 106*7532SSean.Ye@Sun.COM #define GE_PCIEX1_FATAL 0x00020000 /* PCI Express device 1 Fatal Error */ 107*7532SSean.Ye@Sun.COM #define GE_ESI_FATAL 0x00010000 /* ESI Fatal Error */ 108*7532SSean.Ye@Sun.COM #define GE_INT_NF 0x00008000 /* North Bridge Internal Error */ 109*7532SSean.Ye@Sun.COM #define GE_DMA_NF 0x00004000 /* DMA engine Non-Fatal Error */ 110*7532SSean.Ye@Sun.COM #define GE_FSB1_NF 0x00002000 /* FSB1 Non-Fatal Error */ 111*7532SSean.Ye@Sun.COM #define GE_FSB0_NF 0x00001000 /* FSB0 Non-Fatal Error */ 112*7532SSean.Ye@Sun.COM #define GE_FERR_FBD3_NF 0x00000800 /* FBD channel 3 Non-Fatal Error */ 113*7532SSean.Ye@Sun.COM #define GE_FERR_FBD2_NF 0x00000400 /* FBD channel 2 Non-Fatal Error */ 114*7532SSean.Ye@Sun.COM #define GE_FERR_FBD1_NF 0x00000200 /* FBD channel 1 Non-Fatal Error */ 115*7532SSean.Ye@Sun.COM #define GE_FERR_FBD0_NF 0x00000100 /* FBD channel 0 Non-Fatal Error */ 116*7532SSean.Ye@Sun.COM #define GE_FERR_FBD_NF 0x00000800 /* FBD channel Non-Fatal Error */ 117*7532SSean.Ye@Sun.COM #define GE_FERR_THERMAL_NF 0x00000400 /* Thermal Non-Fatal Error */ 118*7532SSean.Ye@Sun.COM #define GE_PCIEX9_NF 0x00000200 /* PCI Express dev 9 Non-Fatal Error */ 119*7532SSean.Ye@Sun.COM #define GE_PCIEX8_NF 0x00000100 /* PCI Express dev 8 Non-Fatal Error */ 120*7532SSean.Ye@Sun.COM #define GE_PCIEX7_NF 0x00000080 /* PCI Express dev 7 Non-Fatal Error */ 121*7532SSean.Ye@Sun.COM #define GE_PCIEX6_NF 0x00000040 /* PCI Express dev 6 Non-Fatal Error */ 122*7532SSean.Ye@Sun.COM #define GE_PCIEX5_NF 0x00000020 /* PCI Express dev 5 Non-Fatal Error */ 123*7532SSean.Ye@Sun.COM #define GE_PCIEX4_NF 0x00000010 /* PCI Express dev 4 Non-Fatal Error */ 124*7532SSean.Ye@Sun.COM #define GE_PCIEX3_NF 0x00000008 /* PCI Express dev 3 Non-Fatal Error */ 125*7532SSean.Ye@Sun.COM #define GE_PCIEX2_NF 0x00000004 /* PCI Express dev 2 Non-Fatal Error */ 126*7532SSean.Ye@Sun.COM #define GE_PCIEX1_NF 0x00000002 /* PCI Express dev 1 Non-Fatal Error */ 127*7532SSean.Ye@Sun.COM #define GE_ESI_NF 0x00000001 /* ESI Non-Fatal Error */ 128*7532SSean.Ye@Sun.COM 129*7532SSean.Ye@Sun.COM #define GE_NERR_FSB2_FATAL 0x08000000 /* FSB2 Fatal Error */ 130*7532SSean.Ye@Sun.COM #define GE_NERR_FSB3_FATAL 0x04000000 /* FSB3 Fatal Error */ 131*7532SSean.Ye@Sun.COM #define GE_NERR_FBD_FATAL 0x01000000 /* FBD channel Fatal Error */ 132*7532SSean.Ye@Sun.COM #define GE_NERR_FSB2_NF 0x00000800 /* FSB2 Non-Fatal Error */ 133*7532SSean.Ye@Sun.COM #define GE_NERR_FSB3_NF 0x00000400 /* FSB3 Non-Fatal Error */ 134*7532SSean.Ye@Sun.COM #define GE_NERR_FBD_NF 0x00000100 /* FBD channel Non-Fatal Error */ 135*7532SSean.Ye@Sun.COM 136*7532SSean.Ye@Sun.COM #define ERR_FAT_FSB_F9 0x20 /* F9Msk FSB Protocol */ 137*7532SSean.Ye@Sun.COM #define ERR_FAT_FSB_F2 0x08 /* F2Msk Unsupported Bus Transaction */ 138*7532SSean.Ye@Sun.COM #define ERR_FAT_FSB_F1 0x01 /* F1Msk Request/Address Parity */ 139*7532SSean.Ye@Sun.COM 140*7532SSean.Ye@Sun.COM #define ERR_NF_FSB_F7 0x04 /* F7Msk Detected MCERR */ 141*7532SSean.Ye@Sun.COM #define ERR_NF_FSB_F8 0x02 /* F8Msk B-INIT */ 142*7532SSean.Ye@Sun.COM #define ERR_NF_FSB_F6 0x01 /* F6Msk Data Parity */ 143*7532SSean.Ye@Sun.COM 144*7532SSean.Ye@Sun.COM #define EMASK_FSB_F1 0x0001 /* F1Msk Request/Address Parity */ 145*7532SSean.Ye@Sun.COM #define EMASK_FSB_F2 0x0002 /* F2Msk Unsupported Bus Transaction */ 146*7532SSean.Ye@Sun.COM #define EMASK_FSB_F6 0x0020 /* F6Msk Data Parity */ 147*7532SSean.Ye@Sun.COM #define EMASK_FSB_F7 0x0040 /* F7Msk Detected MCERR */ 148*7532SSean.Ye@Sun.COM #define EMASK_FSB_F8 0x0080 /* F8Msk B-INIT */ 149*7532SSean.Ye@Sun.COM #define EMASK_FSB_F9 0x0100 /* F9Msk FSB Protocol */ 150*7532SSean.Ye@Sun.COM 151*7532SSean.Ye@Sun.COM #define EMASK_FSB_FATAL (EMASK_FSB_F1 | EMASK_FSB_F2 | EMASK_FSB_F9) 152*7532SSean.Ye@Sun.COM #define EMASK_FSB_NF (EMASK_FSB_F6 | EMASK_FSB_F7 | EMASK_FSB_F8) 153*7532SSean.Ye@Sun.COM 154*7532SSean.Ye@Sun.COM #define ERR_FBD_CH_SHIFT 28 /* channel index in fat_fbd and nf_fbd */ 155*7532SSean.Ye@Sun.COM 156*7532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M23 0x00400000 /* M23Err Non-Redundant Fast Reset */ 157*7532SSean.Ye@Sun.COM /* Timeout */ 158*7532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M3 0x00000004 /* M3Err >Tmid thermal event with */ 159*7532SSean.Ye@Sun.COM /* intelligent throttling disabled */ 160*7532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M2 0x00000002 /* M2Err memory or FBD configuration */ 161*7532SSean.Ye@Sun.COM /* CRC read error */ 162*7532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M1 0x00000001 /* M1Err memory write error on */ 163*7532SSean.Ye@Sun.COM /* non-redundant retry or FBD */ 164*7532SSean.Ye@Sun.COM /* configuration write error on retry */ 165*7532SSean.Ye@Sun.COM #define ERR_FAT_FBD_MASK 0x007fffff 166*7532SSean.Ye@Sun.COM 167*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M29 0x02000000 /* M29Err DIMM-Isolation Completed */ 168*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M28 0x01000000 /* M28Err DIMM-Spare Copy Completed */ 169*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M27 0x00800000 /* M27Err DIMM-Spare Copy Initiated */ 170*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M26 0x00400000 /* M26Err Redundant Fast Reset */ 171*7532SSean.Ye@Sun.COM /* Timeout */ 172*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M25 0x00200000 /* M25Err Memory write error on */ 173*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M24 0x00100000 /* M24Err refresh error */ 174*7532SSean.Ye@Sun.COM /* redundant retry */ 175*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M22 0x00040000 /* M22Err SPD protocol */ 176*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M21 0x00020000 /* M21Err FBD Northbound parity on */ 177*7532SSean.Ye@Sun.COM /* FBD sync status */ 178*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M20 0x00010000 /* M20Err Correctable patrol data ECC */ 179*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M19 0x00008000 /* M19Err Correctasble resilver or */ 180*7532SSean.Ye@Sun.COM /* spare-copy data ECC */ 181*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M18 0x00004000 /* M18Err Correctable Mirrored demand */ 182*7532SSean.Ye@Sun.COM /* data ECC */ 183*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M17 0x00002000 /* M17Err Correctable Non-mirrored */ 184*7532SSean.Ye@Sun.COM /* demand data ECC */ 185*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M16 0x00001000 /* M16Err channel failed over */ 186*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M15 0x00000800 /* M15Err Memory or FBD configuration */ 187*7532SSean.Ye@Sun.COM /* CRC read error */ 188*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M14 0x00000400 /* M14Err FBD configuration write */ 189*7532SSean.Ye@Sun.COM /* error on first attempt */ 190*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M13 0x00000200 /* M13Err Memory write error on first */ 191*7532SSean.Ye@Sun.COM /* attempt */ 192*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M12 0x00000100 /* M12Err Non-Aliased uncorrectable */ 193*7532SSean.Ye@Sun.COM /* patrol data ECC */ 194*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M11 0x00000080 /* M11Err Non-Aliased uncorrectable */ 195*7532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 196*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M10 0x00000040 /* M10Err Non-Aliased uncorrectable */ 197*7532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 198*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M9 0x00000020 /* M9Err Non-Aliased uncorrectable */ 199*7532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 200*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M8 0x00000010 /* M8Err Aliased uncorrectable */ 201*7532SSean.Ye@Sun.COM /* patrol data ECC */ 202*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M7 0x00000008 /* M7Err Aliased uncorrectable */ 203*7532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 204*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M6 0x00000004 /* M6Err Aliased uncorrectable */ 205*7532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 206*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M5 0x00000002 /* M5Err Aliased uncorrectable */ 207*7532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 208*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_M4 0x00000001 /* M4Err uncorrectable data ECC on */ 209*7532SSean.Ye@Sun.COM /* replay */ 210*7532SSean.Ye@Sun.COM 211*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_MASK 0x01ffffff 212*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_ECC_UE (ERR_NF_FBD_M12|ERR_NF_FBD_M11|ERR_NF_FBD_M10| \ 213*7532SSean.Ye@Sun.COM ERR_NF_FBD_M9|ERR_NF_FBD_M8|ERR_NF_FBD_M7|ERR_NF_FBD_M6|ERR_NF_FBD_M5| \ 214*7532SSean.Ye@Sun.COM ERR_NF_FBD_M4) 215*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_MA (ERR_NF_FBD_M14) 216*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_ECC_CE (ERR_NF_FBD_M20|ERR_NF_FBD_M19|ERR_NF_FBD_M18| \ 217*7532SSean.Ye@Sun.COM ERR_NF_FBD_M17|ERR_NF_FBD_M15|ERR_NF_FBD_M21) 218*7532SSean.Ye@Sun.COM #define ERR_NF_FBD_SPARE (ERR_NF_FBD_M28|ERR_NF_FBD_M27) 219*7532SSean.Ye@Sun.COM 220*7532SSean.Ye@Sun.COM #define EMASK_FBD_M29 0x10000000 /* M29Err DIMM-Isolation Completed */ 221*7532SSean.Ye@Sun.COM #define EMASK_FBD_M28 0x08000000 /* M28Err DIMM-Spare Copy Completed */ 222*7532SSean.Ye@Sun.COM #define EMASK_FBD_M27 0x04000000 /* M27Err DIMM-Spare Copy Initiated */ 223*7532SSean.Ye@Sun.COM #define EMASK_FBD_M26 0x02000000 /* M26Err Redundant Fast Reset */ 224*7532SSean.Ye@Sun.COM /* Timeout */ 225*7532SSean.Ye@Sun.COM #define EMASK_FBD_M25 0x01000000 /* M25Err Memory write error on */ 226*7532SSean.Ye@Sun.COM /* redundant retry */ 227*7532SSean.Ye@Sun.COM #define EMASK_FBD_M24 0x00800000 /* M24Err refresh error */ 228*7532SSean.Ye@Sun.COM #define EMASK_FBD_M23 0x00400000 /* M23Err Non-Redundant Fast Reset */ 229*7532SSean.Ye@Sun.COM /* Timeout */ 230*7532SSean.Ye@Sun.COM #define EMASK_FBD_M22 0x00200000 /* M22Err SPD protocol */ 231*7532SSean.Ye@Sun.COM #define EMASK_FBD_M21 0x00100000 /* M21Err FBD Northbound parity on */ 232*7532SSean.Ye@Sun.COM /* FBD sync status */ 233*7532SSean.Ye@Sun.COM #define EMASK_FBD_M20 0x00080000 /* M20Err Correctable patrol data ECC */ 234*7532SSean.Ye@Sun.COM #define EMASK_FBD_M19 0x00040000 /* M19Err Correctasble resilver or */ 235*7532SSean.Ye@Sun.COM /* spare-copy data ECC */ 236*7532SSean.Ye@Sun.COM #define EMASK_FBD_M18 0x00020000 /* M18Err Correctable Mirrored demand */ 237*7532SSean.Ye@Sun.COM /* data ECC */ 238*7532SSean.Ye@Sun.COM #define EMASK_FBD_M17 0x00010000 /* M17Err Correctable Non-mirrored */ 239*7532SSean.Ye@Sun.COM /* demand data ECC */ 240*7532SSean.Ye@Sun.COM #define EMASK_FBD_M16 0x00008000 /* M16Err channel failed over */ 241*7532SSean.Ye@Sun.COM #define EMASK_FBD_M15 0x00004000 /* M15Err Memory or FBD configuration */ 242*7532SSean.Ye@Sun.COM /* CRC read error */ 243*7532SSean.Ye@Sun.COM #define EMASK_FBD_M14 0x00002000 /* M14Err FBD configuration write */ 244*7532SSean.Ye@Sun.COM /* error on first attempt */ 245*7532SSean.Ye@Sun.COM #define EMASK_FBD_M13 0x00001000 /* M13Err Memory write error on first */ 246*7532SSean.Ye@Sun.COM /* attempt */ 247*7532SSean.Ye@Sun.COM #define EMASK_FBD_M12 0x00000800 /* M12Err Non-Aliased uncorrectable */ 248*7532SSean.Ye@Sun.COM /* patrol data ECC */ 249*7532SSean.Ye@Sun.COM #define EMASK_FBD_M11 0x00000400 /* M11Err Non-Aliased uncorrectable */ 250*7532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 251*7532SSean.Ye@Sun.COM #define EMASK_FBD_M10 0x00000200 /* M10Err Non-Aliased uncorrectable */ 252*7532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 253*7532SSean.Ye@Sun.COM #define EMASK_FBD_M9 0x00000100 /* M9Err Non-Aliased uncorrectable */ 254*7532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 255*7532SSean.Ye@Sun.COM #define EMASK_FBD_M8 0x00000080 /* M8Err Aliased uncorrectable */ 256*7532SSean.Ye@Sun.COM /* patrol data ECC */ 257*7532SSean.Ye@Sun.COM #define EMASK_FBD_M7 0x00000040 /* M7Err Aliased uncorrectable */ 258*7532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 259*7532SSean.Ye@Sun.COM #define EMASK_FBD_M6 0x00000020 /* M6Err Aliased uncorrectable */ 260*7532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 261*7532SSean.Ye@Sun.COM #define EMASK_FBD_M5 0x00000010 /* M5Err Aliased uncorrectable */ 262*7532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 263*7532SSean.Ye@Sun.COM #define EMASK_FBD_M4 0x00000008 /* M4Err uncorrectable data ECC on */ 264*7532SSean.Ye@Sun.COM /* replay */ 265*7532SSean.Ye@Sun.COM #define EMASK_FBD_M3 0x00000004 /* M3Err >Tmid thermal event with */ 266*7532SSean.Ye@Sun.COM /* intelligent throttling disabled */ 267*7532SSean.Ye@Sun.COM #define EMASK_FBD_M2 0x00000002 /* M2Err memory or FBD configuration */ 268*7532SSean.Ye@Sun.COM /* CRC read error */ 269*7532SSean.Ye@Sun.COM #define EMASK_FBD_M1 0x00000001 /* M1Err memory write error on */ 270*7532SSean.Ye@Sun.COM /* non-redundant retry or FBD */ 271*7532SSean.Ye@Sun.COM /* configuration write error on retry */ 272*7532SSean.Ye@Sun.COM /* MCH 7300 errata 34 (reserved mask bits) */ 273*7532SSean.Ye@Sun.COM #define EMASK_5000_FBD_RES (EMASK_FBD_M24|EMASK_FBD_M16) 274*7532SSean.Ye@Sun.COM #define EMASK_FBD_RES (nb_chipset == INTEL_NB_5400 ? 0 : EMASK_5000_FBD_RES) 275*7532SSean.Ye@Sun.COM 276*7532SSean.Ye@Sun.COM #define EMASK_FBD_FATAL (EMASK_FBD_M23|EMASK_FBD_M3|EMASK_FBD_M2|EMASK_FBD_M1) 277*7532SSean.Ye@Sun.COM #define EMASK_FBD_NF (EMASK_FBD_M28|EMASK_FBD_M27|EMASK_FBD_M26|EMASK_FBD_M25| \ 278*7532SSean.Ye@Sun.COM EMASK_FBD_M22|EMASK_FBD_M21|EMASK_FBD_M20|EMASK_FBD_M19|EMASK_FBD_M18| \ 279*7532SSean.Ye@Sun.COM EMASK_FBD_M17|EMASK_FBD_M15|EMASK_FBD_M14|EMASK_FBD_M13|EMASK_FBD_M12| \ 280*7532SSean.Ye@Sun.COM EMASK_FBD_M11|EMASK_FBD_M10|EMASK_FBD_M9|EMASK_FBD_M8|EMASK_FBD_M7| \ 281*7532SSean.Ye@Sun.COM EMASK_FBD_M6|EMASK_FBD_M5|EMASK_FBD_M4) 282*7532SSean.Ye@Sun.COM #define EMASK_5400_FBD_FATAL (EMASK_FBD_M23|EMASK_FBD_M2|EMASK_FBD_M1) 283*7532SSean.Ye@Sun.COM #define EMASK_5400_FBD_NF (EMASK_FBD_M29|EMASK_FBD_M28|EMASK_FBD_M27| \ 284*7532SSean.Ye@Sun.COM EMASK_FBD_M26|EMASK_FBD_M25|EMASK_FBD_M24|EMASK_FBD_M22|EMASK_FBD_M21| \ 285*7532SSean.Ye@Sun.COM EMASK_FBD_M20|EMASK_FBD_M19|EMASK_FBD_M18|EMASK_FBD_M17|EMASK_FBD_M16| \ 286*7532SSean.Ye@Sun.COM EMASK_FBD_M15|EMASK_FBD_M14|EMASK_FBD_M13|EMASK_FBD_M12| \ 287*7532SSean.Ye@Sun.COM EMASK_FBD_M11|EMASK_FBD_M10|EMASK_FBD_M9|EMASK_FBD_M8|EMASK_FBD_M7| \ 288*7532SSean.Ye@Sun.COM EMASK_FBD_M6|EMASK_FBD_M5|EMASK_FBD_M4) 289*7532SSean.Ye@Sun.COM 290*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B14 0x0400 /* B14Msk SF Scrub DBE */ 291*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B12 0x0100 /* B12Msk Parity Protected register */ 292*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B25 0x0080 /* B25Msk illegal HISMM/TSEG access */ 293*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B23 0x0040 /* B23Msk Vt Unaffiliated port error */ 294*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B21 0x0020 /* B21Msk illegal way */ 295*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B7 0x0010 /* B7Msk Multiple ECC error in any of */ 296*7532SSean.Ye@Sun.COM /* the ways during SF lookup */ 297*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B4 0x08 /* B4Msk Virtual pin port error */ 298*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B3 0x04 /* B3Msk Coherency violation error for EWB */ 299*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B2 0x02 /* B2Msk Multi-tag hit SF */ 300*7532SSean.Ye@Sun.COM #define ERR_FAT_INT_B1 0x01 /* B1Msk DM parity error */ 301*7532SSean.Ye@Sun.COM 302*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B27 0x4000 /* B27Msk Request received when in S1 */ 303*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B24 0x2000 /* B24Msk DFXERR */ 304*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B19 0x1000 /* B19Msk scrub SBE (SF) */ 305*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B18 0x0800 /* B18Msk perfmon task completion */ 306*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B17 0x0400 /* B17Msk JTAG/TAP error status */ 307*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B16 0x0200 /* B16Msk SMBus error status */ 308*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B22 0x0080 /* B22Msk Victim ROM parity */ 309*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B20 0x0040 /* B20Msk Configuration write abort */ 310*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B11 0x0020 /* B11Msk Victim Ram parity error */ 311*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B10 0x0010 /* B10Msk DM Parity */ 312*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B9 0x0008 /* B9Msk illeagl access */ 313*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B8 0x0004 /* B8Msk SF Coherency Error for BIL */ 314*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B6 0x0002 /* B6Msk Single ECC error on SF lookup */ 315*7532SSean.Ye@Sun.COM #define ERR_NF_INT_B5 0x0001 /* B5Msk Address Map error */ 316*7532SSean.Ye@Sun.COM 317*7532SSean.Ye@Sun.COM #define NERR_NF_5400_INT_B26 0x0004 /* B26Msk Illeagl Access to */ 318*7532SSean.Ye@Sun.COM /* non-coherent address space */ 319*7532SSean.Ye@Sun.COM 320*7532SSean.Ye@Sun.COM #define EMASK_INT_RES 0x02000000 /* Do not change */ 321*7532SSean.Ye@Sun.COM #define EMASK_INT_B25 0x01000000 /* B25Msk illegal HISMM/TSEG access */ 322*7532SSean.Ye@Sun.COM #define EMASK_INT_B23 0x00400000 /* B23Msk Vt Unaffiliated port error */ 323*7532SSean.Ye@Sun.COM #define EMASK_INT_B22 0x00200000 /* B22Msk Victim ROM parity */ 324*7532SSean.Ye@Sun.COM #define EMASK_INT_B21 0x00100000 /* B21Msk illegal way */ 325*7532SSean.Ye@Sun.COM #define EMASK_INT_B20 0x00080000 /* B20Msk Configuration write abort */ 326*7532SSean.Ye@Sun.COM #define EMASK_INT_B19 0x00040000 /* B19Msk Scrub SBE */ 327*7532SSean.Ye@Sun.COM #define EMASK_INT_B14 0x00002000 /* B14Msk Scrub DBE */ 328*7532SSean.Ye@Sun.COM #define EMASK_INT_B12 0x00000800 /* B12Msk Parity Protected */ 329*7532SSean.Ye@Sun.COM #define EMASK_INT_B11 0x00000400 /* B11Msk Victim Ram parity error */ 330*7532SSean.Ye@Sun.COM #define EMASK_INT_B10 0x00000200 /* B10Msk DM Parity */ 331*7532SSean.Ye@Sun.COM #define EMASK_INT_B9 0x00000100 /* B9Msk Illegal Accesss */ 332*7532SSean.Ye@Sun.COM 333*7532SSean.Ye@Sun.COM #define EMASK_INT_B8 0x80 /* B8Msk SF Coherency Error for BIL */ 334*7532SSean.Ye@Sun.COM #define EMASK_INT_B7 0x40 /* B7Msk Multiple ECC error in any of */ 335*7532SSean.Ye@Sun.COM /* the ways during SF lookup */ 336*7532SSean.Ye@Sun.COM #define EMASK_INT_B6 0x20 /* B6Msk Single ECC error on SF lookup */ 337*7532SSean.Ye@Sun.COM #define EMASK_INT_B5 0x10 /* B5Msk Address Map error */ 338*7532SSean.Ye@Sun.COM #define EMASK_INT_B4 0x08 /* B4Msk Virtual pin port error */ 339*7532SSean.Ye@Sun.COM #define EMASK_INT_B3 0x04 /* B3Msk Coherency violation error for EWB */ 340*7532SSean.Ye@Sun.COM #define EMASK_INT_B2 0x02 /* B2Msk Multi-tag hit SF */ 341*7532SSean.Ye@Sun.COM #define EMASK_INT_B1 0x01 /* B1Msk DM parity error */ 342*7532SSean.Ye@Sun.COM 343*7532SSean.Ye@Sun.COM /* MCH 5000 errata 2 */ 344*7532SSean.Ye@Sun.COM #define EMASK_INT_5000 EMASK_INT_B1 345*7532SSean.Ye@Sun.COM /* MCH 7300 errata 17 & 20 */ 346*7532SSean.Ye@Sun.COM #define EMASK_INT_7300 (EMASK_INT_B3|EMASK_INT_B1) 347*7532SSean.Ye@Sun.COM /* MCH 7300 errata 17,20 & 21 */ 348*7532SSean.Ye@Sun.COM #define EMASK_INT_7300_STEP_0 (EMASK_INT_B7|EMASK_INT_B3|EMASK_INT_B1) 349*7532SSean.Ye@Sun.COM 350*7532SSean.Ye@Sun.COM #define EMASK_INT_FATAL (EMASK_INT_B7|EMASK_INT_B4|EMASK_INT_B3|EMASK_INT_B2| \ 351*7532SSean.Ye@Sun.COM EMASK_INT_B1) 352*7532SSean.Ye@Sun.COM #define EMASK_INT_NF (EMASK_INT_B8|EMASK_INT_B6|EMASK_INT_B5) 353*7532SSean.Ye@Sun.COM #define GE_FBD_FATAL ((nb_chipset == INTEL_NB_5400) ? GE_FERR_FBD_FATAL : \ 354*7532SSean.Ye@Sun.COM (GE_FERR_FBD0_FATAL|GE_FERR_FBD1_FATAL|GE_FERR_FBD2_FATAL| \ 355*7532SSean.Ye@Sun.COM GE_FERR_FBD3_FATAL)) 356*7532SSean.Ye@Sun.COM #define GE_FBD_NF ((nb_chipset == INTEL_NB_5400) ? GE_FERR_FBD_NF : \ 357*7532SSean.Ye@Sun.COM (GE_FERR_FBD0_NF|GE_FERR_FBD1_NF|GE_FERR_FBD2_NF|GE_FERR_FBD3_NF)) 358*7532SSean.Ye@Sun.COM 359*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO18 0x00200000 /* ESI Reset timeout */ 360*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO2 0x00100000 /* Received an unsupported */ 361*7532SSean.Ye@Sun.COM /* request */ 362*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO9 0x00040000 /* Malformed TLP Status */ 363*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO10 0x00020000 /* Received buffer overflow */ 364*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO8 0x00010000 /* unexpected completion */ 365*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO7 0x00008000 /* completion abort */ 366*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO6 0x00004000 /* completion timeout */ 367*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO5 0x00002000 /* flow control protocol */ 368*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO4 0x00001000 /* poisoned TLP */ 369*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO19 0x00000020 /* surprise link down */ 370*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO0 0x00000010 /* data link protocol */ 371*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO3 0x00000001 /* training error */ 372*7532SSean.Ye@Sun.COM 373*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO20 0x00002000 /* Advisory Non Fatal */ 374*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO16 0x00001000 /* replay timer timeout */ 375*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO15 0x00000100 /* replay num pollover */ 376*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO14 0x00000080 /* bad DLLP */ 377*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO13 0x00000040 /* bad TLP */ 378*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO12 0x00000001 /* receiver error mask */ 379*7532SSean.Ye@Sun.COM 380*7532SSean.Ye@Sun.COM #define EMASK_RP_PEX_IO1 0x00000004 /* fatal message detect */ 381*7532SSean.Ye@Sun.COM #define EMASK_RP_PEX_IO11 0x00000002 /* uncorrectable message */ 382*7532SSean.Ye@Sun.COM #define EMASK_RP_PEX_IO17 0x00000001 /* correctable message */ 383*7532SSean.Ye@Sun.COM 384*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO33 0x00002000 /* Link autonomous BW change */ 385*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO32 0x00001000 /* Received CA Posted Req */ 386*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO31 0x00000800 /* Received UR Posted Req */ 387*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO30 0x00000400 /* VT-d internal HW */ 388*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO29 0x00000200 /* MSI address */ 389*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO28 0x00000100 /* Link BW change */ 390*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO27 0x00000080 /* stop & scream */ 391*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO26 0x00000040 /* Received CA response */ 392*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO25 0x00000020 /* Received UR response */ 393*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO24 0x00000010 /* Outbound poisoned data */ 394*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO23 0x00000008 /* VTd fault */ 395*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO22 0x00000004 /* internal header/ctl parity */ 396*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO18 0x00000002 /* ESI reset timeout */ 397*7532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_VPP 0x00000001 /* correctable message detect */ 398*7532SSean.Ye@Sun.COM 399*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO32 0x00800000 /* Received CA Posted Request */ 400*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO31 0x00400000 /* Received UR Posted Request */ 401*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO30 0x00200000 /* VT-d Internal HW */ 402*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO29 0x00100000 /* MSI Address */ 403*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO27 0x00040000 /* Stop & Scream */ 404*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO26 0x00020000 /* Received CA Response */ 405*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO25 0x00010000 /* Received UR Response */ 406*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO24 0x00008000 /* Outbound poisoned TLP */ 407*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO23 0x00004000 /* VT-d Fault */ 408*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO22 0x00002000 /* Internal Header/Control */ 409*7532SSean.Ye@Sun.COM /* Parity */ 410*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO18 0x00001000 /* ESI reset timeout */ 411*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO1 0x00000400 /* received fatal error msg */ 412*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO2 0x00000200 /* received unsupported req */ 413*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO9 0x00000100 /* malformed TLP */ 414*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO10 0x00000080 /* receiver buffer overflow */ 415*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO8 0x00000040 /* unexpected completion */ 416*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO7 0x00000020 /* completer abort */ 417*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO6 0x00000010 /* completion timeout */ 418*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO5 0x00000008 /* flow control protocol */ 419*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO4 0x00000004 /* poisoned TLP */ 420*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO19 0x00000002 /* surprise link down */ 421*7532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO0 0x00000001 /* data link layer protocol */ 422*7532SSean.Ye@Sun.COM #define PEX_FAT_IO19 0x00001000 /* surprise link down */ 423*7532SSean.Ye@Sun.COM #define PEX_FAT_IO18 0x00000800 /* ESI reset timeout */ 424*7532SSean.Ye@Sun.COM #define PEX_FAT_IO9 0x00000400 /* malformed TLP */ 425*7532SSean.Ye@Sun.COM #define PEX_FAT_IO10 0x00000200 /* receiver buffer overflow */ 426*7532SSean.Ye@Sun.COM #define PEX_FAT_IO8 0x00000100 /* unexpected completion */ 427*7532SSean.Ye@Sun.COM #define PEX_FAT_IO7 0x00000080 /* completer abort */ 428*7532SSean.Ye@Sun.COM #define PEX_FAT_IO6 0x00000040 /* completion timeout */ 429*7532SSean.Ye@Sun.COM #define PEX_FAT_IO5 0x00000020 /* flow control protocol */ 430*7532SSean.Ye@Sun.COM #define PEX_FAT_IO4 0x00000010 /* poisoned TLP */ 431*7532SSean.Ye@Sun.COM #define PEX_FAT_IO3 0x00000008 /* training error */ 432*7532SSean.Ye@Sun.COM #define PEX_FAT_IO2 0x00000004 /* received unsupported req */ 433*7532SSean.Ye@Sun.COM #define PEX_FAT_IO1 0x00000002 /* received fatal error message */ 434*7532SSean.Ye@Sun.COM #define PEX_FAT_IO0 0x00000001 /* data link layer protocol */ 435*7532SSean.Ye@Sun.COM 436*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO33 0x20000000 /* link autonomous bandwidth */ 437*7532SSean.Ye@Sun.COM /* change (correctable) */ 438*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO32 0x10000000 /* Received CA Posted Request */ 439*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO31 0x08000000 /* Received UR Posted Request */ 440*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO30 0x04000000 /* VT-d Internal HW */ 441*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO29 0x02000000 /* MSI Address */ 442*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO28 0x01000000 /* Link bandwidth change */ 443*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO27 0x00800000 /* Stop & Scream */ 444*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO26 0x00400000 /* Received CA Response */ 445*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO25 0x00200000 /* Received UR Response */ 446*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO24 0x00100000 /* Outbound poisoned TLP */ 447*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO23 0x00080000 /* VT-d Fault */ 448*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO11 0x00040000 /* received non fatal err msg */ 449*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO17 0x00020000 /* rec correctable error msg */ 450*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO2 0x00008000 /* Received unsupported req */ 451*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO9 0x00004000 /* Malformed TLP */ 452*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO10 0x00002000 /* Received buffer overflow */ 453*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO8 0x00001000 /* unexpected completion err */ 454*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO7 0x00000800 /* completion abort */ 455*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO6 0x00000400 /* completion timeout */ 456*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO5 0x00000200 /* flow control protocol */ 457*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO4 0x00000100 /* poisoned TLP */ 458*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO19 0x00000080 /* surprise link down */ 459*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO0 0x00000040 /* data link layer protocol */ 460*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO20 0x00000020 /* Advisory Non Fatel */ 461*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO16 0x00000010 /* replay timer timeout */ 462*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO15 0x00000008 /* replay num pollover */ 463*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO14 0x00000004 /* bad DLLP */ 464*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO13 0x00000002 /* bad TLP */ 465*7532SSean.Ye@Sun.COM #define PEX_5400_NF_IO12 0x00000001 /* receiver error mask */ 466*7532SSean.Ye@Sun.COM #define PEX_NF_IO19 0x00020000 /* surprise link down */ 467*7532SSean.Ye@Sun.COM #define PEX_NF_IO17 0x00010000 /* received correctable error message */ 468*7532SSean.Ye@Sun.COM #define PEX_NF_IO16 0x00008000 /* replay timer timeout */ 469*7532SSean.Ye@Sun.COM #define PEX_NF_IO15 0x00004000 /* replay num pollover */ 470*7532SSean.Ye@Sun.COM #define PEX_NF_IO14 0x00002000 /* bad DLLP */ 471*7532SSean.Ye@Sun.COM #define PEX_NF_IO13 0x00001000 /* bad TLP */ 472*7532SSean.Ye@Sun.COM #define PEX_NF_IO12 0x00000800 /* receiver error mask */ 473*7532SSean.Ye@Sun.COM #define PEX_NF_IO11 0x00000400 /* received non fatal error message */ 474*7532SSean.Ye@Sun.COM #define PEX_NF_IO10 0x00000200 /* Received buffer overflow */ 475*7532SSean.Ye@Sun.COM #define PEX_NF_IO9 0x00000100 /* Malformed TLP */ 476*7532SSean.Ye@Sun.COM #define PEX_NF_IO8 0x00000080 477*7532SSean.Ye@Sun.COM #define PEX_NF_IO7 0x00000040 478*7532SSean.Ye@Sun.COM #define PEX_NF_IO6 0x00000020 /* completion timeout */ 479*7532SSean.Ye@Sun.COM #define PEX_NF_IO5 0x00000010 /* flow control protocol */ 480*7532SSean.Ye@Sun.COM #define PEX_NF_IO4 0x00000008 /* poisoned TLP */ 481*7532SSean.Ye@Sun.COM #define PEX_NF_IO3 0x00000004 482*7532SSean.Ye@Sun.COM #define PEX_NF_IO2 0x00000002 483*7532SSean.Ye@Sun.COM #define PEX_NF_IO0 0x00000001 /* data link layer protocol */ 484*7532SSean.Ye@Sun.COM 485*7532SSean.Ye@Sun.COM #define ERR_FAT_TH2 0x02 /* >tmid thermal event */ 486*7532SSean.Ye@Sun.COM #define ERR_FAT_TH1 0x01 /* Catastrophic on-die thermal event */ 487*7532SSean.Ye@Sun.COM 488*7532SSean.Ye@Sun.COM #define ERR_NF_TH5 0x10 /* timeout on cooling update */ 489*7532SSean.Ye@Sun.COM #define ERR_NF_TH4 0x08 /* TSMAX update */ 490*7532SSean.Ye@Sun.COM #define ERR_NF_TH3 0x04 /* on-die throttling event */ 491*7532SSean.Ye@Sun.COM 492*7532SSean.Ye@Sun.COM #define EMASK_TH5 0x0010 /* TH5Msk timeout on cooling update */ 493*7532SSean.Ye@Sun.COM #define EMASK_TH4 0x0008 /* TH4Msk TSMAX update */ 494*7532SSean.Ye@Sun.COM #define EMASK_TH3 0x0004 /* TH3Msk on-die throttling event */ 495*7532SSean.Ye@Sun.COM #define EMASK_TH2 0x0002 /* TH2Msk >tmid thermal event */ 496*7532SSean.Ye@Sun.COM #define EMASK_TH1 0x0001 /* TH1Msk Catastrophic on-die thermal event */ 497*7532SSean.Ye@Sun.COM 498*7532SSean.Ye@Sun.COM #define GE_FERR_FSB(ferr) ( \ 499*7532SSean.Ye@Sun.COM ((ferr) & (GE_FSB0_FATAL|GE_FSB0_NF)) ? 0 : \ 500*7532SSean.Ye@Sun.COM ((ferr) & (GE_FSB1_FATAL|GE_FSB1_NF)) ? 1 : \ 501*7532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300) && \ 502*7532SSean.Ye@Sun.COM ((ferr) & (GE_FERR_FSB2_FATAL|GE_FERR_FSB2_NF)) ? 2 : \ 503*7532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300) && \ 504*7532SSean.Ye@Sun.COM ((ferr) & (GE_FERR_FSB3_FATAL|GE_FERR_FSB3_NF)) ? 3 : \ 505*7532SSean.Ye@Sun.COM -1) 506*7532SSean.Ye@Sun.COM 507*7532SSean.Ye@Sun.COM #define GE_NERR_TO_FERR_FSB(nerr) \ 508*7532SSean.Ye@Sun.COM ((((nerr) & GE_NERR_FSB3_FATAL) ? GE_FERR_FSB3_FATAL : 0) | \ 509*7532SSean.Ye@Sun.COM (((nerr) & GE_NERR_FSB2_FATAL) ? GE_FERR_FSB2_FATAL : 0) | \ 510*7532SSean.Ye@Sun.COM (((nerr) & GE_FSB1_FATAL) ? GE_FSB1_FATAL : 0) | \ 511*7532SSean.Ye@Sun.COM (((nerr) & GE_FSB0_FATAL) ? GE_FSB0_FATAL : 0) | \ 512*7532SSean.Ye@Sun.COM (((nerr) & GE_NERR_FSB3_NF) ? GE_FERR_FSB3_NF : 0) | \ 513*7532SSean.Ye@Sun.COM (((nerr) & GE_NERR_FSB2_NF) ? GE_FERR_FSB2_NF : 0) | \ 514*7532SSean.Ye@Sun.COM (((nerr) & GE_FSB1_NF) ? GE_FSB1_NF : 0) | \ 515*7532SSean.Ye@Sun.COM (((nerr) & GE_FSB0_NF) ? GE_FSB0_NF : 0)) 516*7532SSean.Ye@Sun.COM 517*7532SSean.Ye@Sun.COM #define GE_ERR_PEX(ferr) ( \ 518*7532SSean.Ye@Sun.COM ((ferr) & (GE_ESI_FATAL|GE_ESI_NF)) ? 0 : \ 519*7532SSean.Ye@Sun.COM ((nb_chipset == INTEL_NB_7300 || nb_chipset == INTEL_NB_5400) && \ 520*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX1_FATAL|GE_PCIEX1_NF))) ? 1 : \ 521*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX2_FATAL|GE_PCIEX2_NF)) ? 2 : \ 522*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX3_FATAL|GE_PCIEX3_NF)) ? 3 : \ 523*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX4_FATAL|GE_PCIEX4_NF)) ? 4 : \ 524*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX5_FATAL|GE_PCIEX5_NF)) ? 5 : \ 525*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX6_FATAL|GE_PCIEX6_NF)) ? 6 : \ 526*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX7_FATAL|GE_PCIEX7_NF)) ? 7 : \ 527*7532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_5400) && \ 528*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX8_FATAL|GE_PCIEX8_NF)) ? 8 : \ 529*7532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX9_FATAL|GE_PCIEX9_NF)) ? 9 : \ 530*7532SSean.Ye@Sun.COM -1) 531*7532SSean.Ye@Sun.COM 532*7532SSean.Ye@Sun.COM #define GE_FERR_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 533*7532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_FERR_FSB3_FATAL|GE_FERR_FSB2_FATAL| \ 534*7532SSean.Ye@Sun.COM GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL|GE_PCIEX7_FATAL| \ 535*7532SSean.Ye@Sun.COM GE_PCIEX6_FATAL| GE_PCIEX5_FATAL|GE_PCIEX4_FATAL|GE_PCIEX3_FATAL| \ 536*7532SSean.Ye@Sun.COM GE_PCIEX2_FATAL| GE_ESI_FATAL) : \ 537*7532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL| \ 538*7532SSean.Ye@Sun.COM GE_PCIEX7_FATAL|GE_PCIEX6_FATAL|GE_PCIEX5_FATAL|GE_PCIEX4_FATAL| \ 539*7532SSean.Ye@Sun.COM GE_PCIEX3_FATAL|GE_PCIEX2_FATAL|GE_ESI_FATAL)) 540*7532SSean.Ye@Sun.COM 541*7532SSean.Ye@Sun.COM #define GE_NERR_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 542*7532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_NERR_FSB3_FATAL|GE_NERR_FSB2_FATAL| \ 543*7532SSean.Ye@Sun.COM GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL|GE_PCIEX7_FATAL| \ 544*7532SSean.Ye@Sun.COM GE_PCIEX6_FATAL|GE_PCIEX5_FATAL|GE_PCIEX4_FATAL|GE_PCIEX3_FATAL| \ 545*7532SSean.Ye@Sun.COM GE_PCIEX2_FATALGE_ESI_FATAL) : \ 546*7532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL| \ 547*7532SSean.Ye@Sun.COM GE_PCIEX7_FATAL|GE_PCIEX6_FATAL|GE_PCIEX5_FATAL|GE_PCIEX4_FATAL| \ 548*7532SSean.Ye@Sun.COM GE_PCIEX3_FATAL|GE_PCIEX2_FATAL|GE_ESI_FATAL)) 549*7532SSean.Ye@Sun.COM 550*7532SSean.Ye@Sun.COM #define GE_PCIEX_FATAL (GE_ESI_FATAL|GE_PCIEX1_FATAL|GE_PCIEX2_FATAL| \ 551*7532SSean.Ye@Sun.COM GE_PCIEX3_FATAL|GE_PCIEX4_FATAL|GE_PCIEX5_FATAL|GE_PCIEX6_FATAL| \ 552*7532SSean.Ye@Sun.COM GE_PCIEX7_FATAL) 553*7532SSean.Ye@Sun.COM #define GE_PCIEX_NF (GE_ESI_NF|GE_PCIEX1_NF|GE_PCIEX2_NF|GE_PCIEX3_NF| \ 554*7532SSean.Ye@Sun.COM GE_PCIEX4_NF|GE_PCIEX5_NF|GE_PCIEX6_NF|GE_PCIEX7_NF) 555*7532SSean.Ye@Sun.COM #define GE_FERR_FSB_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 556*7532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL|GE_FERR_FSB2_FATAL|GE_FERR_FSB3_FATAL) : \ 557*7532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL)) 558*7532SSean.Ye@Sun.COM #define GE_NERR_FSB_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 559*7532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL|GE_NERR_FSB2_FATAL|GE_NERR_FSB3_FATAL) : \ 560*7532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL)) 561*7532SSean.Ye@Sun.COM #define GE_FERR_FSB_NF ((nb_chipset == INTEL_NB_7300) ? \ 562*7532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF|GE_FERR_FSB2_NF|GE_FERR_FSB3_NF) : \ 563*7532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF)) 564*7532SSean.Ye@Sun.COM #define GE_NERR_FSB_NF ((nb_chipset == INTEL_NB_7300) ? \ 565*7532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF|GE_NERR_FSB2_NF|GE_NERR_FSB3_NF) : \ 566*7532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF)) 567*7532SSean.Ye@Sun.COM 568*7532SSean.Ye@Sun.COM #define FERR_FBD_CHANNEL(reg) ((reg)>>28 & 3) 569*7532SSean.Ye@Sun.COM 570*7532SSean.Ye@Sun.COM #define NB5000_STEPPING() nb_pci_getw(0, 0, 0, 8, 0) 571*7532SSean.Ye@Sun.COM 572*7532SSean.Ye@Sun.COM #define FERR_GLOBAL_RD() ((nb_chipset == INTEL_NB_7300) ? \ 573*7532SSean.Ye@Sun.COM ((uint64_t)nb_pci_getl(0, 16, 2, \ 574*7532SSean.Ye@Sun.COM 0x48, 0) << 32) | nb_pci_getl(0, 16, 2, \ 575*7532SSean.Ye@Sun.COM 0x40, 0) : \ 576*7532SSean.Ye@Sun.COM (uint64_t)nb_pci_getl(0, 16, 2, 0x40, 0)) 577*7532SSean.Ye@Sun.COM #define NERR_GLOBAL_RD() nb_pci_getl(0, 16, 2, 0x44, 0) 578*7532SSean.Ye@Sun.COM #define FERR_FAT_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 579*7532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc0 : 0x40, ip) : \ 580*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x480 : 0x180, ip)) 581*7532SSean.Ye@Sun.COM #define FERR_NF_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 582*7532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc1 : 0x41, ip) : \ 583*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x481 : 0x181, ip)) 584*7532SSean.Ye@Sun.COM #define NERR_FAT_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 585*7532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc2 : 0x42, ip) : \ 586*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x482 : 0x182, ip)) 587*7532SSean.Ye@Sun.COM #define NERR_NF_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 588*7532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc3 : 0x43, ip) : \ 589*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x483 : 0x183, ip)) 590*7532SSean.Ye@Sun.COM 591*7532SSean.Ye@Sun.COM #define NRECFSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 592*7532SSean.Ye@Sun.COM nb_pci_getl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc4 : 0x44, 0) : \ 593*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 0, fsb ? 0x484 : 0x184, 0)) 594*7532SSean.Ye@Sun.COM #define NRECFSB_WR(fsb) \ 595*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) { \ 596*7532SSean.Ye@Sun.COM nb_pci_putl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc4 : 0x44, \ 597*7532SSean.Ye@Sun.COM 0); \ 598*7532SSean.Ye@Sun.COM } else { \ 599*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 0, fsb ? 0x484 : 0x184, 0); \ 600*7532SSean.Ye@Sun.COM } 601*7532SSean.Ye@Sun.COM #define RECFSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 602*7532SSean.Ye@Sun.COM nb_pci_getl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc8 : 0x48, 0) : \ 603*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 0, fsb ? 0x488 : 0x188, 0)) 604*7532SSean.Ye@Sun.COM #define RECFSB_WR(fsb) \ 605*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) { \ 606*7532SSean.Ye@Sun.COM nb_pci_putl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc8 : 0x48, \ 607*7532SSean.Ye@Sun.COM 0); \ 608*7532SSean.Ye@Sun.COM } else { \ 609*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 0, fsb ? 0x488 : 0x188, 0); \ 610*7532SSean.Ye@Sun.COM } 611*7532SSean.Ye@Sun.COM #define NRECADDR_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 612*7532SSean.Ye@Sun.COM ((uint64_t)(nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, \ 613*7532SSean.Ye@Sun.COM (fsb & 1) ? 0xd0 : 0x50, 0)) << 32) | \ 614*7532SSean.Ye@Sun.COM nb_pci_getl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xcc : 0x4c, 0) : \ 615*7532SSean.Ye@Sun.COM ((uint64_t)(nb_pci_getb(0, 16, 0, fsb ? 0x490 : 0x190, 0)) << 32) | \ 616*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 0, fsb ? 0x48c : 0x18c, 0)) 617*7532SSean.Ye@Sun.COM #define NRECADDR_WR(fsb) \ 618*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) { \ 619*7532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd0 : 0x50, \ 620*7532SSean.Ye@Sun.COM 0); \ 621*7532SSean.Ye@Sun.COM nb_pci_putl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xcc : 0x4c, \ 622*7532SSean.Ye@Sun.COM 0); \ 623*7532SSean.Ye@Sun.COM } else { \ 624*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x490 : 0x190, 0); \ 625*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 0, fsb ? 0x48c : 0x18c, 0); \ 626*7532SSean.Ye@Sun.COM } 627*7532SSean.Ye@Sun.COM #define EMASK_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 628*7532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd2 : 0x52, 0) : \ 629*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x492 : 0x192, 0)) 630*7532SSean.Ye@Sun.COM #define ERR0_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 631*7532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd4 : 0x54, 0) : \ 632*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x494 : 0x194, 0)) 633*7532SSean.Ye@Sun.COM #define ERR1_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 634*7532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd6 : 0x56, 0) : \ 635*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x496 : 0x196, 0)) 636*7532SSean.Ye@Sun.COM #define ERR2_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 637*7532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd8 : 0x58, 0) : \ 638*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x498 : 0x198, 0)) 639*7532SSean.Ye@Sun.COM #define MCERR_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 640*7532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xda : 0x5a, 0) : \ 641*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x49a : 0x19a, 0)) 642*7532SSean.Ye@Sun.COM 643*7532SSean.Ye@Sun.COM #define FERR_GLOBAL_WR(val) \ 644*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 645*7532SSean.Ye@Sun.COM { \ 646*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0x48, (uint32_t)(val >> 32)); \ 647*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0x40, (uint32_t)val); \ 648*7532SSean.Ye@Sun.COM } else { \ 649*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0x40, (uint32_t)val); \ 650*7532SSean.Ye@Sun.COM } 651*7532SSean.Ye@Sun.COM #define NERR_GLOBAL_WR(val) nb_pci_putl(0, 16, 2, 0x44, val) 652*7532SSean.Ye@Sun.COM #define FERR_FAT_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 653*7532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc0 : 0x40, val) : \ 654*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x480 : 0x180, val)) 655*7532SSean.Ye@Sun.COM #define FERR_NF_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 656*7532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc1 : 0x41, val) : \ 657*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x481 : 0x181, val)) 658*7532SSean.Ye@Sun.COM #define NERR_FAT_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 659*7532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc2 : 0x42, val) : \ 660*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x482 : 0x182, val)) 661*7532SSean.Ye@Sun.COM #define NERR_NF_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 662*7532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc3 : 0x43, val) : \ 663*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x483 : 0x183, val)) 664*7532SSean.Ye@Sun.COM #define EMASK_FSB_WR(fsb, val) \ 665*7532SSean.Ye@Sun.COM { \ 666*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 667*7532SSean.Ye@Sun.COM nb_pci_putw(0, 17, ((fsb) & 2) ? 3 : 0, \ 668*7532SSean.Ye@Sun.COM ((fsb) & 1) ? 0xd2 : 0x52, val); \ 669*7532SSean.Ye@Sun.COM else \ 670*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x492 : 0x192, val); \ 671*7532SSean.Ye@Sun.COM } 672*7532SSean.Ye@Sun.COM #define ERR0_FSB_WR(fsb, val) \ 673*7532SSean.Ye@Sun.COM { \ 674*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 675*7532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 676*7532SSean.Ye@Sun.COM (fsb & 1) ? 0xd4 : 0x54, val); \ 677*7532SSean.Ye@Sun.COM else \ 678*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x494 : 0x194, val); \ 679*7532SSean.Ye@Sun.COM } 680*7532SSean.Ye@Sun.COM #define ERR1_FSB_WR(fsb, val) \ 681*7532SSean.Ye@Sun.COM { \ 682*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 683*7532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 684*7532SSean.Ye@Sun.COM (fsb & 1) ? 0xd6 : 0x56, val); \ 685*7532SSean.Ye@Sun.COM else \ 686*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x496 : 0x196, val); \ 687*7532SSean.Ye@Sun.COM } 688*7532SSean.Ye@Sun.COM #define ERR2_FSB_WR(fsb, val) \ 689*7532SSean.Ye@Sun.COM { \ 690*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 691*7532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 692*7532SSean.Ye@Sun.COM (fsb & 1) ? 0xd8 : 0x58, val); \ 693*7532SSean.Ye@Sun.COM else \ 694*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x498 : 0x198, val); \ 695*7532SSean.Ye@Sun.COM } 696*7532SSean.Ye@Sun.COM #define MCERR_FSB_WR(fsb, val) \ 697*7532SSean.Ye@Sun.COM { \ 698*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 699*7532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 700*7532SSean.Ye@Sun.COM (fsb & 1) ? 0xda : 0x5a, val); \ 701*7532SSean.Ye@Sun.COM else \ 702*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x49a : 0x19a, val); \ 703*7532SSean.Ye@Sun.COM } 704*7532SSean.Ye@Sun.COM 705*7532SSean.Ye@Sun.COM #define NRECSF_RD() (nb_chipset == INTEL_NB_5000X || \ 706*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) ? ((uint64_t)( \ 707*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xb4, 0)) << 32) | \ 708*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xb0, 0) : 0LL 709*7532SSean.Ye@Sun.COM #define RECSF_RD() (nb_chipset == INTEL_NB_5000X || \ 710*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) ? ((uint64_t)( \ 711*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xbc, 0)) << 32) | \ 712*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xb8, 0) : 0LL 713*7532SSean.Ye@Sun.COM 714*7532SSean.Ye@Sun.COM #define NRECSF_WR() if (nb_chipset == INTEL_NB_5000X || \ 715*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) { \ 716*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xbc, 0); \ 717*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xb0, 0); \ 718*7532SSean.Ye@Sun.COM } 719*7532SSean.Ye@Sun.COM #define RECSF_WR() if (nb_chipset == INTEL_NB_5000X || \ 720*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) { \ 721*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xbc, 0); \ 722*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xb8, 0); \ 723*7532SSean.Ye@Sun.COM } 724*7532SSean.Ye@Sun.COM 725*7532SSean.Ye@Sun.COM #define FERR_FAT_INT_RD(ip) (((nb_chipset == INTEL_NB_5400) ? \ 726*7532SSean.Ye@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc1, ip) << 8) : (uint16_t)0) | \ 727*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 2, 0xc0, ip)) 728*7532SSean.Ye@Sun.COM #define FERR_NF_INT_RD(ip) ((nb_chipset == INTEL_NB_5400) ? \ 729*7532SSean.Ye@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc3, ip) << 8) | \ 730*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 2, 0xc2, ip) : \ 731*7532SSean.Ye@Sun.COM (uint16_t)nb_pci_getb(0, 16, 2, 0xc1, ip)) 732*7532SSean.Ye@Sun.COM #define NERR_FAT_INT_RD(ip) ((nb_chipset == INTEL_NB_5400) ? \ 733*7532SSean.Ye@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc4, ip) << 8) | \ 734*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 2, 0xc5, ip) : \ 735*7532SSean.Ye@Sun.COM (uint16_t)nb_pci_getb(0, 16, 2, 0xc2, ip)) 736*7532SSean.Ye@Sun.COM #define NERR_NF_INT_RD(ip) ((nb_chipset == INTEL_NB_5400) ? \ 737*7532SSean.Ye@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc6, ip) << 8) | \ 738*7532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 2, 0xc7, ip) : \ 739*7532SSean.Ye@Sun.COM (uint16_t)nb_pci_getb(0, 16, 2, 0xc3, ip)) 740*7532SSean.Ye@Sun.COM #define EMASK_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 741*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xd0, 0) : nb_pci_getb(0, 16, 2, 0xcc, 0)) 742*7532SSean.Ye@Sun.COM #define ERR0_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 743*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xd4, 0) : nb_pci_getb(0, 16, 2, 0xd0, 0)) 744*7532SSean.Ye@Sun.COM #define ERR1_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 745*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xd8, 0) : nb_pci_getb(0, 16, 2, 0xd1, 0)) 746*7532SSean.Ye@Sun.COM #define ERR2_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 747*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xdc, 0) : nb_pci_getb(0, 16, 2, 0xd2, 0)) 748*7532SSean.Ye@Sun.COM #define MCERR_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 749*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xe0, 0) : nb_pci_getb(0, 16, 2, 0xd3, 0)) 750*7532SSean.Ye@Sun.COM 751*7532SSean.Ye@Sun.COM #define FERR_FAT_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 752*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc0, \ 753*7532SSean.Ye@Sun.COM val & 0xff); \ 754*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc1, val >> 8); \ 755*7532SSean.Ye@Sun.COM } else { \ 756*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc0, val); \ 757*7532SSean.Ye@Sun.COM } 758*7532SSean.Ye@Sun.COM #define FERR_NF_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 759*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc2, \ 760*7532SSean.Ye@Sun.COM val & 0xff); \ 761*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc3, val >> 8); \ 762*7532SSean.Ye@Sun.COM } else { \ 763*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc1, val); \ 764*7532SSean.Ye@Sun.COM } 765*7532SSean.Ye@Sun.COM #define NERR_FAT_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 766*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc4, \ 767*7532SSean.Ye@Sun.COM val & 0xff); \ 768*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc5, val >> 8); \ 769*7532SSean.Ye@Sun.COM } else { \ 770*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc2, val); \ 771*7532SSean.Ye@Sun.COM } 772*7532SSean.Ye@Sun.COM #define NERR_NF_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 773*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc6, \ 774*7532SSean.Ye@Sun.COM val & 0xff); \ 775*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc7, val >> 8); \ 776*7532SSean.Ye@Sun.COM } else { \ 777*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc3, val); \ 778*7532SSean.Ye@Sun.COM } 779*7532SSean.Ye@Sun.COM #define EMASK_5000_INT_WR(val) nb_pci_putb(0, 16, 2, 0xcc, val) 780*7532SSean.Ye@Sun.COM #define EMASK_5400_INT_WR(val) nb_pci_putl(0, 16, 2, 0xd0, val) 781*7532SSean.Ye@Sun.COM #define EMASK_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 782*7532SSean.Ye@Sun.COM EMASK_5400_INT_WR(val); \ 783*7532SSean.Ye@Sun.COM } else { \ 784*7532SSean.Ye@Sun.COM EMASK_5000_INT_WR(val); \ 785*7532SSean.Ye@Sun.COM } 786*7532SSean.Ye@Sun.COM #define ERR0_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 787*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xd4, val); \ 788*7532SSean.Ye@Sun.COM } else { \ 789*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd0, val); \ 790*7532SSean.Ye@Sun.COM } 791*7532SSean.Ye@Sun.COM #define ERR1_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 792*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xd8, val); \ 793*7532SSean.Ye@Sun.COM } else { \ 794*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd1, val); \ 795*7532SSean.Ye@Sun.COM } 796*7532SSean.Ye@Sun.COM #define ERR2_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 797*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xdc, val); \ 798*7532SSean.Ye@Sun.COM } else { \ 799*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd2, val); \ 800*7532SSean.Ye@Sun.COM } 801*7532SSean.Ye@Sun.COM #define MCERR_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 802*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xe0, val); \ 803*7532SSean.Ye@Sun.COM } else { \ 804*7532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd3, val); \ 805*7532SSean.Ye@Sun.COM } 806*7532SSean.Ye@Sun.COM 807*7532SSean.Ye@Sun.COM #define NRECINT_RD() nb_pci_getl(0, 16, 2, 0xc4, 0) 808*7532SSean.Ye@Sun.COM #define RECINT_RD() nb_pci_getl(0, 16, 2, 0xc8, 0) 809*7532SSean.Ye@Sun.COM 810*7532SSean.Ye@Sun.COM #define NRECINT_WR() nb_pci_putl(0, 16, 2, 0xc4, 0) 811*7532SSean.Ye@Sun.COM #define RECINT_WR() nb_pci_putl(0, 16, 2, 0xc8, 0) 812*7532SSean.Ye@Sun.COM 813*7532SSean.Ye@Sun.COM #define FERR_FAT_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0x98, ip) 814*7532SSean.Ye@Sun.COM #define NERR_FAT_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0x9c, ip) 815*7532SSean.Ye@Sun.COM #define FERR_NF_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0xa0, ip) 816*7532SSean.Ye@Sun.COM #define NERR_NF_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0xa4, ip) 817*7532SSean.Ye@Sun.COM #define EMASK_FBD_RD() nb_pci_getl(0, 16, 1, 0xa8, 0) 818*7532SSean.Ye@Sun.COM #define ERR0_FBD_RD() nb_pci_getl(0, 16, 1, 0xac, 0) 819*7532SSean.Ye@Sun.COM #define ERR1_FBD_RD() nb_pci_getl(0, 16, 1, 0xb0, 0) 820*7532SSean.Ye@Sun.COM #define ERR2_FBD_RD() nb_pci_getl(0, 16, 1, 0xb4, 0) 821*7532SSean.Ye@Sun.COM #define MCERR_FBD_RD() nb_pci_getl(0, 16, 1, 0xb8, 0) 822*7532SSean.Ye@Sun.COM 823*7532SSean.Ye@Sun.COM #define FERR_FAT_FBD_WR(val) nb_pci_putl(0, 16, 1, 0x98, val) 824*7532SSean.Ye@Sun.COM #define NERR_FAT_FBD_WR(val) nb_pci_putl(0, 16, 1, 0x9c, val) 825*7532SSean.Ye@Sun.COM #define FERR_NF_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xa0, val) 826*7532SSean.Ye@Sun.COM #define NERR_NF_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xa4, val) 827*7532SSean.Ye@Sun.COM #define EMASK_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xa8, val) 828*7532SSean.Ye@Sun.COM #define ERR0_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xac, val) 829*7532SSean.Ye@Sun.COM #define ERR1_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xb0, val) 830*7532SSean.Ye@Sun.COM #define ERR2_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xb4, val) 831*7532SSean.Ye@Sun.COM #define MCERR_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xb8, val) 832*7532SSean.Ye@Sun.COM 833*7532SSean.Ye@Sun.COM #define NRECMEMA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 834*7532SSean.Ye@Sun.COM nb_pci_getw(0, (branch) ? 22 : 21, 1, 0xbe, 0) : \ 835*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 1, 0xbe, 0)) 836*7532SSean.Ye@Sun.COM #define NRECMEMB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 837*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xc0, 0) : \ 838*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xc0, 0)) 839*7532SSean.Ye@Sun.COM #define NRECFGLOG_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 840*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0x74, 0) : \ 841*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xc4, 0)) 842*7532SSean.Ye@Sun.COM #define NRECFBDA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 843*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xc4, 0) : \ 844*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xc4 : 0xc8, 0)) 845*7532SSean.Ye@Sun.COM #define NRECFBDB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 846*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xc8, 0) : \ 847*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xc8 : 0xcc, 0)) 848*7532SSean.Ye@Sun.COM #define NRECFBDC_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 849*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xcc, 0) : \ 850*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xcc : 0xd0, 0)) 851*7532SSean.Ye@Sun.COM #define NRECFBDD_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 852*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xd0, 0) : \ 853*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xd0 : 0xd4, 0)) 854*7532SSean.Ye@Sun.COM #define NRECFBDE_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 855*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xd4, 0) : \ 856*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xd4 : 0xd8, 0)) 857*7532SSean.Ye@Sun.COM #define NRECFBDF_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 858*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xd8, 0) : \ 859*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300 ? nb_pci_getw(0, 16, 1, 0xd8, 0) : 0) 860*7532SSean.Ye@Sun.COM #define REDMEMB_RD() (nb_chipset == INTEL_NB_5400 ? \ 861*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0x7c, 0) : \ 862*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0x7c, 0)) 863*7532SSean.Ye@Sun.COM #define RECMEMA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 864*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xe0, 0) & 0xffffff : \ 865*7532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xe0 : 0xe2, 0)) 866*7532SSean.Ye@Sun.COM #define RECMEMB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 867*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xe4, 0) : \ 868*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xe4, 0)) 869*7532SSean.Ye@Sun.COM #define RECFGLOG_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 870*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0x78, 0) : \ 871*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300 ? nb_pci_getl(0, 16, 1, 0x78, 0) : \ 872*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xe8, 0)) 873*7532SSean.Ye@Sun.COM #define RECFBDA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 874*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xe8, 0) : \ 875*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xe8 : 0xec, 0)) 876*7532SSean.Ye@Sun.COM #define RECFBDB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 877*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xec, 0) : \ 878*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xec : 0xf0, 0)) 879*7532SSean.Ye@Sun.COM #define RECFBDC_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 880*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xf0, 0) : \ 881*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xf0 : 0xf4, 0)) 882*7532SSean.Ye@Sun.COM #define RECFBDD_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 883*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xf4, 0) : \ 884*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xf4 : 0xf8, 0)) 885*7532SSean.Ye@Sun.COM #define RECFBDE_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 886*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xf8, 0) : \ 887*7532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xf8 : 0xfc, 0)) 888*7532SSean.Ye@Sun.COM #define RECFBDF_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 889*7532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xfc, 0) : \ 890*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300 ? nb_pci_getw(0, 16, 1, 0xfc, 0) : 0) 891*7532SSean.Ye@Sun.COM #define NRECMEMA_WR(branch) (nb_chipset == INTEL_NB_5400 ? \ 892*7532SSean.Ye@Sun.COM nb_pci_putw(0, (branch) ? 22 : 21, 1, 0xbe, 0) : \ 893*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, 0xbe, 0)) 894*7532SSean.Ye@Sun.COM #define NRECMEMB_WR(branch) (nb_chipset == INTEL_NB_5400 ? \ 895*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xc0, 0) : \ 896*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc0, 0)) 897*7532SSean.Ye@Sun.COM #define NRECFGLOG_WR(branch) \ 898*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 899*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0x74, 0); \ 900*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 901*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0x74, 0); \ 902*7532SSean.Ye@Sun.COM else \ 903*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc4, 0) 904*7532SSean.Ye@Sun.COM #define NRECFBDA_WR(branch) \ 905*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 906*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xc4, 0); \ 907*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 908*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc4, 0); \ 909*7532SSean.Ye@Sun.COM else \ 910*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc8, 0) 911*7532SSean.Ye@Sun.COM #define NRECFBDB_WR(branch) \ 912*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 913*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xc8, 0); \ 914*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 915*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc8, 0); \ 916*7532SSean.Ye@Sun.COM else \ 917*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xcc, 0) 918*7532SSean.Ye@Sun.COM #define NRECFBDC_WR(branch) \ 919*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 920*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xcc, 0); \ 921*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 922*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xcc, 0); \ 923*7532SSean.Ye@Sun.COM else \ 924*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd0, 0) 925*7532SSean.Ye@Sun.COM #define NRECFBDD_WR(branch) \ 926*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 927*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xd0, 0); \ 928*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 929*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd0, 0); \ 930*7532SSean.Ye@Sun.COM else \ 931*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd4, 0) 932*7532SSean.Ye@Sun.COM #define NRECFBDE_WR(branch) \ 933*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 934*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xd4, 0); \ 935*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 936*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd4, 0); \ 937*7532SSean.Ye@Sun.COM else \ 938*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd8, 0) 939*7532SSean.Ye@Sun.COM #define NRECFBDF_WR(branch) \ 940*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 941*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xd8, 0); \ 942*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 943*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, 0xd8, 0); 944*7532SSean.Ye@Sun.COM #define REDMEMB_WR(branch) \ 945*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 946*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0x7c, 0); \ 947*7532SSean.Ye@Sun.COM else \ 948*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0x7c, 0) 949*7532SSean.Ye@Sun.COM #define RECMEMA_WR(branch) \ 950*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 951*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xe0, 0); \ 952*7532SSean.Ye@Sun.COM else \ 953*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xe0 : \ 954*7532SSean.Ye@Sun.COM 0xe2, 0) 955*7532SSean.Ye@Sun.COM #define RECMEMB_WR(branch) \ 956*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 957*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xe4, 0); \ 958*7532SSean.Ye@Sun.COM else \ 959*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xe4, 0) 960*7532SSean.Ye@Sun.COM #define RECFGLOG_WR(branch) \ 961*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 962*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0x78, 0); \ 963*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 964*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0x78, 0); \ 965*7532SSean.Ye@Sun.COM else \ 966*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xe8, 0) 967*7532SSean.Ye@Sun.COM #define RECFBDA_WR(branch) \ 968*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 969*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xe8, 0); \ 970*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 971*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xe8, 0); \ 972*7532SSean.Ye@Sun.COM else \ 973*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xec, 0) 974*7532SSean.Ye@Sun.COM #define RECFBDB_WR(branch) \ 975*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 976*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xec, 0); \ 977*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 978*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xec, 0); \ 979*7532SSean.Ye@Sun.COM else \ 980*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf0, 0) 981*7532SSean.Ye@Sun.COM #define RECFBDC_WR(branch) \ 982*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 983*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xf0, 0); \ 984*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 985*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf0, 0); \ 986*7532SSean.Ye@Sun.COM else \ 987*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf4, 0) 988*7532SSean.Ye@Sun.COM #define RECFBDD_WR(branch) \ 989*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 990*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xf4, 0); \ 991*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 992*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf4, 0); \ 993*7532SSean.Ye@Sun.COM else \ 994*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf8, 0) 995*7532SSean.Ye@Sun.COM #define RECFBDE_WR(branch) \ 996*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 997*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xf8, 0); \ 998*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 999*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf8, 0); \ 1000*7532SSean.Ye@Sun.COM else \ 1001*7532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xfc, 0) 1002*7532SSean.Ye@Sun.COM #define RECFBDF_WR(branch) \ 1003*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 1004*7532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xfc, 0); \ 1005*7532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 1006*7532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, 0xf8, 0); \ 1007*7532SSean.Ye@Sun.COM 1008*7532SSean.Ye@Sun.COM #define MC_RD() nb_pci_getl(0, 16, 1, 0x40, 0) 1009*7532SSean.Ye@Sun.COM #define MC_WR(val) nb_pci_putl(0, 16, 1, 0x40, val) 1010*7532SSean.Ye@Sun.COM #define MCA_RD() nb_pci_getl(0, 16, 1, 0x58, 0) 1011*7532SSean.Ye@Sun.COM #define TOLM_RD() nb_pci_getw(0, 16, 1, 0x6c, 0) 1012*7532SSean.Ye@Sun.COM 1013*7532SSean.Ye@Sun.COM #define MTR_RD(branch, dimm) (nb_chipset == INTEL_NB_5400 ? \ 1014*7532SSean.Ye@Sun.COM nb_pci_getw(0, (branch) == 0 ? 21 : 22, 0, 0x80 + dimm * 2, 0) : \ 1015*7532SSean.Ye@Sun.COM ((branch) == 0) ? \ 1016*7532SSean.Ye@Sun.COM nb_pci_getw(0, 21, 0, \ 1017*7532SSean.Ye@Sun.COM dimm >= 4 ? 0x82 + (dimm & 3) * 4 : 0x80 + dimm * 4, 0) : \ 1018*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1019*7532SSean.Ye@Sun.COM nb_pci_getw(0, 22, 0, \ 1020*7532SSean.Ye@Sun.COM dimm >= 4 ? 0x82 + (dimm & 3) * 4 : 0x80 + dimm * 4, 0) : 0) 1021*7532SSean.Ye@Sun.COM #define MIR_RD(reg) nb_pci_getw(0, 16, 1, 0x80 + ((reg)*4), 0) 1022*7532SSean.Ye@Sun.COM 1023*7532SSean.Ye@Sun.COM #define DMIR_RD(branch, reg) \ 1024*7532SSean.Ye@Sun.COM ((branch) == 0) ? nb_pci_getl(0, 21, 0, 0x90 + ((reg)*4), 0) : \ 1025*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1026*7532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0x90 + ((reg)*4), 0) : 0 1027*7532SSean.Ye@Sun.COM 1028*7532SSean.Ye@Sun.COM #define SPCPC_RD(branch) (nb_chipset == INTEL_NB_5000P || \ 1029*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1030*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? \ 1031*7532SSean.Ye@Sun.COM (((branch) == 0) ? \ 1032*7532SSean.Ye@Sun.COM (uint32_t)nb_pci_getb(0, 21, 0, 0x40, 0) : \ 1033*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1034*7532SSean.Ye@Sun.COM (uint32_t)nb_pci_getb(0, 22, 0, 0x40, 0) : 0) : \ 1035*7532SSean.Ye@Sun.COM nb_pci_getl(0, ((branch) == 0) ? 21 : 22, 0, 0x40, 0)) 1036*7532SSean.Ye@Sun.COM 1037*7532SSean.Ye@Sun.COM #define SPCPC_SPARE_ENABLE (nb_chipset == INTEL_NB_5000P || \ 1038*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1039*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 1 : 0x20) 1040*7532SSean.Ye@Sun.COM #define SPCPC_SPRANK(spcpc) (nb_chipset == INTEL_NB_5000P || \ 1041*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1042*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? \ 1043*7532SSean.Ye@Sun.COM (((spcpc) >> 1) & 7) : ((spcpc) & 0xf)) 1044*7532SSean.Ye@Sun.COM 1045*7532SSean.Ye@Sun.COM #define SPCPS_RD(branch) ((branch) == 0) ? \ 1046*7532SSean.Ye@Sun.COM nb_pci_getb(0, 21, 0, nb_chipset == INTEL_NB_5000P || \ 1047*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1048*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0) : \ 1049*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1050*7532SSean.Ye@Sun.COM nb_pci_getb(0, 22, 0, nb_chipset == INTEL_NB_5000P || \ 1051*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1052*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0) : 0 1053*7532SSean.Ye@Sun.COM 1054*7532SSean.Ye@Sun.COM #define SPCPS_WR(branch) \ 1055*7532SSean.Ye@Sun.COM if ((branch) == 0) { \ 1056*7532SSean.Ye@Sun.COM nb_pci_putb(0, 21, 0, nb_chipset == INTEL_NB_5000P || \ 1057*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || \ 1058*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000V || \ 1059*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0); \ 1060*7532SSean.Ye@Sun.COM } else if (nb_number_memory_controllers == 2) { \ 1061*7532SSean.Ye@Sun.COM nb_pci_putb(0, 22, 0, nb_chipset == INTEL_NB_5000P || \ 1062*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || \ 1063*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000V || \ 1064*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0); \ 1065*7532SSean.Ye@Sun.COM } 1066*7532SSean.Ye@Sun.COM 1067*7532SSean.Ye@Sun.COM #define SPCPS_SPARE_DEPLOYED (nb_chipset == INTEL_NB_5000P || \ 1068*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1069*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x11 : 0x60) 1070*7532SSean.Ye@Sun.COM #define SPCPS_FAILED_RANK(spcps) (nb_chipset == INTEL_NB_5000P || \ 1071*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1072*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? (((spcps) >> 1) & 7) : ((spcps) & 0xf)) 1073*7532SSean.Ye@Sun.COM 1074*7532SSean.Ye@Sun.COM #define UERRCNT_RD(branch) ((branch) == 0) ? \ 1075*7532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xa4, 0) : \ 1076*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1077*7532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xa4, 0) : 0 1078*7532SSean.Ye@Sun.COM #define CERRCNT_RD(branch) ((branch) == 0) ? \ 1079*7532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xa8, 0) : \ 1080*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1081*7532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xa8, 0) : 0 1082*7532SSean.Ye@Sun.COM #define CERRCNTA_RD(branch, channel) \ 1083*7532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 1084*7532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xe0 : 0xf0, 0) 1085*7532SSean.Ye@Sun.COM #define CERRCNTB_RD(branch, channel) \ 1086*7532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 1087*7532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xe4 : 0xf4, 0) 1088*7532SSean.Ye@Sun.COM #define CERRCNTC_RD(branch, channel) \ 1089*7532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300 ? \ 1090*7532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 1091*7532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xe8 : 0xf8, 0) : 0) 1092*7532SSean.Ye@Sun.COM #define CERRCNTD_RD(branch, channel) \ 1093*7532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300 ? \ 1094*7532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 1095*7532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xec : 0xfc, 0) : 0) 1096*7532SSean.Ye@Sun.COM #define BADRAMA_RD(branch) ((branch) == 0) ? \ 1097*7532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xac, 0) : \ 1098*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1099*7532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xac, 0) : 0 1100*7532SSean.Ye@Sun.COM #define BADRAMB_RD(branch) ((branch) == 0) ? \ 1101*7532SSean.Ye@Sun.COM nb_pci_getw(0, 21, 0, 0xb0, 0) : \ 1102*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1103*7532SSean.Ye@Sun.COM nb_pci_getw(0, 22, 0, 0xb0, 0) : 0 1104*7532SSean.Ye@Sun.COM #define BADCNT_RD(branch) ((branch) == 0) ? \ 1105*7532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xb4, 0) : \ 1106*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1107*7532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xb4, 0) : 0 1108*7532SSean.Ye@Sun.COM 1109*7532SSean.Ye@Sun.COM #define UERRCNT_WR(branch, val) ((branch) == 0) ? \ 1110*7532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xa4, val) : \ 1111*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1112*7532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xa4, val) \ 1113*7532SSean.Ye@Sun.COM : 0 1114*7532SSean.Ye@Sun.COM #define CERRCNT_WR(branch, val) ((branch) == 0) ? \ 1115*7532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xa8, val) : \ 1116*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1117*7532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xa8, val) : 0 1118*7532SSean.Ye@Sun.COM #define BADRAMA_WR(branch, val) ((branch) == 0) ? \ 1119*7532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xac, val) : \ 1120*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1121*7532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xac, val) : 0 1122*7532SSean.Ye@Sun.COM #define BADRAMB_WR(branch, val) ((branch) == 0) ? \ 1123*7532SSean.Ye@Sun.COM nb_pci_putw(0, 21, 0, 0xb0, val) : \ 1124*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1125*7532SSean.Ye@Sun.COM nb_pci_putw(0, 22, 0, 0xb0) : 0 1126*7532SSean.Ye@Sun.COM #define BADCNT_WR(branch, val) ((branch) == 0) ? \ 1127*7532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xb4, val) : \ 1128*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1129*7532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xb4, val) : 0 1130*7532SSean.Ye@Sun.COM 1131*7532SSean.Ye@Sun.COM #define SPD_RD(branch, channel) ((branch) == 0) ? \ 1132*7532SSean.Ye@Sun.COM nb_pci_getw(0, 21, 0, 0x74 + ((channel) * 2), 0) : \ 1133*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1134*7532SSean.Ye@Sun.COM nb_pci_getw(0, 22, 0, 0x74 + ((channel) * 2), 0) : 0 1135*7532SSean.Ye@Sun.COM #define SPDCMDRD(branch, channel) ((branch) == 0) ? \ 1136*7532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0x78 + ((channel) * 4), 0) : \ 1137*7532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 1138*7532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0x78 + ((channel) * 4), 0) : 0 1139*7532SSean.Ye@Sun.COM 1140*7532SSean.Ye@Sun.COM #define SPDCMD1_1_WR(val) nb_pci_putl(0, 21, 0, 0x7c, val) 1141*7532SSean.Ye@Sun.COM #define SPDCMD_WR(branch, channel, val) \ 1142*7532SSean.Ye@Sun.COM if ((branch) == 0) \ 1143*7532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0x78 + ((channel) * 4), val); \ 1144*7532SSean.Ye@Sun.COM else if (nb_number_memory_controllers == 2) \ 1145*7532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0x78 + ((channel) * 4), val) 1146*7532SSean.Ye@Sun.COM 1147*7532SSean.Ye@Sun.COM #define UNCERRSTS_RD(pex) nb_pci_getl(0, pex, 0, 0x104, 0) 1148*7532SSean.Ye@Sun.COM #define UNCERRMSK_RD(pex) nb_pci_getl(0, pex, 0, 0x108, 0) 1149*7532SSean.Ye@Sun.COM #define PEX_FAT_FERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x154, 0) 1150*7532SSean.Ye@Sun.COM #define PEX_FAT_NERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x15c, 0) 1151*7532SSean.Ye@Sun.COM #define PEX_NF_FERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x158, 0) 1152*7532SSean.Ye@Sun.COM #define PEX_NF_NERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x160, 0) 1153*7532SSean.Ye@Sun.COM #define PEX_ERR_DOCMD_RD(pex) ((nb_chipset == INTEL_NB_5400) ? \ 1154*7532SSean.Ye@Sun.COM nb_pci_getw(0, pex, 0, 0x144, 0) : nb_pci_getl(0, pex, 0, 0x144, 0)) 1155*7532SSean.Ye@Sun.COM #define PEX_ERR_PIN_MASK_RD(pex) nb_pci_getw(0, pex, 0, 0x146, 0) 1156*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_RD(pex) nb_pci_getl(0, pex, 0, 0x148, 0) 1157*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_RD(pex) nb_pci_getl(0, pex, 0, 0x14c, 0) 1158*7532SSean.Ye@Sun.COM #define EMASK_RP_PEX_RD(pex) nb_pci_getl(0, pex, 0, 0x150, 0) 1159*7532SSean.Ye@Sun.COM 1160*7532SSean.Ye@Sun.COM #define UNCERRSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x104, val) 1161*7532SSean.Ye@Sun.COM #define UNCERRMSK_WR(pex, val) nb_pci_putl(0, pex, 0, 0x108, val) 1162*7532SSean.Ye@Sun.COM #define PEX_FAT_FERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x154, val) 1163*7532SSean.Ye@Sun.COM #define PEX_FAT_NERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x15c, val) 1164*7532SSean.Ye@Sun.COM #define PEX_NF_FERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x158, val) 1165*7532SSean.Ye@Sun.COM #define PEX_NF_NERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x160, val) 1166*7532SSean.Ye@Sun.COM #define PEX_ERR_DOCMD_WR(pex, val) ((nb_chipset == INTEL_NB_5400) ? \ 1167*7532SSean.Ye@Sun.COM nb_pci_putw(0, pex, 0, 0x144, val) : nb_pci_putl(0, pex, 0, 0x144, val)) 1168*7532SSean.Ye@Sun.COM #define PEX_ERR_PIN_MASK_WR(pex, val) nb_pci_putw(0, pex, 0, 0x146, val) 1169*7532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_WR(pex, val) nb_pci_putl(0, pex, 0, 0x148, val) 1170*7532SSean.Ye@Sun.COM #define EMASK_COR_PEX_WR(pex, val) nb_pci_putl(0, pex, 0, 0x14c, val) 1171*7532SSean.Ye@Sun.COM #define EMASK_RP_PEX_WR(pex, val) nb_pci_putl(0, pex, 0, 0x150, val) 1172*7532SSean.Ye@Sun.COM 1173*7532SSean.Ye@Sun.COM #define PEX_FAT_FERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x154, ip) 1174*7532SSean.Ye@Sun.COM #define PEX_FAT_NERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x15c, ip) 1175*7532SSean.Ye@Sun.COM #define PEX_NF_FERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x158, ip) 1176*7532SSean.Ye@Sun.COM #define PEX_NF_NERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x160, ip) 1177*7532SSean.Ye@Sun.COM #define UNCERRSEV_RD(pex) nb_pci_getl(0, pex, 0, 0x10c, 0) 1178*7532SSean.Ye@Sun.COM #define CORERRSTS_RD(pex) nb_pci_getl(0, pex, 0, 0x110, 0) 1179*7532SSean.Ye@Sun.COM #define RPERRSTS_RD(pex) nb_pci_getl(0, pex, 0, 0x130, 0) 1180*7532SSean.Ye@Sun.COM #define RPERRSID_RD(pex) nb_pci_getl(0, pex, 0, 0x134, 0) 1181*7532SSean.Ye@Sun.COM #define AERRCAPCTRL_RD(pex) nb_pci_getl(0, pex, 0, 0x118, 0) 1182*7532SSean.Ye@Sun.COM #define PEXDEVSTS_RD(pex) nb_pci_getw(0, pex, 0, 0x76, 0) 1183*7532SSean.Ye@Sun.COM #define PEXROOTCTL_RD(pex) nb_pci_getw(0, pex, 0, 0x88, 0) 1184*7532SSean.Ye@Sun.COM 1185*7532SSean.Ye@Sun.COM #define PEX_FAT_FERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x154, val) 1186*7532SSean.Ye@Sun.COM #define PEX_FAT_NERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x15c, val) 1187*7532SSean.Ye@Sun.COM #define PEX_NF_FERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x158, val) 1188*7532SSean.Ye@Sun.COM #define PEX_NF_NERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x160, val) 1189*7532SSean.Ye@Sun.COM #define CORERRSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x110, val) 1190*7532SSean.Ye@Sun.COM #define UNCERRSEV_WR(pex, val) nb_pci_putl(0, pex, 0, 0x10c, val) 1191*7532SSean.Ye@Sun.COM #define RPERRSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x130, val) 1192*7532SSean.Ye@Sun.COM #define PEXDEVSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x76, val) 1193*7532SSean.Ye@Sun.COM #define PEXROOTCTL_WR(pex, val) nb_pci_putw(0, pex, 0, 0x88, val) 1194*7532SSean.Ye@Sun.COM 1195*7532SSean.Ye@Sun.COM #define PCISTS_RD(ip) nb_pci_getw(0, 8, 0, 0x6, ip) 1196*7532SSean.Ye@Sun.COM #define PCIDEVSTS_RD() nb_pci_getw(0, 8, 0, 0x76, 0) 1197*7532SSean.Ye@Sun.COM #define PCISTS_WR(val) nb_pci_putw(0, 8, 0, 0x6, val) 1198*7532SSean.Ye@Sun.COM #define PCIDEVSTS_WR(val) nb_pci_putw(0, 8, 0, 0x76, val) 1199*7532SSean.Ye@Sun.COM 1200*7532SSean.Ye@Sun.COM #define RANK_MASK (nb_chipset != INTEL_NB_7300 ? 7 : 0xf) 1201*7532SSean.Ye@Sun.COM #define CAS_MASK (nb_chipset == INTEL_NB_5000P || \ 1202*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1203*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0xfff : 0x1fff) 1204*7532SSean.Ye@Sun.COM #define RAS_MASK (nb_chipset == INTEL_NB_5000P || \ 1205*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 1206*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x7fff : 0xffff) 1207*7532SSean.Ye@Sun.COM #define BANK_MASK 7 1208*7532SSean.Ye@Sun.COM 1209*7532SSean.Ye@Sun.COM #define DMIR_RANKS(dmir, rank0, rank1, rank2, rank3) \ 1210*7532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5000P || nb_chipset == INTEL_NB_5000X || \ 1211*7532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000V || nb_chipset == INTEL_NB_5000Z) { \ 1212*7532SSean.Ye@Sun.COM rank0 = (dmir) & 3; \ 1213*7532SSean.Ye@Sun.COM rank1 = ((dmir) >> 3) & 3; \ 1214*7532SSean.Ye@Sun.COM rank2 = ((dmir) >> 6) & 3; \ 1215*7532SSean.Ye@Sun.COM rank3 = ((dmir) >> 9) & 3; \ 1216*7532SSean.Ye@Sun.COM } else { \ 1217*7532SSean.Ye@Sun.COM rank0 = (dmir) & 0xf; \ 1218*7532SSean.Ye@Sun.COM rank1 = ((dmir) >> 4) & 0xf; \ 1219*7532SSean.Ye@Sun.COM rank2 = ((dmir) >> 8) & 0xf; \ 1220*7532SSean.Ye@Sun.COM rank3 = ((dmir) >> 12) & 0xf; \ 1221*7532SSean.Ye@Sun.COM } 1222*7532SSean.Ye@Sun.COM 1223*7532SSean.Ye@Sun.COM #define FERR_FAT_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf0, ip) 1224*7532SSean.Ye@Sun.COM #define FERR_NF_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf1, ip) 1225*7532SSean.Ye@Sun.COM #define NERR_FAT_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf2, ip) 1226*7532SSean.Ye@Sun.COM #define NERR_NF_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf3, ip) 1227*7532SSean.Ye@Sun.COM #define EMASK_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xf6, ip) 1228*7532SSean.Ye@Sun.COM #define ERR0_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xf8, ip) 1229*7532SSean.Ye@Sun.COM #define ERR1_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xfa, ip) 1230*7532SSean.Ye@Sun.COM #define ERR2_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xfc, ip) 1231*7532SSean.Ye@Sun.COM #define MCERR_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xfe, ip) 1232*7532SSean.Ye@Sun.COM #define CTSTS_RD() nb_pci_getb(0, 16, 4, 0xee, 0) 1233*7532SSean.Ye@Sun.COM #define THRTSTS_RD() nb_pci_getw(0, 16, 3, 0x68, 0) 1234*7532SSean.Ye@Sun.COM 1235*7532SSean.Ye@Sun.COM #define FERR_FAT_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf0, val) 1236*7532SSean.Ye@Sun.COM #define FERR_NF_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf1, val) 1237*7532SSean.Ye@Sun.COM #define NERR_FAT_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf2, val) 1238*7532SSean.Ye@Sun.COM #define NERR_NF_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf3, val) 1239*7532SSean.Ye@Sun.COM #define EMASK_THR_WR(val) nb_pci_putw(0, 16, 2, 0xf6, val) 1240*7532SSean.Ye@Sun.COM #define ERR0_THR_WR(val) nb_pci_putw(0, 16, 2, 0xf8, val) 1241*7532SSean.Ye@Sun.COM #define ERR1_THR_WR(val) nb_pci_putw(0, 16, 2, 0xfa, val) 1242*7532SSean.Ye@Sun.COM #define ERR2_THR_WR(val) nb_pci_putw(0, 16, 2, 0xfc, val) 1243*7532SSean.Ye@Sun.COM #define MCERR_THR_WR(val) nb_pci_putw(0, 16, 2, 0xfe, val) 1244*7532SSean.Ye@Sun.COM #define CTSTS_WR(val) nb_pci_putb(0, 16, 4, 0xee, val) 1245*7532SSean.Ye@Sun.COM #define THRTSTS_WR(val) nb_pci_putw(0, 16, 3, 0x68, val) 1246*7532SSean.Ye@Sun.COM 1247*7532SSean.Ye@Sun.COM #define ERR_FAT_THR_F2 0x02 /* >tnid thermal event with intelligent */ 1248*7532SSean.Ye@Sun.COM /* throttling disabled */ 1249*7532SSean.Ye@Sun.COM #define ERR_FAT_THR_F1 0x01 /* catastrophic on-die thermal event */ 1250*7532SSean.Ye@Sun.COM 1251*7532SSean.Ye@Sun.COM #define ERR_NF_THR_F5 0x10 /* deadman timeout on cooling update */ 1252*7532SSean.Ye@Sun.COM #define ERR_NF_THR_F4 0x08 /* TSMAX Updated */ 1253*7532SSean.Ye@Sun.COM #define ERR_NF_THR_F3 0x04 /* On-die throttling event */ 1254*7532SSean.Ye@Sun.COM 1255*7532SSean.Ye@Sun.COM #define EMASK_THR_FATAL (ERR_FAT_THR_F2|ERR_FAT_THR_F1) 1256*7532SSean.Ye@Sun.COM #define EMASK_THR_NF (ERR_NF_THR_F5|ERR_NF_THR_F4|ERR_NF_THR_F3) 1257*7532SSean.Ye@Sun.COM 1258*7532SSean.Ye@Sun.COM #define EMASK_THR_F5 0x0010 /* deadman timeout on cooling update */ 1259*7532SSean.Ye@Sun.COM #define EMASK_THR_F4 0x0008 /* TSMAX Updated */ 1260*7532SSean.Ye@Sun.COM #define EMASK_THR_F3 0x0004 /* On-die throttling event */ 1261*7532SSean.Ye@Sun.COM #define EMASK_THR_F2 0x0002 /* >tnid thermal event with intelligent */ 1262*7532SSean.Ye@Sun.COM /* throttling disabled */ 1263*7532SSean.Ye@Sun.COM #define EMASK_THR_F1 0x0001 /* catastrophic on-die thermal event */ 1264*7532SSean.Ye@Sun.COM 1265*7532SSean.Ye@Sun.COM #ifdef __cplusplus 1266*7532SSean.Ye@Sun.COM } 1267*7532SSean.Ye@Sun.COM #endif 1268*7532SSean.Ye@Sun.COM 1269*7532SSean.Ye@Sun.COM #endif /* _NB5000_H */ 1270