/** @file Register names for DMI and OP-DMI Conventions: Prefixes: Definitions beginning with "R_" are registers Definitions beginning with "B_" are bits within registers Definitions beginning with "V_" are meaningful values within the bits Definitions beginning with "S_" are register sizes Definitions beginning with "N_" are the bit position In general, PCH registers are denoted by "_PCH_" in register names Registers / bits that are different between PCH generations are denoted by _PCH_[generation_name]_" in register/bit names. Registers / bits that are specific to PCH-H denoted by "_H_" in register/bit names. Registers / bits that are specific to PCH-LP denoted by "_LP_" in register/bit names. e.g., "_PCH_H_", "_PCH_LP_" Registers / bits names without _H_ or _LP_ apply for both H and LP. Registers / bits that are different between SKUs are denoted by "_[SKU_name]" at the end of the register/bit names Registers / bits of new devices introduced in a PCH generation will be just named as "_PCH_" without [generation_name] inserted. @copyright Copyright 2014 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_REGS_DMI_H_ #define _PCH_REGS_DMI_H_ // // DMI Chipset Configuration Registers (PID:DMI) // // // VC Configuration (Common) // #define R_PCH_DMI_PCR_V0CTL 0x2014 ///< Virtual channel 0 resource control #define B_PCH_DMI_PCR_V0CTL_EN BIT31 #define B_PCH_DMI_PCR_V0CTL_ID (7 << 24) ///< Bit[26:24] #define N_PCH_DMI_PCR_V0CTL_ID 24 #define V_PCH_DMI_PCR_V0CTL_ETVM_MASK 0xFC00 #define V_PCH_DMI_PCR_V0CTL_TVM_MASK 0x7E #define R_PCH_DMI_PCR_V0STS 0x201A ///< Virtual channel 0 status #define B_PCH_DMI_PCR_V0STS_NP BIT1 #define R_PCH_DMI_PCR_V1CTL 0x2020 ///< Virtual channel 1 resource control #define B_PCH_DMI_PCR_V1CTL_EN BIT31 #define B_PCH_DMI_PCR_V1CTL_ID (0x0F << 24) ///< Bit[27:24] #define N_PCH_DMI_PCR_V1CTL_ID 24 #define V_PCH_DMI_PCR_V1CTL_ETVM_MASK 0xFC00 #define V_PCH_DMI_PCR_V1CTL_TVM_MASK 0xFE #define R_PCH_DMI_PCR_V1STS 0x2026 ///< Virtual channel 1 status #define B_PCH_DMI_PCR_V1STS_NP BIT1 #define R_PCH_DMI_PCR_VMCTL 0x2040 ///< ME Virtual Channel (VCm) resource control #define R_PCH_DMI_PCR_VMSTS 0x2046 ///< ME Virtual Channel Resource Status #define R_PCH_DMI_PCR_IOSFC1TC 0x2054 ///< Offset of credits for VC1 register #define R_PCH_DMI_PCR_IOSFC2TC 0x2058 ///< Offset of credits for VCm register #define V_PCH_DMI_PCR_IOSFC1TC_ICX 0x00021002 ///< Credits for VC1 - values for ICX #define V_PCH_DMI_PCR_IOSFC2TC_ICX 0x00082005 ///< Credits for VCm - values for ICX #define R_PCH_DMI_PCR_UEM 0x2088 ///< Uncorrectable Error Mask #define R_PCH_DMI_PCR_REC 0x20AC ///< Root Error Command // // DMI Error Reporting // #define R_PCH_DMI_PCR_UES 0x2084 ///< Uncorrectable Error Status #define R_PCH_DMI_PCR_UEM 0x2088 ///< Uncorrectable Error Mask #define B_PCH_DMI_UE_DLPE BIT4 // Data Link Protocol Error #define B_PCH_DMI_UE_PT BIT12 // Poisoned TLP #define B_PCH_DMI_UE_CA BIT15 // Completer Abort #define B_PCH_DMI_UE_RO BIT17 // Receiver Overflow #define B_PCH_DMI_UE_MT BIT18 // Malformed TLP #define R_PCH_DMI_PCR_CES 0x2090 ///< Correctable Error Status #define R_PCH_DMI_PCR_CEM 0x2094 ///< Correctable Error Mask #define B_PCH_DMI_CE_RE BIT0 // Indicates a receiver error #define B_PCH_DMI_CE_BT BIT6 // Bad TLP #define B_PCH_DMI_CE_BD BIT7 // Bad DLLP #define B_PCH_DMI_CE_RNR BIT8 // Replay Number Rollover #define R_PCH_DMI_PCR_RES 0x20B0 ///< Root Error Status #define B_PCH_DMI_RES_CR BIT0 // correctable error message is received or an internal correctable error is detected #define B_PCH_DMI_RES_ENR BIT2 // either afatal or a non-fatal error message is received or an internal fatal error is detected // // Internal Link Configuration (DMI Only) // #define R_PCH_DMI_PCR_LCAP 0x21A4 ///< Link Capabilities #define B_PCH_DMI_PCR_LCAP_EL1 (BIT17 | BIT16 | BIT15) #define B_PCH_DMI_PCR_LCAP_EL0 (BIT14 | BIT13 | BIT12) #define B_PCH_DMI_PCR_LCAP_APMS (BIT11 | BIT10) ///< L0 is supported on DMI #define B_PCH_DMI_PCR_LCAP_MLW 0x000003F0 #define B_PCH_DMI_PCR_LCAP_MLS 0x0000000F #define R_PCH_DMI_PCR_LCTL 0x21A8 ///< Link Control #define B_PCH_DMI_PCR_LCTL_ES BIT7 #define B_PCH_DMI_PCR_LCTL_ASPM (BIT1 | BIT0) ///< Link ASPM #define R_PCH_DMI_PCR_LSTS 0x21AA ///< Link Status #define R_PCH_DMI_PCR_LCAP2 0x21AC ///< Link Control 2 typedef union { UINT32 Dword; struct { UINT32 Rsrvd0 : 1, SLSV : 7, // Supported Link Speed Vector CS : 1, // Crosslink Supported LSOSGSSV : 7, // Lower SKP OS Generation Supported Speeds Vector LSOSRSS : 7, // Lower SKP OS Reception Supported Speeds Vector Rsrvd1 : 9; } Bits; } PCH_DMI_PCR_LCAP2; #define R_PCH_DMI_PCR_LCTL2 0x21B0 ///< Link Control 2 typedef union { UINT32 Dword; struct { UINT32 TLS : 4, // 0:3 Target Link Speed EC : 1, // 4 Enter Compliance HASD : 1, // 5 Hardware Autonomous Speed Disable SD : 1, // 6 Selectable De-emphasis TM : 3, // 9:7 Transmit Margin EMC : 1, // 10 Enter Modified Compliance CSOS : 1, // 11 Compliance SOS CD : 4, // 15:12 Compliance Preset/De-emphasis CDL : 1, // 16 Current De-emphasis Level EqC : 1, // 17 Equalization Complete EQP1S : 1, // 18 Equalization Phase 1 Successful EQP2S : 1, // 19 Equalization Phase 2 Successful EQP3S : 1, // 20 Equalization Phase 3 Successful LER : 1, // 21 Link Equalization Request Rsrvd0 :10; // 31:22 } Bits; } PCH_DMI_PCR_LCTL2; #define R_PCH_DMI_PCR_LSTS2 0x21B2 ///< Link Status 2 #define R_PCH_PCR_DMI_L01EC 0x21BC ///< Lane 0 and Lane 1 Equalization Control #define R_PCH_PCR_DMI_L23EC 0x21C0 ///< Lane 2 and Lane 3 Equalization Control #define B_PCH_PCR_DMI_UPL13RPH 0x0F000000 ///< Upstream Port Lane 1/3 Transmitter Preset Hint mask #define N_PCH_PCR_DMI_UPL13RPH 24 ///< Upstream Port Lane 1/3 Transmitter Preset Hint value offset #define B_PCH_PCR_DMI_UPL02RPH 0x000000F0 ///< Upstream Port Lane 0/2 Transmitter Preset Hint mask #define N_PCH_PCR_DMI_UPL02RPH 8 ///< Upstream Port Lane 0/2 Transmitter Preset Hint value offset #define V_PCH_PCR_DMI_UPL0RPH 7 ///< Upstream Port Lane 0 Transmitter Preset Hint value #define V_PCH_PCR_DMI_UPL1RPH 7 ///< Upstream Port Lane 1 Transmitter Preset Hint value #define V_PCH_PCR_DMI_UPL2RPH 7 ///< Upstream Port Lane 2 Transmitter Preset Hint value #define V_PCH_PCR_DMI_UPL3RPH 7 ///< Upstream Port Lane 3 Transmitter Preset Hint value // // North Port Error Injection Configuration (DMI Only) // #define R_PCH_DMI_PCR_DMIEN 0x2230 ///< DMI Error Injection Enable // // DMI Control // #define R_PCH_DMI_PCR_DMIC 0x2234 ///< DMI Control #define B_PCH_DMI_PCR_DMIC_SRL BIT31 ///< Secured register lock #define B_PCH_DMI_PCR_DMIC_ORCE (BIT25 | BIT24) ///< Offset Re-Calibration Enable #define N_PCH_DMI_PCR_DMIC_ORCE 24 #define V_PCH_DMI_PCR_DMIC_ORCE_EN_GEN2_GEN3 1 ///< Enable offset re-calibration for Gen 2 and Gen 3 data rate only. #define B_PCH_DMI_PCR_DMIC_DMICGEN (BIT4 | BIT3 | BIT2 | BIT1 | BIT0) ///< DMI Clock Gate Enable #define R_PCH_DMI_PCR_DMIHWAWC 0x2238 ///< DMI HW Autonomus Width Control #define R_PCH_DMI_PCR_IOSFSBCS 0x223E ///< IOSF Sideband Control and Status #define B_PCH_DMI_PCR_IOSFSBCS_DMICGEN (BIT6 | BIT5 | BIT3 | BIT2) ///< DMI Clock Gate Enable #define B_PCH_PCR_DMI_DMIC_DNPRL BIT19 #define R_PCH_DMI_PCR_2300 0x2300 #define R_PCH_DMI_PCR_2304 0x2304 #define R_PCH_DMI_PCR_2310 0x2310 #define B_PCH_PCR_DMI_2310_HALEP BIT22 #define R_PCH_DMI_PCR_2314 0x2314 #define R_PCH_DMI_PCR_2320 0x2320 #define R_PCH_DMI_PCR_2324 0x2324 #define R_PCH_DMI_PCR_232C 0x232C #define R_PCH_DMI_PCR_2334 0x2334 #define R_PCH_DMI_PCR_2338 0x2338 #define R_PCH_DMI_PCR_2340 0x2340 #define R_PCH_DMI_PCR_2344 0x2344 #define R_PCH_DMI_PCR_2348 0x2348 #define R_PCH_PCR_DMI_234C 0x234C // // Port Configuration Extension(DMI Only) // #define R_PCH_DMI_PCR_EQCFG1 0x2450 #define B_PCH_DMI_PCR_EQCFG1_RTLEPCEB BIT16 #define B_PCH_PCR_DMI_EQCFG1_RTPCOE BIT15 ///< Remote Transmitter Preset Coefficient Override Enable #define R_PCH_PCR_DMI_RTPCL1 0x2454 ///< Remote Transmitter Preset Coefficient List 1 #define N_PCH_PCR_DMI_RTPCL1_RTPRECL2PL4 24 #define N_PCH_PCR_DMI_RTPCL1_RTPOSTCL1PL3 18 #define N_PCH_PCR_DMI_RTPCL1_RTPRECL1PL2 12 #define N_PCH_PCR_DMI_RTPCL1_RTPOSTCL0PL1 6 #define N_PCH_PCR_DMI_RTPCL1_RTPRECL0PL0 0 #define B_PCH_PCR_DMI_RTPCL1_PCM BIT31 #define B_PCH_PCR_DMI_RTPCL1_RTPRECL2PL4 (0X3F << N_PCH_PCR_DMI_RTPCL1_RTPRECL2PL4) #define B_PCH_PCR_DMI_RTPCL1_RTPOSTCL1PL3 (0X3F << N_PCH_PCR_DMI_RTPCL1_RTPOSTCL1PL3) #define B_PCH_PCR_DMI_RTPCL1_RTPRECL1PL2 (0X3F << N_PCH_PCR_DMI_RTPCL1_RTPRECL1PL2) #define B_PCH_PCR_DMI_RTPCL1_RTPOSTCL0PL1 (0X3F << N_PCH_PCR_DMI_RTPCL1_RTPOSTCL0PL1) #define B_PCH_PCR_DMI_RTPCL1_RTPRECL0PL0 (0X3F << N_PCH_PCR_DMI_RTPCL1_RTPRECL0PL0) #define R_PCH_PCR_DMI_RTPCL2 0x2458 ///< Remote Transmitter Preset Coefficient List 2 #define N_PCH_PCR_DMI_RTPCL2_RTPOSTCL4PL9 24 #define N_PCH_PCR_DMI_RTPCL2_RTPRECL4PL8 18 #define N_PCH_PCR_DMI_RTPCL2_RTPOSTCL3PL7 12 #define N_PCH_PCR_DMI_RTPCL2_RTPRECL3PL6 6 #define N_PCH_PCR_DMI_RTPCL2_RTPOSTCL2PL5 0 #define B_PCH_PCR_DMI_RTPCL2_RTPOSTCL4PL9 (0X3F << N_PCH_PCR_DMI_RTPCL2_RTPOSTCL4PL9) #define B_PCH_PCR_DMI_RTPCL2_RTPRECL4PL8 (0X3F << N_PCH_PCR_DMI_RTPCL2_RTPRECL4PL8) #define B_PCH_PCR_DMI_RTPCL2_RTPOSTCL3PL7 (0X3F << N_PCH_PCR_DMI_RTPCL2_RTPOSTCL3PL7) #define B_PCH_PCR_DMI_RTPCL2_RTPRECL3PL6 (0X3F << N_PCH_PCR_DMI_RTPCL2_RTPRECL3PL6) #define B_PCH_PCR_DMI_RTPCL2_RTPOSTCL2PL5 (0X3F << N_PCH_PCR_DMI_RTPCL2_RTPOSTCL2PL5) #define R_PCH_DMI_PCR_LTCO1 0x2470 ///< Local Transmitter Coefficient Override 1 #define R_PCH_DMI_PCR_LTCO2 0x2474 ///< Local Transmitter Coefficient Override 2 #define B_PCH_DMI_PCR_L13TCOE BIT25 ///< Lane 1/3 Transmitter Coefficient Override Enable #define B_PCH_DMI_PCR_L02TCOE BIT24 ///< Lane 0/2 Transmitter Coefficient Override Enable #define B_PCH_DMI_PCR_L13TPOSTCO 0x00fc0000 ///< Lane 1/3 Transmitter Post-Cursor Coefficient Override mask #define N_PCH_DMI_PCR_L13TPOSTCO 18 ///< Lane 1/3 Transmitter Post-Cursor Coefficient Override value offset #define B_PCH_DMI_PCR_L13TPRECO 0x0003f000 ///< Lane 1/3 Transmitter Pre-Cursor Coefficient Override mask #define N_PCH_DMI_PCR_L13TPRECO 12 ///< Lane 1/3 Transmitter Pre-Cursor Coefficient Override value offset #define B_PCH_DMI_PCR_L02TPOSTCO 0x00000fc0 ///< Lane 0/2 Transmitter Post-Cursor Coefficient Override mask #define N_PCH_DMI_PCR_L02TPOSTCO 6 ///< Lane 0/2 Transmitter Post-Cursor Coefficient Override value offset #define B_PCH_DMI_PCR_L02TPRECO 0x0000003f ///< Lane 0/2 Transmitter Pre-Cursor Coefficient Override mask #define N_PCH_DMI_PCR_L02TPRECO 0 ///< Lane 0/2 Transmitter Pre-Cursor Coefficient Override value offset #define R_PCH_DMI_PCR_G3L0SCTL 0x2478 ///< GEN3 L0s Control // // OP-DMI Specific Registers (OP-DMI Only) // #define R_PCH_OPDMI_PCR_LCTL 0x2600 ///< Link Control #define R_PCH_OPDMI_PCR_STC 0x260C ///< Sideband Timing Control #define R_PCH_OPDMI_PCR_LPMC 0x2614 ///< Link Power Management Control #define R_PCH_OPDMI_PCR_LCFG 0x2618 ///< Link Configuration // // DMI Source Decode PCRs (Common) // #define R_PCH_DMI_PCR_PCIEPAR1E 0x2700 ///< PCIE Port IOxAPIC Range 1 Enable #define R_PCH_DMI_PCR_PCIEPAR2E 0x2704 ///< PCIE Port IOxAPIC Range 2 Enable #define R_PCH_DMI_PCR_PCIEPAR3E 0x2708 ///< PCIE Port IOxAPIC Range 3 Enable #define R_PCH_DMI_PCR_PCIEPAR4E 0x270C ///< PCIE Port IOxAPIC Range 4 Enable #define R_PCH_DMI_PCR_PCIEPAR1DID 0x2710 ///< PCIE Port IOxAPIC Range 1 Destination ID #define R_PCH_DMI_PCR_PCIEPAR2DID 0x2714 ///< PCIE Port IOxAPIC Range 2 Destination ID #define R_PCH_DMI_PCR_PCIEPAR3DID 0x2718 ///< PCIE Port IOxAPIC Range 3 Destination ID #define R_PCH_DMI_PCR_PCIEPAR4DID 0x271C ///< PCIE Port IOxAPIC Range 4 Destination ID #define R_PCH_DMI_PCR_P2SBIOR 0x2720 ///< P2SB IO Range #define R_PCH_DMI_PCR_TTTBARB 0x2724 ///< Thermal Throttling BIOS Assigned Thermal Base Address #define R_PCH_DMI_PCR_TTTBARBH 0x2728 ///< Thermal Throttling BIOS Assigned Thermal Base High Address #define R_PCH_DMI_PCR_LPCLGIR1 0x2730 ///< LPC Generic I/O Range 1 #define R_PCH_DMI_PCR_LPCLGIR2 0x2734 ///< LPC Generic I/O Range 2 #define R_PCH_DMI_PCR_LPCLGIR3 0x2738 ///< LPC Generic I/O Range 3 #define R_PCH_DMI_PCR_LPCLGIR4 0x273C ///< LPC Generic I/O Range 4 #define R_PCH_DMI_PCR_LPCGMR 0x2740 ///< LPC Generic Memory Range #define R_PCH_DMI_PCR_LPCBDE 0x2744 ///< LPC BIOS Decode Enable #define R_PCH_DMI_PCR_UCPR 0x2748 ///< uCode Patch Region #define B_PCH_DMI_PCR_UCPR_UPRE BIT0 ///< uCode Patch Region Enable #define R_PCH_DMI_PCR_GCS 0x274C ///< Generic Control and Status #define B_PCH_DMI_PCR_RPRDID 0xFFFF0000 ///< RPR Destination ID #define B_PCH_DMI_PCR_BBS BIT10 ///< Boot BIOS Strap #define B_PCH_DMI_PCR_RPR BIT11 ///< Reserved Page Route #define B_PCH_DMI_PCR_BILD BIT0 ///< BIOS Interface Lock-Down #define R_PCH_DMI_PCR_IOT1 0x2750 ///< I/O Trap Register 1 #define R_PCH_DMI_PCR_IOT2 0x2758 ///< I/O Trap Register 2 #define R_PCH_DMI_PCR_IOT3 0x2760 ///< I/O Trap Register 3 #define R_PCH_DMI_PCR_IOT4 0x2768 ///< I/O Trap Register 4 #define R_PCH_DMI_PCR_LPCIOD 0x2770 ///< LPC I/O Decode Ranges #define R_PCH_DMI_PCR_LPCIOE 0x2774 ///< LPC I/O Enables #define R_PCH_DMI_PCR_TCOBASE 0x2778 ///< TCO Base Address #define B_PCH_DMI_PCR_TCOBASE_TCOBA 0xFFE0 ///< TCO Base Address Mask #define R_PCH_DMI_PCR_GPMR1 0x277C ///< General Purpose Memory Range 1 #define R_PCH_DMI_PCR_GPMR1DID 0x2780 ///< General Purpose Memory Range 1 Destination ID #define R_PCH_DMI_PCR_GPMR2 0x2784 ///< General Purpose Memory Range 2 #define R_PCH_DMI_PCR_GPMR2DID 0x2788 ///< General Purpose Memory Range 2 Destination ID #define R_PCH_DMI_PCR_GPMR3 0x278C ///< General Purpose Memory Range 3 #define R_PCH_DMI_PCR_GPMR3DID 0x2790 ///< General Purpose Memory Range 3 Destination ID #define R_PCH_DMI_PCR_GPIOR1 0x2794 ///< General Purpose I/O Range 1 #define R_PCH_DMI_PCR_GPIOR1DID 0x2798 ///< General Purpose I/O Range 1 Destination ID #define R_PCH_DMI_PCR_GPIOR2 0x279C ///< General Purpose I/O Range 2 #define R_PCH_DMI_PCR_GPIOR2DID 0x27A0 ///< General Purpose I/O Range 2 Destination ID #define R_PCH_DMI_PCR_GPIOR3 0x27A4 ///< General Purpose I/O Range 3 #define R_PCH_DMI_PCR_GPIOR3DID 0x27A8 ///< General Purpose I/O Range 3 Destination ID #define R_PCH_PCR_DMI_PMBASEA 0x27AC ///< PM Base Address #define R_PCH_PCR_DMI_PMBASEC 0x27B0 ///< PM Base Control #define R_PCH_PCR_DMI_ACPIBA 0x27B4 ///< ACPI Base Address #define R_PCH_PCR_DMI_ACPIBDID 0x27B8 ///< ACPI Base Destination ID #define R_PCH_DMI_PCR_SEGMR 0x27C0 ///< Second eSPI Generic Memory Range #define R_PCH_DMI_PCR_SEGIR 0x27BC ///< Second eSPI Generic I/O Range // // Opi PHY registers // #define R_PCH_OPIPHY_PCR_0110 0x0110 #define R_PCH_OPIPHY_PCR_0118 0x0118 #define R_PCH_OPIPHY_PCR_011C 0x011C #define R_PCH_OPIPHY_PCR_0354 0x0354 #define R_PCH_OPIPHY_PCR_B104 0xB104 #define R_PCH_OPIPHY_PCR_B10C 0xB10C #endif