From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: "Kubacki, Michael A" <michael.a.kubacki@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Chaganty, Rangasai V" <rangasai.v.chaganty@intel.com>,
"Chiu, Chasel" <chasel.chiu@intel.com>,
"Gao, Liming" <liming.gao@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Sinha, Ankit" <ankit.sinha@intel.com>
Subject: Re: [edk2-platforms][PATCH V1 08/37] CoffeelakeSiliconPkg/Pch: Add Register include headers
Date: Sat, 17 Aug 2019 00:51:46 +0000 [thread overview]
Message-ID: <02A34F284D1DA44BB705E61F7180EF0AAEE128CE@ORSMSX114.amr.corp.intel.com> (raw)
In-Reply-To: <20190817001603.30632-9-michael.a.kubacki@intel.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
-----Original Message-----
From: Kubacki, Michael A
Sent: Friday, August 16, 2019 5:16 PM
To: devel@edk2.groups.io
Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Chiu, Chasel <chasel.chiu@intel.com>; Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Gao, Liming <liming.gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Sinha, Ankit <ankit.sinha@intel.com>
Subject: [edk2-platforms][PATCH V1 08/37] CoffeelakeSiliconPkg/Pch: Add Register include headers
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2082
Adds the following header files:
* Pch/Include/Register
Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Ankit Sinha <ankit.sinha@intel.com>
Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
---
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegs.h | 54 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDci.h | 57 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi.h | 122 ++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi14.h | 54 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi15.h | 62 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsFia.h | 90 +++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpio.h | 273 ++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpioCnl.h | 694 ++++++++++++++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHda.h | 204 ++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHsio.h | 170 +++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsIsh.h | 79 +++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsItss.h | 103 +++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLan.h | 58 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpc.h | 360 ++++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpcCnl.h | 61 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsP2sb.h | 116 ++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcie.h | 484 ++++++++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcr.h | 73 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmc.h | 670 +++++++++++++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmcCnl.h | 72 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsf.h | 104 +++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsfCnl.h | 113 ++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsth.h | 77 +++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSata.h | 668 +++++++++++++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScs.h | 52 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScsCnl.h | 48 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIo.h | 232 +++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIoCnl.h | 138 ++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSmbus.h | 151 +++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSpi.h | 295 +++++++++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsThermalCnl.h | 49 ++
Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsTraceHub.h | 134 ++++
32 files changed, 5917 insertions(+)
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegs.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegs.h
new file mode 100644
index 0000000000..10fcb316fc
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegs.h
@@ -0,0 +1,54 @@
+/** @file
+ Generic register definitions for PCH.
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_H_
+#define _PCH_REGS_H_
+
+///
+/// The default PCH PCI segment and bus number
+///
+#define DEFAULT_PCI_SEGMENT_NUMBER_PCH 0
+#define DEFAULT_PCI_BUS_NUMBER_PCH 0
+
+//
+// Default Vendor ID and Subsystem ID
+//
+#define V_PCH_INTEL_VENDOR_ID 0x8086 ///< Default Intel PCH Vendor ID
+#define V_PCH_DEFAULT_SID 0x7270 ///< Default Intel PCH Subsystem ID
+#define V_PCH_DEFAULT_SVID_SID (V_INTEL_VENDOR_ID + (V_PCH_DEFAULT_SID << 16)) ///< Default INTEL PCH Vendor ID and Subsystem ID
+
+#endif //_PCH_REGS_H_
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDci.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDci.h
new file mode 100644
index 0000000000..47dd73215e
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDci.h
@@ -0,0 +1,57 @@
+/** @file
+ Register names for PCH DCI device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_DCI_H_
+#define _PCH_REGS_DCI_H_
+
+//
+// DCI PCR Registers
+//
+
+#define R_DCI_PCR_ECTRL 0x04 ///< DCI Control Register
+
+#define B_DCI_PCR_ECTRL_HDCIEN_LOCK BIT0 ///< Host DCI Enable Lock
+#define B_DCI_PCR_ECTRL_HDCIEN BIT4 ///< Host DCI Enable
+
+#define R_DCI_PCR_ECKPWRCTL 0x08 ///< DCI Power Control
+// CNP-A0 (DCI Gen2) and backwards
+#define R_DCI_PCR_PCE 0x30 ///< DCI Power Control Enable Register
+#define B_DCI_PCR_PCE_HAE BIT5 ///< Hardware Autonomous Enable
+#define B_DCI_PCR_PCE_D3HE BIT2 ///< D3-Hot Enable
+#define B_DCI_PCR_PCE_I3E BIT1 ///< I3 Enable
+#define B_DCI_PCR_PCE_PMCRE BIT0 ///< PMC Request Enable
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi.h
new file mode 100644
index 0000000000..44f708dd92
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi.h
@@ -0,0 +1,122 @@
+/** @file
+ Register names for DMI and OP-DMI
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ 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 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 B_PCH_DMI_PCR_V0STS_NP BIT1
+#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 B_PCH_DMI_PCR_V1STS_NP BIT1
+
+
+//
+// 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_SEGIR 0x27BC ///< Second ESPI Generic I/O Range
+#define R_PCH_DMI_PCR_SEGMR 0x27C0 ///< Second ESPI 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
+
+//
+// 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
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi14.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi14.h
new file mode 100644
index 0000000000..36c0054d63
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi14.h
@@ -0,0 +1,54 @@
+/** @file
+ Register names for DMI SIP14
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_DMI14_H_
+#define _PCH_REGS_DMI14_H_
+
+//
+// DMI Chipset Configuration Registers (PID:DMI)
+//
+
+//
+// DMI Control
+//
+#define R_PCH_DMI14_PCR_DMIC 0x2234 ///< DMI Control
+#define B_PCH_DMI14_PCR_DMIC_SRL BIT31 ///< Secured register lock
+#define B_PCH_DMI14_PCR_DMIC_DMICGEN (BIT4 | BIT3 | BIT2 | BIT1 | BIT0) ///< DMI Clock Gate Enable
+
+#define R_PCH_DMI14_PCR_2314 0x2314
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi15.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi15.h
new file mode 100644
index 0000000000..c885fdd34d
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsDmi15.h
@@ -0,0 +1,62 @@
+/** @file
+ Register names for DMI and OP-DMI
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_DMI15_H_
+#define _PCH_REGS_DMI15_H_
+
+#define R_PCH_DMI15_PCR_MPC 0x20D8 ///< Miscellaneous Port Configuration
+#define B_PCH_DMI15_PCR_MPC_SRL BIT23 ///< Secured register lock
+#define R_PCH_DMI15_PCR_V0CTL 0x2284 ///< Virtual channel 0 resource control
+#define R_PCH_DMI15_PCR_V0STS 0x228A ///< Virtual channel 0 status
+
+#define R_PCH_DMI15_PCR_V1CTL 0x2290 ///< Virtual channel 1 resource control
+#define R_PCH_DMI15_PCR_V1STS 0x2296 ///< Virtual channel 1 status
+
+#define R_PCH_DMI15_PCR_VMCTL 0x22B0 ///< ME Virtual Channel (VCm) resource control
+
+#define R_PCH_DMI15_PCR_UPHWAWC 0x249C ///< Upstream Port HW Autonomous Width Control
+#define B_PCH_DMI15_PCR_UPHWAWC_TS3TW (BIT15 | BIT14 | BIT13) ///< Thermal Sensor 3 Target Width
+#define N_PCH_DMI15_PCR_UPHWAWC_TS3TW 13 ///< Thermal Sensor 3 Target Width
+#define B_PCH_DMI15_PCR_UPHWAWC_TS2TW (BIT12 | BIT11 | BIT10) ///< Thermal Sensor 2 Target Width
+#define N_PCH_DMI15_PCR_UPHWAWC_TS2TW 10 ///< Thermal Sensor 2 Target Width
+#define B_PCH_DMI15_PCR_UPHWAWC_TS1TW (BIT9 | BIT8 | BIT7) ///< Thermal Sensor 1 Target Width
+#define N_PCH_DMI15_PCR_UPHWAWC_TS1TW 7 ///< Thermal Sensor 1 Target Width
+#define B_PCH_DMI15_PCR_UPHWAWC_TS0TW (BIT6 | BIT5 | BIT4) ///< Thermal Sensor 0 Target Width
+#define N_PCH_DMI15_PCR_UPHWAWC_TS0TW 4 ///< Thermal Sensor 0 Target Width
+#define B_PCH_DMI15_PCR_UPHWAWC_TSAWEN BIT0 ///< Thermal Sensor Autonomous Width Enable
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsFia.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsFia.h
new file mode 100644
index 0000000000..837fdc5609
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsFia.h
@@ -0,0 +1,90 @@
+/** @file
+ Register definition for FIA component
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_FIA_H_
+#define _PCH_REGS_FIA_H_
+
+
+//
+// Private chipset register (Memory space) offset definition
+// The PCR register defines is used for PCR MMIO programming and PCH SBI programming as well.
+//
+
+//
+// PCH FIA lane owner encoding
+//
+#define V_PCH_FIA_PCR_LANE_OWN_PCIEDMI 0x0
+#define V_PCH_FIA_PCR_LANE_OWN_USB3 0x1
+#define V_PCH_FIA_PCR_LANE_OWN_SATA 0x2
+#define V_PCH_FIA_PCR_LANE_OWN_GBE 0x3
+#define V_PCH_FIA_PCR_LANE_OWN_MOBEXP 0x4
+#define V_PCH_FIA_PCR_LANE_OWN_SSIC 0x5
+#define V_PCH_FIA_PCR_LANE_OWN_CSI3 0x6
+#define V_PCH_FIA_PCR_LANE_OWN_UFS 0x7
+
+#define B_PCH_FIA_PCR_L0O (BIT3 | BIT2 | BIT1 | BIT0)
+#define B_PCH_FIA_PCR_L1O (BIT7 | BIT6 | BIT5 | BIT4)
+#define B_PCH_FIA_PCR_L2O (BIT11 | BIT10 | BIT9 | BIT8)
+#define B_PCH_FIA_PCR_L3O (BIT15 | BIT14 | BIT13 | BIT12)
+#define B_PCH_FIA_PCR_L4O (BIT19 | BIT18 | BIT17 | BIT16)
+#define B_PCH_FIA_PCR_L5O (BIT23 | BIT22 | BIT21 | BIT20)
+#define B_PCH_FIA_PCR_L6O (BIT27 | BIT26 | BIT25 | BIT24)
+#define B_PCH_FIA_PCR_L7O (BIT31 | BIT30 | BIT29 | BIT28)
+#define B_PCH_FIA_PCR_L8O (BIT3 | BIT2 | BIT1 | BIT0)
+#define B_PCH_FIA_PCR_L9O (BIT7 | BIT6 | BIT5 | BIT4)
+#define B_PCH_FIA_PCR_L10O (BIT11 | BIT10 | BIT9 | BIT8)
+#define B_PCH_FIA_PCR_L11O (BIT15 | BIT14 | BIT13 | BIT12)
+#define B_PCH_FIA_PCR_L12O (BIT19 | BIT18 | BIT17 | BIT16)
+#define B_PCH_FIA_PCR_L13O (BIT23 | BIT22 | BIT21 | BIT20)
+#define B_PCH_FIA_PCR_L14O (BIT27 | BIT26 | BIT25 | BIT24)
+#define B_PCH_FIA_PCR_L15O (BIT31 | BIT30 | BIT29 | BIT28)
+#define B_PCH_FIA_PCR_L16O (BIT3 | BIT2 | BIT1 | BIT0)
+#define B_PCH_FIA_PCR_L17O (BIT7 | BIT6 | BIT5 | BIT4)
+#define B_PCH_FIA_PCR_L18O (BIT11 | BIT10 | BIT9 | BIT8)
+#define B_PCH_FIA_PCR_L19O (BIT15 | BIT14 | BIT13 | BIT12)
+#define B_PCH_FIA_PCR_L20O (BIT19 | BIT18 | BIT17 | BIT16)
+#define B_PCH_FIA_PCR_L21O (BIT23 | BIT22 | BIT21 | BIT20)
+#define B_PCH_FIA_PCR_L22O (BIT27 | BIT26 | BIT25 | BIT24)
+#define B_PCH_FIA_PCR_L23O (BIT31 | BIT30 | BIT29 | BIT28)
+#define B_PCH_FIA_PCR_L24O (BIT3 | BIT2 | BIT1 | BIT0)
+#define B_PCH_FIA_PCR_L25O (BIT7 | BIT6 | BIT5 | BIT4)
+#define B_PCH_FIA_PCR_L26O (BIT11 | BIT10 | BIT9 | BIT8)
+#define B_PCH_FIA_PCR_L27O (BIT15 | BIT14 | BIT13 | BIT12)
+#define B_PCH_FIA_PCR_L28O (BIT19 | BIT18 | BIT17 | BIT16)
+#define B_PCH_FIA_PCR_L29O (BIT23 | BIT22 | BIT21 | BIT20)
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpio.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpio.h
new file mode 100644
index 0000000000..3f614ba002
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpio.h
@@ -0,0 +1,273 @@
+/** @file
+ Register names for PCH GPIO
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_GPIO_H_
+#define _PCH_REGS_GPIO_H_
+
+//
+// GPIO Common Private Configuration Registers
+//
+#define R_GPIO_PCR_REV_ID 0x00
+#define R_GPIO_PCR_CAP_LIST 0x04
+#define R_GPIO_PCR_FAMBAR 0x08
+#define R_GPIO_PCR_PADBAR 0x0C
+#define B_GPIO_PCR_PADBAR 0x0000FFFF
+#define R_GPIO_PCR_MISCCFG 0x10
+#define B_GPIO_PCR_MISCCFG_IRQ_ROUTE 0xFF000000
+#define N_GPIO_PCR_MISCCFG_IRQ_ROUTE 24
+#define B_GPIO_PCR_MISCCFG_GPE0_DW2 (BIT19 | BIT18 | BIT17 | BIT16)
+#define N_GPIO_PCR_MISCCFG_GPE0_DW2 16
+#define B_GPIO_PCR_MISCCFG_GPE0_DW1 (BIT15 | BIT14 | BIT13 | BIT12)
+#define N_GPIO_PCR_MISCCFG_GPE0_DW1 12
+#define B_GPIO_PCR_MISCCFG_GPE0_DW0 (BIT11 | BIT10 | BIT9 | BIT8)
+#define N_GPIO_PCR_MISCCFG_GPE0_DW0 8
+#define B_GPIO_PCR_MISCCFG_GPSIDEDPCGEN BIT5
+#define B_GPIO_PCR_MISCCFG_GPRCOMPCDLCGEN BIT4
+#define B_GPIO_PCR_MISCCFG_GPRTCDLCGEN BIT3
+#define B_GPIO_PCR_MISCCFG_GPDPCGEN BIT1
+#define B_GPIO_PCR_MISCCFG_GPDLCGEN BIT0
+
+//
+// GPIO SerialBlink/PWM registers
+//
+#define R_GPIO_PCR_CAP_LIST_1_PWM 0x0200
+#define R_GPIO_PCR_PWMC 0x0204
+#define R_GPIO_PCR_CAP_LIST_2_SER_BLINK 0x0208
+#define R_GPIO_PCR_GP_SER_BLINK 0x020C
+#define B_GPIO_PCR_GP_SER_BLINK 0x1F
+#define R_GPIO_PCR_GP_SER_CMDSTS 0x0210
+#define B_GPIO_PCR_GP_SER_CMDSTS_DLS (BIT23 | BIT22)
+#define N_GPIO_PCR_GP_SER_CMDSTS_DLS 22
+#define B_GPIO_PCR_GP_SER_CMDSTS_DRS 0x003F0000
+#define N_GPIO_PCR_GP_SER_CMDSTS_DRS 16
+#define B_GPIO_PCR_GP_SER_CMDSTS_BUSY BIT8
+#define B_GPIO_PCR_GP_SER_CMDSTS_GO BIT0
+#define R_GPIO_PCR_GP_SER_DATA 0x0210
+
+//
+// PADCFG register is split into multiple DW registers
+// S_GPIO_PCR_PADCFG refers to number of bytes used by all those registers for one pad
+//
+#define S_GPIO_PCR_PADCFG 0x10
+
+//
+// Pad Configuration Register DW0
+//
+
+//Pad Reset Config
+#define B_GPIO_PCR_RST_CONF (BIT31 | BIT30)
+#define N_GPIO_PCR_RST_CONF 30
+#define V_GPIO_PCR_RST_CONF_POW_GOOD 0x00
+#define V_GPIO_PCR_RST_CONF_DEEP_RST 0x01
+#define V_GPIO_PCR_RST_CONF_GPIO_RST 0x02
+#define V_GPIO_PCR_RST_CONF_RESUME_RST 0x03 // Only for GPD Group
+
+//RX Pad State Select
+#define B_GPIO_PCR_RX_PAD_STATE BIT29
+#define N_GPIO_PCR_RX_PAD_STATE 29
+#define V_GPIO_PCR_RX_PAD_STATE_RAW 0x00
+#define V_GPIO_PCR_RX_PAD_STATE_INT 0x01
+
+//RX Raw Overrride to 1
+#define B_GPIO_PCR_RX_RAW1 BIT28
+#define N_GPIO_PCR_RX_RAW1 28
+#define V_GPIO_PCR_RX_RAW1_DIS 0x00
+#define V_GPIO_PCR_RX_RAW1_EN 0x01
+
+//RX Level/Edge Configuration
+#define B_GPIO_PCR_RX_LVL_EDG (BIT26 | BIT25)
+#define N_GPIO_PCR_RX_LVL_EDG 25
+#define V_GPIO_PCR_RX_LVL_EDG_LVL 0x00
+#define V_GPIO_PCR_RX_LVL_EDG_EDG 0x01
+#define V_GPIO_PCR_RX_LVL_EDG_0 0x02
+#define V_GPIO_PCR_RX_LVL_EDG_RIS_FAL 0x03
+
+//RX Invert
+#define B_GPIO_PCR_RXINV BIT23
+#define N_GPIO_PCR_RXINV 23
+#define V_GPIO_PCR_RXINV_NO 0x00
+#define V_GPIO_PCR_RXINV_YES 0x01
+
+//GPIO Input Route IOxAPIC
+#define B_GPIO_PCR_RX_APIC_ROUTE BIT20
+#define N_GPIO_PCR_RX_APIC_ROUTE 20
+#define V_GPIO_PCR_RX_APIC_ROUTE_DIS 0x00
+#define V_GPIO_PCR_RX_APIC_ROUTE_EN 0x01
+
+//GPIO Input Route SCI
+#define B_GPIO_PCR_RX_SCI_ROUTE BIT19
+#define N_GPIO_PCR_RX_SCI_ROUTE 19
+#define V_GPIO_PCR_RX_SCI_ROUTE_DIS 0x00
+#define V_GPIO_PCR_RX_SCI_ROUTE_EN 0x01
+
+//GPIO Input Route SMI
+#define B_GPIO_PCR_RX_SMI_ROUTE BIT18
+#define N_GPIO_PCR_RX_SMI_ROUTE 18
+#define V_GPIO_PCR_RX_SMI_ROUTE_DIS 0x00
+#define V_GPIO_PCR_RX_SMI_ROUTE_EN 0x01
+
+//GPIO Input Route NMI
+#define B_GPIO_PCR_RX_NMI_ROUTE BIT17
+#define N_GPIO_PCR_RX_NMI_ROUTE 17
+#define V_GPIO_PCR_RX_NMI_ROUTE_DIS 0x00
+#define V_GPIO_PCR_RX_NMI_ROUTE_EN 0x01
+
+//GPIO Pad Mode
+#define B_GPIO_PCR_PAD_MODE (BIT12 | BIT11 | BIT10)
+#define N_GPIO_PCR_PAD_MODE 10
+#define V_GPIO_PCR_PAD_MODE_GPIO 0
+#define V_GPIO_PCR_PAD_MODE_NAT_1 1
+#define V_GPIO_PCR_PAD_MODE_NAT_2 2
+#define V_GPIO_PCR_PAD_MODE_NAT_3 3
+#define V_GPIO_PCR_PAD_MODE_NAT_4 4 // SPT-H only
+
+//GPIO RX Disable
+#define B_GPIO_PCR_RXDIS BIT9
+#define N_GPIO_PCR_RXDIS 9
+#define V_GPIO_PCR_RXDIS_EN 0x00
+#define V_GPIO_PCR_RXDIS_DIS 0x01
+
+//GPIO TX Disable
+#define B_GPIO_PCR_TXDIS BIT8
+#define N_GPIO_PCR_TXDIS 8
+#define V_GPIO_PCR_TXDIS_EN 0x00
+#define V_GPIO_PCR_TXDIS_DIS 0x01
+
+//GPIO RX State
+#define B_GPIO_PCR_RX_STATE BIT1
+#define N_GPIO_PCR_RX_STATE 1
+#define V_GPIO_PCR_RX_STATE_LOW 0x00
+#define V_GPIO_PCR_RX_STATE_HIGH 0x01
+
+//GPIO TX State
+#define B_GPIO_PCR_TX_STATE BIT0
+#define N_GPIO_PCR_TX_STATE 0
+#define V_GPIO_PCR_TX_STATE_LOW 0x00
+#define V_GPIO_PCR_TX_STATE_HIGH 0x01
+
+//
+// Pad Configuration Register DW1
+//
+
+//Padtol
+#define B_GPIO_PCR_PADTOL BIT25
+#define N_GPIO_PCR_PADTOL 25
+#define V_GPIO_PCR_PADTOL_NONE 0x00
+#define V_GPIO_PCR_PADTOL_CLEAR 0x00
+#define V_GPIO_PCR_PADTOL_SET 0x01
+
+//Termination
+#define B_GPIO_PCR_TERM (BIT13 | BIT12 | BIT11 | BIT10)
+#define N_GPIO_PCR_TERM 10
+#define V_GPIO_PCR_TERM_WPD_NONE 0x00
+#define V_GPIO_PCR_TERM_WPD_5K 0x02
+#define V_GPIO_PCR_TERM_WPD_20K 0x04
+#define V_GPIO_PCR_TERM_WPU_NONE 0x08
+#define V_GPIO_PCR_TERM_WPU_1K 0x09
+#define V_GPIO_PCR_TERM_WPU_2K 0x0B
+#define V_GPIO_PCR_TERM_WPU_5K 0x0A
+#define V_GPIO_PCR_TERM_WPU_20K 0x0C
+#define V_GPIO_PCR_TERM_WPU_1K_2K 0x0D
+#define V_GPIO_PCR_TERM_NATIVE 0x0F
+
+//Interrupt number
+#define B_GPIO_PCR_INTSEL 0x7F
+#define N_GPIO_PCR_INTSEL 0
+
+//
+//Debounce
+#define B_GPIO_PCR_DEBOUNCE (BIT4 | BIT3 | BIT2 | BIT1)
+#define N_GPIO_PCR_DEBOUNCE 1
+
+//Debounce Enable
+#define B_GPIO_PCR_DEBEN BIT0
+#define N_GPIO_PCR_DEBEN 0
+
+//
+// Ownership
+//
+#define V_GPIO_PCR_OWN_GPIO 0x01
+#define V_GPIO_PCR_OWN_ACPI 0x00
+
+//
+// GPE
+//
+#define V_GPIO_PCR_GPE_EN 0x01
+#define V_GPIO_PCR_GPE_DIS 0x00
+//
+// SMI
+//
+#define V_GPIO_PCR_SMI_EN 0x01
+#define V_GPIO_PCR_SMI_DIS 0x00
+//
+// NMI
+//
+#define V_GPIO_PCR_NMI_EN 0x01
+#define V_GPIO_PCR_NMI_DIS 0x00
+
+//
+// GPIO native features pins data
+//
+#define PCH_GPIO_HDA_LINK_NUMBER_OF_PINS 6
+#define PCH_GPIO_HDA_DMIC_NUMBER_OF_PINS 2
+#define PCH_GPIO_HDA_SSP_NUMBER_OF_PINS 4
+#define PCH_GPIO_HDA_SNDW_NUMBER_OF_PINS 2
+#define PCH_GPIO_SMBUS_NUMBER_OF_PINS 2
+#define PCH_GPIO_CPU_GP_NUMBER_OF_PINS 4
+#define PCH_GPIO_EDP_NUMBER_OF_PINS 4
+#define PCH_GPIO_DDSP_HPD_NUMBER_OF_PINS 4
+#define PCH_GPIO_DDP_NUMBER_OF_INTERFACES 4
+#define PCH_GPIO_DDP_NUMBER_OF_PINS 2
+#define PCH_GPIO_CNVI_UART_NUMBER_OF_PINS 4
+#define PCH_GPIO_CNVI_SSP_NUMBER_OF_PINS 4
+#define PCH_GPIO_CNVI_BRI_RGI_NUMBER_OF_PINS 4
+
+
+///
+/// GPIO SMI data used for EFI_SMM_GPI_DISPATCH2_PROTOCOL
+/// Below defines are to be used internally by PCH SMI dispatcher only
+///
+#define PCH_GPIO_NUM_SUPPORTED_GPIS 512
+#define S_GPIO_PCR_GP_SMI_EN 4
+#define S_GPIO_PCR_GP_SMI_STS 4
+
+///
+/// Groups mapped to 2-tier General Purpose Event will all be under
+/// one master GPE_111 (0x6F)
+///
+#define PCH_GPIO_2_TIER_MASTER_GPE_NUMBER 0x6F
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpioCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpioCnl.h
new file mode 100644
index 0000000000..140c758730
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsGpioCnl.h
@@ -0,0 +1,694 @@
+/** @file
+ Register names for GPIO
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_GPIO_CNL_H_
+#define _PCH_REGS_GPIO_CNL_H_
+
+//
+// PCH-LP GPIO
+//
+#define CNL_PCH_LP_GPIO_GROUP_MAX 15
+
+#define CNL_PCH_LP_GPIO_GPP_A_PAD_MAX 25
+#define CNL_PCH_LP_GPIO_GPP_B_PAD_MAX 26
+#define CNL_PCH_LP_GPIO_GPP_C_PAD_MAX 24
+#define CNL_PCH_LP_GPIO_GPP_D_PAD_MAX 24
+#define CNL_PCH_LP_GPIO_GPP_E_PAD_MAX 24
+#define CNL_PCH_LP_GPIO_GPP_F_PAD_MAX 24
+#define CNL_PCH_LP_GPIO_GPP_G_PAD_MAX 8
+#define CNL_PCH_LP_GPIO_GPP_H_PAD_MAX 24
+#define CNL_PCH_LP_GPIO_GPD_PAD_MAX 16
+#define CNL_PCH_LP_GPIO_VGPIO_PAD_MAX 40
+#define CNL_PCH_LP_GPIO_SPI_PAD_MAX 9
+#define CNL_PCH_LP_GPIO_AZA_PAD_MAX 8
+#define CNL_PCH_LP_GPIO_CPU_PAD_MAX 11
+#define CNL_PCH_LP_GPIO_JTAG_PAD_MAX 9
+#define CNL_PCH_LP_GPIO_HVMOS_PAD_MAX 6
+
+//
+// PCH-H GPIO
+//
+#define CNL_PCH_H_GPIO_GROUP_MAX 17
+
+#define CNL_PCH_H_GPIO_GPP_A_PAD_MAX 25
+#define CNL_PCH_H_GPIO_GPP_B_PAD_MAX 26
+#define CNL_PCH_H_GPIO_GPP_C_PAD_MAX 24
+#define CNL_PCH_H_GPIO_GPP_D_PAD_MAX 24
+#define CNL_PCH_H_GPIO_GPP_E_PAD_MAX 13
+#define CNL_PCH_H_GPIO_GPP_F_PAD_MAX 24
+#define CNL_PCH_H_GPIO_GPP_G_PAD_MAX 8
+#define CNL_PCH_H_GPIO_GPP_H_PAD_MAX 24
+#define CNL_PCH_H_GPIO_GPP_I_PAD_MAX 18
+#define CNL_PCH_H_GPIO_GPP_J_PAD_MAX 12
+#define CNL_PCH_H_GPIO_GPP_K_PAD_MAX 24
+#define CNL_PCH_H_GPIO_GPD_PAD_MAX 16
+#define CNL_PCH_H_GPIO_VGPIO_PAD_MAX 40
+#define CNL_PCH_H_GPIO_SPI_PAD_MAX 9
+#define CNL_PCH_H_GPIO_AZA_PAD_MAX 8
+#define CNL_PCH_H_GPIO_CPU_PAD_MAX 11
+#define CNL_PCH_H_GPIO_JTAG_PAD_MAX 9
+
+//
+// PCH-LP GPIO registers
+//
+//
+// GPIO Community Common Private Configuration Registers
+//
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_A 0x0
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_B 0x1
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_C 0xC
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_D 0x4
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_E 0xD
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_F 0x5
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_G 0x2
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPP_H 0x6
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_GPD 0x9
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_VGPIO 0x7
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_SPI 0x3
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_AZA 0xA
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_CPU 0xB
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_JTAG 0xE
+#define V_CNL_PCH_LP_GPIO_PCR_MISCCFG_GPE0_HVMOS 0xF
+
+//
+// GPIO Community 0 Private Configuration Registers
+//
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_PAD_OWN 0x20
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_PAD_OWN 0x30
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_PAD_OWN 0x40
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_PAD_OWN 0x44
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_PADCFGLOCK 0x80
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_PADCFGLOCK 0x88
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_PADCFGLOCKTX 0x8C
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_PADCFGLOCK 0x90
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_PADCFGLOCKTX 0x94
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_PADCFGLOCK 0x98
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_PADCFGLOCKTX 0x9C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_HOSTSW_OWN 0xB0
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_HOSTSW_OWN 0xB4
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_HOSTSW_OWN 0xB8
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_HOSTSW_OWN 0xBC
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_GPI_IS 0x0100
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_GPI_IS 0x0104
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_GPI_IS 0x0108
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_GPI_IS 0x010C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_GPI_IE 0x0120
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_GPI_IE 0x0124
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_GPI_IE 0x0128
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_GPI_IE 0x012C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_GPI_GPE_STS 0x0144
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_GPI_GPE_STS 0x0148
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_GPI_GPE_STS 0x014C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_GPI_GPE_EN 0x0160
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_GPI_GPE_EN 0x0164
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_GPI_GPE_EN 0x0168
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_GPI_GPE_EN 0x016C
+
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_SMI_STS 0x0180 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_SMI_STS 0x0184
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_SMI_STS 0x0188 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_SPI_SMI_STS 0x018C // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_SMI_EN 0x01A0 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_SMI_EN 0x01A4
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_SMI_EN 0x01A8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_SPI_SMI_EN 0x01AC // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_NMI_STS 0x01C0 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_NMI_STS 0x01C4
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_NMI_STS 0x01C8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_SPI_NMI_STS 0x01CC // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_NMI_EN 0x01E0 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_NMI_EN 0x01E4
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_NMI_EN 0x01E8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_SPI_NMI_EN 0x01EC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_A_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_B_PADCFG_OFFSET 0x790
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_G_PADCFG_OFFSET 0x930
+#define R_CNL_PCH_LP_GPIO_PCR_SPI_PADCFG_OFFSET 0x9B0
+
+//
+// GPIO Community 1 Private Configuration Registers
+//
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_PAD_OWN 0x20
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_PAD_OWN 0x30
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_PAD_OWN 0x3C
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_PAD_OWN 0x48
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_PADCFGLOCK 0x80
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_PADCFGLOCK 0x88
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_PADCFGLOCKTX 0x8C
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_PADCFGLOCK 0x90
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_PADCFGLOCKTX 0x94
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_0_PADCFGLOCK 0x98
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_0_PADCFGLOCKTX 0x9C
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_1_PADCFGLOCK 0xA0
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_1_PADCFGLOCKTX 0xA4
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_HOSTSW_OWN 0xB0
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_HOSTSW_OWN 0xB4
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_HOSTSW_OWN 0xB8
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_HOSTSW_OWN 0xBC
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_GPI_IS 0x0100
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_GPI_IS 0x0104
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_GPI_IS 0x0108
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_GPI_IS 0x010C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_GPI_IE 0x0120
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_GPI_IE 0x0124
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_GPI_IE 0x0128
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_GPI_IE 0x012C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_GPI_GPE_STS 0x0144
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_GPI_GPE_STS 0x0148
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_GPI_GPE_STS 0x014C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_GPI_GPE_EN 0x0160
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_GPI_GPE_EN 0x0164
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_GPI_GPE_EN 0x0168
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_GPI_GPE_EN 0x016C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_SMI_STS 0x0180
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_SMI_STS 0x0184 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_SMI_STS 0x0188 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_SMI_STS 0x018C // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_SMI_EN 0x01A0
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_SMI_EN 0x01A4 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_SMI_EN 0x01A8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_SMI_EN 0x01AC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_NMI_STS 0x01C0
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_NMI_STS 0x01C4 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_NMI_STS 0x01C8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_NMI_STS 0x01CC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_NMI_EN 0x01E0
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_NMI_EN 0x01E4 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_NMI_EN 0x01E8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_NMI_EN 0x01EC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_D_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_F_PADCFG_OFFSET 0x790
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_H_PADCFG_OFFSET 0x910
+#define R_CNL_PCH_LP_GPIO_PCR_VGPIO_PADCFG_OFFSET 0xA90
+
+//
+// GPIO Community 2 Private Configuration Registers
+//
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_PAD_OWN 0x20
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_PADCFGLOCK 0x80
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_PADCFGLOCKTX 0x84
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_HOSTSW_OWN 0xB0
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_GPI_IS 0x0100
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_GPI_IE 0x0120
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_GPI_GPE_EN 0x0160
+
+//#define R_CNL_PCH_LP_GPIO_PCR_GPD_SMI_STS 0x0180 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_GPD_SMI_EN 0x01A0 // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_GPD_NMI_STS 0x01C0 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_GPD_NMI_EN 0x01E0 // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPD_PADCFG_OFFSET 0x600
+
+//
+// GPIO Community 3 Private Configuration Registers
+//
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_PAD_OWN 0x20
+#define R_CNL_PCH_LP_GPIO_PCR_CPU_PAD_OWN 0x24
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_PADCFGLOCK 0x80
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_LP_GPIO_PCR_CPU_PADCFGLOCK 0x88
+#define R_CNL_PCH_LP_GPIO_PCR_CPU_PADCFGLOCKTX 0x8C
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_HOSTSW_OWN 0xB0
+#define R_CNL_PCH_LP_GPIO_PCR_CPU_HOSTSW_OWN 0xB4
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_GPI_IS 0x0100
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_GPI_IS 0x0104 // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_GPI_IE 0x0120
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_GPI_IE 0x0124 // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_GPI_GPE_STS 0x0140
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_GPI_GPE_STS 0x0144 // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_GPI_GPE_EN 0x0160
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_GPI_GPE_EN 0x0164 // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_AZA_SMI_STS 0x0180 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_SMI_STS 0x0184 // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_AZA_SMI_EN 0x01A0 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_SMI_EN 0x01A4 // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_AZA_NMI_STS 0x01C0 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_NMI_STS 0x01C4 // Not supported setting for this group
+
+//#define R_CNL_PCH_LP_GPIO_PCR_AZA_NMI_EN 0x01E0 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_CPU_NMI_EN 0x01E4 // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_AZA_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_LP_GPIO_PCR_CPU_PADCFG_OFFSET 0x680
+
+//
+// GPIO Community 4 Private Configuration Registers
+//
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_PAD_OWN 0x20
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_PAD_OWN 0x2C
+#define R_CNL_PCH_LP_GPIO_PCR_JTAG_PAD_OWN 0x38
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_PAD_OWN 0x40
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_PADCFGLOCK 0x80
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_PADCFGLOCK 0x88
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_PADCFGLOCKTX 0x8C
+#define R_CNL_PCH_LP_GPIO_PCR_JTAG_PADCFGLOCK 0x90
+#define R_CNL_PCH_LP_GPIO_PCR_JTAG_PADCFGLOCKTX 0x94
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_PADCFGLOCK 0x98
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_PADCFGLOCKTX 0x9C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_HOSTSW_OWN 0xB0
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_HOSTSW_OWN 0xB4
+#define R_CNL_PCH_LP_GPIO_PCR_JTAG_HOSTSW_OWN 0xB8
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_HOSTSW_OWN 0xBC
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_GPI_IS 0x0100
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_GPI_IS 0x0104
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_GPI_IS 0x0108 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_GPI_IS 0x010C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_GPI_IE 0x0120
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_GPI_IE 0x0124
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_GPI_IE 0x0128 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_GPI_IE 0x012C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_GPI_GPE_STS 0x0144
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_GPI_GPE_STS 0x0148 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_GPI_GPE_STS 0x014C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_GPI_GPE_EN 0x0160
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_GPI_GPE_EN 0x0164
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_GPI_GPE_EN 0x0168 // Not supported setting for this group
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_GPI_GPE_EN 0x016C
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_SMI_STS 0x0180
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_SMI_STS 0x0184
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_SMI_STS 0x0188 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_SMI_STS 0x018C // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_SMI_EN 0x01A0
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_SMI_EN 0x01A4
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_SMI_EN 0x01A8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_SMI_EN 0x01AC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_NMI_STS 0x01C0
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_NMI_STS 0x01C4
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_NMI_STS 0x01C8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_NMI_STS 0x01CC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_NMI_EN 0x01E0
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_NMI_EN 0x01E4
+//#define R_CNL_PCH_LP_GPIO_PCR_JTAG_NMI_EN 0x01E8 // Not supported setting for this group
+//#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_NMI_EN 0x01EC // Not supported setting for this group
+
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_C_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_LP_GPIO_PCR_GPP_E_PADCFG_OFFSET 0x780
+#define R_CNL_PCH_LP_GPIO_PCR_JTAG_PADCFG_OFFSET 0x900
+#define R_CNL_PCH_LP_GPIO_PCR_HVMOS_PADCFG_OFFSET 0x990
+
+//
+// PCH-H GPIO registers
+//
+//
+// GPIO Community Common Private Configuration Registers
+//
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_A 0x0
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_B 0x1
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_C 0x2
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_D 0x3
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_E 0x6
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_F 0x7
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_G 0x4
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_H 0x8
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_K 0x9
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_I 0xA
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPP_J 0xB
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_GPD 0x5
+#define V_CNL_PCH_H_GPIO_PCR_MISCCFG_GPE0_VGPIO 0xD
+
+//
+// GPIO Community 0 Private Configuration Registers
+//
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_PAD_OWN 0x20
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_PAD_OWN 0x30
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_PADCFGLOCK 0x80
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_PADCFGLOCK 0x88
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_PADCFGLOCKTX 0x8C
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_HOSTSW_OWN 0xC0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_HOSTSW_OWN 0xC4
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_GPI_IS 0x0100
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_GPI_IS 0x0104
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_GPI_IE 0x0120
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_GPI_IE 0x0124
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_GPI_GPE_STS 0x0144
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_GPI_GPE_EN 0x0160
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_GPI_GPE_EN 0x0164
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_A_SMI_STS 0x0180 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_SMI_STS 0x0184
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_A_SMI_EN 0x01A0 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_SMI_EN 0x01A4
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_A_NMI_STS 0x01C0 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_NMI_STS 0x01C4
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_A_NMI_EN 0x01E0 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_NMI_EN 0x01E4
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_A_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_H_GPIO_PCR_GPP_B_PADCFG_OFFSET 0x790
+
+//
+// GPIO Community 1 Private Configuration Registers
+//
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_PAD_OWN 0x20
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_PAD_OWN 0x2C
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_PAD_OWN 0x38
+#define R_CNL_PCH_H_GPIO_PCR_AZA_PAD_OWN 0x3C
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_PAD_OWN 0x40
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_PADCFGLOCK 0x80
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_PADCFGLOCK 0x88
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_PADCFGLOCKTX 0x8C
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_PADCFGLOCK 0x90
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_PADCFGLOCKTX 0x94
+#define R_CNL_PCH_H_GPIO_PCR_AZA_PADCFGLOCK 0x98
+#define R_CNL_PCH_H_GPIO_PCR_AZA_PADCFGLOCKTX 0x9C
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_0_PADCFGLOCK 0xA0
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_0_PADCFGLOCKTX 0xA4
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_1_PADCFGLOCK 0xA8
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_1_PADCFGLOCKTX 0xAC
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_HOSTSW_OWN 0xC0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_HOSTSW_OWN 0xC4
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_HOSTSW_OWN 0xC8
+#define R_CNL_PCH_H_GPIO_PCR_AZA_HOSTSW_OWN 0xCC
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_HOSTSW_OWN 0xD0
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_GPI_IS 0x0100
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_GPI_IS 0x0104
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_GPI_IS 0x0108
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_GPI_IS 0x010C // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_GPI_IS 0x0110
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_GPI_IE 0x0120
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_GPI_IE 0x0124
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_GPI_IE 0x0128
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_GPI_IE 0x012C // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_GPI_IE 0x0130
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_GPI_GPE_STS 0x0144
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_GPI_GPE_STS 0x0148
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_GPI_GPE_STS 0x014C // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_GPI_GPE_STS 0x0150
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_GPI_GPE_EN 0x0160
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_GPI_GPE_EN 0x0164
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_GPI_GPE_EN 0x0168
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_GPI_GPE_EN 0x016C // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_GPI_GPE_EN 0x0170
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_SMI_STS 0x0180
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_SMI_STS 0x0184
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_SMI_STS 0x0188
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_SMI_STS 0x018C // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_VGPIO_SMI_STS 0x0190 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_SMI_EN 0x01A0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_SMI_EN 0x01A4
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_SMI_EN 0x01A8
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_SMI_EN 0x01AC // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_VGPIO_SMI_EN 0x01B0 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_NMI_STS 0x01C0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_NMI_STS 0x01C4
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_G_NMI_STS 0x01C8 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_NMI_STS 0x01CC // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_VGPIO_NMI_STS 0x01D0 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_NMI_EN 0x01E0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_NMI_EN 0x01E4
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_G_NMI_EN 0x01E8 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_AZA_NMI_EN 0x01EC // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_VGPIO_NMI_EN 0x01F0 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_C_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_H_GPIO_PCR_GPP_D_PADCFG_OFFSET 0x780
+#define R_CNL_PCH_H_GPIO_PCR_GPP_G_PADCFG_OFFSET 0x900
+#define R_CNL_PCH_H_GPIO_PCR_AZA_PADCFG_OFFSET 0x980
+#define R_CNL_PCH_H_GPIO_PCR_VGPIO_PADCFG_OFFSET 0xA00
+
+//
+// GPIO Community 2 Private Configuration Registers
+//
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_PAD_OWN 0x20
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_PADCFGLOCK 0x80
+#define R_CNL_PCH_H_GPIO_PCR_GPD_PADCFGLOCKTX 0x84
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_HOSTSW_OWN 0xB0
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_GPI_IS 0x0100
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_GPI_IE 0x0120
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_GPI_GPE_STS 0x0140
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_GPI_GPE_EN 0x0160
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPD_SMI_STS 0x0180 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPD_SMI_EN 0x01A0 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPD_NMI_STS 0x01C0 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPD_NMI_EN 0x01E0 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPD_PADCFG_OFFSET 0x600
+
+//
+// GPIO Community 3 Private Configuration Registers
+//
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_PAD_OWN 0x20
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_PAD_OWN 0x2C
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_PAD_OWN 0x38
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_PAD_OWN 0x40
+#define R_CNL_PCH_H_GPIO_PCR_SPI_PAD_OWN 0x4C
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_PADCFGLOCK 0x80
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_PADCFGLOCK 0x88
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_PADCFGLOCKTX 0x8C
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_PADCFGLOCK 0x90
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_PADCFGLOCKTX 0x94
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_PADCFGLOCK 0x98
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_PADCFGLOCKTX 0x9C
+#define R_CNL_PCH_H_GPIO_PCR_SPI_PADCFGLOCK 0xA0
+#define R_CNL_PCH_H_GPIO_PCR_SPI_PADCFGLOCKTX 0xA4
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_HOSTSW_OWN 0xC0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_HOSTSW_OWN 0xC4
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_HOSTSW_OWN 0xC8
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_HOSTSW_OWN 0xCC
+#define R_CNL_PCH_H_GPIO_PCR_SPI_HOSTSW_OWN 0xD0
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_GPI_IS 0x0100
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_GPI_IS 0x0104
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_GPI_IS 0x0108
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_GPI_IS 0x010C
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_GPI_IS 0x0110 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_GPI_IE 0x0120
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_GPI_IE 0x0124
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_GPI_IE 0x0128
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_GPI_IE 0x012C
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_GPI_IE 0x0130 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_GPI_GPE_STS 0x0140
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_GPI_GPE_STS 0x0144
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_GPI_GPE_STS 0x0148
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_GPI_GPE_STS 0x014C
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_GPI_GPE_STS 0x0150 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_GPI_GPE_EN 0x0160
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_GPI_GPE_EN 0x0164
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_GPI_GPE_EN 0x0168
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_GPI_GPE_EN 0x016C
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_GPI_GPE_EN 0x0170 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_K_SMI_STS 0x0180 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_H_SMI_STS 0x0184 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_SMI_STS 0x0188
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_F_SMI_STS 0x018C // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_SMI_STS 0x0190 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_K_SMI_EN 0x01A0 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_H_SMI_EN 0x01A4 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_SMI_EN 0x01A8
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_F_SMI_EN 0x01AC // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_SMI_EN 0x01B0 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_K_NMI_STS 0x01C0 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_H_NMI_STS 0x01C4 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_NMI_STS 0x01C8
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_F_NMI_STS 0x01CC // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_NMI_STS 0x01D0 // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_K_NMI_EN 0x01E0 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_H_NMI_EN 0x01E4 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_NMI_EN 0x01E8
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_F_NMI_EN 0x01EC // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_SPI_NMI_EN 0x01F0 // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_GPP_K_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_H_GPIO_PCR_GPP_H_PADCFG_OFFSET 0x780
+#define R_CNL_PCH_H_GPIO_PCR_GPP_E_PADCFG_OFFSET 0x900
+#define R_CNL_PCH_H_GPIO_PCR_GPP_F_PADCFG_OFFSET 0x9D0
+#define R_CNL_PCH_H_GPIO_PCR_SPI_PADCFG_OFFSET 0xB50
+
+//
+// GPIO Community 4 Private Configuration Registers
+//
+#define R_CNL_PCH_H_GPIO_PCR_CPU_PAD_OWN 0x20
+#define R_CNL_PCH_H_GPIO_PCR_JTAG_PAD_OWN 0x28
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_PAD_OWN 0x30
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_PAD_OWN 0x3C
+
+#define R_CNL_PCH_H_GPIO_PCR_CPU_PADCFGLOCK 0x80
+#define R_CNL_PCH_H_GPIO_PCR_CPU_PADCFGLOCKTX 0x84
+#define R_CNL_PCH_H_GPIO_PCR_JTAG_PADCFGLOCK 0x88
+#define R_CNL_PCH_H_GPIO_PCR_JTAG_PADCFGLOCKTX 0x8C
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_PADCFGLOCK 0x90
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_PADCFGLOCKTX 0x94
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_PADCFGLOCK 0x98
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_PADCFGLOCKTX 0x9C
+
+#define R_CNL_PCH_H_GPIO_PCR_CPU_HOSTSW_OWN 0xC0
+#define R_CNL_PCH_H_GPIO_PCR_JTAG_HOSTSW_OWN 0xC4
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_HOSTSW_OWN 0xC8
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_HOSTSW_OWN 0xCC
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_GPI_IS 0x0100 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_GPI_IS 0x0104 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_GPI_IS 0x0108
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_GPI_IS 0x010C
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_GPI_IE 0x0120 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_GPI_IE 0x0124 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_GPI_IE 0x0128
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_GPI_IE 0x012C
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_GPI_GPE_STS 0x0140 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_GPI_GPE_STS 0x0144 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_GPI_GPE_STS 0x0148
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_GPI_GPE_STS 0x014C
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_GPI_GPE_EN 0x0160 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_GPI_GPE_EN 0x0164 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_GPI_GPE_EN 0x0168
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_GPI_GPE_EN 0x016C
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_SMI_STS 0x0180 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_SMI_STS 0x0184 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_SMI_STS 0x0188
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_J_SMI_STS 0x018C // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_SMI_EN 0x01A0 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_SMI_EN 0x01A4 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_SMI_EN 0x01A8
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_J_SMI_EN 0x01AC // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_NMI_STS 0x01C0 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_NMI_STS 0x01C4 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_NMI_STS 0x01C8
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_J_NMI_STS 0x01CC // Not supported setting for this group
+
+//#define R_CNL_PCH_H_GPIO_PCR_CPU_NMI_EN 0x01E0 // Not supported setting for this group
+//#define R_CNL_PCH_H_GPIO_PCR_JTAG_NMI_EN 0x01E4 // Not supported setting for this group
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_NMI_EN 0x01E8
+//#define R_CNL_PCH_H_GPIO_PCR_GPP_J_NMI_EN 0x01EC // Not supported setting for this group
+
+#define R_CNL_PCH_H_GPIO_PCR_CPU_PADCFG_OFFSET 0x600
+#define R_CNL_PCH_H_GPIO_PCR_JTAG_PADCFG_OFFSET 0x6B0
+#define R_CNL_PCH_H_GPIO_PCR_GPP_I_PADCFG_OFFSET 0x740
+#define R_CNL_PCH_H_GPIO_PCR_GPP_J_PADCFG_OFFSET 0x860
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHda.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHda.h
new file mode 100644
index 0000000000..bc099d9662
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHda.h
@@ -0,0 +1,204 @@
+/** @file
+ Register names for PCH High Definition Audio device.
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_HDA_H_
+#define _PCH_REGS_HDA_H_
+
+//
+// HD-A Controller Registers (D31:F3)
+//
+// PCI Configuration Space Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_HDA 31
+#define PCI_FUNCTION_NUMBER_PCH_HDA 3
+
+#define R_HDA_CFG_PI 0x09
+#define V_HDA_CFG_PI_ADSP_UAA 0x80
+#define R_HDA_CFG_SCC 0x0A
+#define V_HDA_CFG_SCC_ADSP 0x01
+#define R_HDA_CFG_HDALBA 0x10
+#define B_HDA_CFG_HDALBA_LBA 0xFFFFC000
+#define V_HDA_CFG_HDBAR_SIZE (1 << 14)
+#define R_HDA_CFG_HDAUBA 0x14
+#define B_HDA_CFG_HDAUBA_UBA 0xFFFFFFFF
+#define R_HDA_CFG_CGCTL 0x48
+#define B_HDA_CFG_CGCTL_RSMTCGE BIT18
+#define B_HDA_CFG_CGCTL_MISCBDCGE BIT6
+#define R_HDA_CFG_PC 0x52
+#define V_HDA_CFG_PC_PMES 0x18
+#define N_HDA_CFG_PC_PMES 11
+#define R_HDA_CFG_PCS 0x54
+#define B_HDA_CFG_PCS_PMEE BIT8
+#define B_HDA_CFG_PCS_PS (BIT1 | BIT0)
+#define R_HDA_CFG_MMC 0x62
+#define B_HDA_CFG_MMC_ME BIT0
+#define R_HDA_CFG_DEVC 0x78
+#define B_HDA_CFG_DEVC_NSNPEN BIT11
+#define R_HDA_CFG_SEM1 0xC0
+#define B_HDA_CFG_SEM1_LFLCS BIT24
+#define B_HDA_CFG_SEM1_BLKC3DIS BIT17
+#define B_HDA_CFG_SEM1_TMODE BIT12
+#define B_HDA_CFG_SEM1_FIFORDYSEL (BIT10 | BIT9)
+#define R_HDA_CFG_SEM2 0xC4
+#define B_HDA_CFG_SEM2_BSMT (BIT27 | BIT26)
+#define V_HDA_CFG_SEM2_BSMT 0x1
+#define N_HDA_CFG_SEM2_BSMT 26
+#define B_HDA_CFG_SEM2_VC0SNR BIT24
+#define B_HDA_CFG_SEM2_DUM BIT23
+#define R_HDA_CFG_SEM3L 0xC8
+#define B_HDA_CFG_SEM3L_ISL1EXT2 (BIT21 | BIT20)
+#define V_HDA_CFG_SEM3L_ISL1EXT2 0x2
+#define N_HDA_CFG_SEM3L_ISL1EXT2 20
+#define R_HDA_CFG_SEM4L 0xD0
+#define B_HDA_CFG_SEM4L_OSL1EXT2 (BIT21 | BIT20)
+#define V_HDA_CFG_SEM4L_OSL1EXT2 0x3
+#define N_HDA_CFG_SEM4L_OSL1EXT2 20
+
+//
+// Memory Space Registers
+//
+//
+// Resides in 'HD Audio Global Registers' (0000h)
+//
+#define R_HDA_MEM_GCAP 0x00
+#define R_HDA_MEM_GCTL 0x08
+#define B_HDA_MEM_GCTL_CRST BIT0
+
+#define R_HDA_MEM_OUTPAY 0x04
+#define R_HDA_MEM_INPAY 0x06
+#define V_HDA_MEM_INPAY_DEFAULT 0x1C
+
+#define R_HDA_MEM_WAKEEN 0x0C
+#define B_HDA_MEM_WAKEEN_SDI_3 BIT3
+#define B_HDA_MEM_WAKEEN_SDI_2 BIT2
+#define B_HDA_MEM_WAKEEN_SDI_1 BIT1
+#define B_HDA_MEM_WAKEEN_SDI_0 BIT0
+
+#define R_HDA_MEM_WAKESTS 0x0E
+#define B_HDA_MEM_WAKESTS_SDIN3 BIT3
+#define B_HDA_MEM_WAKESTS_SDIN2 BIT2
+#define B_HDA_MEM_WAKESTS_SDIN1 BIT1
+#define B_HDA_MEM_WAKESTS_SDIN0 BIT0
+
+//
+// Resides in 'HD Audio Controller Registers' (0030h)
+//
+#define R_HDA_MEM_IC 0x60
+#define R_HDA_MEM_IR 0x64
+#define R_HDA_MEM_ICS 0x68
+#define B_HDA_MEM_ICS_IRV BIT1
+#define B_HDA_MEM_ICS_ICB BIT0
+
+//
+// Resides in 'HD Audio Processing Pipe Capability Structure' (0800h)
+//
+#define R_HDA_MEM_PPC 0x0800 // Processing Pipe Capability Structure (Memory Space, offset 0800h)
+#define R_HDA_MEM_PPCTL (R_HDA_MEM_PPC + 0x04)
+#define B_HDA_MEM_PPCTL_GPROCEN BIT30
+
+//
+// Resides in 'HD Audio Multiple Links Capability Structure' (0C00h)
+//
+#define HDA_HDALINK_INDEX 0
+#define HDA_IDISPLINK_INDEX 1
+
+#define R_HDA_MEM_MLC 0x0C00 // Multiple Links Capability Structure (Memory Space, offset 0C00h)
+#define R_HDA_MEM_LCTLX(x) (R_HDA_MEM_MLC + (0x40 + (0x40 * (x)) + 0x04)) // x - Link index: 0 - HDA Link, 1 - iDisp Link
+#define B_HDA_MEM_LCTLX_CPA BIT23
+#define B_HDA_MEM_LCTLX_SPA BIT16
+#define N_HDA_MEM_LCTLX_SCF 0
+#define V_HDA_MEM_LCTLX_SCF_6MHZ 0x0
+#define V_HDA_MEM_LCTLX_SCF_12MHZ 0x1
+#define V_HDA_MEM_LCTLX_SCF_24MHZ 0x2
+#define V_HDA_MEM_LCTLX_SCF_48MHZ 0x3
+#define V_HDA_MEM_LCTLX_SCF_96MHZ 0x4
+
+//
+// Resides in 'HD Audio Vendor Specific Registers' (1000h)
+//
+#define R_HDA_MEM_LTRC 0x1048
+#define V_HDA_MEM_LTRC_GB 0x29
+#define N_HDA_MEM_LTRC_GB 0
+#define R_HDA_MEM_PCE 0x104B
+#define B_HDA_MEM_PCE_D3HE BIT2
+
+//
+// Private Configuration Space Registers
+//
+//
+// Resides in IOSF & Fabric Configuration Registers (000h)
+//
+#define R_HDA_PCR_TTCCFG 0xE4
+#define B_HDA_PCR_TTCCFG_HCDT BIT1
+
+//
+// Resides in PCI & Codec Configuration Registers (500h)
+//
+#define R_HDA_PCR_PCICDCCFG 0x500 // PCI & Codec Configuration Registers (PCR, offset 500h)
+#define B_HDA_PCR_PCICDCCFG_ACPIIN 0x0000FF00
+#define N_HDA_PCR_PCICDCCFG_ACPIIN 8
+#define R_HDA_PCR_FNCFG (R_HDA_PCR_PCICDCCFG + 0x30)
+#define B_HDA_PCR_FNCFG_PGD BIT5
+#define B_HDA_PCR_FNCFG_BCLD BIT4
+#define B_HDA_PCR_FNCFG_CGD BIT3
+#define B_HDA_PCR_FNCFG_ADSPD BIT2
+#define B_HDA_PCR_FNCFG_HDASD BIT0
+#define R_HDA_PCR_CDCCFG (R_HDA_PCR_PCICDCCFG + 0x34)
+#define B_HDA_PCR_CDCCFG_DIS_SDIN2 BIT2
+
+//
+// Resides in Power Management & EBB Configuration Registers (600h)
+//
+#define R_HDA_PCR_PWRMANCFG 0x600 // Power Management & EBB Configuration Registers (PCR, offset 600h)
+#define R_HDA_PCR_APLLP0 (R_HDA_PCR_PWRMANCFG + 0x10)
+#define V_HDA_PCR_APLLP0 0xFC1E0000
+#define R_HDA_PCR_APLLP1 (R_HDA_PCR_PWRMANCFG + 0x14)
+#define V_HDA_PCR_APLLP1 0x00003F00
+#define R_HDA_PCR_APLLP2 (R_HDA_PCR_PWRMANCFG + 0x18)
+#define V_HDA_PCR_APLLP2 0x0000011D
+#define R_HDA_PCR_IOBCTL (R_HDA_PCR_PWRMANCFG + 0x1C)
+#define B_HDA_PCR_IOBCTL_OSEL (BIT9 | BIT8)
+#define V_HDA_PCR_IOBCTL_OSEL_HDALINK 0
+#define V_HDA_PCR_IOBCTL_OSEL_HDALINK_I2S 1
+#define V_HDA_PCR_IOBCTL_OSEL_I2S 3
+#define N_HDA_PCR_IOBCTL_OSEL 8
+#define B_HDA_PCR_IOBCTL_VSEL BIT1
+#define R_HDA_PCR_PTDC (R_HDA_PCR_PWRMANCFG + 0x28)
+#define B_HDA_PCR_PTDC_SRMIW (BIT6 | BIT5 | BIT4)
+
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHsio.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHsio.h
new file mode 100644
index 0000000000..0cd69eb299
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsHsio.h
@@ -0,0 +1,170 @@
+/** @file
+ Register definition for HSIO
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_HSIO_H_
+#define _PCH_REGS_HSIO_H_
+
+#define B_HSIO_PCR_ACCESS_TYPE (BIT15 | BIT14)
+#define N_HSIO_PCR_ACCESS_TYPE 14
+#define V_HSIO_PCR_ACCESS_TYPE_BDCAST (BIT15 | BIT14)
+#define V_HSIO_PCR_ACCESS_TYPE_MULCAST BIT15
+#define B_HSIO_PCR_LANE_GROUP_NO (BIT13 | BIT12 | BIT11 | BIT10 | BIT9)
+#define B_HSIO_PCR_FUNCTION_NO (BIT8 | BIT7)
+#define N_HSIO_PCR_FUNCTION_NO 7
+#define B_HSIO_PCR_REG_OFFSET (BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)
+
+#define V_HSIO_PCR_ACCESS_TYPE_BCAST 0x03
+#define V_HSIO_PCR_ACCESS_TYPE_MCAST 0x02
+#define V_HSIO_PCR_ACCESS_TYPE_UCAST 0x00
+
+#define V_HSIO_PCR_LANE_GROUP_NO_CMN_LANE 0x00
+
+#define V_HSIO_PCR_FUNCTION_NO_PCS 0x00
+#define V_HSIO_PCR_FUNCTION_NO_TX 0x01
+#define V_HSIO_PCR_FUNCTION_NO_RX 0x02
+
+#define V_HSIO_PCR_FUNCTION_NO_CMNDIG 0x00
+#define V_HSIO_PCR_FUNCTION_NO_CMNANA 0x01
+#define V_HSIO_PCR_FUNCTION_NO_PLL 0x02
+
+#define R_HSIO_PCR_PCS_DWORD4 0x10
+
+#define R_HSIO_PCR_PCS_DWORD8 0x20
+#define B_HSIO_PCR_PCS_DWORD8_CRI_RXEB_PTR_INIT_4_0 0x1F000000
+#define B_HSIO_PCR_PCS_DWORD8_CRI_RXEB_LOWATER_4_0 0x001F0000
+#define N_HSIO_PCR_PCS_DWORD8_CRI_RXEB_LOWATER_4_0 16
+#define B_HSIO_PCR_PCS_DWORD8_CRI_RXEB_HIWATER_4_0 0x00001F00
+#define N_HSIO_PCR_PCS_DWORD8_CRI_RXEB_HIWATER_4_0 8
+
+#define R_HSIO_PCR_PCS_DWORD9 0x24
+#define B_HSIO_PCR_PCS_DWORD9_REG_ENABLE_PWR_GATING BIT29
+
+#define R_HSIO_PCR_RX_DWORD8 0x220
+#define B_HSIO_PCR_RX_DWORD8_ICFGDFETAP3_EN BIT10
+
+#define R_HSIO_PCR_RX_DWORD9 0x224
+#define B_HSIO_PCR_RX_DWORD9_CFGDFETAP4_OVERRIDE_EN BIT24
+#define B_HSIO_PCR_RX_DWORD9_CFGDFETAP3_OVERRIDE_EN BIT26
+#define B_HSIO_PCR_RX_DWORD9_CFGDFETAP2_OVERRIDE_EN BIT28
+#define B_HSIO_PCR_RX_DWORD9_CFGDFETAP1_OVERRIDE_EN BIT30
+
+#define R_HSIO_PCR_RX_DWORD12 0x230
+#define B_HSIO_PCR_RX_DWORD12_O_CFGEWMARGINSEL BIT14
+
+#define R_HSIO_PCR_RX_DWORD20 0x250
+#define B_HSIO_PCR_RX_DWORD20_ICFGCTLEDATATAP_FULLRATE_5_0 (BIT29 | BIT28 | BIT27 | BIT26 | BIT25 | BIT24)
+#define N_HSIO_PCR_RX_DWORD20_ICFGCTLEDATATAP_FULLRATE_5_0 24
+
+#define R_HSIO_PCR_RX_DWORD21 0x254
+#define B_HSIO_PCR_RX_DWORD21_ICFGCTLEDATATAP_QUATRATE_5_0 (BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)
+#define N_HSIO_PCR_RX_DWORD21_ICFGCTLEDATATAP_QUATRATE_5_0 8
+#define B_HSIO_PCR_RX_DWORD21_ICFGCTLEDATATAP_HALFRATE_5_0 (BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)
+#define N_HSIO_PCR_RX_DWORD21_ICFGCTLEDATATAP_HALFRATE_5_0 0
+
+#define R_HSIO_PCR_RX_DWORD23 0x25C
+#define B_HSIO_PCR_RX_DWORD23_ICFGVGABLWTAP_OVERRIDE_EN BIT2
+#define B_HSIO_PCR_RX_DWORD23_CFGVGATAP_ADAPT_OVERRIDE_EN BIT4
+
+#define R_HSIO_PCR_RX_DWORD25 0x264
+#define B_HSIO_PCR_RX_DWORD25_RX_TAP_CFG_CTRL BIT3
+#define B_HSIO_PCR_RX_DWORD25_CTLE_ADAPT_OFFSET_CFG_4_0 0x1F0000
+#define N_HSIO_PCR_RX_DWORD25_CTLE_ADAPT_OFFSET_CFG_4_0 16
+
+#define R_HSIO_PCR_RX_DWORD26 0x268
+#define B_HSIO_PCR_RX_DWORD26_SATA_EQ_DIS BIT16
+
+#define R_HSIO_PCR_RX_DWORD34 0x288
+#define B_HSIO_PCR_RX_DWORD34_MM_PH_OFC_SCALE_2_0 (BIT14 | BIT13 | BIT12)
+#define N_HSIO_PCR_RX_DWORD34_MM_PH_OFC_SCALE_2_0 12
+
+#define R_HSIO_PCR_RX_DWORD44 0x2B0
+#define B_HSIO_PCR_RX_DWORD44_0_DFE_DATASUMCAL0_7_0 0xFF0000
+#define N_HSIO_PCR_RX_DWORD44_0_DFE_DATASUMCAL0_7_0 16
+
+#define R_HSIO_PCR_RX_DWORD56 0x2E0
+#define B_HSIO_PCR_RX_DWORD56_ICFGPIDACCFGVALID BIT16
+
+#define R_HSIO_PCR_RX_DWORD57 0x2E4
+#define B_HSIO_PCR_RX_DWORD57_JIM_COURSE BIT30
+#define B_HSIO_PCR_RX_DWORD57_JIM_ENABLE BIT29
+#define B_HSIO_PCR_RX_DWORD57_JIMMODE BIT28
+#define B_HSIO_PCR_RX_DWORD57_JIMNUMCYCLES_3_0 0x0F000000
+#define N_HSIO_PCR_RX_DWORD57_JIMNUMCYCLES_3_0 24
+#define B_HSIO_PCR_RX_DWORD57_ICFGMARGINEN BIT0
+
+#define R_HSIO_PCR_RX_DWORD59 0x2EC
+#define R_HSIO_PCR_RX_DWORD60 0x2F0
+
+#define R_HSIO_PCR_TX_DWORD5 0x154
+#define B_HSIO_PCR_TX_DWORD5_OW2TAPGEN2DEEMPH3P5_5_0 (BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16)
+#define N_HSIO_PCR_TX_DWORD5_OW2TAPGEN2DEEMPH3P5_5_0 16
+#define B_HSIO_PCR_TX_DWORD5_OW2TAPGEN1DEEMPH3P5_5_0 (BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)
+#define N_HSIO_PCR_TX_DWORD5_OW2TAPGEN1DEEMPH3P5_5_0 8
+
+#define R_HSIO_PCR_TX_DWORD6 0x158
+#define B_HSIO_PCR_TX_DWORD6_OW2TAPGEN3DEEMPH6P0_5_0 (BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16)
+#define N_HSIO_PCR_TX_DWORD6_OW2TAPGEN3DEEMPH6P0_5_0 16
+#define B_HSIO_PCR_TX_DWORD6_OW2TAPGEN2DEEMPH6P0_5_0 (BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)
+#define N_HSIO_PCR_TX_DWORD6_OW2TAPGEN2DEEMPH6P0_5_0 8
+#define B_HSIO_PCR_TX_DWORD6_OW2TAPGEN1DEEMPH6P0_5_0 (BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0)
+
+#define R_HSIO_PCR_TX_DWORD8 0x160
+#define B_HSIO_PCR_TX_DWORD8_ORATE10MARGIN_5_0 (BIT29 | BIT28 | BIT27 | BIT26 | BIT25 | BIT24)
+#define N_HSIO_PCR_TX_DWORD8_ORATE10MARGIN_5_0 24
+#define B_HSIO_PCR_TX_DWORD8_ORATE01MARGIN_5_0 (BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16)
+#define N_HSIO_PCR_TX_DWORD8_ORATE01MARGIN_5_0 16
+#define B_HSIO_PCR_TX_DWORD8_ORATE00MARGIN_5_0 (BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8)
+#define N_HSIO_PCR_TX_DWORD8_ORATE00MARGIN_5_0 8
+
+#define R_HSIO_PCR_TX_DWORD19 0x18C
+
+#define R_HSIO_PCR_CLANE0_CMN_ANA_DWORD2 0x80C8
+#define B_HSIO_PCR_CLANE0_CMN_ANA_DWORD2_O_DTPLL1_lC_PLLEN_H_OVRDEN BIT5
+#define B_HSIO_PCR_CLANE0_CMN_ANA_DWORD2_O_DTPLL1_lC_FULLCALRESET_L_OVERDEN BIT3
+
+#define R_HSIO_PCR_PLL_SSC_DWORD2 0x8188
+#define B_HSIO_PCR_PLL_SSC_DWORD2_SSCSTEPSIZE_7_0 (BIT23 | BIT22 | BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16)
+#define N_HSIO_PCR_PLL_SSC_DWORD2_SSCSTEPSIZE_7_0 16
+#define B_HSIO_PCR_PLL_SSC_DWORD2_SSCSEN BIT10
+#define N_HSIO_PCR_PLL_SSC_DWORD2_SSCSEN 10
+
+#define R_HSIO_PCR_PLL_SSC_DWORD3 0x818C
+#define B_HSIO_PCR_PLL_SSC_DWORD3_SSC_PROPAGATE BIT0
+
+
+#endif //_PCH_REGS_HSIO_H_
+
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsIsh.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsIsh.h
new file mode 100644
index 0000000000..5b4e23c43f
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsIsh.h
@@ -0,0 +1,79 @@
+/** @file
+ Register names for PCH Integrated Sensor Hub (ISH3.0)
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_ISH_H_
+#define _PCH_REGS_ISH_H_
+
+//
+// ISH Controller Registers
+//
+// D19:F0
+#define PCI_DEVICE_NUMBER_PCH_ISH 19
+#define PCI_FUNCTION_NUMBER_PCH_ISH 0
+
+// PCI Configuration Space Registers
+#define R_ISH_CFG_BAR0_LOW 0x10
+#define R_ISH_CFG_BAR0_HIGH 0x14
+#define V_ISH_CFG_BAR0_SIZE 0x100000
+#define N_ISH_CFG_BAR0_ALIGNMENT 20
+#define R_ISH_CFG_BAR1_LOW 0x18
+#define R_ISH_CFG_BAR1_HIGH 0x1C
+#define V_ISH_CFG_BAR1_SIZE 0x1000
+#define N_ISH_CFG_BAR1_ALIGNMENT 12
+
+//
+// ISH Private Configuration Space Registers (IOSF2OCP)
+// (PID:ISH)
+//
+#define R_ISH_PCR_PMCTL 0x1D0 ///< Power Management
+#define R_ISH_PCR_PCICFGCTRL 0x200 ///< PCI Configuration Control
+#define B_ISH_PCR_PCICFGCTR_PCI_IRQ 0x0FF00000 ///< PCI IRQ number
+#define N_ISH_PCR_PCICFGCTR_PCI_IRQ 20
+#define B_ISH_PCR_PCICFGCTR_ACPI_IRQ 0x000FF000 ///< ACPI IRQ number
+#define N_ISH_PCR_PCICFGCTR_ACPI_IRQ 12
+#define B_ISH_PCR_PCICFGCTR_IPIN1 (BIT11 | BIT10 | BIT9 | BIT8) ///< Interrupt Pin
+#define N_ISH_PCR_PCICFGCTR_IPIN1 8
+#define B_ISH_PCR_PCICFGCTRL_BAR1DIS BIT7 ///< BAR1 Disable
+
+//
+// Number of pins used by ISH controllers
+//
+#define PCH_ISH_PINS_PER_I2C_CONTROLLER 2
+#define PCH_ISH_PINS_PER_UART_CONTROLLER 4
+#define PCH_ISH_PINS_PER_SPI_CONTROLLER 4
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsItss.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsItss.h
new file mode 100644
index 0000000000..8d7c3f9015
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsItss.h
@@ -0,0 +1,103 @@
+/** @file
+ Register names for ITSS
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_ITSS_H_
+#define _PCH_REGS_ITSS_H_
+
+//
+// ITSS PCRs (PID:ITSS)
+//
+#define R_ITSS_PCR_PIRQA_ROUT 0x3100 ///< PIRQA Routing Control register
+#define R_ITSS_PCR_PIRQB_ROUT 0x3101 ///< PIRQB Routing Control register
+#define R_ITSS_PCR_PIRQC_ROUT 0x3102 ///< PIRQC Routing Control register
+#define R_ITSS_PCR_PIRQD_ROUT 0x3103 ///< PIRQD Routing Control register
+#define R_ITSS_PCR_PIRQE_ROUT 0x3104 ///< PIRQE Routing Control register
+#define R_ITSS_PCR_PIRQF_ROUT 0x3105 ///< PIRQF Routing Control register
+#define R_ITSS_PCR_PIRQG_ROUT 0x3106 ///< PIRQG Routing Control register
+#define R_ITSS_PCR_PIRQH_ROUT 0x3107 ///< PIRQH Routing Control register
+#define B_ITSS_PCR_PIRQX_ROUT_REN 0x80 ///< Interrupt Routing Enable
+#define B_ITSS_PCR_PIRQX_ROUT_IR 0x0F ///< IRQ Routng
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_3 0x03 ///< Route PIRQx to IRQ3
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_4 0x04 ///< Route PIRQx to IRQ4
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_5 0x05 ///< Route PIRQx to IRQ5
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_6 0x06 ///< Route PIRQx to IRQ6
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_7 0x07 ///< Route PIRQx to IRQ7
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_9 0x09 ///< Route PIRQx to IRQ9
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_10 0x0A ///< Route PIRQx to IRQ10
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_11 0x0B ///< Route PIRQx to IRQ11
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_12 0x0C ///< Route PIRQx to IRQ12
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_14 0x0E ///< Route PIRQx to IRQ14
+#define V_ITSS_PCR_PIRQX_ROUT_IRQ_15 0x0F ///< Route PIRQx to IRQ15
+
+#define R_ITSS_PCR_PIR0 0x3140 ///< PCI Interrupt Route 0
+#define R_ITSS_PCR_PIR1 0x3142 ///< PCI Interrupt Route 1
+#define R_ITSS_PCR_PIR2 0x3144 ///< PCI Interrupt Route 2
+#define R_ITSS_PCR_PIR3 0x3146 ///< PCI Interrupt Route 3
+#define R_ITSS_PCR_PIR4 0x3148 ///< PCI Interrupt Route 4
+#define R_ITSS_PCR_PIR5 0x314A ///< PCI Interrupt Route 5
+#define R_ITSS_PCR_PIR6 0x314C ///< PCI Interrupt Route 6
+#define R_ITSS_PCR_PIR7 0x314E ///< PCI Interrupt Route 7
+#define R_ITSS_PCR_PIR8 0x3150 ///< PCI Interrupt Route 8
+#define R_ITSS_PCR_PIR9 0x3152 ///< PCI Interrupt Route 9
+#define R_ITSS_PCR_PIR10 0x3154 ///< PCI Interrupt Route 10
+#define R_ITSS_PCR_PIR11 0x3156 ///< PCI Interrupt Route 11
+#define R_ITSS_PCR_PIR12 0x3158 ///< PCI Interrupt Route 12
+
+#define R_ITSS_PCR_GIC 0x31FC ///< General Interrupt Control
+#define B_ITSS_PCR_GIC_MAX_IRQ_24 BIT9 ///< Max IRQ entry size, 1 = 24 entry size, 0 = 120 entry size
+#define B_ITSS_PCR_GIC_AME BIT17 ///< Alternate Access Mode Enable
+#define B_ITSS_PCR_GIC_SPS BIT16 ///< Shutdown Policy Select
+#define R_ITSS_PCR_IPC0 0x3200 ///< Interrupt Polarity Control 0
+#define R_ITSS_PCR_IPC1 0x3204 ///< Interrupt Polarity Control 1
+#define R_ITSS_PCR_IPC2 0x3208 ///< Interrupt Polarity Control 2
+#define R_ITSS_PCR_IPC3 0x320C ///< Interrupt Polarity Control 3
+#define R_ITSS_PCR_ITSSPRC 0x3300 ///< ITSS Power Reduction Control
+#define B_ITSS_PCR_ITSSPRC_PGCBDCGE BIT4 ///< PGCB Dynamic Clock Gating Enable
+#define B_ITSS_PCR_ITSSPRC_HPETDCGE BIT3 ///< HPET Dynamic Clock Gating Enable
+#define B_ITSS_PCR_ITSSPRC_8254CGE BIT2 ///< 8254 Static Clock Gating Enable
+#define B_ITSS_PCR_ITSSPRC_IOSFICGE BIT1 ///< IOSF-Sideband Interface Clock Gating Enable
+#define B_ITSS_PCR_ITSSPRC_ITSSCGE BIT0 ///< ITSS Clock Gate Enable
+#define R_ITSS_PCR_NMI 0x3330 ///< NMI Control
+#define N_ITSS_PCR_NMI_NMI2SMI_STS 3 ///< NMI2SMI Status
+#define N_ITSS_PCR_NMI_NMI2SMI_EN 2 ///< NMI2SMI Enable
+#define B_ITSS_PCR_NMI_NMI2SMI_EN BIT2 ///< NMI2SMI Enable
+#define B_ITSS_PCR_NMI_NMI_NOW_STS BIT1 ///< NMI_NOW_STS
+#define B_ITSS_PCR_NMI_NMI_NOW BIT0 ///< NMI_NOW
+#define R_ITSS_PCR_MMC 0x3334 ///< Master Message Control
+#define B_ITSS_PCR_MMC_MSTRMSG_EN BIT0 ///< Master Message Enable
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLan.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLan.h
new file mode 100644
index 0000000000..f649873f67
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLan.h
@@ -0,0 +1,58 @@
+/** @file
+ Register names for PCH LAN device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_LAN_H_
+#define _PCH_REGS_LAN_H_
+
+//
+// Gigabit LAN Controller configuration registers (D31:F6)
+//
+#define PCI_DEVICE_NUMBER_PCH_LAN 31
+#define PCI_FUNCTION_NUMBER_PCH_LAN 6
+
+#define R_LAN_CFG_MBARA 0x10
+#define N_LAN_CFG_MBARA_ALIGN 17
+#define R_LAN_CFG_PMCS 0xCC
+#define B_LAN_CFG_PMCS_PS (BIT1 | BIT0)
+#define V_LAN_CFG_PMCS_PS0 0x00
+#define R_LAN_MEM_CSR_RAL 0x5400
+#define R_LAN_MEM_CSR_RAH 0x5404
+#define B_LAN_MEM_CSR_RAH_RAH 0x0000FFFF
+#define R_LAN_MEM_CSR_WUC 0x5800
+#define B_LAN_MEM_CSR_WUC_APME BIT0
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpc.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpc.h
new file mode 100644
index 0000000000..34fc3c4dd2
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpc.h
@@ -0,0 +1,360 @@
+/** @file
+ Register names for PCH LPC/eSPI device
+
+Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_LPC_H_
+#define _PCH_REGS_LPC_H_
+
+#define B_LPC_CFG_DID 0xFFE0
+
+//
+// PCI to LPC Bridge Registers (D31:F0)
+//
+#define PCI_DEVICE_NUMBER_PCH_LPC 31
+#define PCI_FUNCTION_NUMBER_PCH_LPC 0
+
+#define V_LPC_CFG_VENDOR_ID V_PCH_INTEL_VENDOR_ID
+
+
+#define R_LPC_CFG_SERIRQ_CNT 0x64
+#define B_LPC_CFG_SERIRQ_CNT_SIRQEN BIT7
+#define B_LPC_CFG_SERIRQ_CNT_SIRQMD BIT6
+#define B_LPC_CFG_SERIRQ_CNT_SIRQSZ (BIT5 | BIT4 | BIT3 | BIT2)
+#define N_LPC_CFG_SERIRQ_CNT_SIRQSZ 2
+#define B_LPC_CFG_SERIRQ_CNT_SFPW (BIT1 | BIT0)
+#define N_LPC_CFG_SERIRQ_CNT_SFPW 0
+#define V_LPC_CFG_SERIRQ_CNT_SFPW_4CLK 0x00
+#define V_LPC_CFG_SERIRQ_CNT_SFPW_6CLK 0x01
+#define V_LPC_CFG_SERIRQ_CNT_SFPW_8CLK 0x02
+
+#define R_LPC_CFG_IOD 0x80
+#define B_LPC_CFG_IOD_FDD BIT12
+#define N_LPC_CFG_IOD_FDD 12
+#define V_LPC_CFG_IOD_FDD_3F0 0
+#define V_LPC_CFG_IOD_FDD_370 1
+#define B_LPC_CFG_IOD_LPT (BIT9 | BIT8)
+#define N_LPC_CFG_IOD_LPT 8
+#define V_LPC_CFG_IOD_LPT_378 0
+#define V_LPC_CFG_IOD_LPT_278 1
+#define V_LPC_CFG_IOD_LPT_3BC 2
+#define B_LPC_CFG_IOD_COMB (BIT6 | BIT5 |BIT4)
+#define N_LPC_CFG_IOD_COMB 4
+#define V_LPC_CFG_IOD_COMB_3F8 0
+#define V_LPC_CFG_IOD_COMB_2F8 1
+#define V_LPC_CFG_IOD_COMB_220 2
+#define V_LPC_CFG_IOD_COMB_228 3
+#define V_LPC_CFG_IOD_COMB_238 4
+#define V_LPC_CFG_IOD_COMB_2E8 5
+#define V_LPC_CFG_IOD_COMB_338 6
+#define V_LPC_CFG_IOD_COMB_3E8 7
+#define B_LPC_CFG_IOD_COMA (BIT2 | BIT1 | BIT0)
+#define N_LPC_CFG_IOD_COMA 0
+#define V_LPC_CFG_IOD_COMA_3F8 0
+#define V_LPC_CFG_IOD_COMA_2F8 1
+#define V_LPC_CFG_IOD_COMA_220 2
+#define V_LPC_CFG_IOD_COMA_228 3
+#define V_LPC_CFG_IOD_COMA_238 4
+#define V_LPC_CFG_IOD_COMA_2E8 5
+#define V_LPC_CFG_IOD_COMA_338 6
+#define V_LPC_CFG_IOD_COMA_3E8 7
+#define R_LPC_CFG_IOE 0x82
+#define B_LPC_CFG_IOE_ME2 BIT13 ///< Microcontroller Enable #2, Enables decoding of I/O locations 4Eh and 4Fh to LPC
+#define B_LPC_CFG_IOE_SE BIT12 ///< Super I/O Enable, Enables decoding of I/O locations 2Eh and 2Fh to LPC.
+#define B_LPC_CFG_IOE_ME1 BIT11 ///< Microcontroller Enable #1, Enables decoding of I/O locations 62h and 66h to LPC.
+#define B_LPC_CFG_IOE_KE BIT10 ///< Keyboard Enable, Enables decoding of the keyboard I/O locations 60h and 64h to LPC.
+#define B_LPC_CFG_IOE_HGE BIT9 ///< High Gameport Enable, Enables decoding of the I/O locations 208h to 20Fh to LPC.
+#define B_LPC_CFG_IOE_LGE BIT8 ///< Low Gameport Enable, Enables decoding of the I/O locations 200h to 207h to LPC.
+#define B_LPC_CFG_IOE_FDE BIT3 ///< Floppy Drive Enable, Enables decoding of the FDD range to LPC. Range is selected by LIOD.FDE
+#define B_LPC_CFG_IOE_PPE BIT2 ///< Parallel Port Enable, Enables decoding of the LPT range to LPC. Range is selected by LIOD.LPT.
+#define B_LPC_CFG_IOE_CBE BIT1 ///< Com Port B Enable, Enables decoding of the COMB range to LPC. Range is selected LIOD.CB.
+#define B_LPC_CFG_IOE_CAE BIT0 ///< Com Port A Enable, Enables decoding of the COMA range to LPC. Range is selected LIOD.CA.
+#define R_LPC_CFG_GEN1_DEC 0x84
+#define R_LPC_CFG_GEN2_DEC 0x88
+#define R_LPC_CFG_GEN3_DEC 0x8C
+#define R_LPC_CFG_GEN4_DEC 0x90
+#define B_LPC_CFG_GENX_DEC_IODRA 0x00FC0000
+#define B_LPC_CFG_GENX_DEC_IOBAR 0x0000FFFC
+#define B_LPC_CFG_GENX_DEC_EN 0x00000001
+#define R_LPC_CFG_ULKMC 0x94
+#define B_LPC_CFG_ULKMC_SMIBYENDPS BIT15
+#define B_LPC_CFG_ULKMC_TRAPBY64W BIT11
+#define B_LPC_CFG_ULKMC_TRAPBY64R BIT10
+#define B_LPC_CFG_ULKMC_TRAPBY60W BIT9
+#define B_LPC_CFG_ULKMC_TRAPBY60R BIT8
+#define B_LPC_CFG_ULKMC_SMIATENDPS BIT7
+#define B_LPC_CFG_ULKMC_PSTATE BIT6
+#define B_LPC_CFG_ULKMC_A20PASSEN BIT5
+#define B_LPC_CFG_ULKMC_USBSMIEN BIT4
+#define B_LPC_CFG_ULKMC_64WEN BIT3
+#define B_LPC_CFG_ULKMC_64REN BIT2
+#define B_LPC_CFG_ULKMC_60WEN BIT1
+#define B_LPC_CFG_ULKMC_60REN BIT0
+#define R_LPC_CFG_LGMR 0x98
+#define B_LPC_CFG_LGMR_MA 0xFFFF0000
+#define B_LPC_CFG_LGMR_LMRD_EN BIT0
+#define R_ESPI_CFG_CS1IORE 0xA0
+#define R_ESPI_CFG_CS1IORE_DPCS1RE BIT14
+#define R_ESPI_CFG_CS1GIR1 0xA4
+#define R_ESPI_CFG_CS1GMR1 0xA8
+
+#define R_LPC_CFG_FWH_BIOS_SEL 0xD0
+#define B_LPC_CFG_FWH_BIOS_SEL_F8 0xF0000000
+#define B_LPC_CFG_FWH_BIOS_SEL_F0 0x0F000000
+#define B_LPC_CFG_FWH_BIOS_SEL_E8 0x00F00000
+#define B_LPC_CFG_FWH_BIOS_SEL_E0 0x000F0000
+#define B_LPC_CFG_FWH_BIOS_SEL_D8 0x0000F000
+#define B_LPC_CFG_FWH_BIOS_SEL_D0 0x00000F00
+#define B_LPC_CFG_FWH_BIOS_SEL_C8 0x000000F0
+#define B_LPC_CFG_FWH_BIOS_SEL_C0 0x0000000F
+#define R_LPC_CFG_FWH_BIOS_SEL2 0xD4
+#define B_LPC_CFG_FWH_BIOS_SEL2_70 0xF000
+#define B_LPC_CFG_FWH_BIOS_SEL2_60 0x0F00
+#define B_LPC_CFG_FWH_BIOS_SEL2_50 0x00F0
+#define B_LPC_CFG_FWH_BIOS_SEL2_40 0x000F
+#define R_LPC_CFG_BDE 0xD8 ///< BIOS decode enable
+#define B_LPC_CFG_BDE_F8 BIT15
+#define B_LPC_CFG_BDE_F0 BIT14
+#define B_LPC_CFG_BDE_E8 BIT13
+#define B_LPC_CFG_BDE_E0 BIT12
+#define B_LPC_CFG_BDE_D8 BIT11
+#define B_LPC_CFG_BDE_D0 BIT10
+#define B_LPC_CFG_BDE_C8 BIT9
+#define B_LPC_CFG_BDE_C0 BIT8
+#define B_LPC_CFG_BDE_LEG_F BIT7
+#define B_LPC_CFG_BDE_LEG_E BIT6
+#define B_LPC_CFG_BDE_70 BIT3
+#define B_LPC_CFG_BDE_60 BIT2
+#define B_LPC_CFG_BDE_50 BIT1
+#define B_LPC_CFG_BDE_40 BIT0
+#define R_LPC_CFG_PCC 0xE0
+#define B_LPC_CFG_PCC_CLKRUN_EN BIT0
+
+#define B_LPC_CFG_FVEC0_USB_PORT_CAP (BIT11 | BIT10)
+#define V_LPC_CFG_FVEC0_USB_14_PORT 0x00000000
+#define V_LPC_CFG_FVEC0_USB_12_PORT 0x00000400
+#define V_LPC_CFG_FVEC0_USB_10_PORT 0x00000800
+#define B_LPC_CFG_FVEC0_SATA_RAID_CAP BIT7
+#define B_LPC_CFG_FVEC0_SATA_PORT23_CAP BIT6
+#define B_LPC_CFG_FVEC0_SATA_PORT1_6GB_CAP BIT3
+#define B_LPC_CFG_FVEC0_SATA_PORT0_6GB_CAP BIT2
+#define B_LPC_CFG_FVEC0_PCI_CAP BIT1
+#define R_LPC_CFG_FVEC1 0x01
+#define B_LPC_CFG_FVEC1_USB_R_CAP BIT22
+#define R_LPC_CFG_FVEC2 0x02
+#define V_LPC_CFG_FVEC2_PCIE_PORT78_CAP 0x00200000
+#define V_LPC_CFG_FVEC2_PCH_IG_SUPPORT_CAP 0x00020000 ///< PCH Integrated Graphics Support Capability
+#define R_LPC_CFG_FVEC3 0x03
+#define B_LPC_CFG_FVEC3_DCMI_CAP BIT13 ///< Data Center Manageability Interface (DCMI) Capability
+#define B_LPC_CFG_FVEC3_NM_CAP BIT12 ///< Node Manager Capability
+
+#define R_LPC_CFG_MDAP 0xC0
+#define B_LPC_CFG_MDAP_POLICY_EN BIT31
+#define B_LPC_CFG_MDAP_PDMA_EN BIT30
+#define B_LPC_CFG_MDAP_VALUE 0x0001FFFF
+
+//
+// APM Registers
+//
+#define R_PCH_IO_APM_CNT 0xB2
+#define R_PCH_IO_APM_STS 0xB3
+
+#define R_LPC_CFG_BC 0xDC ///< Bios Control
+#define S_LPC_CFG_BC 1
+#define B_LPC_CFG_BC_BILD BIT7 ///< BIOS Interface Lock-Down
+#define B_LPC_CFG_BC_BBS BIT6 ///< Boot BIOS strap
+#define N_LPC_CFG_BC_BBS 6
+#define V_LPC_CFG_BC_BBS_SPI 0 ///< Boot BIOS strapped to SPI
+#define V_LPC_CFG_BC_BBS_LPC 1 ///< Boot BIOS strapped to LPC
+#define B_LPC_CFG_BC_EISS BIT5 ///< Enable InSMM.STS
+#define B_LPC_CFG_BC_TS BIT4 ///< Top Swap
+#define B_LPC_CFG_BC_LE BIT1 ///< Lock Enable
+#define N_LPC_CFG_BC_LE 1
+#define B_LPC_CFG_BC_WPD BIT0 ///< Write Protect Disable
+
+#define R_ESPI_CFG_PCBC 0xDC ///< Peripheral Channel BIOS Control
+#define S_ESPI_CFG_PCBC 4 ///< Peripheral Channel BIOS Control register size
+#define B_ESPI_CFG_PCBC_BWRE BIT11 ///< BIOS Write Report Enable
+#define N_ESPI_CFG_PCBC_BWRE 11 ///< BIOS Write Report Enable bit position
+#define B_ESPI_CFG_PCBC_BWRS BIT10 ///< BIOS Write Report Status
+#define N_ESPI_CFG_PCBC_BWRS 10 ///< BIOS Write Report Status bit position
+#define B_ESPI_CFG_PCBC_BWPDS BIT8 ///< BIOS Write Protect Disable Status
+#define N_ESPI_CFG_PCBC_BWPDS 8 ///< BIOS Write Protect Disable Status bit position
+#define B_ESPI_CFG_PCBC_ESPI_EN BIT2 ///< eSPI Enable Pin Strap
+#define B_ESPI_CFG_PCBC_LE BIT1 ///< Lock Enable
+#define N_ESPI_CFG_PCBC_LE 1
+
+//
+// eSPI slave registers
+//
+#define R_ESPI_SLAVE_CHA_0_CAP_AND_CONF 0x10 ///< Channel 0 Capabilities and Configurations
+#define B_ESPI_SLAVE_BME BIT2 ///< Bus Master Enable
+
+//
+// Processor interface registers
+//
+#define R_PCH_IO_NMI_SC 0x61
+#define B_PCH_IO_NMI_SC_SERR_NMI_STS BIT7
+#define B_PCH_IO_NMI_SC_IOCHK_NMI_STS BIT6
+#define B_PCH_IO_NMI_SC_TMR2_OUT_STS BIT5
+#define B_PCH_IO_NMI_SC_REF_TOGGLE BIT4
+#define B_PCH_IO_NMI_SC_IOCHK_NMI_EN BIT3
+#define B_PCH_IO_NMI_SC_PCI_SERR_EN BIT2
+#define B_PCH_IO_NMI_SC_SPKR_DAT_EN BIT1
+#define B_PCH_IO_NMI_SC_TIM_CNT2_EN BIT0
+#define R_PCH_IO_NMI_EN 0x70
+#define B_PCH_IO_NMI_EN_NMI_EN BIT7
+
+//
+// Reset Generator I/O Port
+//
+#define R_PCH_IO_RST_CNT 0xCF9
+#define B_PCH_IO_RST_CNT_FULL_RST BIT3
+#define B_PCH_IO_RST_CNT_RST_CPU BIT2
+#define B_PCH_IO_RST_CNT_SYS_RST BIT1
+#define V_PCH_IO_RST_CNT_FULLRESET 0x0E
+#define V_PCH_IO_RST_CNT_HARDRESET 0x06
+#define V_PCH_IO_RST_CNT_SOFTRESET 0x04
+#define V_PCH_IO_RST_CNT_HARDSTARTSTATE 0x02
+#define V_PCH_IO_RST_CNT_SOFTSTARTSTATE 0x00
+
+//
+// RTC register
+//
+#define R_RTC_IO_INDEX 0x70
+#define R_RTC_IO_TARGET 0x71
+#define R_RTC_IO_EXT_INDEX 0x72
+#define R_RTC_IO_EXT_TARGET 0x73
+#define R_RTC_IO_INDEX_ALT 0x74
+#define R_RTC_IO_TARGET_ALT 0x75
+#define R_RTC_IO_EXT_INDEX_ALT 0x76
+#define R_RTC_IO_EXT_TARGET_ALT 0x77
+#define R_RTC_IO_REGA 0x0A
+#define B_RTC_IO_REGA_UIP BIT7
+#define R_RTC_IO_REGB 0x0B
+#define B_RTC_IO_REGB_SET 0x80
+#define B_RTC_IO_REGB_PIE 0x40
+#define B_RTC_IO_REGB_AIE 0x20
+#define B_RTC_IO_REGB_UIE 0x10
+#define B_RTC_IO_REGB_DM 0x04
+#define B_RTC_IO_REGB_HOURFORM 0x02
+#define R_RTC_IO_REGC 0x0C
+#define R_RTC_IO_REGD 0x0D
+
+//
+// Private Configuration Register
+// RTC PCRs (PID:RTC)
+//
+#define R_RTC_PCR_CONF 0x3400 ///< RTC Configuration register
+#define B_RTC_PCR_CONF_BILD BIT31 ///< BIOS Interface Lock-Down
+#define B_RTC_PCR_CONF_HPM_HW_DIS BIT6 ///< RTC High Power Mode HW Disable
+#define B_RTC_PCR_CONF_UCMOS_LOCK BIT4 ///< Upper 128 Byte Lock
+#define B_RTC_PCR_CONF_LCMOS_LOCK BIT3 ///< Lower 128 Byte Lock
+#define B_RTC_PCR_CONF_UCMOS_EN BIT2 ///< Upper CMOS bank enable
+#define R_RTC_PCR_BUC 0x3414 ///< Backed Up Control
+#define B_RTC_PCR_BUC_DSO BIT4 ///< Daylight Savings Override
+#define B_RTC_PCR_BUC_TS BIT0 ///< Top Swap
+#define R_RTC_PCR_RTCDCG 0x3418 ///< RTC Dynamic Clock Gating Control
+#define R_RTC_PCR_RTCDCG_RTCPGCBDCGEN BIT2 ///< pgcb_clk (12Mhz) Dynamic Clock Gate Enable
+#define R_RTC_PCR_RTCDCG_RTCPCICLKDCGEN BIT1 ///< ipciclk_clk (24 MHz) Dynamic Clock Gate Enable
+#define R_RTC_PCR_RTCDCG_RTCROSIDEDCGEN BIT0 ///< rosc_side_clk (120 MHz) Dynamic Clock Gate Enable
+#define R_RTC_PCR_PG1_CP_LO 0x3428
+#define R_RTC_PCR_PG1_AC_LO 0x3438
+#define R_RTC_PCR_3F00 0x3F00
+#define R_RTC_PCR_UIPSMI 0x3F04 ///< RTC Update In Progress SMI Control
+
+//
+// LPC PCR Registers
+//
+#define R_LPC_PCR_HVMTCTL 0x3410
+#define R_LPC_PCR_GCFD 0x3418
+#define B_LPC_PCR_GCFD_SRVR_CLKRUN_EN BIT2 ///< Enables the CLKRUN# logic to stop the PCI clocks
+#define R_LPC_PCR_PRC 0x341C
+#define R_LPC_PCR_PCT 0x3420
+#define R_LPC_PCR_SCT 0x3424
+#define R_LPC_PCR_LPCCT 0x3428
+#define R_LPC_PCR_ULTOR 0x3500
+
+//
+// eSPI PCR Registers
+//
+#define R_ESPI_PCR_SLV_CFG_REG_CTL 0x4000 ///< Slave Configuration Register and Link Control
+#define B_ESPI_PCR_SLV_CFG_REG_CTL_SCRE BIT31 ///< Slave Configuration Register Access Enable
+#define B_ESPI_PCR_SLV_CFG_REG_CTL_SCRS (BIT30 | BIT29 | BIT28) ///< Slave Configuration Register Access Status
+#define N_ESPI_PCR_SLV_CFG_REG_CTL_SCRS 28 ///< Slave Configuration Register Access Status bit position
+#define B_ESPI_PCR_SLV_CFG_REG_CTL_SBLCL BIT27 ///< IOSF-SB eSPI Link Configuration Lock
+#define V_ESPI_PCR_SLV_CFG_REG_CTL_SCRS_NOERR 7 ///< No errors (transaction completed successfully)
+#define B_ESPI_PCR_SLV_CFG_REG_CTL_SID (BIT20 | BIT19) ///< Slave ID
+#define N_ESPI_PCR_SLV_CFG_REG_CTL_SID 19 ///< Slave ID bit position
+#define B_ESPI_PCR_SLV_CFG_REG_CTL_SCRT (BIT17 | BIT16) ///< Slave Configuration Register Access Type
+#define N_ESPI_PCR_SLV_CFG_REG_CTL_SCRT 16 ///< Slave Configuration Register Access Type bit position
+#define V_ESPI_PCR_SLV_CFG_REG_CTL_SCRT_RD 0 ///< Slave Configuration register read from address SCRA[11:0]
+#define V_ESPI_PCR_SLV_CFG_REG_CTL_SCRT_WR 1 ///< Slave Configuration register write to address SCRA[11:0]
+#define V_ESPI_PCR_SLV_CFG_REG_CTL_SCRT_STS 2 ///< Slave Status register read
+#define V_ESPI_PCR_SLV_CFG_REG_CTL_SCRT_RS 3 ///< In-Band reset
+#define B_ESPI_PCR_SLV_CFG_REG_CTL_SCRA 0x00000FFF ///< Slave Configuration Register Address
+#define R_ESPI_PCR_SLV_CFG_REG_DATA 0x4004 ///< Slave Configuration Register Data
+
+#define R_ESPI_PCR_PCERR_SLV0 0x4020 ///< Peripheral Channel Error for Slave 0
+#define B_ESPI_PCR_PCERR_PCURD BIT24 ///< Peripheral Channel Unsupported Request Detected
+#define R_ESPI_PCR_PCERR_SLV1 0x4024 ///< Peripheral Channel Error for Slave 1
+#define R_ESPI_PCR_VWERR_SLV0 0x4030 ///< Virtual Wire Channel Error for Slave 0
+#define R_ESPI_PCR_VWERR_SLV1 0x4034 ///< Virtual Wire Channel Error for Slave 1
+#define R_ESPI_PCR_FCERR_SLV0 0x4040 ///< Flash Access Channel Error for Slave 0
+#define B_ESPI_PCR_FCERR_SAFBLK BIT17 ///< SAF Blocked (SAFBLK)
+#define B_ESPI_PCR_XERR_XNFEE (BIT14 | BIT13) ///< Non-Fatal Error Reporting Enable bits
+#define N_ESPI_PCR_XERR_XNFEE 13 ///< Non-Fatal Error Reporting Enable bit position
+#define V_ESPI_PCR_XERR_XNFEE_SMI 3 ///< Enable Non-Fatal Error Reporting as SMI
+#define B_ESPI_PCR_XERR_XNFES BIT12 ///< Fatal Error Status
+#define B_ESPI_PCR_XERR_XFEE (BIT6 | BIT5) ///< Fatal Error Reporting Enable bits
+#define N_ESPI_PCR_XERR_XFEE 5 ///< Fatal Error Reporting Enable bit position
+#define V_ESPI_PCR_XERR_XFEE_SMI 3 ///< Enable Fatal Error Reporting as SMI
+#define B_ESPI_PCR_XERR_XFES BIT4 ///< Fatal Error Status
+#define S_ESPI_PCR_XERR 4 ///< Channel register sizes
+#define B_ESPI_PCR_PCERR_SLV0_PCURD BIT24 ///< Peripheral Channel Unsupported Request Detected
+#define R_ESPI_PCR_LNKERR_SLV0 0x4050 ///< Link Error for Slave 0
+#define S_ESPI_PCR_LNKERR_SLV0 4 ///< Link Error for Slave 0 register size
+#define B_ESPI_PCR_LNKERR_SLV0_SLCRR BIT31 ///< eSPI Link and Slave Channel Recovery Required
+#define B_ESPI_PCR_LNKERR_SLV0_LFET1E (BIT22 | BIT21) ///< Fatal Error Type 1 Reporting Enable
+#define N_ESPI_PCR_LNKERR_SLV0_LFET1E 21 ///< Fatal Error Type 1 Reporting Enable bit position
+#define V_ESPI_PCR_LNKERR_SLV0_LFET1E_SMI 3 ///< Enable Fatal Error Type 1 Reporting as SMI
+#define B_ESPI_PCR_LNKERR_SLV0_LFET1S BIT20 ///< Link Fatal Error Type 1 Status
+#define R_ESPI_PCR_LNKERR_SLV1 0x4054 ///< Link Error for Slave 1
+#define R_ESPI_PCR_CFG_VAL 0xC00C ///< ESPI Enabled Strap
+#define B_ESPI_PCR_CFG_VAL_ESPI_EN BIT0 ///< ESPI Enabled Strap bit position
+#define R_ESPI_PCR_SOFTSTRAPS 0xC210 ///< eSPI Sofstraps Register 0
+#define R_ESPI_PCR_SOFTSTRAPS_CS1_EN BIT12 ///< CS1# Enable
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpcCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpcCnl.h
new file mode 100644
index 0000000000..74789a87ce
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsLpcCnl.h
@@ -0,0 +1,61 @@
+/** @file
+ Register names for PCH LPC/eSPI device
+
+ 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 (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_LPC_CNL_H_
+#define _PCH_REGS_LPC_CNL_H_
+
+#define V_LPC_CFG_DID_CNL_H 0xA300
+#define V_LPC_CFG_DID_CNL_LP 0x9D80
+
+//
+// PCH-LP Device IDs
+//
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_SUPER_SKU 0x9D80 ///< PCH LP Mobile
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_0 0x9D81 ///< PCH LP Mobile (U)
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_1 0x9D82 ///< PCH LP Mobile Locked
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_2 0x9D83 ///< PCH LP Mobile (Y)
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_3 0x9D84 ///< PCH LP Mobile (U)
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_4 0x9D85 ///< PCH LP Mobile (U)
+#define V_CNL_PCH_LP_LPC_CFG_DEVICE_ID_MB_5 0x9D86 ///< PCH LP Mobile (Y)
+
+//
+// PCH-H Desktop LPC Device IDs
+//
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A300_SKU 0xA300 ///< LPC/eSPI Controller
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A303_SKU 0xA303 ///< PCH H Mobile H310
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A304_SKU 0xA304 ///< PCH H Mobile H370
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A305_SKU 0xA305 ///< PCH H Mobile Z390
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A306_SKU 0xA306 ///< PCH H Mobile Q370
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A309_SKU 0xA309 ///< PCH H Mobile C246
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A30A_SKU 0xA30A ///< PCH H Mobile C242
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A30B_SKU 0xA30B ///< PCH H Mobile X399
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A30C_SKU 0xA30C ///< PCH H Mobile QM370
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A30D_SKU 0xA30D ///< PCH H Mobile HM370
+#define V_CNL_PCH_H_LPC_CFG_DEVICE_ID_A30E_SKU 0xA30E ///< PCH H Mobile CM246
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsP2sb.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsP2sb.h
new file mode 100644
index 0000000000..db6a8c4e95
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsP2sb.h
@@ -0,0 +1,116 @@
+/** @file
+ Register names for PCH P2SB device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_P2SB_H_
+#define _PCH_REGS_P2SB_H_
+
+//
+// PCI to P2SB Bridge Registers (D31:F1)
+//
+#define PCI_DEVICE_NUMBER_PCH_P2SB 31
+#define PCI_FUNCTION_NUMBER_PCH_P2SB 1
+
+#define V_P2SB_CFG_VENDOR_ID V_PCH_INTEL_VENDOR_ID
+#define R_P2SB_CFG_SBREG_BAR 0x10
+#define B_P2SB_CFG_SBREG_RBA 0xFF000000
+#define R_P2SB_CFG_SBREG_BARH 0x14
+#define B_P2SB_CFG_SBREG_RBAH 0xFFFFFFFF
+#define R_P2SB_CFG_VBDF 0x50
+#define B_P2SB_CFG_VBDF_BUS 0xFF00
+#define B_P2SB_CFG_VBDF_DEV 0x00F8
+#define B_P2SB_CFG_VBDF_FUNC 0x0007
+#define R_P2SB_CFG_ESMBDF 0x52
+#define B_P2SB_CFG_ESMBDF_BUS 0xFF00
+#define B_P2SB_CFG_ESMBDF_DEV 0x00F8
+#define B_P2SB_CFG_ESMBDF_FUNC 0x0007
+#define R_P2SB_CFG_RCFG 0x54
+#define B_P2SB_CFG_RCFG_RPRID 0x0000FF00
+#define B_P2SB_CFG_RCFG_RSE BIT0
+#define R_P2SB_CFG_HPTC 0x60
+#define B_P2SB_CFG_HPTC_AE BIT7
+#define B_P2SB_CFG_HPTC_AS 0x0003
+#define N_HPET_ADDR_ASEL 12
+#define R_P2SB_CFG_IOAC 0x64
+#define B_P2SB_CFG_IOAC_AE BIT8
+#define B_P2SB_CFG_IOAC_ASEL 0x00FF
+#define N_IO_APIC_ASEL 12
+#define R_IO_APIC_INDEX_OFFSET 0x00
+#define R_IO_APIC_DATA_OFFSET 0x10
+#define R_IO_APIC_EOI_OFFSET 0x40
+#define R_P2SB_CFG_IBDF 0x6C
+#define B_P2SB_CFG_IBDF_BUS 0xFF00
+#define B_P2SB_CFG_IBDF_DEV 0x00F8
+#define B_P2SB_CFG_IBDF_FUNC 0x0007
+#define V_P2SB_CFG_IBDF_BUS 0
+#define V_P2SB_CFG_IBDF_DEV 30
+#define V_P2SB_CFG_IBDF_FUNC 7
+#define V_P2SB_CFG_HBDF_BUS 0
+#define V_P2SB_CFG_HBDF_DEV 30
+#define V_P2SB_CFG_HBDF_FUNC 6
+
+//
+// Definition for SBI
+//
+#define R_P2SB_CFG_SBIADDR 0xD0
+#define B_P2SB_CFG_SBIADDR_DESTID 0xFF000000
+#define B_P2SB_CFG_SBIADDR_RS 0x000F0000
+#define B_P2SB_CFG_SBIADDR_OFFSET 0x0000FFFF
+#define R_P2SB_CFG_SBIDATA 0xD4
+#define B_P2SB_CFG_SBIDATA_DATA 0xFFFFFFFF
+#define R_P2SB_CFG_SBISTAT 0xD8
+#define B_P2SB_CFG_SBISTAT_OPCODE 0xFF00
+#define B_P2SB_CFG_SBISTAT_POSTED BIT7
+#define B_P2SB_CFG_SBISTAT_RESPONSE 0x0006
+#define N_P2SB_CFG_SBISTAT_RESPONSE 1
+#define B_P2SB_CFG_SBISTAT_INITRDY BIT0
+#define R_P2SB_CFG_SBIRID 0xDA
+#define B_P2SB_CFG_SBIRID_FBE 0xF000
+#define B_P2SB_CFG_SBIRID_BAR 0x0700
+#define B_P2SB_CFG_SBIRID_FID 0x00FF
+#define R_P2SB_CFG_SBIEXTADDR 0xDC
+#define B_P2SB_CFG_SBIEXTADDR_ADDR 0xFFFFFFFF
+
+//
+// Others
+//
+#define R_P2SB_CFG_E0 0xE0
+#define R_P2SB_CFG_E4 0xE4
+#define R_P2SB_CFG_E8 0xE8
+#define R_P2SB_CFG_EA 0xEA
+#define R_P2SB_CFG_F4 0xF4
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcie.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcie.h
new file mode 100644
index 0000000000..af19b93e2d
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcie.h
@@ -0,0 +1,484 @@
+/** @file
+ Register names for PCH PCI-E root port devices
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PCIE_H_
+#define _PCH_REGS_PCIE_H_
+
+//
+// Number of PCIe ports per PCIe controller
+//
+#define PCH_PCIE_CONTROLLER_PORTS 4u
+
+//
+// PCH PCI Express Root Ports (D28:F0..7, D29:F0..7, D27:F0..7)
+//
+#define PCI_DEVICE_NUMBER_PCH_PCIE_DEVICE_1 28
+#define PCI_DEVICE_NUMBER_PCH_PCIE_DEVICE_2 29
+#define PCI_DEVICE_NUMBER_PCH_PCIE_DEVICE_3 27
+#define PCI_DEVICE_NUMBER_PCH_PCIE_ROOT_PORTS 28
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_1 0
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_2 1
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_3 2
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_4 3
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_5 4
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_6 5
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_7 6
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_8 7
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_9 0
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_10 1
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_11 2
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_12 3
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_13 4
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_14 5
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_15 6
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_16 7
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_17 0
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_18 1
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_19 2
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_20 3
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_21 4
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_22 5
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_23 6
+#define PCI_FUNCTION_NUMBER_PCH_PCIE_ROOT_PORT_24 7
+
+#define V_PCH_PCIE_CFG_VENDOR_ID V_PCH_INTEL_VENDOR_ID
+
+
+#define R_PCH_PCIE_CFG_CLIST 0x40
+#define R_PCH_PCIE_CFG_XCAP (R_PCH_PCIE_CFG_CLIST + R_PCIE_XCAP_OFFSET)
+#define R_PCH_PCIE_CFG_DCAP (R_PCH_PCIE_CFG_CLIST + R_PCIE_DCAP_OFFSET)
+#define R_PCH_PCIE_CFG_DCTL (R_PCH_PCIE_CFG_CLIST + R_PCIE_DCTL_OFFSET)
+#define R_PCH_PCIE_CFG_DSTS (R_PCH_PCIE_CFG_CLIST + R_PCIE_DSTS_OFFSET)
+#define R_PCH_PCIE_CFG_LCAP (R_PCH_PCIE_CFG_CLIST + R_PCIE_LCAP_OFFSET)
+#define B_PCH_PCIE_CFG_LCAP_PN 0xFF000000
+#define N_PCH_PCIE_CFG_LCAP_PN 24
+#define R_PCH_PCIE_CFG_LCTL (R_PCH_PCIE_CFG_CLIST + R_PCIE_LCTL_OFFSET)
+#define R_PCH_PCIE_CFG_LSTS (R_PCH_PCIE_CFG_CLIST + R_PCIE_LSTS_OFFSET)
+#define R_PCH_PCIE_CFG_SLCAP (R_PCH_PCIE_CFG_CLIST + R_PCIE_SLCAP_OFFSET)
+#define R_PCH_PCIE_CFG_SLCTL (R_PCH_PCIE_CFG_CLIST + R_PCIE_SLCTL_OFFSET)
+#define R_PCH_PCIE_CFG_SLSTS (R_PCH_PCIE_CFG_CLIST + R_PCIE_SLSTS_OFFSET)
+#define R_PCH_PCIE_CFG_RCTL (R_PCH_PCIE_CFG_CLIST + R_PCIE_RCTL_OFFSET)
+#define R_PCH_PCIE_CFG_RSTS (R_PCH_PCIE_CFG_CLIST + R_PCIE_RSTS_OFFSET)
+#define R_PCH_PCIE_CFG_DCAP2 (R_PCH_PCIE_CFG_CLIST + R_PCIE_DCAP2_OFFSET)
+#define R_PCH_PCIE_CFG_DCTL2 (R_PCH_PCIE_CFG_CLIST + R_PCIE_DCTL2_OFFSET)
+#define R_PCH_PCIE_CFG_LCTL2 (R_PCH_PCIE_CFG_CLIST + R_PCIE_LCTL2_OFFSET)
+#define R_PCH_PCIE_CFG_LSTS2 (R_PCH_PCIE_CFG_CLIST + R_PCIE_LSTS2_OFFSET)
+
+#define R_PCH_PCIE_CFG_MID 0x80
+#define S_PCH_PCIE_CFG_MID 2
+#define R_PCH_PCIE_CFG_MC 0x82
+#define S_PCH_PCIE_CFG_MC 2
+#define R_PCH_PCIE_CFG_MA 0x84
+#define S_PCH_PCIE_CFG_MA 4
+#define R_PCH_PCIE_CFG_MD 0x88
+#define S_PCH_PCIE_CFG_MD 2
+
+#define R_PCH_PCIE_CFG_SVCAP 0x90
+#define S_PCH_PCIE_CFG_SVCAP 2
+#define R_PCH_PCIE_CFG_SVID 0x94
+#define S_PCH_PCIE_CFG_SVID 4
+
+#define R_PCH_PCIE_CFG_PMCAP 0xA0
+#define R_PCH_PCIE_CFG_PMCS (R_PCH_PCIE_CFG_PMCAP + R_PCIE_PMCS_OFFST)
+
+#define R_PCH_PCIE_CFG_CCFG 0xD0
+#define B_PCH_PCIE_CFG_CCFG_UNRS (BIT6 | BIT5 | BIT4)
+#define N_PCH_PCIE_CFG_CCFG_UNRS 4
+
+#define R_PCH_PCIE_CFG_MPC2 0xD4
+#define S_PCH_PCIE_CFG_MPC2 4
+#define B_PCH_PCIE_CFG_MPC2_PTNFAE BIT12
+#define B_PCH_PCIE_CFG_MPC2_LSTP BIT6
+#define B_PCH_PCIE_CFG_MPC2_IEIME BIT5
+#define B_PCH_PCIE_CFG_MPC2_ASPMCOEN BIT4
+#define B_PCH_PCIE_CFG_MPC2_ASPMCO (BIT3 | BIT2)
+#define V_PCH_PCIE_CFG_MPC2_ASPMCO_DISABLED 0
+#define V_PCH_PCIE_CFG_MPC2_ASPMCO_L0S (1 << 2)
+#define V_PCH_PCIE_CFG_MPC2_ASPMCO_L1 (2 << 2)
+#define V_PCH_PCIE_CFG_MPC2_ASPMCO_L0S_L1 (3 << 2)
+#define B_PCH_PCIE_CFG_MPC2_EOIFD BIT1
+
+#define R_PCH_PCIE_CFG_MPC 0xD8
+#define S_PCH_PCIE_CFG_MPC 4
+#define B_PCH_PCIE_CFG_MPC_PMCE BIT31
+#define B_PCH_PCIE_CFG_MPC_HPCE BIT30
+#define B_PCH_PCIE_CFG_MPC_MMBNCE BIT27
+#define B_PCH_PCIE_CFG_MPC_P8XDE BIT26
+#define B_PCH_PCIE_CFG_MPC_IRRCE BIT25
+#define B_PCH_PCIE_CFG_MPC_SRL BIT23
+#define B_PCH_PCIE_CFG_MPC_UCEL (BIT20 | BIT19 | BIT18)
+#define N_PCH_PCIE_CFG_MPC_UCEL 18
+#define B_PCH_PCIE_CFG_MPC_CCEL (BIT17 | BIT16 | BIT15)
+#define N_PCH_PCIE_CFG_MPC_CCEL 15
+#define B_PCH_PCIE_CFG_MPC_PCIESD (BIT14 | BIT13)
+#define N_PCH_PCIE_CFG_MPC_PCIESD 13
+#define V_PCH_PCIE_CFG_MPC_PCIESD_GEN1 1
+#define V_PCH_PCIE_CFG_MPC_PCIESD_GEN2 2
+#define B_PCH_PCIE_CFG_MPC_MCTPSE BIT3
+#define B_PCH_PCIE_CFG_MPC_HPME BIT1
+#define N_PCH_PCIE_CFG_MPC_HPME 1
+#define B_PCH_PCIE_CFG_MPC_PMME BIT0
+
+#define R_PCH_PCIE_CFG_SMSCS 0xDC
+#define S_PCH_PCIE_CFG_SMSCS 4
+#define B_PCH_PCIE_CFG_SMSCS_PMCS BIT31
+#define N_PCH_PCIE_CFG_SMSCS_LERSMIS 5
+#define N_PCH_PCIE_CFG_SMSCS_HPLAS 4
+#define N_PCH_PCIE_CFG_SMSCS_HPPDM 1
+
+#define R_PCH_PCIE_CFG_RPDCGEN 0xE1
+#define S_PCH_PCIE_CFG_RPDCGEN 1
+#define B_PCH_PCIE_CFG_RPDCGEN_RPSCGEN BIT7
+#define B_PCH_PCIE_CFG_RPDCGEN_PTOCGE BIT6
+#define B_PCH_PCIE_CFG_RPDCGEN_LCLKREQEN BIT5
+#define B_PCH_PCIE_CFG_RPDCGEN_BBCLKREQEN BIT4
+#define B_PCH_PCIE_CFG_RPDCGEN_SRDBCGEN BIT2
+#define B_PCH_PCIE_CFG_RPDCGEN_RPDLCGEN BIT1
+#define B_PCH_PCIE_CFG_RPDCGEN_RPDBCGEN BIT0
+
+
+#define R_PCH_PCIE_CFG_PWRCTL 0xE8
+#define B_PCH_PCIE_CFG_PWRCTL_LTSSMRTC BIT20
+#define B_PCH_PCIE_CFG_PWRCTL_WPDMPGEP BIT17
+#define B_PCH_PCIE_CFG_PWRCTL_DBUPI BIT15
+#define B_PCH_PCIE_CFG_PWRCTL_TXSWING BIT13
+#define B_PCH_PCIE_CFG_PWRCTL_RPL1SQPOL BIT1
+#define B_PCH_PCIE_CFG_PWRCTL_RPDTSQPOL BIT0
+
+#define R_PCH_PCIE_CFG_DC 0xEC
+#define B_PCH_PCIE_CFG_DC_PCIBEM BIT2
+
+#define R_PCH_PCIE_CFG_PHYCTL2 0xF5
+#define B_PCH_PCIE_CFG_PHYCTL2_TDFT (BIT7 | BIT6)
+#define B_PCH_PCIE_CFG_PHYCTL2_TXCFGCHGWAIT (BIT5 | BIT4)
+#define N_PCH_PCIE_CFG_PHYCTL2_TXCFGCHGWAIT 4
+#define B_PCH_PCIE_CFG_PHYCTL2_PXPG3PLLOFFEN BIT1
+#define B_PCH_PCIE_CFG_PHYCTL2_PXPG2PLLOFFEN BIT0
+
+#define R_PCH_PCIE_CFG_IOSFSBCS 0xF7
+#define B_PCH_PCIE_CFG_IOSFSBCS_SCPTCGE BIT6
+#define B_PCH_PCIE_CFG_IOSFSBCS_SIID (BIT3 | BIT2)
+
+#define R_PCH_PCIE_CFG_STRPFUSECFG 0xFC
+#define B_PCH_PCIE_CFG_STRPFUSECFG_PXIP (BIT27 | BIT26 | BIT25 | BIT24)
+#define N_PCH_PCIE_CFG_STRPFUSECFG_PXIP 24
+#define B_PCH_PCIE_CFG_STRPFUSECFG_RPC (BIT15 | BIT14)
+#define V_PCH_PCIE_CFG_STRPFUSECFG_RPC_1_1_1_1 0
+#define V_PCH_PCIE_CFG_STRPFUSECFG_RPC_2_1_1 1
+#define V_PCH_PCIE_CFG_STRPFUSECFG_RPC_2_2 2
+#define V_PCH_PCIE_CFG_STRPFUSECFG_RPC_4 3
+#define N_PCH_PCIE_CFG_STRPFUSECFG_RPC 14
+#define B_PCH_PCIE_CFG_STRPFUSECFG_MODPHYIOPMDIS BIT9
+#define B_PCH_PCIE_CFG_STRPFUSECFG_PLLSHTDWNDIS BIT8
+#define B_PCH_PCIE_CFG_STRPFUSECFG_STPGATEDIS BIT7
+#define B_PCH_PCIE_CFG_STRPFUSECFG_ASPMDIS BIT6
+#define B_PCH_PCIE_CFG_STRPFUSECFG_LDCGDIS BIT5
+#define B_PCH_PCIE_CFG_STRPFUSECFG_LTCGDIS BIT4
+#define B_PCH_PCIE_CFG_STRPFUSECFG_CDCGDIS BIT3
+#define B_PCH_PCIE_CFG_STRPFUSECFG_DESKTOPMOB BIT2
+
+//
+//PCI Express Extended Capability Registers
+//
+
+#define R_PCH_PCIE_CFG_EXCAP_OFFSET 0x100
+
+#define R_PCH_PCIE_CFG_EX_AECH 0x100 ///< Advanced Error Reporting Capability Header
+#define V_PCH_PCIE_CFG_EX_AEC_CV 0x1
+#define R_PCH_PCIE_CFG_EX_UEM (R_PCH_PCIE_CFG_EX_AECH + R_PCIE_EX_UEM_OFFSET) // Uncorrectable Error Mask
+
+#define R_PCH_PCIE_CFG_EX_CES 0x110 ///< Correctable Error Status
+#define B_PCH_PCIE_CFG_EX_CES_BD BIT7 ///< Bad DLLP Status
+#define B_PCH_PCIE_CFG_EX_CES_BT BIT6 ///< Bad TLP Status
+#define B_PCH_PCIE_CFG_EX_CES_RE BIT0 ///< Receiver Error Status
+
+
+//CES.RE, CES.BT, CES.BD
+
+#define R_PCH_PCIE_CFG_EX_ACSECH 0x140 ///< ACS Extended Capability Header
+#define V_PCH_PCIE_CFG_EX_ACS_CV 0x1
+#define R_PCH_PCIE_CFG_EX_ACSCAPR (R_PCH_PCIE_CFG_EX_ACSECH + R_PCIE_EX_ACSCAPR_OFFSET)
+
+#define R_PCH_PCIE_CFG_EX_L1SECH 0x200 ///< L1 Sub-States Extended Capability Header
+#define V_PCH_PCIE_CFG_EX_L1S_CV 0x1
+#define R_PCH_PCIE_CFG_EX_L1SCAP (R_PCH_PCIE_CFG_EX_L1SECH + R_PCIE_EX_L1SCAP_OFFSET)
+#define R_PCH_PCIE_CFG_EX_L1SCTL1 (R_PCH_PCIE_CFG_EX_L1SECH + R_PCIE_EX_L1SCTL1_OFFSET)
+#define R_PCH_PCIE_CFG_EX_L1SCTL2 (R_PCH_PCIE_CFG_EX_L1SECH + R_PCIE_EX_L1SCTL2_OFFSET)
+
+#define R_PCH_PCIE_CFG_EX_SPEECH 0x220 ///< Secondary PCI Express Extended Capability Header
+#define V_PCH_PCIE_CFG_EX_SPEECH_CV 0x1
+#define R_PCH_PCIE_CFG_EX_LCTL3 (R_PCH_PCIE_CFG_EX_SPEECH + R_PCIE_EX_LCTL3_OFFSET)
+#define R_PCH_PCIE_CFG_EX_LES (R_PCH_PCIE_CFG_EX_SPEECH + R_PCIE_EX_LES_OFFSET)
+#define R_PCH_PCIE_CFG_EX_LECTL (R_PCH_PCIE_CFG_EX_SPEECH + R_PCIE_EX_L01EC_OFFSET)
+#define B_PCH_PCIE_CFG_EX_LECTL_UPTPH (BIT14 | BIT13 | BIT12)
+#define N_PCH_PCIE_CFG_EX_LECTL_UPTPH 12
+#define B_PCH_PCIE_CFG_EX_LECTL_UPTP 0x0F00
+#define N_PCH_PCIE_CFG_EX_LECTL_UPTP 8
+#define B_PCH_PCIE_CFG_EX_LECTL_DPTPH (BIT6 | BIT5 | BIT4)
+#define N_PCH_PCIE_CFG_EX_LECTL_DPTPH 4
+#define B_PCH_PCIE_CFG_EX_LECTL_DPTP 0x000F
+#define N_PCH_PCIE_CFG_EX_LECTL_DPTP 0
+
+#define R_PCH_PCIE_CFG_EX_L01EC (R_PCH_PCIE_CFG_EX_SPEECH + R_PCIE_EX_L01EC_OFFSET)
+#define R_PCH_PCIE_CFG_EX_L23EC (R_PCH_PCIE_CFG_EX_SPEECH + R_PCIE_EX_L23EC_OFFSET)
+
+#define R_PCH_PCIE_CFG_PCIERTP1 0x300
+#define R_PCH_PCIE_CFG_PCIERTP2 0x304
+#define R_PCH_PCIE_CFG_PCIENFTS 0x314
+#define R_PCH_PCIE_CFG_PCIEL0SC 0x318
+
+#define R_PCH_PCIE_CFG_PCIECFG2 0x320
+#define B_PCH_PCIE_CFG_PCIECFG2_LBWSSTE BIT30
+#define B_PCH_PCIE_CFG_PCIECFG2_RLLG3R BIT27
+#define B_PCH_PCIE_CFG_PCIECFG2_CROAOV BIT24
+#define B_PCH_PCIE_CFG_PCIECFG2_CROAOE BIT23
+#define B_PCH_PCIE_CFG_PCIECFG2_CRSREN BIT22
+#define B_PCH_PCIE_CFG_PCIECFG2_PMET (BIT21 | BIT20)
+#define V_PCH_PCIE_CFG_PCIECFG2_PMET 1
+#define N_PCH_PCIE_CFG_PCIECFG2_PMET 20
+
+#define R_PCH_PCIE_CFG_PCIEDBG 0x324
+#define B_PCH_PCIE_CFG_PCIEDBG_LBWSSTE BIT30
+#define B_PCH_PCIE_CFG_PCIEDBG_USSP (BIT27 | BIT26)
+#define B_PCH_PCIE_CFG_PCIEDBG_LGCLKSQEXITDBTIMERS (BIT25 | BIT24)
+#define B_PCH_PCIE_CFG_PCIEDBG_CTONFAE BIT14
+#define B_PCH_PCIE_CFG_PCIEDBG_SQOL0 BIT7
+#define B_PCH_PCIE_CFG_PCIEDBG_SPCE BIT5
+#define B_PCH_PCIE_CFG_PCIEDBG_LR BIT4
+
+#define R_PCH_PCIE_CFG_PCIESTS1 0x328
+#define B_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE 0xFF000000
+#define N_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE 24
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_DETRDY 0x01
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_DETRDYECINP1CG 0x0E
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_L0 0x33
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_DISWAIT 0x5E
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_DISWAITPG 0x60
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_RECOVERYSPEEDREADY 0x6C
+#define V_PCH_PCIE_CFG_PCIESTS1_LTSMSTATE_RECOVERYLNK2DETECT 0x6F
+
+
+#define B_PCH_PCIE_CFG_PCIESTS1_LNKSTAT (BIT22 | BIT21 | BIT20 | BIT19)
+#define N_PCH_PCIE_CFG_PCIESTS1_LNKSTAT 19
+#define V_PCH_PCIE_CFG_PCIESTS1_LNKSTAT_L0 0x7
+
+#define R_PCH_PCIE_CFG_PCIESTS2 0x32C
+#define B_PCH_PCIE_CFG_PCIESTS2_P4PNCCWSSCMES BIT31
+#define B_PCH_PCIE_CFG_PCIESTS2_P3PNCCWSSCMES BIT30
+#define B_PCH_PCIE_CFG_PCIESTS2_P2PNCCWSSCMES BIT29
+#define B_PCH_PCIE_CFG_PCIESTS2_P1PNCCWSSCMES BIT28
+#define B_PCH_PCIE_CFG_PCIESTS2_CLRE 0x0000F000
+#define N_PCH_PCIE_CFG_PCIESTS2_CLRE 12
+
+#define R_PCH_PCIE_CFG_PCIEALC 0x338
+#define B_PCH_PCIE_CFG_PCIEALC_ITLRCLD BIT29
+#define B_PCH_PCIE_CFG_PCIEALC_ILLRCLD BIT28
+#define B_PCH_PCIE_CFG_PCIEALC_BLKDQDA BIT26
+
+
+#define R_PCH_PCIE_CFG_LTROVR 0x400
+#define B_PCH_PCIE_CFG_LTROVR_LTRNSROVR BIT31 ///< LTR Non-Snoop Requirement Bit Override
+#define B_PCH_PCIE_CFG_LTROVR_LTRSROVR BIT15 ///< LTR Snoop Requirement Bit Override
+
+#define R_PCH_PCIE_CFG_LTROVR2 0x404
+#define B_PCH_PCIE_CFG_LTROVR2_FORCE_OVERRIDE BIT3 ///< LTR Force Override Enable
+#define B_PCH_PCIE_CFG_LTROVR2_LOCK BIT2 ///< LTR Override Lock
+#define B_PCH_PCIE_CFG_LTROVR2_LTRNSOVREN BIT1 ///< LTR Non-Snoop Override Enable
+#define B_PCH_PCIE_CFG_LTROVR2_LTRSOVREN BIT0 ///< LTR Snoop Override Enable
+
+#define R_PCH_PCIE_CFG_PHYCTL4 0x408
+#define B_PCH_PCIE_CFG_PHYCTL4_SQDIS BIT27
+
+#define R_PCH_PCIE_CFG_PCIEPMECTL 0x420
+#define B_PCH_PCIE_CFG_PCIEPMECTL_DLSULPPGE BIT30
+#define B_PCH_PCIE_CFG_PCIEPMECTL_L1LE BIT17
+#define B_PCH_PCIE_CFG_PCIEPMECTL_L1FSOE BIT0
+
+#define R_PCH_PCIE_CFG_PCIEPMECTL2 0x424
+#define B_PCH_PCIE_CFG_PCIEPMECTL2_PHYCLPGE BIT11
+#define B_PCH_PCIE_CFG_PCIEPMECTL2_FDCPGE BIT8
+#define B_PCH_PCIE_CFG_PCIEPMECTL2_DETSCPGE BIT7
+#define B_PCH_PCIE_CFG_PCIEPMECTL2_L23RDYSCPGE BIT6
+#define B_PCH_PCIE_CFG_PCIEPMECTL2_DISSCPGE BIT5
+#define B_PCH_PCIE_CFG_PCIEPMECTL2_L1SCPGE BIT4
+
+#define R_PCH_PCIE_CFG_PCE 0x428
+#define B_PCH_PCIE_CFG_PCE_HAE BIT5
+#define B_PCH_PCIE_CFG_PCE_PMCRE BIT0
+
+#define R_PCH_PCIE_CFG_EQCFG1 0x450
+#define S_PCH_PCIE_CFG_EQCFG1 4
+#define B_PCH_PCIE_CFG_EQCFG1_REC 0xFF000000
+#define N_PCH_PCIE_CFG_EQCFG1_REC 24
+#define B_PCH_PCIE_CFG_EQCFG1_REIFECE BIT23
+#define N_PCH_PCIE_CFG_EQCFG1_LERSMIE 21
+#define B_PCH_PCIE_CFG_EQCFG1_LEP23B BIT18
+#define B_PCH_PCIE_CFG_EQCFG1_LEP3B BIT17
+#define B_PCH_PCIE_CFG_EQCFG1_RTLEPCEB BIT16
+#define B_PCH_PCIE_CFG_EQCFG1_RTPCOE BIT15
+#define B_PCH_PCIE_CFG_EQCFG1_HPCMQE BIT13
+#define B_PCH_PCIE_CFG_EQCFG1_HAED BIT12
+#define B_PCH_PCIE_CFG_EQCFG1_EQTS2IRRC BIT7
+#define B_PCH_PCIE_CFG_EQCFG1_TUPP BIT1
+
+#define R_PCH_PCIE_CFG_RTPCL1 0x454
+#define B_PCH_PCIE_CFG_RTPCL1_PCM BIT31
+#define B_PCH_PCIE_CFG_RTPCL1_RTPRECL2PL4 0x3F000000
+#define B_PCH_PCIE_CFG_RTPCL1_RTPOSTCL1PL3 0xFC0000
+#define B_PCH_PCIE_CFG_RTPCL1_RTPRECL1PL2 0x3F000
+#define B_PCH_PCIE_CFG_RTPCL1_RTPOSTCL0PL1 0xFC0
+#define B_PCH_PCIE_CFG_RTPCL1_RTPRECL0PL0 0x3F
+
+#define R_PCH_PCIE_CFG_RTPCL2 0x458
+#define B_PCH_PCIE_CFG_RTPCL2_RTPOSTCL3PL 0x3F000
+#define B_PCH_PCIE_CFG_RTPCL2_RTPRECL3PL6 0xFC0
+#define B_PCH_PCIE_CFG_RTPCL2_RTPOSTCL2PL5 0x3F
+
+#define R_PCH_PCIE_CFG_RTPCL3 0x45C
+#define B_PCH_PCIE_CFG_RTPCL3_RTPRECL7 0x3F000000
+#define B_PCH_PCIE_CFG_RTPCL3_RTPOSTCL6 0xFC0000
+#define B_PCH_PCIE_CFG_RTPCL3_RTPRECL6 0x3F000
+#define B_PCH_PCIE_CFG_RTPCL3_RTPOSTCL5 0xFC0
+#define B_PCH_PCIE_CFG_RTPCL3_RTPRECL5PL10 0x3F
+
+#define R_PCH_PCIE_CFG_RTPCL4 0x460
+#define B_PCH_PCIE_CFG_RTPCL4_RTPOSTCL9 0x3F000000
+#define B_PCH_PCIE_CFG_RTPCL4_RTPRECL9 0xFC0000
+#define B_PCH_PCIE_CFG_RTPCL4_RTPOSTCL8 0x3F000
+#define B_PCH_PCIE_CFG_RTPCL4_RTPRECL8 0xFC0
+#define B_PCH_PCIE_CFG_RTPCL4_RTPOSTCL7 0x3F
+
+#define R_PCH_PCIE_CFG_FOMS 0x464
+#define B_PCH_PCIE_CFG_FOMS_I (BIT30 | BIT29)
+#define N_PCH_PCIE_CFG_FOMS_I 29
+#define B_PCH_PCIE_CFG_FOMS_LN 0x1F000000
+#define N_PCH_PCIE_CFG_FOMS_LN 24
+#define B_PCH_PCIE_CFG_FOMS_FOMSV 0x00FFFFFF
+#define B_PCH_PCIE_CFG_FOMS_FOMSV0 0x000000FF
+#define N_PCH_PCIE_CFG_FOMS_FOMSV0 0
+#define B_PCH_PCIE_CFG_FOMS_FOMSV1 0x0000FF00
+#define N_PCH_PCIE_CFG_FOMS_FOMSV1 8
+#define B_PCH_PCIE_CFG_FOMS_FOMSV2 0x00FF0000
+#define N_PCH_PCIE_CFG_FOMS_FOMSV2 16
+
+#define R_PCH_PCIE_CFG_HAEQ 0x468
+#define B_PCH_PCIE_CFG_HAEQ_HAPCCPI (BIT31 | BIT30 | BIT29 | BIT28)
+#define N_PCH_PCIE_CFG_HAEQ_HAPCCPI 28
+#define B_PCH_PCIE_CFG_HAEQ_MACFOMC BIT19
+
+#define R_PCH_PCIE_CFG_LTCO1 0x470
+#define B_PCH_PCIE_CFG_LTCO1_L1TCOE BIT25
+#define B_PCH_PCIE_CFG_LTCO1_L0TCOE BIT24
+#define B_PCH_PCIE_CFG_LTCO1_L1TPOSTCO 0xFC0000
+#define N_PCH_PCIE_CFG_LTCO1_L1TPOSTCO 18
+#define B_PCH_PCIE_CFG_LTCO1_L1TPRECO 0x3F000
+#define N_PCH_PCIE_CFG_LTCO1_L1TPRECO 12
+#define B_PCH_PCIE_CFG_LTCO1_L0TPOSTCO 0xFC0
+#define N_PCH_PCIE_CFG_LTCO1_L0TPOSTCO 6
+#define B_PCH_PCIE_CFG_LTCO1_L0TPRECO 0x3F
+#define N_PCH_PCIE_CFG_LTCO1_L0TPRECO 0
+
+#define R_PCH_PCIE_CFG_LTCO2 0x474
+#define B_PCH_PCIE_CFG_LTCO2_L3TCOE BIT25
+#define B_PCH_PCIE_CFG_LTCO2_L2TCOE BIT24
+#define B_PCH_PCIE_CFG_LTCO2_L3TPOSTCO 0xFC0000
+#define B_PCH_PCIE_CFG_LTCO2_L3TPRECO 0x3F000
+#define B_PCH_PCIE_CFG_LTCO2_L2TPOSTCO 0xFC0
+#define B_PCH_PCIE_CFG_LTCO2_L2TPRECO 0x3F
+
+#define R_PCH_PCIE_CFG_G3L0SCTL 0x478
+#define B_PCH_PCIE_CFG_G3L0SCTL_G3UCNFTS 0x0000FF00
+#define B_PCH_PCIE_CFG_G3L0SCTL_G3CCNFTS 0x000000FF
+
+#define R_PCH_PCIE_CFG_EQCFG2 0x47C
+#define B_PCH_PCIE_CFG_EQCFG2_NTIC 0xFF000000
+#define B_PCH_PCIE_CFG_EQCFG2_EMD BIT23
+#define B_PCH_PCIE_CFG_EQCFG2_NTSS (BIT22 | BIT21 | BIT20)
+#define B_PCH_PCIE_CFG_EQCFG2_PCET (BIT19 | BIT18 | BIT17 | BIT16)
+#define N_PCH_PCIE_CFG_EQCFG2_PCET 16
+#define B_PCH_PCIE_CFG_EQCFG2_HAPCSB (BIT15 | BIT14 | BIT13 | BIT12)
+#define N_PCH_PCIE_CFG_EQCFG2_HAPCSB 12
+#define B_PCH_PCIE_CFG_EQCFG2_NTEME BIT11
+#define B_PCH_PCIE_CFG_EQCFG2_MPEME BIT10
+#define B_PCH_PCIE_CFG_EQCFG2_REWMETM (BIT9 | BIT8)
+#define B_PCH_PCIE_CFG_EQCFG2_REWMET 0xFF
+
+#define R_PCH_PCIE_CFG_MM 0x480
+#define B_PCH_PCIE_CFG_MM_MSST 0xFFFFFF00
+#define N_PCH_PCIE_CFG_MM_MSST 8
+#define B_PCH_PCIE_CFG_MM_MSS 0xFF
+
+//
+// PCIE PCRs (PID:SPA SPB SPC SPD SPE SPF)
+//
+#define R_SPX_PCR_PCD 0 ///< Port configuration and disable
+#define B_SPX_PCR_PCD_RP1FN (BIT2 | BIT1 | BIT0) ///< Port 1 Function Number
+#define B_SPX_PCR_PCD_RP1CH BIT3 ///< Port 1 config hide
+#define B_SPX_PCR_PCD_RP2FN (BIT6 | BIT5 | BIT4) ///< Port 2 Function Number
+#define B_SPX_PCR_PCD_RP2CH BIT7 ///< Port 2 config hide
+#define B_SPX_PCR_PCD_RP3FN (BIT10 | BIT9 | BIT8) ///< Port 3 Function Number
+#define B_SPX_PCR_PCD_RP3CH BIT11 ///< Port 3 config hide
+#define B_SPX_PCR_PCD_RP4FN (BIT14 | BIT13 | BIT12) ///< Port 4 Function Number
+#define B_SPX_PCR_PCD_RP4CH BIT15 ///< Port 4 config hide
+#define S_SPX_PCR_PCD_RP_FIELD 4 ///< 4 bits for each RP FN
+#define B_SPX_PCR_PCD_P1D BIT16 ///< Port 1 disable
+#define B_SPX_PCR_PCD_P2D BIT17 ///< Port 2 disable
+#define B_SPX_PCR_PCD_P3D BIT18 ///< Port 3 disable
+#define B_SPX_PCR_PCD_P4D BIT19 ///< Port 4 disable
+#define B_SPX_PCR_PCD_SRL BIT31 ///< Secured Register Lock
+
+#define R_SPX_PCR_PCIEHBP 0x0004 ///< PCI Express high-speed bypass
+#define B_SPX_PCR_PCIEHBP_PCIEHBPME BIT0 ///< PCIe HBP mode enable
+#define B_SPX_PCR_PCIEHBP_PCIEGMO (BIT2 | BIT1) ///< PCIe gen mode override
+#define B_SPX_PCR_PCIEHBP_PCIETIL0O BIT3 ///< PCIe transmitter-in-L0 override
+#define B_SPX_PCR_PCIEHBP_PCIERIL0O BIT4 ///< PCIe receiver-in-L0 override
+#define B_SPX_PCR_PCIEHBP_PCIELRO BIT5 ///< PCIe link recovery override
+#define B_SPX_PCR_PCIEHBP_PCIELDO BIT6 ///< PCIe link down override
+#define B_SPX_PCR_PCIEHBP_PCIESSM BIT7 ///< PCIe SKP suppression mode
+#define B_SPX_PCR_PCIEHBP_PCIESST BIT8 ///< PCIe suppress SKP transmission
+#define B_SPX_PCR_PCIEHBP_PCIEHBPPS (BIT13 | BIT12) ///< PCIe HBP port select
+#define B_SPX_PCR_PCIEHBP_CRCSEL (BIT15 | BIT14) ///< CRC select
+#define B_SPX_PCR_PCIEHBP_PCIEHBPCRC 0xFFFF0000 ///< PCIe HBP CRC
+
+//
+// ICC PCR (PID: ICC)
+//
+#define R_ICC_PCR_TMCSRCCLK 0x1000 ///< Timing Control SRC Clock Register
+#define R_ICC_PCR_TMCSRCCLK2 0x1004 ///< Timing Control SRC Clock Register 2
+#define R_ICC_PCR_MSKCKRQ 0x100C ///< Mask Control CLKREQ
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcr.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcr.h
new file mode 100644
index 0000000000..ed1668300a
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPcr.h
@@ -0,0 +1,73 @@
+/** @file
+ Register names for PCH private chipset register
+
+ 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 (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PCR_H_
+#define _PCH_REGS_PCR_H_
+
+/**
+ Definition for SBI PID
+ The PCH_SBI_PID defines the PID for PCR MMIO programming and PCH SBI programming as well.
+**/
+#define PID_OPIPHY 0xAC
+#define PID_MODPHY0 0xAB
+#define PID_MODPHY1 0xAA
+#define PID_USB2 0xCA
+#define PID_DMI 0x88
+#define PID_PSTH 0x89
+#define PID_DSP 0xD7
+#define PID_ESPISPI 0x72
+#define PID_FIA 0xCF
+#define PID_SPF 0x85
+#define PID_SPE 0x84
+#define PID_SPD 0x83
+#define PID_SPC 0x82
+#define PID_SPB 0x81
+#define PID_SPA 0x80
+#define PID_SERIALIO 0xCB
+#define PID_LPC 0xC7
+#define PID_SMB 0xC6
+#define PID_ITSS 0xC4
+#define PID_RTC_HOST 0xC3
+#define PID_PSF6 0x7F
+#define PID_PSF7 0x7E
+#define PID_PSF8 0x7D
+#define PID_PSF4 0xBD
+#define PID_PSF3 0xBC
+#define PID_PSF2 0xBB
+#define PID_PSF1 0xBA
+#define PID_GPIOCOM0 0x6E
+#define PID_GPIOCOM1 0x6D
+#define PID_GPIOCOM2 0x6C
+#define PID_GPIOCOM3 0x6B
+#define PID_GPIOCOM4 0x6A
+#define PID_CSME12 0x9C
+
+#define PID_CSME0 0x90
+#define PID_CSME_PSF 0x8F
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmc.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmc.h
new file mode 100644
index 0000000000..dcecc633a1
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmc.h
@@ -0,0 +1,670 @@
+/** @file
+ Register names for PCH PMC device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PMC_H_
+#define _PCH_REGS_PMC_H_
+
+//
+// PMC Registers (D31:F2)
+//
+#define PCI_DEVICE_NUMBER_PCH_PMC 31
+#define PCI_FUNCTION_NUMBER_PCH_PMC 2
+
+#define R_PMC_CFG_BASE 0x10
+#define B_PMC_CFG_PWRM_BASE_MASK 0xFFFF0000 ///< PWRM must be 64KB alignment to align the source decode.
+
+//
+// ACPI and legacy I/O register offsets from ACPIBASE
+//
+#define R_ACPI_IO_PM1_STS 0x00
+#define S_ACPI_IO_PM1_STS 2
+#define B_ACPI_IO_PM1_STS_WAK BIT15
+#define B_ACPI_IO_PM1_STS_PCIEXP_WAKE_STS BIT14
+#define B_ACPI_IO_PM1_STS_PRBTNOR BIT11
+#define B_ACPI_IO_PM1_STS_RTC BIT10
+#define B_ACPI_IO_PM1_STS_PWRBTN BIT8
+#define B_ACPI_IO_PM1_STS_GBL BIT5
+#define B_ACPI_IO_PM1_STS_BM BIT4
+#define B_ACPI_IO_PM1_STS_TMROF BIT0
+#define N_ACPI_IO_PM1_STS_WAK 15
+#define N_ACPI_IO_PM1_STS_PCIEXP_WAKE_STS 14
+#define N_ACPI_IO_PM1_STS_PRBTNOR 11
+#define N_ACPI_IO_PM1_STS_RTC 10
+#define N_ACPI_IO_PM1_STS_PWRBTN 8
+#define N_ACPI_IO_PM1_STS_GBL 5
+#define N_ACPI_IO_PM1_STS_BM 4
+#define N_ACPI_IO_PM1_STS_TMROF 0
+
+#define R_ACPI_IO_PM1_EN 0x02
+#define S_ACPI_IO_PM1_EN 2
+#define B_ACPI_IO_PM1_EN_RTC BIT10
+#define B_ACPI_IO_PM1_EN_PWRBTN BIT8
+#define B_ACPI_IO_PM1_EN_GBL BIT5
+#define B_ACPI_IO_PM1_EN_TMROF BIT0
+#define N_ACPI_IO_PM1_EN_RTC 10
+#define N_ACPI_IO_PM1_EN_PWRBTN 8
+#define N_ACPI_IO_PM1_EN_GBL 5
+#define N_ACPI_IO_PM1_EN_TMROF 0
+
+#define R_ACPI_IO_PM1_CNT 0x04
+#define S_ACPI_IO_PM1_CNT 4
+#define B_ACPI_IO_PM1_CNT_SLP_EN BIT13
+#define B_ACPI_IO_PM1_CNT_SLP_TYP (BIT12 | BIT11 | BIT10)
+#define V_ACPI_IO_PM1_CNT_S0 0
+#define V_ACPI_IO_PM1_CNT_S1 BIT10
+#define V_ACPI_IO_PM1_CNT_S3 (BIT12 | BIT10)
+#define V_ACPI_IO_PM1_CNT_S4 (BIT12 | BIT11)
+#define V_ACPI_IO_PM1_CNT_S5 (BIT12 | BIT11 | BIT10)
+#define B_ACPI_IO_PM1_CNT_GBL_RLS BIT2
+#define B_ACPI_IO_PM1_CNT_BM_RLD BIT1
+#define B_ACPI_IO_PM1_CNT_SCI_EN BIT0
+
+#define R_ACPI_IO_PM1_TMR 0x08
+#define V_ACPI_IO_PM1_TMR_FREQUENCY 3579545
+#define B_ACPI_IO_PM1_TMR_VAL 0xFFFFFF
+#define V_ACPI_IO_PM1_TMR_MAX_VAL 0x1000000 ///< The timer is 24 bit overflow
+
+#define R_ACPI_IO_SMI_EN 0x30
+#define S_ACPI_IO_SMI_EN 4
+#define B_ACPI_IO_SMI_EN_LEGACY_USB3 BIT31
+#define B_ACPI_IO_SMI_EN_GPIO_UNLOCK_SMI BIT27
+#define B_ACPI_IO_SMI_EN_LEGACY_USB2 BIT17
+#define B_ACPI_IO_SMI_EN_PERIODIC BIT14
+#define B_ACPI_IO_SMI_EN_TCO BIT13
+#define B_ACPI_IO_SMI_EN_MCSMI BIT11
+#define B_ACPI_IO_SMI_EN_BIOS_RLS BIT7
+#define B_ACPI_IO_SMI_EN_SWSMI_TMR BIT6
+#define B_ACPI_IO_SMI_EN_APMC BIT5
+#define B_ACPI_IO_SMI_EN_ON_SLP_EN BIT4
+#define B_ACPI_IO_SMI_EN_LEGACY_USB BIT3
+#define B_ACPI_IO_SMI_EN_BIOS BIT2
+#define B_ACPI_IO_SMI_EN_EOS BIT1
+#define B_ACPI_IO_SMI_EN_GBL_SMI BIT0
+#define N_ACPI_IO_SMI_EN_LEGACY_USB3 31
+#define N_ACPI_IO_SMI_EN_ESPI 28
+#define N_ACPI_IO_SMI_EN_GPIO_UNLOCK 27
+#define N_ACPI_IO_SMI_EN_INTEL_USB2 18
+#define N_ACPI_IO_SMI_EN_LEGACY_USB2 17
+#define N_ACPI_IO_SMI_EN_PERIODIC 14
+#define N_ACPI_IO_SMI_EN_TCO 13
+#define N_ACPI_IO_SMI_EN_MCSMI 11
+#define N_ACPI_IO_SMI_EN_BIOS_RLS 7
+#define N_ACPI_IO_SMI_EN_SWSMI_TMR 6
+#define N_ACPI_IO_SMI_EN_APMC 5
+#define N_ACPI_IO_SMI_EN_ON_SLP_EN 4
+#define N_ACPI_IO_SMI_EN_LEGACY_USB 3
+#define N_ACPI_IO_SMI_EN_BIOS 2
+#define N_ACPI_IO_SMI_EN_EOS 1
+#define N_ACPI_IO_SMI_EN_GBL_SMI 0
+
+#define R_ACPI_IO_SMI_STS 0x34
+#define S_ACPI_IO_SMI_STS 4
+#define B_ACPI_IO_SMI_STS_LEGACY_USB3 BIT31
+#define B_ACPI_IO_SMI_STS_GPIO_UNLOCK BIT27
+#define B_ACPI_IO_SMI_STS_SPI BIT26
+#define B_ACPI_IO_SMI_STS_MONITOR BIT21
+#define B_ACPI_IO_SMI_STS_PCI_EXP BIT20
+#define B_ACPI_IO_SMI_STS_PATCH BIT19
+#define B_ACPI_IO_SMI_STS_INTEL_USB2 BIT18
+#define B_ACPI_IO_SMI_STS_LEGACY_USB2 BIT17
+#define B_ACPI_IO_SMI_STS_SMBUS BIT16
+#define B_ACPI_IO_SMI_STS_SERIRQ BIT15
+#define B_ACPI_IO_SMI_STS_PERIODIC BIT14
+#define B_ACPI_IO_SMI_STS_TCO BIT13
+#define B_ACPI_IO_SMI_STS_DEVMON BIT12
+#define B_ACPI_IO_SMI_STS_MCSMI BIT11
+#define B_ACPI_IO_SMI_STS_GPIO_SMI BIT10
+#define B_ACPI_IO_SMI_STS_GPE0 BIT9
+#define B_ACPI_IO_SMI_STS_PM1_STS_REG BIT8
+#define B_ACPI_IO_SMI_STS_SWSMI_TMR BIT6
+#define B_ACPI_IO_SMI_STS_APM BIT5
+#define B_ACPI_IO_SMI_STS_ON_SLP_EN BIT4
+#define B_ACPI_IO_SMI_STS_LEGACY_USB BIT3
+#define B_ACPI_IO_SMI_STS_BIOS BIT2
+#define N_ACPI_IO_SMI_STS_LEGACY_USB3 31
+#define N_ACPI_IO_SMI_STS_ESPI 28
+#define N_ACPI_IO_SMI_STS_GPIO_UNLOCK 27
+#define N_ACPI_IO_SMI_STS_SPI 26
+#define N_ACPI_IO_SMI_STS_MONITOR 21
+#define N_ACPI_IO_SMI_STS_PCI_EXP 20
+#define N_ACPI_IO_SMI_STS_PATCH 19
+#define N_ACPI_IO_SMI_STS_INTEL_USB2 18
+#define N_ACPI_IO_SMI_STS_LEGACY_USB2 17
+#define N_ACPI_IO_SMI_STS_SMBUS 16
+#define N_ACPI_IO_SMI_STS_SERIRQ 15
+#define N_ACPI_IO_SMI_STS_PERIODIC 14
+#define N_ACPI_IO_SMI_STS_TCO 13
+#define N_ACPI_IO_SMI_STS_DEVMON 12
+#define N_ACPI_IO_SMI_STS_MCSMI 11
+#define N_ACPI_IO_SMI_STS_GPIO_SMI 10
+#define N_ACPI_IO_SMI_STS_GPE0 9
+#define N_ACPI_IO_SMI_STS_PM1_STS_REG 8
+#define N_ACPI_IO_SMI_STS_SWSMI_TMR 6
+#define N_ACPI_IO_SMI_STS_APM 5
+#define N_ACPI_IO_SMI_STS_ON_SLP_EN 4
+#define N_ACPI_IO_SMI_STS_LEGACY_USB 3
+#define N_ACPI_IO_SMI_STS_BIOS 2
+
+#define R_ACPI_IO_GPE_CNTL 0x40
+#define B_ACPI_IO_GPE_CNTL_SWGPE_CTRL BIT17
+
+#define R_ACPI_IO_DEVACT_STS 0x44
+#define S_ACPI_IO_DEVACT_STS 2
+#define B_ACPI_IO_DEVACT_STS_MASK 0x13E1
+#define B_ACPI_IO_DEVACT_STS_KBC BIT12
+#define B_ACPI_IO_DEVACT_STS_PIRQDH BIT9
+#define B_ACPI_IO_DEVACT_STS_PIRQCG BIT8
+#define B_ACPI_IO_DEVACT_STS_PIRQBF BIT7
+#define B_ACPI_IO_DEVACT_STS_PIRQAE BIT6
+#define B_ACPI_IO_DEVACT_STS_D0_TRP BIT0
+#define N_ACPI_IO_DEVACT_STS_KBC 12
+#define N_ACPI_IO_DEVACT_STS_PIRQDH 9
+#define N_ACPI_IO_DEVACT_STS_PIRQCG 8
+#define N_ACPI_IO_DEVACT_STS_PIRQBF 7
+#define N_ACPI_IO_DEVACT_STS_PIRQAE 6
+
+#define R_ACPI_IO_PM2_CNT 0x50
+#define B_ACPI_IO_PM2_CNT_ARB_DIS BIT0
+
+#define R_ACPI_IO_OC_WDT_CTL 0x54
+#define B_ACPI_IO_OC_WDT_CTL_RLD BIT31
+#define B_ACPI_IO_OC_WDT_CTL_ICCSURV_STS BIT25
+#define B_ACPI_IO_OC_WDT_CTL_NO_ICCSURV_STS BIT24
+#define B_ACPI_IO_OC_WDT_CTL_FORCE_ALL BIT15
+#define B_ACPI_IO_OC_WDT_CTL_EN BIT14
+#define B_ACPI_IO_OC_WDT_CTL_ICCSURV BIT13
+#define B_ACPI_IO_OC_WDT_CTL_LCK BIT12
+#define B_ACPI_IO_OC_WDT_CTL_TOV_MASK 0x3FF
+#define B_ACPI_IO_OC_WDT_CTL_FAILURE_STS BIT23
+#define B_ACPI_IO_OC_WDT_CTL_UNXP_RESET_STS BIT22
+#define B_ACPI_IO_OC_WDT_CTL_AFTER_POST 0x3F0000
+#define V_ACPI_IO_OC_WDT_CTL_STATUS_FAILURE 1
+#define V_ACPI_IO_OC_WDT_CTL_STATUS_OK 0
+
+#define R_ACPI_IO_GPE0_STS_31_0 0x60
+#define R_ACPI_IO_GPE0_STS_63_32 0x64
+#define R_ACPI_IO_GPE0_STS_95_64 0x68
+#define R_ACPI_IO_GPE0_STS_127_96 0x6C
+#define S_ACPI_IO_GPE0_STS_127_96 4
+#define B_ACPI_IO_GPE0_STS_127_96_WADT BIT18
+#define B_ACPI_IO_GPE0_STS_127_96_USB_CON_DSX_STS BIT17
+#define B_ACPI_IO_GPE0_STS_127_96_LAN_WAKE BIT16
+#define B_ACPI_IO_GPE0_STS_127_96_GPIO_TIER_2 BIT15
+#define B_ACPI_IO_GPE0_STS_127_96_PME_B0 BIT13
+#define B_ACPI_IO_GPE0_STS_127_96_ME_SCI BIT12
+#define B_ACPI_IO_GPE0_STS_127_96_PME BIT11
+#define B_ACPI_IO_GPE0_STS_127_96_BATLOW BIT10
+#define B_ACPI_IO_GPE0_STS_127_96_PCI_EXP BIT9
+#define B_ACPI_IO_GPE0_STS_127_96_RI BIT8
+#define B_ACPI_IO_GPE0_STS_127_96_SMB_WAK BIT7
+#define B_ACPI_IO_GPE0_STS_127_96_TC0SCI BIT6
+#define B_ACPI_IO_GPE0_STS_127_96_SWGPE BIT2
+#define B_ACPI_IO_GPE0_STS_127_96_HOT_PLUG BIT1
+#define N_ACPI_IO_GPE0_STS_127_96_PME_B0 13
+#define N_ACPI_IO_GPE0_STS_127_96_PME 11
+#define N_ACPI_IO_GPE0_STS_127_96_BATLOW 10
+#define N_ACPI_IO_GPE0_STS_127_96_PCI_EXP 9
+#define N_ACPI_IO_GPE0_STS_127_96_RI 8
+#define N_ACPI_IO_GPE0_STS_127_96_SMB_WAK 7
+#define N_ACPI_IO_GPE0_STS_127_96_TC0SCI 6
+#define N_ACPI_IO_GPE0_STS_127_96_SWGPE 2
+#define N_ACPI_IO_GPE0_STS_127_96_HOT_PLUG 1
+
+#define R_ACPI_IO_GPE0_EN_31_0 0x70
+#define R_ACPI_IO_GPE0_EN_63_32 0x74
+#define R_ACPI_IO_GPE0_EN_95_64 0x78
+#define R_ACPI_IO_GPE0_EN_127_96 0x7C
+#define S_ACPI_IO_GPE0_EN_127_96 4
+#define B_ACPI_IO_GPE0_EN_127_96_WADT BIT18
+#define B_ACPI_IO_GPE0_EN_127_96_USB_CON_DSX_EN BIT17
+#define B_ACPI_IO_GPE0_EN_127_96_LAN_WAKE BIT16
+#define B_ACPI_IO_GPE0_EN_127_96_PME_B0 BIT13
+#define B_ACPI_IO_GPE0_EN_127_96_ME_SCI BIT12
+#define B_ACPI_IO_GPE0_EN_127_96_PME BIT11
+#define B_ACPI_IO_GPE0_EN_127_96_BATLOW BIT10
+#define B_ACPI_IO_GPE0_EN_127_96_PCI_EXP BIT9
+#define B_ACPI_IO_GPE0_EN_127_96_RI BIT8
+#define B_ACPI_IO_GPE0_EN_127_96_TC0SCI BIT6
+#define B_ACPI_IO_GPE0_EN_127_96_SWGPE BIT2
+#define B_ACPI_IO_GPE0_EN_127_96_HOT_PLUG BIT1
+#define N_ACPI_IO_GPE0_EN_127_96_PME_B0 13
+#define N_ACPI_IO_GPE0_EN_127_96_USB3 12
+#define N_ACPI_IO_GPE0_EN_127_96_PME 11
+#define N_ACPI_IO_GPE0_EN_127_96_BATLOW 10
+#define N_ACPI_IO_GPE0_EN_127_96_PCI_EXP 9
+#define N_ACPI_IO_GPE0_EN_127_96_RI 8
+#define N_ACPI_IO_GPE0_EN_127_96_TC0SCI 6
+#define N_ACPI_IO_GPE0_EN_127_96_SWGPE 2
+#define N_ACPI_IO_GPE0_EN_127_96_HOT_PLUG 1
+
+
+//
+// TCO register I/O map
+//
+#define R_TCO_IO_RLD 0x0
+#define R_TCO_IO_DAT_IN 0x2
+#define R_TCO_IO_DAT_OUT 0x3
+#define R_TCO_IO_TCO1_STS 0x04
+#define S_TCO_IO_TCO1_STS 2
+#define B_TCO_IO_TCO1_STS_DMISERR BIT12
+#define B_TCO_IO_TCO1_STS_DMISMI BIT10
+#define B_TCO_IO_TCO1_STS_DMISCI BIT9
+#define B_TCO_IO_TCO1_STS_BIOSWR BIT8
+#define B_TCO_IO_TCO1_STS_NEWCENTURY BIT7
+#define B_TCO_IO_TCO1_STS_TIMEOUT BIT3
+#define B_TCO_IO_TCO1_STS_TCO_INT BIT2
+#define B_TCO_IO_TCO1_STS_SW_TCO_SMI BIT1
+#define N_TCO_IO_TCO1_STS_DMISMI 10
+#define N_TCO_IO_TCO1_STS_BIOSWR 8
+#define N_TCO_IO_TCO1_STS_NEWCENTURY 7
+#define N_TCO_IO_TCO1_STS_TIMEOUT 3
+#define N_TCO_IO_TCO1_STS_SW_TCO_SMI 1
+
+#define R_TCO_IO_TCO2_STS 0x06
+#define S_TCO_IO_TCO2_STS 2
+#define B_TCO_IO_TCO2_STS_SMLINK_SLV_SMI BIT4
+#define B_TCO_IO_TCO2_STS_BAD_BIOS BIT3
+#define B_TCO_IO_TCO2_STS_BOOT BIT2
+#define B_TCO_IO_TCO2_STS_SECOND_TO BIT1
+#define B_TCO_IO_TCO2_STS_INTRD_DET BIT0
+#define N_TCO_IO_TCO2_STS_INTRD_DET 0
+
+#define R_TCO_IO_TCO1_CNT 0x08
+#define S_TCO_IO_TCO1_CNT 2
+#define B_TCO_IO_TCO1_CNT_LOCK BIT12
+#define B_TCO_IO_TCO1_CNT_TMR_HLT BIT11
+#define B_TCO_IO_TCO1_CNT_NR_MSUS BIT0 //NO_REBOOT
+
+#define R_TCO_IO_TCO2_CNT 0x0A
+#define S_TCO_IO_TCO2_CNT 2
+#define B_TCO_IO_TCO2_CNT_OS_POLICY 0x0030
+#define B_TCO_IO_TCO2_CNT_GPI11_ALERT_DISABLE 0x0008
+#define B_TCO_IO_TCO2_CNT_INTRD_SEL 0x0006
+#define N_TCO_IO_TCO2_CNT_INTRD_SEL 2
+
+#define R_TCO_IO_MESSAGE1 0x0C
+#define R_TCO_IO_MESSAGE2 0x0D
+#define R_TCO_IO_TWDS 0x0E ///< TCO_WDSTATUS register.
+#define R_TCO_IO_LE 0x10 ///< LEGACY_ELIM register
+#define B_TCO_IO_LE_IRQ12_CAUSE BIT1
+#define B_TCO_IO_LE_IRQ1_CAUSE BIT0
+#define R_TCO_IO_TMR 0x12
+
+//
+// PWRM Registers for IPC interface
+//
+#define R_PMC_PWRM_IPC_CMD 0x00 ///< IPC command
+#define N_PMC_PWRM_IPC_CMD_CMD_ID 12 ///< IPC command.cmd.ID
+#define N_PMC_PWRM_IPC_CMD_SIZE 16 ///< IPC command.size
+#define B_PMC_PWRM_IPC_CMD_SIZE_MASK 0x00FF0000 ///< IPC command.size mask Bits[23:16]
+#define N_PMC_PWRM_IPC_CMD_COMMAND 0 ///< IPC command.cmd.Command
+#define B_PMC_PWRM_IPC_CMD_COMMAND_MASK 0x000000FF ///< IPC command.size mask Bits[07:00]
+#define V_PMC_PWRM_IPC_CMD_COMMAND_SLP_CTRL 0xA1 ///< IPC commmand to control S0ix policies RCOMP
+#define V_PMC_PWRM_IPC_CMD_COMMAND_NPK_STATE 0xA4 ///< IPC commmand to control NPK Power State
+#define V_PMC_PWRM_IPC_CMD_COMMAND_PROXY 0xAA ///< Proxy access to SOC registers
+#define V_PMC_PWRM_IPC_CMD_CMD_ID_PROXY_READ 0 ///< Read command
+#define V_PMC_PWRM_IPC_CMD_CMD_ID_PROXY_WRITE 1 ///< Write command
+#define V_PMC_PWRM_IPC_CMD_WBUF0_PROXY_NMI 2 ///< parameter to access NMI control register
+#define R_PMC_PWRM_IPC_STS 0x04 ///< IPC Status
+#define B_PMC_PWRM_IPC_STS_BUSY BIT0 ///< IPC Status Busy Bit
+#define B_PMC_PWRM_IPC_STS_ERROR BIT1 ///< IPC Status Error Bit
+#define N_PMC_PWRM_IPC_STS_ERR_CODE BIT16 ///< IPC Status Error status
+#define B_PMC_PWRM_IPC_STS_ERR_CODE_MASK 0x00FF0000 ///< IPC Status Error status mask[23:16]
+#define R_PMC_PWRM_IPC_SPTR 0x08 ///< IPC Source Pointer
+#define R_PMC_PWRM_IPC_DPTR 0x0C ///< IPC Destination Pointer
+#define R_PMC_PWRM_IPC_WBUF0 0x80 ///< IPC Write Buffer
+#define R_PMC_PWRM_IPC_WBUF1 0x84 ///< IPC Write Buffer
+#define R_PMC_PWRM_IPC_WBUF2 0x88 ///< IPC Write Buffer
+#define R_PMC_PWRM_IPC_WBUF3 0x8C ///< IPC Write Buffer
+#define R_PMC_PWRM_IPC_RBUF0 0x90 ///< IPC Read Buffer
+#define R_PMC_PWRM_IPC_RBUF1 0x94 ///< IPC Read Buffer
+#define R_PMC_PWRM_IPC_RBUF2 0x98 ///< IPC Read Buffer
+#define R_PMC_PWRM_IPC_RBUF3 0x9C ///< IPC Read Buffer
+//
+// PWRM Registers
+//
+#define R_PMC_PWRM_GEN_PMCON_A 0x1020
+#define B_PMC_PWRM_GEN_PMCON_A_DC_PP_DIS BIT30
+#define B_PMC_PWRM_GEN_PMCON_A_DSX_PP_DIS BIT29
+#define B_PMC_PWRM_GEN_PMCON_A_AG3_PP_EN BIT28
+#define B_PMC_PWRM_GEN_PMCON_A_SX_PP_EN BIT27
+#define B_PMC_PWRM_GEN_PMCON_A_ALLOW_ICLK_PLL BIT26
+#define B_PMC_PWRM_GEN_PMCON_A_MPHY_CRICLK_GATE_OVR BIT25
+#define B_PMC_PWRM_GEN_PMCON_A_GBL_RST_STS BIT24
+#define B_PMC_PWRM_GEN_PMCON_A_DISB BIT23
+#define B_PMC_PWRM_GEN_PMCON_A_ALLOW_OPI_PLL_SD_INC0 BIT22
+#define B_PMC_PWRM_GEN_PMCON_A_MEM_SR BIT21
+#define B_PMC_PWRM_GEN_PMCON_A_ALLOW_SPXB_CG_INC0 BIT20
+#define B_PMC_PWRM_GEN_PMCON_A_ALLOW_L1LOW_C0 BIT19
+#define B_PMC_PWRM_GEN_PMCON_A_MS4V BIT18
+#define B_PMC_PWRM_GEN_PMCON_A_ALLOW_L1LOW_OPI_ON BIT17
+#define B_PMC_PWRM_GEN_PMCON_A_SUS_PWR_FLR BIT16
+#define B_PMC_PWRM_GEN_PMCON_A_PME_B0_S5_DIS BIT15
+#define B_PMC_PWRM_GEN_PMCON_A_PWR_FLR BIT14
+#define B_PMC_PWRM_GEN_PMCON_A_ALLOW_L1LOW_BCLKREQ_ON BIT13
+#define B_PMC_PWRM_GEN_PMCON_A_DISABLE_SX_STRETCH BIT12
+#define B_PMC_PWRM_GEN_PMCON_A_HOST_RST_STS BIT9
+#define B_PMC_PWRM_GEN_PMCON_A_ESPI_SMI_LOCK BIT8
+#define B_PMC_PWRM_GEN_PMCON_A_SLP_S4_ASE BIT3
+#define B_PMC_PWRM_GEN_PMCON_A_AFTERG3_EN BIT0
+#define B_PMC_PWRM_GEN_PMCON_A_SWSMI_RTSL 0xC0
+#define V_PMC_PWRM_GEN_PMCON_A_SWSMI_RTSL_64MS 0xC0
+#define V_PMC_PWRM_GEN_PMCON_A_SWSMI_RTSL_32MS 0x80
+#define V_PMC_PWRM_GEN_PMCON_A_SWSMI_RTSL_16MS 0x40
+#define V_PMC_PWRM_GEN_PMCON_A_SWSMI_RTSL_1_5MS 0x00
+#define B_PMC_PWRM_GEN_PMCON_A_PER_SMI_SEL 0x6
+#define V_PMC_PWRM_GEN_PMCON_A_PER_SMI_64S 0x0000
+#define V_PMC_PWRM_GEN_PMCON_A_PER_SMI_32S 0x0002
+#define V_PMC_PWRM_GEN_PMCON_A_PER_SMI_16S 0x0004
+#define V_PMC_PWRM_GEN_PMCON_A_PER_SMI_8S 0x0006
+
+#define R_PMC_PWRM_GEN_PMCON_B 0x1024
+#define B_PMC_PWRM_GEN_PMCON_B_SLPSX_STR_POL_LOCK BIT18 ///< Lock down SLP_S3/SLP_S4 Minimum Assertion width
+#define B_PMC_PWRM_GEN_PMCON_B_WOL_EN_OVRD BIT13
+#define B_PMC_PWRM_GEN_PMCON_B_BIOS_PCI_EXP_EN BIT10
+#define B_PMC_PWRM_GEN_PMCON_B_PWRBTN_LVL BIT9
+#define B_PMC_PWRM_GEN_PMCON_B_SMI_LOCK BIT4
+#define B_PMC_PWRM_GEN_PMCON_B_RTC_PWR_STS BIT2
+
+#define R_PMC_PWRM_CRID 0x1030 ///< Configured Revision ID
+#define B_PMC_PWRM_CRID_RID_SEL (BIT0 | BIT1) ///< RID Select
+#define V_PMC_PWRM_CRID_RID_SEL_REVISIONID 0
+#define V_PMC_PWRM_CRID_RID_SEL_CRID0 1
+#define B_PMC_PWRM_CRID_CRID_LK BIT31 ///< CRID Lock
+
+#define R_PMC_PWRM_ETR3 0x1048 ///< this is PWRM register
+#define B_PMC_PWRM_ETR3_CF9LOCK BIT31 ///< CF9h Lockdown
+#define B_PMC_PWRM_ETR3_LATCH_EVENTS_C10_EXIT BIT30
+#define B_PMC_PWRM_ETR3_USB_CACHE_DIS BIT21
+#define B_PMC_PWRM_ETR3_CF9GR BIT20 ///< CF9h Global Reset
+#define B_PMC_PWRM_ETR3_SKIP_HOST_RST_HS BIT19
+#define B_PMC_PWRM_ETR3_CWORWRE BIT18
+#define B_PMC_PWRM_THROT_1_VR_ALERT BIT0
+
+#define R_PMC_PWRM_SSML 0x104C ///< Set Strap Msg Lock
+#define B_PMC_PWRM_SSML_SSL BIT0 ///< Set_Strap Lock
+#define R_PMC_PWRM_SSMC 0x1050 ///< Set Strap Msg Control
+#define B_PMC_PWRM_SSMC_SSMS BIT0 ///< Set_Strap Mux Select
+#define R_PMC_PWRM_SSMD 0x1054 ///< Set Strap Msg Data
+
+#define R_PMC_PWRM_MODPHY_PM_CFG5 0x10D0
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_UFS2 BIT26
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_DMI BIT25
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_E3 BIT24
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_E2 BIT23
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_E1 BIT22
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_E0 BIT21
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_D3 BIT20
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_D2 BIT19
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_D1 BIT18
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_D0 BIT17
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_UFS BIT16 ///< UFS ModPHY SPD RT Request
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_XDCI BIT15 ///< xDCI ModPHY SPD RT Request
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_XHCI BIT14 ///< xHCI ModPHY SPD RT Request
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_GBE BIT13 ///< GbE ModPHY SPD RT Request
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_SATA BIT12 ///< SATA ModPHY SPD RT Request
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_C3 BIT11
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_C2 BIT10
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_C1 BIT9
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_C0 BIT8
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_B3 BIT7
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_B2 BIT6
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_B1 BIT5
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_B0 BIT4
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_A3 BIT3
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_A2 BIT2
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_A1 BIT1
+#define B_PMC_PWRM_MODPHY_PM_CFG5_MSPDRTREQ_A0 BIT0
+#define R_PMC_PWRM_WADT_AC 0x1800
+#define R_PMC_PWRM_PRSTS 0x1810 ///< Power and Reset Status
+#define B_PMC_PWRM_PRSTS_VE_WD_TMR_STS BIT7 ///< VE Watchdog Timer Status
+#define B_PMC_PWRM_PRSTS_WOL_OVR_WK_STS BIT5
+#define B_PMC_PWRM_PRSTS_FIELD_1 BIT4
+#define B_PMC_PWRM_PRSTS_ME_WAKE_STS BIT0
+
+#define R_PMC_PWRM_1814 0x1814
+#define R_PMC_PWRM_CFG 0x1818 ///< Power Management Configuration
+#define B_PMC_PWRM_CFG_ALLOW_24_OSC_SD BIT29 ///< Allow 24MHz Crystal Oscillator Shutdown
+#define B_PMC_PWRM_CFG_DBG_MODE_LOCK BIT27 ///< Debug Mode Lock
+#define B_PMC_PWRM_CFG_ALLOW_USB2_CORE_PG BIT25 ///< Allow USB2 Core Power Gating
+#define B_PMC_PWRM_CFG_ER_LOCK BIT24 ///< Energy Reporting Lock
+#define B_PMC_PWRM_CFG_EN_PMC_UNC_ERR BIT23 ///< Enable Global Reset on Uncorrectable Parity Error on PMC SRAM Interface
+#define B_PMC_PWRM_CFG_PMCREAD_DISABLE BIT22 ///< Disable Reads to PMC
+#define B_PMC_PWRM_CFG_RTC_DS_WAKE_DIS BIT21 ///< RTC Wake from Deep S4/S5 Disable
+#define B_PMC_PWRM_CFG_SSMAW_MASK (BIT19 | BIT18) ///< SLP_SUS# Min Assertion Width
+#define V_PMC_PWRM_CFG_SSMAW_4S (BIT19 | BIT18) ///< 4 seconds
+#define V_PMC_PWRM_CFG_SSMAW_1S BIT19 ///< 1 second
+#define V_PMC_PWRM_CFG_SSMAW_0_5S BIT18 ///< 0.5 second (500ms)
+#define V_PMC_PWRM_CFG_SSMAW_0S 0 ///< 0 second
+#define B_PMC_PWRM_CFG_SAMAW_MASK (BIT17 | BIT16) ///< SLP_A# Min Assertion Width
+#define V_PMC_PWRM_CFG_SAMAW_2S (BIT17 | BIT16) ///< 2 seconds
+#define V_PMC_PWRM_CFG_SAMAW_98ms BIT17 ///< 98ms
+#define V_PMC_PWRM_CFG_SAMAW_4S BIT16 ///< 4 seconds
+#define V_PMC_PWRM_CFG_SAMAW_0S 0 ///< 0 second
+#define B_PMC_PWRM_CFG_RPCD_MASK (BIT9 | BIT8) ///< Reset Power Cycle Duration
+#define V_PMC_PWRM_CFG_RPCD_1S (BIT9 | BIT8) ///< 1-2 seconds
+#define V_PMC_PWRM_CFG_RPCD_2S BIT9 ///< 2-3 seconds
+#define V_PMC_PWRM_CFG_RPCD_3S BIT8 ///< 3-4 seconds
+#define V_PMC_PWRM_CFG_RPCD_4S 0 ///< 4-5 seconds (Default)
+#define B_PMC_PWRM_CFG_COCS BIT5 ///< CPU OC Strap
+#define B_PMC_PWRM_CFG_ER_EN BIT2 ///< Energy Reporting Enable
+#define B_PMC_PWRM_CFG_TIMING_TPCH25 (BIT1 | BIT0) ///< tPCH25 timing
+
+#define R_PMC_PWRM_S3_PWRGATE_POL 0x1828 ///< S3 Power Gating Policies
+#define B_PMC_PWRM_S3_PWRGATE_POL_S3DC_GATE_SUS BIT1 ///< Deep S3 Enable in DC Mode
+#define B_PMC_PWRM_S3_PWRGATE_POL_S3AC_GATE_SUS BIT0 ///< Deep S3 Enable in AC Mode
+
+#define R_PMC_PWRM_S4_PWRGATE_POL 0x182C ///< Deep S4 Power Policies
+#define B_PMC_PWRM_S4_PWRGATE_POL_S4DC_GATE_SUS BIT1 ///< Deep S4 Enable in DC Mode
+#define B_PMC_PWRM_S4_PWRGATE_POL_S4AC_GATE_SUS BIT0 ///< Deep S4 Enable in AC Mode
+
+#define R_PMC_PWRM_S5_PWRGATE_POL 0x1830 ///< Deep S5 Power Policies
+#define B_PMC_PWRM_S5_PWRGATE_POL_S5DC_GATE_SUS BIT15 ///< Deep S5 Enable in DC Mode
+#define B_PMC_PWRM_S5_PWRGATE_POL_S5AC_GATE_SUS BIT14 ///< Deep S5 Enable in AC Mode
+
+#define R_PMC_PWRM_DSX_CFG 0x1834 ///< Deep SX Configuration
+#define B_PMC_PWRM_DSX_CFG_WAKE_PIN_DSX_EN BIT2 ///< WAKE# Pin DeepSx Enable
+#define B_PMC_PWRM_DSX_CFG_ACPRES_PD_DSX_DIS BIT1 ///< AC_PRESENT pin pulldown in DeepSx disable
+#define B_PMC_PWRM_DSX_CFG_LAN_WAKE_EN BIT0 ///< LAN_WAKE Pin DeepSx Enable
+
+#define R_PMC_PWRM_CFG2 0x183C ///< Power Management Configuration Reg 2
+#define B_PMC_PWRM_CFG2_PBOP (BIT31 | BIT30 | BIT29) ///< Power Button Override Period (PBOP)
+#define N_PMC_PWRM_CFG2_PBOP 29 ///< Power Button Override Period (PBOP)
+#define B_PMC_PWRM_CFG2_PB_DIS BIT28 ///< Power Button Native Mode Disable (PB_DIS)
+#define B_PMC_PWRM_CFG2_EN_DBG_MSG BIT27 ///< Enable PMC Debug Messages
+#define B_PMC_PWRM_CFG2_DRAM_RESET_CTL BIT26 ///< DRAM RESET# control
+#define N_PMC_PWRM_CFG2_DRAM_RESET_CTL 26
+
+#define R_PMC_PWRM_EN_SN_SLOW_RING 0x1848 ///< Enable Snoop Request to SLOW_RING
+#define R_PMC_PWRM_EN_SN_SLOW_RING2 0x184C ///< Enable Snoop Request to SLOW_RING 2nd Reg
+#define R_PMC_PWRM_EN_SN_SA 0x1850 ///< Enable Snoop Request to SA
+#define R_PMC_PWRM_EN_SN_SA2 0x1854 ///< Enable Snoop Request to SA 2nd Reg
+#define R_PMC_PWRM_EN_SN_SLOW_RING_CF 0x1858 ///< Enable Snoop Request to SLOW_RING_CF
+#define R_PMC_PWRM_EN_NS_SA 0x1868 ///< Enable Non-Snoop Request to SA
+#define R_PMC_PWRM_EN_CW_SLOW_RING 0x1880 ///< Enable Clock Wake to SLOW_RING
+#define R_PMC_PWRM_EN_CW_SLOW_RING2 0x1884 ///< Enable Clock Wake to SLOW_RING 2nd Reg
+#define R_PMC_PWRM_EN_CW_SA 0x1888 ///< Enable Clock Wake to SA
+#define R_PMC_PWRM_EN_CW_SA2 0x188C ///< Enable Clock Wake to SA 2nd Reg
+#define R_PMC_PWRM_EN_CW_SLOW_RING_CF 0x1898 ///< Enable Clock Wake to SLOW_RING_CF
+#define R_PMC_PWRM_EN_PA_SLOW_RING 0x18A8 ///< Enable Pegged Active to SLOW_RING
+#define R_PMC_PWRM_EN_PA_SLOW_RING2 0x18AC ///< Enable Pegged Active to SLOW_RING 2nd Reg
+#define R_PMC_PWRM_EN_PA_SA 0x18B0 ///< Enable Pegged Active to SA
+#define R_PMC_PWRM_EN_PA_SA2 0x18B4 ///< Enable Pegged Active to SA 2nd Reg
+#define R_PMC_PWRM_EN_MISC_EVENT 0x18C0 ///< Enable Misc PM_SYNC Events
+#define R_PMC_PWRM_PMSYNC_TPR_CONFIG 0x18C4
+#define B_PMC_PWRM_PMSYNC_TPR_CONFIG_LOCK BIT31
+#define B_PMC_PWRM_PMSYNC_PCH2CPU_TT_EN BIT26
+#define B_PMC_PWRM_PMSYNC_PCH2CPU_TT_STATE (BIT25 | BIT24)
+#define N_PMC_PWRM_PMSYNC_PCH2CPU_TT_STATE 24
+#define V_PMC_PWRM_PMSYNC_PCH2CPU_TT_STATE_1 1
+#define B_PMC_PWRM_PMSYNC_PM_SYNC_LOCK BIT15 ///< PM_SYNC Configuration Lock
+#define B_PMC_PWRM_PMSYNC_GPIO_D_SEL BIT11
+#define B_PMC_PWRM_PMSYNC_GPIO_C_SEL BIT10
+
+#define R_PMC_PWRM_PM_SYNC_STATE_HYS 0x18D0 ///< PM_SYNC State Hysteresis
+#define R_PMC_PWRM_PM_SYNC_MODE 0x18D4 ///< PM_SYNC Pin Mode
+
+#define R_PMC_PWRM_CFG3 0x18E0 ///< Power Management Configuration Reg 3
+#define B_PMC_PWRM_CFG3_HOST_WLAN_PP_EN BIT17 ///< Host Wireless LAN Phy Power Enable
+#define B_PMC_PWRM_CFG3_DSX_WLAN_PP_EN BIT16 ///< Deep-Sx WLAN Phy Power Enable
+
+#define R_PMC_PWRM_PM_DOWN_PPB_CFG 0x18E4 ///< PM_DOWN PCH_POWER_BUDGET CONFIGURATION
+
+#define R_PMC_PWRM_CFG4 0x18E8 ///< Power Management Configuration Reg 4
+#define B_PMC_PWRM_CFG4_U2_PHY_PG_EN BIT30 ///< USB2 PHY SUS Well Power Gating Enable
+#define B_PMC_PWRM_CFG4_CPU_IOVR_RAMP_DUR (0x000001FF) ///< CPU I/O VR Ramp Duration, [8:0]
+#define N_PMC_PWRM_CFG4_CPU_IOVR_RAMP_DUR 0
+#define V_PMC_PWRM_CFG4_CPU_IOVR_RAMP_DUR_70US 0x007
+#define V_PMC_PWRM_CFG4_CPU_IOVR_RAMP_DUR_240US 0x018
+
+#define R_PMC_PWRM_CPU_EPOC 0x18EC
+
+#define R_PMC_PWRM_GPIO_CFG 0x1920
+#define B_PMC_PWRM_GPIO_CFG_GPE0_DW2 (BIT11 | BIT10 | BIT9 | BIT8)
+#define N_PMC_PWRM_GPIO_CFG_GPE0_DW2 8
+#define B_PMC_PWRM_GPIO_CFG_GPE0_DW1 (BIT7 | BIT6 | BIT5 | BIT4)
+#define N_PMC_PWRM_GPIO_CFG_GPE0_DW1 4
+#define B_PMC_PWRM_GPIO_CFG_GPE0_DW0 (BIT3 | BIT2 | BIT1 | BIT0)
+#define N_PMC_PWRM_GPIO_CFG_GPE0_DW0 0
+
+
+#define R_PMC_PWRM_CS_SD_CTL1 0x1BE8 ///< Clock Source Shutdown Control Reg 1
+#define B_PMC_PWRM_CS_SD_CTL1_CS5_CTL_CFG (BIT22 | BIT21 | BIT20) ///< Clock Source 5 Control Configuration
+#define N_PMC_PWRM_CS_SD_CTL1_CS5_CTL_CFG 20
+#define B_PMC_PWRM_CS_SD_CTL1_CS1_CTL_CFG (BIT2 | BIT1 | BIT0) ///< Clock Source 1 Control Configuration
+#define N_PMC_PWRM_CS_SD_CTL1_CS1_CTL_CFG 0
+
+#define R_PMC_PWRM_CS_SD_CTL2 0x1BEC ///< Clock Source Shutdown Control Reg 2
+
+#define R_PMC_PWRM_HSWPGCR1 0x1DD0
+#define B_PMC_PWRM_SW_PG_CTRL_LOCK BIT31
+#define B_PMC_PWRM_NPK_VNN_SW_PG_CTRL BIT0
+
+#define R_PMC_PWRM_1E00 0x1E00
+#define R_PMC_PWRM_1E04 0x1E04
+
+#define R_PMC_PWRM_ST_PG_FDIS_PMC_1 0x1E20 ///< Static PG Related Function Disable Register 1
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_1_CNVI_FDIS_PMC BIT1 ///< CNVi Function Disable (PMC Version) (CNVI_FDIS_PMC)
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_1_ST_FDIS_LK BIT31 ///< Static Function Disable Lock (ST_FDIS_LK)
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_1_CAM_FDIS_PMC BIT6 ///< Camera Function Disable (PMC Version) (CAM_FDIS_PMC)
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_1_ISH_FDIS_PMC BIT5 ///< SH Function Disable (PMC Version) (ISH_FDIS_PMC)
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_1_GBE_FDIS_PMC BIT0 ///< GBE Function Disable (PMC Version) (GBE_FDIS_PMC)
+
+#define R_PMC_PWRM_ST_PG_FDIS_PMC_2 0x1E24 ///< Static Function Disable Control Register 2
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_GSPI2_FDIS_PMC BIT11 ///< SerialIo Controller GSPI Device 2 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_GSPI1_FDIS_PMC BIT10 ///< SerialIo Controller GSPI Device 1 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_GSPI0_FDIS_PMC BIT9 ///< SerialIo Controller GSPI Device 0 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_UART2_FDIS_PMC BIT8 ///< SerialIo Controller UART Device 2 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_UART1_FDIS_PMC BIT7 ///< SerialIo Controller UART Device 1 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_UART0_FDIS_PMC BIT6 ///< SerialIo Controller UART Device 0 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_I2C5_FDIS_PMC BIT5 ///< SerialIo Controller I2C Device 5 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_I2C4_FDIS_PMC BIT4 ///< SerialIo Controller I2C Device 4 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_I2C3_FDIS_PMC BIT3 ///< SerialIo Controller I2C Device 3 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_I2C2_FDIS_PMC BIT2 ///< SerialIo Controller I2C Device 2 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_I2C1_FDIS_PMC BIT1 ///< SerialIo Controller I2C Device 1 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO_I2C0_FDIS_PMC BIT0 ///< SerialIo Controller I2C Device 0 Function Disable
+#define B_PMC_PWRM_ST_PG_FDIS_PMC_2_SERIALIO 0xFFF ///< SerialIo Devices Disable Mask
+
+#define R_PMC_PWRM_NST_PG_FDIS_1 0x1E28
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_F3_FDIS_PMC BIT31 ///< PCIe Controller F Port 3 Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_F2_FDIS_PMC BIT30 ///< PCIe Controller F Port 2 Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_F1_FDIS_PMC BIT29 ///< PCIe Controller F Port 1 Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_F0_FDIS_PMC BIT28 ///< PCIe Controller F Port 0 Function Disable
+#define B_PCH_LP_PMC_PWRM_NST_PG_FDIS_1_SDCARD_FDIS_PMC BIT29 ///< SD Card Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_SDCARD_FDIS_PMC BIT27 ///< SD Card Function Disable
+#define B_PCH_LP_PMC_PWRM_NST_PG_FDIS_1_EMMC_FDIS_PMC BIT28 ///< eMMC Function Disable
+#define B_PCH_LP_PMC_PWRM_NST_PG_FDIS_1_UFS_FDIS_PMC BIT27 ///< UFS Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_XDCI_FDIS_PMC BIT26 ///< XDCI Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_SMBUS_FDIS_PMC BIT25 ///< Smbus Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_ADSP_FDIS_PMC BIT23 ///< ADSP Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_SATA_FDIS_PMC BIT22 ///< SATA Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_E3_FDIS_PMC BIT21 ///< PCIe Controller E Port 3 Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_E2_FDIS_PMC BIT20 ///< PCIe Controller E Port 2 Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_E1_FDIS_PMC BIT19 ///< PCIe Controller E Port 1 Function Disable
+#define B_PCH_H_PMC_PWRM_NST_PG_FDIS_1_PCIE_E0_FDIS_PMC BIT18 ///< PCIe Controller E Port 0 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_D3_FDIS_PMC BIT17 ///< PCIe Controller D Port 3 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_D2_FDIS_PMC BIT16 ///< PCIe Controller D Port 2 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_D1_FDIS_PMC BIT15 ///< PCIe Controller D Port 1 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_D0_FDIS_PMC BIT14 ///< PCIe Controller D Port 0 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_C3_FDIS_PMC BIT13 ///< PCIe Controller C Port 3 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_C2_FDIS_PMC BIT12 ///< PCIe Controller C Port 2 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_C1_FDIS_PMC BIT11 ///< PCIe Controller C Port 1 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_C0_FDIS_PMC BIT10 ///< PCIe Controller C Port 0 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_B3_FDIS_PMC BIT9 ///< PCIe Controller B Port 3 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_B2_FDIS_PMC BIT8 ///< PCIe Controller B Port 2 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_B1_FDIS_PMC BIT7 ///< PCIe Controller B Port 1 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_B0_FDIS_PMC BIT6 ///< PCIe Controller B Port 0 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_A3_FDIS_PMC BIT5 ///< PCIe Controller A Port 3 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_A2_FDIS_PMC BIT4 ///< PCIe Controller A Port 2 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_A1_FDIS_PMC BIT3 ///< PCIe Controller A Port 1 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_PCIE_A0_FDIS_PMC BIT2 ///< PCIe Controller A Port 0 Function Disable
+#define B_PMC_PWRM_NST_PG_FDIS_1_XHCI_FDIS_PMC BIT0 ///< XHCI Function Disable
+
+#define R_PMC_PWRM_FUSE_DIS_RD_2 0x1E44 ///< Fuse Disable Read 2 Register
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SPC_SS_DIS BIT25 ///< SPC Fuse Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SPB_SS_DIS BIT24 ///< SPB Fuse Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SPA_SS_DIS BIT23 ///< SPA Fuse Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_PSTH_FUSE_SS_DIS BIT21 ///< PSTH Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_DMI_FUSE_SS_DIS BIT20 ///< DMI Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_OTG_FUSE_SS_DIS BIT19 ///< OTG Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_XHCI_SS_DIS BIT18 ///< XHCI Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_FIA_FUSE_SS_DIS BIT17 ///< FIA Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_DSP_FUSE_SS_DIS BIT16 ///< DSP Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SATA_FUSE_SS_DIS BIT15 ///< SATA Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_ICC_FUSE_SS_DIS BIT14 ///< ICC Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_LPC_FUSE_SS_DIS BIT13 ///< LPC Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_RTC_FUSE_SS_DIS BIT12 ///< RTC Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_P2S_FUSE_SS_DIS BIT11 ///< P2S Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_TRSB_FUSE_SS_DIS BIT10 ///< TRSB Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SMB_FUSE_SS_DIS BIT9 ///< SMB Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_ITSS_FUSE_SS_DIS BIT8 ///< ITSS Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_UFSX2_FUSE_SS_DIS BIT7 ///< UFSX2 Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SERIALIO_FUSE_SS_DIS BIT6 ///< SerialIo Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_EMMC_FUSE_SS_DIS BIT5 ///< EMMC Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_CNVI_FUSE_SS_DIS BIT4 ///< CNVi Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_P2D_FUSE_SS_DIS BIT3 ///< P2D Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_SDX_FUSE_SS_DIS BIT2 ///< SD Conroller Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_ISH_FUSE_SS_DIS BIT1 ///< ISH Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_2_GBE_FUSE_SS_DIS BIT0 ///< GBE Fuse or Soft Strap Disable
+
+#define R_PMC_PWRM_FUSE_DIS_RD_3 0x1E48 ///< Static PG Fuse and Soft Strap Disable Read Register 3
+#define B_PMC_PWRM_FUSE_DIS_RD_3_PNCRA3_FUSE_SS_DIS BIT3 ///< PNCRA3 Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_3_PNCRA2_FUSE_SS_DIS BIT2 ///< PNCRA2 Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_3_PNCRA1_FUSE_SS_DIS BIT1 ///< PNCRA1 Fuse or Soft Strap Disable
+#define B_PMC_PWRM_FUSE_DIS_RD_3_PNCRA_FUSE_SS_DIS BIT0 ///< PNCRA Fuse or Soft Strap Disable
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmcCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmcCnl.h
new file mode 100644
index 0000000000..bd0c2574f2
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPmcCnl.h
@@ -0,0 +1,72 @@
+/** @file
+ Register names for PCH PMC device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PMC_CNL_H_
+#define _PCH_REGS_PMC_CNL_H_
+
+//
+// PWRM Registers
+//
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_A 0x0
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_B 0x1
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_C 0xD
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_D 0x4
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_E 0xE
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_F 0x5
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_G 0x2
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPP_H 0x6
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_GPD 0xA
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_VGPIO 0x7
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_SPI 0x3
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_AZA 0xB
+#define V_CNL_PCH_LP_PMC_PWRM_GPIO_CFG_JTAG 0xF
+
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_A 0x0
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_B 0x1
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_C 0x2
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_D 0x3
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_E 0xA
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_F 0xB
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_G 0x4
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_H 0x9
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_I 0xC
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_J 0xD
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPP_K 0x8
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_GPD 0x7
+#define V_CNL_PCH_H_PMC_PWRM_GPIO_CFG_VGPIO 0x5
+
+#endif // _PCH_REGS_PMC_CNL_H_
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsf.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsf.h
new file mode 100644
index 0000000000..5c4d583904
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsf.h
@@ -0,0 +1,104 @@
+/** @file
+ Register definition for PSF component
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PSF_H_
+#define _PCH_REGS_PSF_H_
+
+//
+// Private chipset register (Memory space) offset definition
+// The PCR register defines is used for PCR MMIO programming and PCH SBI programming as well.
+//
+
+//
+// PSFx segment registers
+//
+#define R_PCH_PSF_PCR_GLOBAL_CONFIG 0x4000 ///< PSF Segment Global Configuration Register
+#define B_PCH_PSF_PCR_ROOTSPACE_CONFIG_RSX_ENADDRP2P BIT1
+#define B_PCH_PSF_PCR_ROOTSPACE_CONFIG_RSX_VTDEN BIT0
+
+#define S_PCH_PSFX_PCR_DEV_GNTCNT_RELOAD_DGCR 4
+#define S_PCH_PSFX_PCR_TARGET_GNTCNT_RELOAD 4
+#define B_PCH_PSFX_PCR_DEV_GNTCNT_RELOAD_DGCR_GNT_CNT_RELOAD 0x1F
+#define B_PCH_PSFX_PCR_TARGET_GNTCNT_RELOAD_GNT_CNT_RELOAD 0x1F
+
+#define N_PCH_PSFX_PCR_MC_CONTROL_MCASTX_NUMMC 1
+#define B_PCH_PSFX_PCR_MC_CONTROL_MCASTX_MULTCEN BIT0
+
+//
+// PSFx PCRs definitions
+//
+#define R_PCH_PSFX_PCR_T0_SHDW_BAR0 0 ///< PCI BAR0
+#define R_PCH_PSFX_PCR_T0_SHDW_BAR1 0x04 ///< PCI BAR1
+#define R_PCH_PSFX_PCR_T0_SHDW_BAR2 0x08 ///< PCI BAR2
+#define R_PCH_PSFX_PCR_T0_SHDW_BAR3 0x0C ///< PCI BAR3
+#define R_PCH_PSFX_PCR_T0_SHDW_BAR4 0x10 ///< PCI BAR4
+#define R_PCH_PSFX_PCR_T0_SHDW_PCIEN 0x1C ///< PCI configuration space enable bits
+#define N_PCH_PSFX_PCR_T0_SHDW_PCIEN_BARXDIS 16
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_BAR0DIS BIT16 ///< Disable BAR0
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_BAR1DIS BIT17 ///< Disable BAR1
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_BAR2DIS BIT18 ///< Disable BAR2
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_BAR3DIS BIT19 ///< Disable BAR3
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_BAR4DIS BIT20 ///< Disable BAR4
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_BAR5DIS BIT21 ///< Disable BAR5
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_FUNDIS BIT8 ///< Function disable
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_MEMEN BIT1 ///< Memory decoding enable
+#define B_PCH_PSFX_PCR_T0_SHDW_PCIEN_IOEN BIT0 ///< IO decoding enable
+#define R_PCH_PSFX_PCR_T0_SHDW_PMCSR 0x20 ///< PCI power management configuration
+#define B_PCH_PSFX_PCR_T0_SHDW_PMCSR_PWRST (BIT1 | BIT0) ///< Power status
+#define R_PCH_PSFX_PCR_T0_SHDW_CFG_DIS 0x38 ///< PCI configuration disable
+#define B_PCH_PSFX_PCR_T0_SHDW_CFG_DIS_CFGDIS BIT0 ///< config disable
+
+#define R_PCH_PSFX_PCR_T1_SHDW_PCIEN 0x3C ///< PCI configuration space enable bits
+#define B_PCH_PSFX_PCR_T1_SHDW_PCIEN_FUNDIS BIT8 ///< Function disable
+#define B_PCH_PSFX_PCR_T1_SHDW_PCIEN_MEMEN BIT1 ///< Memory decoding enable
+#define B_PCH_PSFX_PCR_T1_SHDW_PCIEN_IOEN BIT0 ///< IO decoding enable
+
+#define B_PCH_PSFX_PCR_TX_AGENT_FUNCTION_CONFIG_DEVICE 0x01F0 ///< device number
+#define N_PCH_PSFX_PCR_TX_AGENT_FUNCTION_CONFIG_DEVICE 4
+#define B_PCH_PSFX_PCR_TX_AGENT_FUNCTION_CONFIG_FUNCTION (BIT3 | BIT2 | BIT1) ///< function number
+#define N_PCH_PSFX_PCR_TX_AGENT_FUNCTION_CONFIG_FUNCTION 1
+
+#define B_PCH_PSFX_PCR_TARGET_CHANNELID 0xFF
+#define B_PCH_PSFX_PCR_TARGET_PORTID 0x7F00
+#define N_PCH_PSFX_PCR_TARGET_PORTID 8
+#define B_PCH_PSFX_PCR_TARGET_PORTGROUPID BIT15
+#define N_PCH_PSFX_PCR_TARGET_PORTGROUPID 15
+#define B_PCH_PSFX_PCR_TARGET_PSFID 0xFF0000
+#define N_PCH_PSFX_PCR_TARGET_PSFID 16
+#define B_PCH_PSFX_PCR_TARGET_CHANMAP BIT31
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsfCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsfCnl.h
new file mode 100644
index 0000000000..9a5e536f18
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsfCnl.h
@@ -0,0 +1,113 @@
+/** @file
+ Register definition for PSF component
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PSF_CNL_H_
+#define _PCH_REGS_PSF_CNL_H_
+
+//PSF 1 Multicast Message Configuration
+#define R_CNL_PCH_LP_PSF1_PCR_PSF_MC_CONTROL_MCAST0_EOI 0x404C ///< Multicast Control Register
+#define R_CNL_PCH_LP_PSF1_PCR_PSF_MC_AGENT_MCAST0_TGT0_EOI 0x4064 ///< Destination ID
+#define R_CNL_PCH_H_PSF1_PCR_PSF_MC_CONTROL_MCAST0_EOI 0x403C ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF1_PCR_PSF_MC_AGENT_MCAST0_TGT0_EOI 0x4054 ///< Destination ID
+
+//
+// PSF3 PCRs (PID:PSF3)
+//
+// PSF3 PCH-LP Specific Base Address
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_SPI2_REG_BASE 0x0100 ///< D18F6 PSF base address (SerialIo: SPI2)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_ISH_REG_BASE 0x0200 ///< D19F0 PSF base address (ISH)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_CNVI_REG_BASE 0x0400 ///< D20F3 PSF base address (CNVi)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_SDCARD_REG_BASE 0x0500 ///< D20F5 PSF base address (SCC: SDCard)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_I2C0_REG_BASE 0x0600 ///< D21F0 PSF base address (SerialIo: I2C0)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_I2C1_REG_BASE 0x0700 ///< D21F1 PSF base address (SerialIo: I2C1)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_I2C2_REG_BASE 0x0800 ///< D21F2 PSF base address (SerialIo: I2C2)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_I2C3_REG_BASE 0x0900 ///< D21F3 PSF base address (SerialIo: I2C3)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_I2C4_REG_BASE 0x0A00 ///< D25F0 PSF base address (SerialIo: I2C4)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_I2C5_REG_BASE 0x0B00 ///< D25F1 PSF base address (SerialIo: I2C5)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_UART2_REG_BASE 0x0C00 ///< D25F2 PSF base address (SerialIo: UART2)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_UART0_REG_BASE 0x0D00 ///< D30F0 PSF base address (SerialIo: UART0)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_UART1_REG_BASE 0x0E00 ///< D30F1 PSF base address (SerialIo: UART1)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_SPI0_REG_BASE 0x0F00 ///< D30F2 PSF base address (SerialIo: SPI0)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_SPI1_REG_BASE 0x1000 ///< D30F3 PSF base address (SerialIo: SPI1)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_LPC_REG_BASE 0x1100 ///< D31F0 PSF base address (LPC)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_P2SB_REG_BASE 0x1300 ///< D31F1 PSF base address (P2SB)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_PMC_REG_BASE 0x1400 ///< D31F2 PSF base address (PMC)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_AUD_REG_BASE 0x1500 ///< D31F3 PSF base address (HDA, ADSP)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_SMBUS_REG_BASE 0x1600 ///< D31F4 PSF base address (SMBUS)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_SPI_SPI_REG_BASE 0x1700 ///< D31F5 PSF base address (SPI SPI)
+#define R_CNL_PCH_LP_PSF3_PCR_T0_SHDW_GBE_REG_BASE 0x1800 ///< D31F6 PSF base address (GBE)
+// PSF3 PCH-H Specific Base Address
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_SPI2_REG_BASE 0x0100 ///< D18F6 PSF base address (SerialIo: SPI2)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_ISH_REG_BASE 0x0180 ///< D19F0 PSF base address (ISH)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_CNVI_REG_BASE 0x0280 ///< D20F3 PSF base address (CNVi)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_SDCARD_REG_BASE 0x0300 ///< D20F5 PSF base address (SCC: SDCard)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_I2C0_REG_BASE 0x0380 ///< D21F0 PSF base address (SerialIo: I2C0)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_I2C1_REG_BASE 0x0400 ///< D21F1 PSF base address (SerialIo: I2C1)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_I2C2_REG_BASE 0x0480 ///< D21F2 PSF base address (SerialIo: I2C2)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_I2C3_REG_BASE 0x0500 ///< D21F3 PSF base address (SerialIo: I2C3)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_UART2_REG_BASE 0x0580 ///< D25F2 PSF base address (SerialIo: UART2)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_UART0_REG_BASE 0x0600 ///< D30F0 PSF base address (SerialIo: UART0)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_UART1_REG_BASE 0x0680 ///< D30F1 PSF base address (SerialIo: UART1)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_SPI0_REG_BASE 0x0700 ///< D30F2 PSF base address (SerialIo: SPI0)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_SPI1_REG_BASE 0x0780 ///< D30F3 PSF base address (SerialIo: SPI1)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_LPC_REG_BASE 0x0800 ///< D31F0 PSF base address (LPC)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_P2SB_REG_BASE 0x0900 ///< D31F1 PSF base address (P2SB)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_PMC_REG_BASE 0x0980 ///< D31F2 PSF base address (PMC)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_AUD_REG_BASE 0x0A00 ///< D31F3 PSF base address (HDA, ADSP)H
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_SMBUS_REG_BASE 0x0A80 ///< D31F4 PSF base address (SMBUS)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_SPI_SPI_REG_BASE 0x0B00 ///< D31F5 PSF base address (SPI SPI)
+#define R_CNL_PCH_H_PSF3_PCR_T0_SHDW_GBE_REG_BASE 0x0B80 ///< D31F6 PSF base address (GBE)
+
+// Other PSF3 PCRs definition
+#define R_CNL_PCH_PSF3_PCR_PSF_MC_CONTROL_MCAST0_EOI 0x4058 ///< Multicast Control Register // LP&H
+#define R_CNL_PCH_PSF3_PCR_PSF_MC_AGENT_MCAST0_TGT0_EOI 0x4064 ///< Destination ID // LP&H
+
+#define R_CNL_PCH_H_PSF6_PCR_PSF_MC_CONTROL_MCAST0_EOI 0x4030 ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF6_PCR_PSF_MC_AGENT_MCAST0_TGT0_EOI 0x4048 ///< Destination ID
+#define R_CNL_PCH_H_PSF6_PCR_PSF_MC_CONTROL_MCAST1_RS0_MCTP1 0x403C ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF6_PCR_PSF_MC_AGENT_MCAST1_RS0_TGT0_MCTP1 0x4070 ///< Destination ID
+
+#define R_CNL_PCH_H_PSF7_PCR_PSF_MC_CONTROL_MCAST0_EOI 0x4030 ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF7_PCR_PSF_MC_AGENT_MCAST0_TGT0_EOI 0x4048 ///< Destination ID
+#define R_CNL_PCH_H_PSF7_PCR_PSF_MC_CONTROL_MCAST1_RS0_MCTP1 0x403C ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF7_PCR_PSF_MC_AGENT_MCAST1_RS0_TGT0_MCTP1 0x4070 ///< Destination ID
+
+#define R_CNL_PCH_H_PSF8_PCR_PSF_MC_CONTROL_MCAST0_EOI 0x4030 ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF8_PCR_PSF_MC_AGENT_MCAST0_TGT0_EOI 0x4048 ///< Destination ID
+#define R_CNL_PCH_H_PSF8_PCR_PSF_MC_CONTROL_MCAST1_RS0_MCTP1 0x403C ///< Multicast Control Register
+#define R_CNL_PCH_H_PSF8_PCR_PSF_MC_AGENT_MCAST1_RS0_TGT0_MCTP1 0x4070 ///< Destination ID
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsth.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsth.h
new file mode 100644
index 0000000000..d6030ed10d
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsPsth.h
@@ -0,0 +1,77 @@
+/** @file
+ Register definition for PSTH component
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_PSTH_H_
+#define _PCH_REGS_PSTH_H_
+
+//
+// Private chipset register (Memory space) offset definition
+// The PCR register defines is used for PCR MMIO programming and PCH SBI programming as well.
+//
+
+//
+// PSTH and IO Trap PCRs (PID:PSTH)
+//
+#define R_PSTH_PCR_PSTHCTL 0x1D00 ///< PSTH control register
+#define B_PSTH_PCR_PSTHIOSFPTCGE BIT2 ///< PSTH IOSF primary trunk clock gating enable
+#define B_PSTH_PCR_PSTHIOSFSTCGE BIT1 ///< PSTH IOSF sideband trunk clock gating enable
+#define B_PSTH_PCR_PSTHDCGE BIT0 ///< PSTH dynamic clock gating enable
+#define R_PSTH_PCR_TRPST 0x1E00 ///< Trap status register
+#define B_PSTH_PCR_TRPST_CTSS 0x0000000F ///< Cycle Trap SMI# Status mask
+#define R_PSTH_PCR_TRPC 0x1E10 ///< Trapped cycle
+#define B_PSTH_PCR_TRPC_RW BIT24 ///< Read/Write#: 1=Read, 0=Write
+#define B_PSTH_PCR_TRPC_AHBE 0x00000000000F0000 ///< Active high byte enables
+#define B_PSTH_PCR_TRPC_IOA 0x000000000000FFFC ///< Trap cycle I/O address
+#define R_PSTH_PCR_TRPD 0x1E18 ///< Trapped write data
+#define B_PSTH_PCR_TRPD_IOD 0x00000000FFFFFFFF ///< Trap cycle I/O data
+#define R_PSTH_PCR_TRPREG0 0x1E80 ///< IO Tarp 0 register
+#define R_PSTH_PCR_TRPREG1 0x1E88 ///< IO Tarp 1 register
+#define R_PSTH_PCR_TRPREG2 0x1E90 ///< IO Tarp 2 register
+#define R_PSTH_PCR_TRPREG3 0x1E98 ///< IO Tarp 3 register
+#define B_PSTH_PCR_TRPREG_RWM BIT17 ///< 49 - 32 for 32 bit access, Read/Write mask
+#define B_PSTH_PCR_TRPREG_RWIO BIT16 ///< 48 - 32 for 32 bit access, Read/Write#, 1=Read, 0=Write
+#define N_PSTH_PCR_TRPREG_RWIO 16 ///< 48 - 32 for 32 bit access, 16bit shift for Read/Write field
+#define N_PSTH_PCR_TRPREG_BEM 36
+#define B_PSTH_PCR_TRPREG_BEM 0x000000F000000000 ///< Byte enable mask
+#define N_PSTH_PCR_TRPREG_BE 32
+#define B_PSTH_PCR_TRPREG_BE 0x0000000F00000000 ///< Byte enable
+#define B_PSTH_PCR_TRPREG_AM 0x0000000000FC0000 ///< IO Address mask
+#define B_PSTH_PCR_TRPREG_AD 0x000000000000FFFC ///< IO Address
+#define B_PSTH_PCR_TRPREG_TSE BIT0 ///< Trap and SMI# Enable
+
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSata.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSata.h
new file mode 100644
index 0000000000..d98ce39df6
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSata.h
@@ -0,0 +1,668 @@
+/** @file
+ Register names for PCH SATA controllers
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SATA_H_
+#define _PCH_REGS_SATA_H_
+
+//
+// SATA Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SATA 23
+#define PCI_FUNCTION_NUMBER_PCH_SATA 0
+
+#define PCI_DEVICE_NUMBER_CDF_PCH_SATA_1 7
+#define PCI_FUNCTION_NUMBER_CDF_PCH_SATA_1 0
+
+#define PCI_DEVICE_NUMBER_CDF_PCH_SATA_2 8
+#define PCI_FUNCTION_NUMBER_CDF_PCH_SATA_2 0
+
+#define PCI_DEVICE_NUMBER_CDF_PCH_SATA_3 14
+#define PCI_FUNCTION_NUMBER_CDF_PCH_SATA_3 0
+
+//
+// PCH-LP SATA Device ID's
+//
+#define V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_AHCI 0x9DD3 ///< SATA Controller (AHCI) - Mobile
+#define V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_RAID 0x9DD5 ///< SATA Controller (RAID 0/1/5/10) - NOT premium - Mobile
+#define V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_RAID_PREM 0x9DD7 ///< SATA Controller (RAID 0/1/5/10) - premium - Mobile
+#define V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_RAID_IBC 0x282A ///< SATA Controller (RAID 0/1/5/10) - In-box compatible - Mobile
+
+//
+// PCH-H SATA Device ID's
+//
+#define V_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_ALTDIS 0x2822 ///< SATA Controller (RAID 0/1/5/10) - premium - Alternate ID
+#define V_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_RSTE 0x2826 ///< SATA Controller (RAID 0/1/5/10) - RSTe of Server SKU
+
+//
+// PCH-H SATA Device ID's
+//
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_AHCI 0xA352 ///< SATA Controller (AHCI) Desktop/Server
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_MH_AHCI 0xA353 ///< SATA Controller (AHCI) Mobile Halo
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID 0xA354 ///< SATA Controller (RAID 0/1/5/10) - NOT premium Desktop/Server
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_MH_RAID 0xA355 ///< SATA Controller (RAID 0/1/5/10) - NOT premium Mobile Halo
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_PREM 0xA356 ///< SATA Controller (RAID 0/1/5/10) - premium Desktop/Server
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_MH_RAID_PREM 0xA357 ///< SATA Controller (RAID 0/1/5/10) - premium Mobile Halo
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_OP_AHCI 0xA35E ///< SATA Controller (AHCI) Optane Caching - Desktop
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_IBC 0x2822 ///< SATA Controller (RAID 0/1/5/10) - In-box compatible
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_IBC_RST 0x2826 ///< SATA Controller (RAID 0/1/5/10) - In-box compatible (RSTe)
+#define V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_IBC_2 0x282A ///< SATA Controller (RAID 0/1/5/10) - In-box compatible (Alternate)
+
+
+//
+// SATA Controller common Registers
+//
+#define V_SATA_CFG_SUB_CLASS_CODE_AHCI 0x06
+#define V_SATA_CFG_SUB_CLASS_CODE_RAID 0x04
+#define R_SATA_CFG_AHCI_BAR 0x24
+#define B_SATA_CFG_AHCI_BAR_BA 0xFFFFF800
+#define V_SATA_CFG_AHCI_BAR_LENGTH 0x800
+#define N_SATA_CFG_AHCI_BAR_ALIGNMENT 11
+#define V_SATA_CFG_AHCI_BAR_LENGTH_512K 0x80000
+#define N_SATA_CFG_AHCI_BAR_ALIGNMENT_512K 19
+#define B_SATA_CFG_AHCI_BAR_PF BIT3
+#define B_SATA_CFG_AHCI_BAR_TP (BIT2 | BIT1)
+#define B_SATA_CFG_AHCI_BAR_RTE BIT0
+#define R_SATA_CFG_PID 0x70
+#define B_SATA_CFG_PID_NEXT 0xFF00
+#define V_SATA_CFG_PID_NEXT_0 0xB000
+#define V_SATA_CFG_PID_NEXT_1 0xA800
+#define B_SATA_CFG_PID_CID 0x00FF
+#define R_SATA_CFG_PC 0x72
+#define S_SATA_CFG_PC 2
+#define B_SATA_CFG_PC_PME (BIT15 | BIT14 | BIT13 | BIT12 | BIT11)
+#define V_SATA_CFG_PC_PME_0 0x0000
+#define V_SATA_CFG_PC_PME_1 0x4000
+#define B_SATA_CFG_PC_D2_SUP BIT10
+#define B_SATA_CFG_PC_D1_SUP BIT9
+#define B_SATA_CFG_PC_AUX_CUR (BIT8 | BIT7 | BIT6)
+#define B_SATA_CFG_PC_DSI BIT5
+#define B_SATA_CFG_PC_PME_CLK BIT3
+#define B_SATA_CFG_PC_VER (BIT2 | BIT1 | BIT0)
+#define R_SATA_CFG_PMCS 0x74
+#define B_SATA_CFG_PMCS_PMES BIT15
+#define B_SATA_CFG_PMCS_PMEE BIT8
+#define B_SATA_CFG_PMCS_NSFRST BIT3
+#define V_SATA_CFG_PMCS_NSFRST_1 0x01
+#define V_SATA_CFG_PMCS_NSFRST_0 0x00
+#define B_SATA_CFG_PMCS_PS (BIT1 | BIT0)
+#define V_SATA_CFG_PMCS_PS_3 0x03
+#define V_SATA_CFG_PMCS_PS_0 0x00
+#define R_SATA_CFG_MID 0x80
+#define B_SATA_CFG_MID_NEXT 0xFF00
+#define B_SATA_CFG_MID_CID 0x00FF
+#define R_SATA_CFG_MC 0x82
+#define B_SATA_CFG_MC_C64 BIT7
+#define B_SATA_CFG_MC_MME (BIT6 | BIT5 | BIT4)
+#define V_SATA_CFG_MC_MME_4 0x04
+#define V_SATA_CFG_MC_MME_2 0x02
+#define V_SATA_CFG_MC_MME_1 0x01
+#define V_SATA_CFG_MC_MME_0 0x00
+#define B_SATA_CFG_MC_MMC (BIT3 | BIT2 | BIT1)
+#define V_SATA_CFG_MC_MMC_4 0x04
+#define V_SATA_CFG_MC_MMC_0 0x00
+#define B_SATA_CFG_MC_MSIE BIT0
+#define V_SATA_CFG_MC_MSIE_1 0x01
+#define V_SATA_CFG_MC_MSIE_0 0x00
+#define R_SATA_CFG_MA 0x84
+#define B_SATA_CFG_MA 0xFFFFFFFC
+#define R_SATA_CFG_MD 0x88
+#define B_SATA_CFG_MD_MSIMD 0xFFFF
+
+#define R_SATA_CFG_MAP 0x90
+#define B_SATA_CFG_MAP_PCD 0xFF
+#define N_SATA_CFG_MAP_SPD 16
+#define B_SATA_CFG_MAP_SPD7 BIT23
+#define B_SATA_CFG_MAP_SPD6 BIT22
+#define B_SATA_CFG_MAP_SPD5 BIT21
+#define B_SATA_CFG_MAP_SPD4 BIT20
+#define B_SATA_CFG_MAP_SPD3 BIT19
+#define B_SATA_CFG_MAP_SPD2 BIT18
+#define B_SATA_CFG_MAP_SPD1 BIT17
+#define B_SATA_CFG_MAP_SPD0 BIT16
+#define B_SATA_CFG_MAP_PORT7_PCD BIT7
+#define B_SATA_CFG_MAP_PORT6_PCD BIT6
+#define B_SATA_CFG_MAP_PORT5_PCD BIT5
+#define B_SATA_CFG_MAP_PORT4_PCD BIT4
+#define B_SATA_CFG_MAP_PORT3_PCD BIT3
+#define B_SATA_CFG_MAP_PORT2_PCD BIT2
+#define B_SATA_CFG_MAP_PORT1_PCD BIT1
+#define B_SATA_CFG_MAP_PORT0_PCD BIT0
+#define R_SATA_CFG_PCS 0x94
+#define B_SATA_CFG_PCS_P7P BIT23
+#define B_SATA_CFG_PCS_P6P BIT22
+#define B_SATA_CFG_PCS_P5P BIT21
+#define B_SATA_CFG_PCS_P4P BIT20
+#define B_SATA_CFG_PCS_P3P BIT19
+#define B_SATA_CFG_PCS_P2P BIT18
+#define B_SATA_CFG_PCS_P1P BIT17
+#define B_SATA_CFG_PCS_P0P BIT16
+#define B_SATA_CFG_PCS_P7E BIT7
+#define B_SATA_CFG_PCS_P6E BIT6
+#define B_SATA_CFG_PCS_P5E BIT5
+#define B_SATA_CFG_PCS_P4E BIT4
+#define B_SATA_CFG_PCS_P3E BIT3
+#define B_SATA_CFG_PCS_P2E BIT2
+#define B_SATA_CFG_PCS_P1E BIT1
+#define B_SATA_CFG_PCS_P0E BIT0
+#define R_SATA_CFG_SATAGC 0x9C
+#define B_SATA_CFG_SATAGC_SMS_MASK BIT16
+#define N_SATA_CFG_SATAGC_SMS_MASK 16
+#define V_SATA_CFG_SATAGC_SMS_AHCI 0x0
+#define V_SATA_CFG_SATAGC_SMS_RAID 0x1
+#define B_SATA_CFG_SATAGC_AIE BIT7
+#define B_SATA_CFG_SATAGC_AIES BIT6
+#define B_SATA_CFG_SATAGC_MSS (BIT4 | BIT3)
+#define V_SATA_CFG_SATAGC_MSS_8K 0x2
+#define N_SATA_CFG_SATAGC_MSS 3
+#define B_SATA_CFG_SATAGC_ASSEL (BIT2 | BIT1 | BIT0)
+
+#define V_SATA_CFG_SATAGC_ASSEL_2K 0x0
+#define V_SATA_CFG_SATAGC_ASSEL_16K 0x1
+#define V_SATA_CFG_SATAGC_ASSEL_32K 0x2
+#define V_SATA_CFG_SATAGC_ASSEL_64K 0x3
+#define V_SATA_CFG_SATAGC_ASSEL_128K 0x4
+#define V_SATA_CFG_SATAGC_ASSEL_256K 0x5
+#define V_SATA_CFG_SATAGC_ASSEL_512K 0x6
+
+#define R_SATA_CFG_SIRI 0xA0
+#define R_SATA_CFG_STRD 0xA4
+#define R_SATA_CFG_SIR_0C 0x0C
+#define R_SATA_CFG_SIR_50 0x50
+#define R_SATA_CFG_SIR_54 0x54
+#define R_SATA_CFG_SIR_58 0x58
+#define R_SATA_CFG_SIR_5C 0x5C
+#define R_SATA_CFG_SIR_60 0x60
+#define R_SATA_CFG_SIR_64 0x64
+#define R_SATA_CFG_SIR_68 0x68
+#define R_SATA_CFG_SIR_6C 0x6C
+#define R_SATA_CFG_SIR_70 0x70
+#define R_SATA_CFG_SIR_80 0x80
+#define R_SATA_CFG_SIR_84 0x84
+#define R_SATA_CFG_SIR_8C 0x8C
+#define R_SATA_CFG_SIR_90 0x90
+#define R_SATA_CFG_SIR_98 0x98
+#define R_SATA_CFG_SIR_9C 0x9C
+#define R_SATA_CFG_SIR_A0 0xA0
+#define R_SATA_CFG_SIR_A4 0xA4
+#define R_SATA_CFG_SIR_A8 0xA8
+#define R_SATA_CFG_SIR_C8 0xC8
+#define R_SATA_CFG_SIR_CC 0xCC
+#define R_SATA_CFG_SIR_D0 0xD0
+#define R_SATA_CFG_SIR_D4 0xD4
+#define B_SATA_CFG_STRD_DTA 0xFFFFFFFF
+#define R_SATA_CFG_CR0 0xA8
+#define B_SATA_CFG_CR0_MAJREV 0x00F00000
+#define B_SATA_CFG_CR0_MINREV 0x000F0000
+#define B_SATA_CFG_CR0_NEXT 0x0000FF00
+#define B_SATA_CFG_CR0_CAP 0x000000FF
+#define R_SATA_CFG_CR1 0xAC
+#define B_SATA_CFG_CR1_BAROFST 0xFFF0
+#define B_SATA_CFG_CR1_BARLOC 0x000F
+#define R_SATA_CFG_FLR_CID 0xB0
+#define B_SATA_CFG_FLR_CID_NEXT 0xFF00
+#define B_SATA_CFG_FLR_CID 0x00FF
+#define V_SATA_CFG_FLR_CID_1 0x0009
+#define V_SATA_CFG_FLR_CID_0 0x0013
+#define R_SATA_CFG_FLR_CLV 0xB2
+#define B_SATA_CFG_FLR_CLV_FLRC_FLRCSSEL_0 BIT9
+#define B_SATA_CFG_FLR_CLV_TXPC_FLRCSSEL_0 BIT8
+#define B_SATA_CFG_FLR_CLV_VSCID_FLRCSSEL_0 0x00FF
+#define B_SATA_CFG_FLR_CLV_VSCID_FLRCSSEL_1 0x00FF
+#define V_SATA_CFG_FLR_CLV_VSCID_FLRCSSEL 0x0006
+#define R_SATA_CFG_FLRC 0xB4
+#define B_SATA_CFG_FLRC_TXP BIT8
+#define B_SATA_CFG_FLRC_INITFLR BIT0
+#define R_SATA_CFG_SP 0xC0
+#define B_SATA_CFG_SP 0xFFFFFFFF
+#define R_SATA_CFG_MXID 0xD0
+#define N_SATA_CFG_MXID_NEXT 8
+
+#define R_SATA_CFG_BFCS 0xE0
+#define B_SATA_CFG_BFCS_P7BFI BIT17
+#define B_SATA_CFG_BFCS_P6BFI BIT16
+#define B_SATA_CFG_BFCS_P5BFI BIT15
+#define B_SATA_CFG_BFCS_P4BFI BIT14
+#define B_SATA_CFG_BFCS_P3BFI BIT13
+#define B_SATA_CFG_BFCS_P2BFI BIT12
+#define B_SATA_CFG_BFCS_P2BFS BIT11
+#define B_SATA_CFG_BFCS_P2BFF BIT10
+#define B_SATA_CFG_BFCS_P1BFI BIT9
+#define B_SATA_CFG_BFCS_P0BFI BIT8
+#define B_SATA_CFG_BFCS_BIST_FIS_T BIT7
+#define B_SATA_CFG_BFCS_BIST_FIS_A BIT6
+#define B_SATA_CFG_BFCS_BIST_FIS_S BIT5
+#define B_SATA_CFG_BFCS_BIST_FIS_L BIT4
+#define B_SATA_CFG_BFCS_BIST_FIS_F BIT3
+#define B_SATA_CFG_BFCS_BIST_FIS_P BIT2
+#define R_SATA_CFG_BFTD1 0xE4
+#define B_SATA_CFG_BFTD1 0xFFFFFFFF
+#define R_SATA_CFG_BFTD2 0xE8
+#define B_SATA_CFG_BFTD2 0xFFFFFFFF
+
+#define R_SATA_CFG_VS_CAP 0xA4
+#define B_SATA_CFG_VS_CAP_NRMBE BIT0 ///< NVM Remap Memory BAR Enable
+#define B_SATA_CFG_VS_CAP_MSL 0x1FFE ///< Memory Space Limit
+#define N_SATA_CFG_VS_CAP_MSL 1
+#define V_SATA_CFG_VS_CAP_MSL 0x1EF ///< Memory Space Limit Field Value
+#define B_SATA_CFG_VS_CAP_NRMO 0xFFF0000 ///< NVM Remapped Memory Offset
+#define N_SATA_CFG_VS_CAP_NRMO 16
+#define V_SATA_CFG_VS_CAP_NRMO 0x10 ///< NVM Remapped Memory Offset Field Value
+
+//
+// RST PCIe Storage Remapping Registers
+//
+#define R_SATA_CFG_RST_PCIE_STORAGE_RCR 0x800 ///< Remap Capability Register
+#define B_SATA_CFG_RST_PCIE_STORAGE_RCR_NRS (BIT2|BIT1|BIT0) ///< Number of Remapping Supported
+#define B_SATA_CFG_RST_PCIE_STORAGE_RCR_NRS_CR1 BIT0 ///< Number of Remapping Supported (RST PCIe Storage Cycle Router #1)
+#define R_SATA_CFG_RST_PCIE_STORAGE_SPR 0x80C ///< Scratch Pad Register
+#define R_SATA_CFG_RST_PCIE_STORAGE_CR1_DCC 0x880 ///< CR#1 Device Class Code
+#define N_SATA_CFG_RST_PCIE_STORAGE_CR1_DCC_SCC 8
+#define N_SATA_CFG_RST_PCIE_STORAGE_CR1_DCC_BCC 16
+#define B_SATA_CFG_RST_PCIE_STORAGE_CR1_DCC_DT BIT31 ///< Device Type
+#define V_SATA_CFG_RST_PCIE_STORAGE_REMAP_CONFIG_CR 0x80 ///< Remapped Configuration for RST PCIe Storage Cycle Router #n
+#define V_SATA_CFG_RST_PCIE_STORAGE_REMAP_RP_OFFSET 0x100 ///< Remapped Root Port Offset Value
+#define R_SATA_CFG_RST_PCIE_STORAGE_CCFG 0x1D0 ///< Port Configuration Register
+//
+// AHCI BAR Area related Registers
+//
+#define R_SATA_MEM_AHCI_CAP 0x0
+#define B_SATA_MEM_AHCI_CAP_S64A BIT31
+#define B_SATA_MEM_AHCI_CAP_SCQA BIT30
+#define B_SATA_MEM_AHCI_CAP_SSNTF BIT29
+#define B_SATA_MEM_AHCI_CAP_SMPS BIT28 ///< Supports Interlock Switch
+#define B_SATA_MEM_AHCI_CAP_SSS BIT27 ///< Supports Stagger Spin-up
+#define B_SATA_MEM_AHCI_CAP_SALP BIT26
+#define B_SATA_MEM_AHCI_CAP_SAL BIT25
+#define B_SATA_MEM_AHCI_CAP_SCLO BIT24 ///< Supports Command List Override
+#define B_SATA_MEM_AHCI_CAP_ISS_MASK (BIT23 | BIT22 | BIT21 | BIT20)
+#define N_SATA_MEM_AHCI_CAP_ISS 20 ///< Interface Speed Support
+#define V_SATA_MEM_AHCI_CAP_ISS_1_5_G 0x01
+#define V_SATA_MEM_AHCI_CAP_ISS_3_0_G 0x02
+#define V_SATA_MEM_AHCI_CAP_ISS_6_0_G 0x03
+#define B_SATA_MEM_AHCI_CAP_SNZO BIT19
+#define B_SATA_MEM_AHCI_CAP_SAM BIT18
+#define B_SATA_MEM_AHCI_CAP_SPM BIT17 ///< Supports Port Multiplier
+#define B_SATA_MEM_AHCI_CAP_PMD BIT15 ///< PIO Multiple DRQ Block
+#define B_SATA_MEM_AHCI_CAP_SSC BIT14
+#define B_SATA_MEM_AHCI_CAP_PSC BIT13
+#define B_SATA_MEM_AHCI_CAP_NCS 0x1F00
+#define B_SATA_MEM_AHCI_CAP_CCCS BIT7
+#define B_SATA_MEM_AHCI_CAP_EMS BIT6
+#define B_SATA_MEM_AHCI_CAP_SXS BIT5 ///< External SATA is supported
+#define B_SATA_MEM_AHCI_CAP_NPS 0x001F
+
+#define R_SATA_MEM_AHCI_GHC 0x04
+#define B_SATA_MEM_AHCI_GHC_AE BIT31
+#define B_SATA_MEM_AHCI_GHC_MRSM BIT2
+#define B_SATA_MEM_AHCI_GHC_IE BIT1
+#define B_SATA_MEM_AHCI_GHC_HR BIT0
+
+#define R_SATA_MEM_AHCI_IS 0x08
+#define B_SATA_MEM_AHCI_IS_PORT7 BIT7
+#define B_SATA_MEM_AHCI_IS_PORT6 BIT6
+#define B_SATA_MEM_AHCI_IS_PORT5 BIT5
+#define B_SATA_MEM_AHCI_IS_PORT4 BIT4
+#define B_SATA_MEM_AHCI_IS_PORT3 BIT3
+#define B_SATA_MEM_AHCI_IS_PORT2 BIT2
+#define B_SATA_MEM_AHCI_IS_PORT1 BIT1
+#define B_SATA_MEM_AHCI_IS_PORT0 BIT0
+#define R_SATA_MEM_AHCI_PI 0x0C
+#define B_SATA_MEM_AHCI_PI_PORT_MASK 0xFF
+#define B_SATA_MEM_PORT7_IMPLEMENTED BIT7
+#define B_SATA_MEM_PORT6_IMPLEMENTED BIT6
+#define B_SATA_MEM_PORT5_IMPLEMENTED BIT5
+#define B_SATA_MEM_PORT4_IMPLEMENTED BIT4
+#define B_SATA_MEM_PORT3_IMPLEMENTED BIT3
+#define B_SATA_MEM_PORT2_IMPLEMENTED BIT2
+#define B_SATA_MEM_PORT1_IMPLEMENTED BIT1
+#define B_SATA_MEM_PORT0_IMPLEMENTED BIT0
+#define R_SATA_MEM_AHCI_VS 0x10
+#define B_SATA_MEM_AHCI_VS_MJR 0xFFFF0000
+#define B_SATA_MEM_AHCI_VS_MNR 0x0000FFFF
+#define R_SATA_MEM_AHCI_EM_LOC 0x1C
+#define B_SATA_MEM_AHCI_EM_LOC_OFST 0xFFFF0000
+#define B_SATA_MEM_AHCI_EM_LOC_SZ 0x0000FFFF
+#define R_SATA_MEM_AHCI_EM_CTRL 0x20
+#define B_SATA_MEM_AHCI_EM_CTRL_ATTR_ALHD BIT26
+#define B_SATA_MEM_AHCI_EM_CTRL_ATTR_XMT BIT25
+#define B_SATA_MEM_AHCI_EM_CTRL_ATTR_SMB BIT24
+#define B_SATA_MEM_AHCI_EM_CTRL_SUPP_SGPIO BIT19
+#define B_SATA_MEM_AHCI_EM_CTRL_SUPP_SES2 BIT18
+#define B_SATA_MEM_AHCI_EM_CTRL_SUPP_SAFTE BIT17
+#define B_SATA_MEM_AHCI_EM_CTRL_SUPP_LED BIT16
+#define B_SATA_MEM_AHCI_EM_CTRL_RST BIT9
+#define B_SATA_MEM_AHCI_EM_CTRL_CTL_TM BIT8
+#define B_SATA_MEM_AHCI_EM_CTRL_STS_MR BIT0
+#define R_SATA_MEM_AHCI_CAP2 0x24
+#define B_SATA_MEM_AHCI_CAP2_DESO BIT5
+#define B_SATA_MEM_AHCI_CAP2_SADM BIT4
+#define B_SATA_MEM_AHCI_CAP2_SDS BIT3
+#define B_SATA_MEM_AHCI_CAP2_APST BIT2 ///< Automatic Partial to Slumber Transitions
+#define R_SATA_MEM_AHCI_VSP 0xA0
+#define B_SATA_MEM_AHCI_VSP_SLPD BIT0
+#define R_SATA_MEM_AHCI_SFM 0xC8 ///< RST Feature Capabilities
+#define B_SATA_MEM_AHCI_SFM_LEGACY BIT12
+#define B_SATA_MEM_AHCI_SFM_OUD (BIT11 | BIT10)
+#define N_SATA_MEM_AHCI_SFM_OUD 10
+#define B_SATA_MEM_AHCI_SFM_SEREQ BIT9
+#define B_SATA_MEM_AHCI_SFM_IROES BIT8
+#define B_SATA_MEM_AHCI_SFM_LEDL BIT7
+#define B_SATA_MEM_AHCI_SFM_HDDLK BIT6
+#define B_SATA_MEM_AHCI_SFM_IRSTOROM BIT5
+#define B_SATA_MEM_AHCI_SFM_RSTE BIT4
+#define B_SATA_MEM_AHCI_SFM_R5E BIT3
+#define B_SATA_MEM_AHCI_SFM_R10E BIT2
+#define B_SATA_MEM_AHCI_SFM_R1E BIT1
+#define B_SATA_MEM_AHCI_SFM_R0E BIT0
+#define B_SATA_MEM_AHCI_SFM_LOWBYTES 0x1FF
+#define R_SATA_MEM_AHCI_P0CLB 0x100
+#define R_SATA_MEM_AHCI_P1CLB 0x180
+#define R_SATA_MEM_AHCI_P2CLB 0x200
+#define R_SATA_MEM_AHCI_P3CLB 0x280
+#define R_SATA_MEM_AHCI_P4CLB 0x300
+#define R_SATA_MEM_AHCI_P5CLB 0x380
+#define R_SATA_MEM_AHCI_P6CLB 0x400
+#define R_SATA_MEM_AHCI_P7CLB 0x480
+#define B_SATA_MEM_AHCI_PXCLB 0xFFFFFC00
+#define R_SATA_MEM_AHCI_P0CLBU 0x104
+#define R_SATA_MEM_AHCI_P1CLBU 0x184
+#define R_SATA_MEM_AHCI_P2CLBU 0x204
+#define R_SATA_MEM_AHCI_P3CLBU 0x284
+#define R_SATA_MEM_AHCI_P4CLBU 0x304
+#define R_SATA_MEM_AHCI_P5CLBU 0x384
+#define R_SATA_MEM_AHCI_P6CLBU 0x404
+#define R_SATA_MEM_AHCI_P7CLBU 0x484
+#define B_SATA_MEM_AHCI_PXCLBU 0xFFFFFFFF
+#define R_SATA_MEM_AHCI_P0FB 0x108
+#define R_SATA_MEM_AHCI_P1FB 0x188
+#define R_SATA_MEM_AHCI_P2FB 0x208
+#define R_SATA_MEM_AHCI_P3FB 0x288
+#define R_SATA_MEM_AHCI_P4FB 0x308
+#define R_SATA_MEM_AHCI_P5FB 0x388
+#define R_SATA_MEM_AHCI_P6FB 0x408
+#define R_SATA_MEM_AHCI_P7FB 0x488
+#define B_SATA_MEM_AHCI_PXFB 0xFFFFFF00
+#define R_SATA_MEM_AHCI_P0FBU 0x10C
+#define R_SATA_MEM_AHCI_P1FBU 0x18C
+#define R_SATA_MEM_AHCI_P2FBU 0x20C
+#define R_SATA_MEM_AHCI_P3FBU 0x28C
+#define R_SATA_MEM_AHCI_P4FBU 0x30C
+#define R_SATA_MEM_AHCI_P5FBU 0x38C
+#define R_SATA_MEM_AHCI_P6FBU 0x40C
+#define R_SATA_MEM_AHCI_P7FBU 0x48C
+#define B_SATA_MEM_AHCI_PXFBU 0xFFFFFFFF
+#define R_SATA_MEM_AHCI_P0IS 0x110
+#define R_SATA_MEM_AHCI_P1IS 0x190
+#define R_SATA_MEM_AHCI_P2IS 0x210
+#define R_SATA_MEM_AHCI_P3IS 0x290
+#define R_SATA_MEM_AHCI_P4IS 0x310
+#define R_SATA_MEM_AHCI_P5IS 0x390
+#define R_SATA_MEM_AHCI_P6IS 0x410
+#define R_SATA_MEM_AHCI_P7IS 0x490
+#define B_SATA_MEM_AHCI_PXIS_CPDS BIT31
+#define B_SATA_MEM_AHCI_PXIS_TFES BIT30
+#define B_SATA_MEM_AHCI_PXIS_HBFS BIT29
+#define B_SATA_MEM_AHCI_PXIS_HBDS BIT28
+#define B_SATA_MEM_AHCI_PXIS_IFS BIT27
+#define B_SATA_MEM_AHCI_PXIS_INFS BIT26
+#define B_SATA_MEM_AHCI_PXIS_OFS BIT24
+#define B_SATA_MEM_AHCI_PXIS_IPMS BIT23
+#define B_SATA_MEM_AHCI_PXIS_PRCS BIT22
+#define B_SATA_MEM_AHCI_PXIS_DIS BIT7
+#define B_SATA_MEM_AHCI_PXIS_PCS BIT6
+#define B_SATA_MEM_AHCI_PXIS_DPS BIT5
+#define B_SATA_MEM_AHCI_PXIS_UFS BIT4
+#define B_SATA_MEM_AHCI_PXIS_SDBS BIT3
+#define B_SATA_MEM_AHCI_PXIS_DSS BIT2
+#define B_SATA_MEM_AHCI_PXIS_PSS BIT1
+#define B_SATA_MEM_AHCI_PXIS_DHRS BIT0
+#define R_SATA_MEM_AHCI_P0IE 0x114
+#define R_SATA_MEM_AHCI_P1IE 0x194
+#define R_SATA_MEM_AHCI_P2IE 0x214
+#define R_SATA_MEM_AHCI_P3IE 0x294
+#define R_SATA_MEM_AHCI_P4IE 0x314
+#define R_SATA_MEM_AHCI_P5IE 0x394
+#define R_SATA_MEM_AHCI_P6IE 0x414
+#define R_SATA_MEM_AHCI_P7IE 0x494
+#define B_SATA_MEM_AHCI_PXIE_CPDE BIT31
+#define B_SATA_MEM_AHCI_PXIE_TFEE BIT30
+#define B_SATA_MEM_AHCI_PXIE_HBFE BIT29
+#define B_SATA_MEM_AHCI_PXIE_HBDE BIT28
+#define B_SATA_MEM_AHCI_PXIE_IFE BIT27
+#define B_SATA_MEM_AHCI_PXIE_INFE BIT26
+#define B_SATA_MEM_AHCI_PXIE_OFE BIT24
+#define B_SATA_MEM_AHCI_PXIE_IPME BIT23
+#define B_SATA_MEM_AHCI_PXIE_PRCE BIT22
+#define B_SATA_MEM_AHCI_PXIE_DIE BIT7
+#define B_SATA_MEM_AHCI_PXIE_PCE BIT6
+#define B_SATA_MEM_AHCI_PXIE_DPE BIT5
+#define B_SATA_MEM_AHCI_PXIE_UFIE BIT4
+#define B_SATA_MEM_AHCI_PXIE_SDBE BIT3
+#define B_SATA_MEM_AHCI_PXIE_DSE BIT2
+#define B_SATA_MEM_AHCI_PXIE_PSE BIT1
+#define B_SATA_MEM_AHCI_PXIE_DHRE BIT0
+#define R_SATA_MEM_AHCI_P0CMD 0x118
+#define R_SATA_MEM_AHCI_P1CMD 0x198
+#define R_SATA_MEM_AHCI_P2CMD 0x218
+#define R_SATA_MEM_AHCI_P3CMD 0x298
+#define R_SATA_MEM_AHCI_P4CMD 0x318
+#define R_SATA_MEM_AHCI_P5CMD 0x398
+#define R_SATA_MEM_AHCI_P6CMD 0x418
+#define R_SATA_MEM_AHCI_P7CMD 0x498
+#define B_SATA_MEM_AHCI_PxCMD_ESP BIT21 ///< Used with an external SATA device
+#define B_SATA_MEM_AHCI_PxCMD_MPSP BIT19 ///< Mechanical Switch Attached to Port
+#define B_SATA_MEM_AHCI_PxCMD_HPCP BIT18 ///< Hotplug capable
+#define B_SATA_MEM_AHCI_PxCMD_CR BIT15
+#define B_SATA_MEM_AHCI_PxCMD_FR BIT14
+#define B_SATA_MEM_AHCI_PxCMD_ISS BIT13
+#define B_SATA_MEM_AHCI_PxCMD_CCS 0x00001F00
+#define B_SATA_MEM_AHCI_PxCMD_FRE BIT4
+#define B_SATA_MEM_AHCI_PxCMD_CLO BIT3
+#define B_SATA_MEM_AHCI_PxCMD_POD BIT2
+#define B_SATA_MEM_AHCI_PxCMD_SUD BIT1
+#define B_SATA_MEM_AHCI_PxCMD_ST BIT0
+#define R_SATA_MEM_AHCI_P0TFD 0x120
+#define R_SATA_MEM_AHCI_P1TFD 0x1A0
+#define R_SATA_MEM_AHCI_P2TFD 0x220
+#define R_SATA_MEM_AHCI_P3TFD 0x2A0
+#define R_SATA_MEM_AHCI_P4TFD 0x320
+#define R_SATA_MEM_AHCI_P5TFD 0x3A0
+#define R_SATA_MEM_AHCI_P6TFD 0x420
+#define B_SATA_MEM_AHCI_PXTFD_ERR 0x0000FF00
+#define B_SATA_MEM_AHCI_PXTFD_STS 0x000000FF
+#define R_SATA_MEM_AHCI_P0SIG 0x124
+#define R_SATA_MEM_AHCI_P1SIG 0x1A4
+#define R_SATA_MEM_AHCI_P2SIG 0x224
+#define R_SATA_MEM_AHCI_P3SIG 0x2A4
+#define R_SATA_MEM_AHCI_P4SIG 0x324
+#define R_SATA_MEM_AHCI_P5SIG 0x3A4
+#define R_SATA_MEM_AHCI_P6SIG 0x424
+#define B_SATA_MEM_AHCI_PXSIG_LBA_HR 0xFF000000
+#define B_SATA_MEM_AHCI_PXSIG_LBA_MR 0x00FF0000
+#define B_SATA_MEM_AHCI_PXSIG_LBA_LR 0x0000FF00
+#define B_SATA_MEM_AHCI_PXSIG_SCR 0x000000FF
+#define R_SATA_MEM_AHCI_P0SSTS 0x128
+#define R_SATA_MEM_AHCI_P1SSTS 0x1A8
+#define R_SATA_MEM_AHCI_P2SSTS 0x228
+#define R_SATA_MEM_AHCI_P3SSTS 0x2A8
+#define R_SATA_MEM_AHCI_P4SSTS 0x328
+#define R_SATA_MEM_AHCI_P5SSTS 0x3A8
+#define R_SATA_MEM_AHCI_P6SSTS 0x428
+#define B_SATA_MEM_AHCI_PXSSTS_IPM_0 0x00000000
+#define B_SATA_MEM_AHCI_PXSSTS_IPM_1 0x00000100
+#define B_SATA_MEM_AHCI_PXSSTS_IPM_2 0x00000200
+#define B_SATA_MEM_AHCI_PXSSTS_IPM_6 0x00000600
+#define B_SATA_MEM_AHCI_PXSSTS_SPD_0 0x00000000
+#define B_SATA_MEM_AHCI_PXSSTS_SPD_1 0x00000010
+#define B_SATA_MEM_AHCI_PXSSTS_SPD_2 0x00000020
+#define B_SATA_MEM_AHCI_PXSSTS_SPD_3 0x00000030
+#define B_SATA_MEM_AHCI_PXSSTS_DET_0 0x00000000
+#define B_SATA_MEM_AHCI_PXSSTS_DET_1 0x00000001
+#define B_SATA_MEM_AHCI_PXSSTS_DET_3 0x00000003
+#define B_SATA_MEM_AHCI_PXSSTS_DET_4 0x00000004
+#define R_SATA_MEM_AHCI_P0SCTL 0x12C
+#define R_SATA_MEM_AHCI_P1SCTL 0x1AC
+#define R_SATA_MEM_AHCI_P2SCTL 0x22C
+#define R_SATA_MEM_AHCI_P3SCTL 0x2AC
+#define R_SATA_MEM_AHCI_P4SCTL 0x32C
+#define R_SATA_MEM_AHCI_P5SCTL 0x3AC
+#define R_SATA_MEM_AHCI_P6SCTL 0x42C
+#define B_SATA_MEM_AHCI_PXSCTL_IPM 0x00000F00
+#define V_SATA_MEM_AHCI_PXSCTL_IPM_0 0x00000000
+#define V_SATA_MEM_AHCI_PXSCTL_IPM_1 0x00000100
+#define V_SATA_MEM_AHCI_PXSCTL_IPM_2 0x00000200
+#define V_SATA_MEM_AHCI_PXSCTL_IPM_3 0x00000300
+#define B_SATA_MEM_AHCI_PXSCTL_SPD 0x000000F0
+#define V_SATA_MEM_AHCI_PXSCTL_SPD_0 0x00000000
+#define V_SATA_MEM_AHCI_PXSCTL_SPD_1 0x00000010
+#define V_SATA_MEM_AHCI_PXSCTL_SPD_2 0x00000020
+#define V_SATA_MEM_AHCI_PXSCTL_SPD_3 0x00000030
+#define B_SATA_MEM_AHCI_PXSCTL_DET 0x0000000F
+#define V_SATA_MEM_AHCI_PXSCTL_DET_0 0x00000000
+#define V_SATA_MEM_AHCI_PXSCTL_DET_1 0x00000001
+#define V_SATA_MEM_AHCI_PXSCTL_DET_4 0x00000004
+#define R_SATA_MEM_AHCI_P0SERR 0x130
+#define R_SATA_MEM_AHCI_P1SERR 0x1B0
+#define R_SATA_MEM_AHCI_P2SERR 0x230
+#define R_SATA_MEM_AHCI_P3SERR 0x2B0
+#define R_SATA_MEM_AHCI_P4SERR 0x330
+#define R_SATA_MEM_AHCI_P5SERR 0x3B0
+#define R_SATA_MEM_AHCI_P6SERR 0x430
+#define B_SATA_MEM_AHCI_PXSERR_EXCHG BIT26
+#define B_SATA_MEM_AHCI_PXSERR_UN_FIS_TYPE BIT25
+#define B_SATA_MEM_AHCI_PXSERR_TRSTE_24 BIT24
+#define B_SATA_MEM_AHCI_PXSERR_TRSTE_23 BIT23
+#define B_SATA_MEM_AHCI_PXSERR_HANDSHAKE BIT22
+#define B_SATA_MEM_AHCI_PXSERR_CRC_ERROR BIT21
+#define B_SATA_MEM_AHCI_PXSERR_10B8B_DECERR BIT19
+#define B_SATA_MEM_AHCI_PXSERR_COMM_WAKE BIT18
+#define B_SATA_MEM_AHCI_PXSERR_PHY_ERROR BIT17
+#define B_SATA_MEM_AHCI_PXSERR_PHY_RDY_CHG BIT16
+#define B_SATA_MEM_AHCI_PXSERR_INTRNAL_ERR BIT11
+#define B_SATA_MEM_AHCI_PXSERR_PROTOCOL_ERR BIT10
+#define B_SATA_MEM_AHCI_PXSERR_PCDIE BIT9
+#define B_SATA_MEM_AHCI_PXSERR_TDIE BIT8
+#define B_SATA_MEM_AHCI_PXSERR_RCE BIT1
+#define B_SATA_MEM_AHCI_PXSERR_RDIE BIT0
+#define R_SATA_MEM_AHCI_P0SACT 0x134
+#define R_SATA_MEM_AHCI_P1SACT 0x1B4
+#define R_SATA_MEM_AHCI_P2SACT 0x234
+#define R_SATA_MEM_AHCI_P3SACT 0x2B4
+#define R_SATA_MEM_AHCI_P4SACT 0x334
+#define R_SATA_MEM_AHCI_P5SACT 0x3B4
+#define R_SATA_MEM_AHCI_P6SACT 0x434
+#define B_SATA_MEM_AHCI_PXSACT_DS 0xFFFFFFFF
+#define R_SATA_MEM_AHCI_P0CI 0x138
+#define R_SATA_MEM_AHCI_P1CI 0x1B8
+#define R_SATA_MEM_AHCI_P2CI 0x238
+#define R_SATA_MEM_AHCI_P3CI 0x2B8
+#define R_SATA_MEM_AHCI_P4CI 0x338
+#define R_SATA_MEM_AHCI_P5CI 0x3B8
+#define R_SATA_MEM_AHCI_P6CI 0x438
+#define B_SATA_MEM_AHCI_PXCI 0xFFFFFFFF
+
+//
+// SATA AHCI Device ID macros
+//
+#define IS_PCH_H_SATA_AHCI_DEVICE_ID(DeviceId) \
+ ( \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_AHCI) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_MH_AHCI) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_OP_AHCI) \
+ )
+
+#define IS_PCH_LP_SATA_AHCI_DEVICE_ID(DeviceId) \
+ ( \
+ (DeviceId == V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_AHCI) \
+ )
+
+#define IS_PCH_SATA_AHCI_DEVICE_ID(DeviceId) \
+ ( \
+ IS_PCH_H_SATA_AHCI_DEVICE_ID(DeviceId) || \
+ IS_PCH_LP_SATA_AHCI_DEVICE_ID(DeviceId) \
+ )
+
+//
+// SATA RAID Device ID macros
+//
+#define IS_PCH_H_SATA_RAID_DEVICE_ID(DeviceId) \
+ ( \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_MH_RAID) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_PREM) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_MH_RAID_PREM) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_IBC) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_IBC_RST) || \
+ (DeviceId == V_CNL_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_IBC_2) || \
+ (DeviceId == V_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_ALTDIS) || \
+ (DeviceId == V_PCH_H_SATA_CFG_DEVICE_ID_D_RAID_RSTE) \
+ )
+
+#define IS_PCH_LP_SATA_RAID_DEVICE_ID(DeviceId) \
+ ( \
+ (DeviceId == V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_RAID) || \
+ (DeviceId == V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_RAID_PREM) || \
+ (DeviceId == V_CNL_PCH_LP_SATA_CFG_DEVICE_ID_M_RAID_IBC) \
+ )
+
+#define IS_PCH_SATA_RAID_DEVICE_ID(DeviceId) \
+ ( \
+ IS_PCH_H_SATA_RAID_DEVICE_ID(DeviceId) || \
+ IS_PCH_LP_SATA_RAID_DEVICE_ID(DeviceId) \
+ )
+
+//
+// Combined SATA IDE/AHCI/RAID Device ID macros
+//
+#define IS_PCH_H_SATA_DEVICE_ID(DeviceId) \
+ ( \
+ IS_PCH_H_SATA_AHCI_DEVICE_ID(DeviceId) || \
+ IS_PCH_H_SATA_RAID_DEVICE_ID(DeviceId) \
+ )
+
+#define IS_PCH_LP_SATA_DEVICE_ID(DeviceId) \
+ ( \
+ IS_PCH_LP_SATA_AHCI_DEVICE_ID(DeviceId) || \
+ IS_PCH_LP_SATA_RAID_DEVICE_ID(DeviceId) \
+ )
+#define IS_PCH_SATA_DEVICE_ID(DeviceId) \
+ ( \
+ IS_PCH_H_SATA_DEVICE_ID(DeviceId) || \
+ IS_PCH_LP_SATA_DEVICE_ID(DeviceId) \
+ )
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScs.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScs.h
new file mode 100644
index 0000000000..00e7881408
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScs.h
@@ -0,0 +1,52 @@
+/** @file
+ Register names for PCH Storage and Communication Subsystem
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SCS_H_
+#define _PCH_REGS_SCS_H_
+
+//
+// SCS Devices proprietary PCI Config Space Registers
+//
+#define R_SCS_CFG_PCS 0x84 ///< PME Control Status
+#define B_SCS_CFG_PCS_PMESTS BIT15 ///< PME Status
+#define B_SCS_CFG_PCS_PMEEN BIT8 ///< PME Enable
+#define B_SCS_CFG_PCS_NSS BIT3 ///< No Soft Reset
+#define B_SCS_CFG_PCS_PS (BIT1 | BIT0) ///< Power State
+#define B_SCS_CFG_PCS_PS_D3HOT (BIT1 | BIT0) ///< Power State: D3Hot State
+#define R_SCS_CFG_PG_CONFIG 0xA2 ///< PG Config
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScsCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScsCnl.h
new file mode 100644
index 0000000000..c18e1ef38c
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsScsCnl.h
@@ -0,0 +1,48 @@
+/** @file
+ Project specific SCS register definitions.
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SCS_CNL_H_
+#define _PCH_REGS_SCS_CNL_H_
+
+//
+// SCS SDCARD Controller PCI config
+//
+#define PCI_DEVICE_NUMBER_PCH_CNL_SCS_SDCARD 20
+#define PCI_FUNCTION_NUMBER_PCH_CNL_SCS_SDCARD 5
+
+#endif
+
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIo.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIo.h
new file mode 100644
index 0000000000..449335b073
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIo.h
@@ -0,0 +1,232 @@
+/** @file
+ Register names for PCH Serial IO Controllers
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SERIAL_IO_
+#define _PCH_REGS_SERIAL_IO_
+
+//
+// Serial IO Controllers General PCI Configuration Registers
+// registers accessed using PciD21FxRegBase + offset
+//
+#define R_SERIAL_IO_CFG_BAR0_LOW 0x10
+#define B_SERIAL_IO_CFG_BAR0_LOW_BAR 0xFFFFF000
+#define R_SERIAL_IO_CFG_BAR0_HIGH 0x14
+#define R_SERIAL_IO_CFG_BAR1_LOW 0x18
+#define B_SERIAL_IO_CFG_BAR1_LOW_BAR 0xFFFFF000
+#define R_SERIAL_IO_CFG_BAR1_HIGH 0x1C
+#define V_SERIAL_IO_CFG_BAR_SIZE (4 * 1024)
+#define N_SERIAL_IO_CFG_BAR_ALIGNMENT 12
+
+#define R_SERIAL_IO_CFG_PME_CTRL_STS 0x84
+#define B_SERIAL_IO_CFG_PME_CTRL_STS_PWR_ST (BIT1| BIT0)
+
+#define R_SERIAL_IO_CFG_D0I3MAXDEVPG 0xA0
+#define B_SERIAL_IO_CFG_D0I3MAXDEVPG_PMCRE BIT16
+#define B_SERIAL_IO_CFG_D0I3MAXDEVPG_I3E BIT17
+#define B_SERIAL_IO_CFG_D0I3MAXDEVPG_PGE BIT18
+
+#define R_SERIAL_IO_CFG_INTERRUPTREG 0x3C
+#define B_SERIAL_IO_CFG_INTERRUPTREG_INTLINE 0x000000FF
+
+//
+// Serial IO Controllers MMIO Registers
+// registers accessed : BAR0 + offset
+//
+#define R_SERIAL_IO_MEM_SSCR1 0x4
+#define B_SERIAL_IO_MEM_SSCR1_IFS BIT16
+
+#define R_SERIAL_IO_MEM_PPR_CLK 0x200
+#define B_SERIAL_IO_MEM_PPR_CLK_EN BIT0
+#define B_SERIAL_IO_MEM_PPR_CLK_UPDATE BIT31
+#define V_SERIAL_IO_MEM_PPR_CLK_M_DIV 0x30
+#define V_SERIAL_IO_MEM_PPR_CLK_N_DIV 0xC35
+
+#define R_SERIAL_IO_MEM_PPR_RESETS 0x204
+#define B_SERIAL_IO_MEM_PPR_RESETS_FUNC BIT0
+#define B_SERIAL_IO_MEM_PPR_RESETS_APB BIT1
+#define B_SERIAL_IO_MEM_PPR_RESETS_IDMA BIT2
+
+#define R_SERIAL_IO_MEM_ACTIVE_LTR 0x210
+#define R_SERIAL_IO_MEM_IDLE_LTR 0x214
+#define B_SERIAL_IO_MEM_LTR_SNOOP_VALUE 0x000003FF
+#define B_SERIAL_IO_MEM_LTR_SNOOP_SCALE 0x00001C00
+#define B_SERIAL_IO_MEM_LTR_SNOOP_REQUIREMENT BIT15
+
+#define R_SERIAL_IO_MEM_SPI_CS_CONTROL 0x224
+#define B_SERIAL_IO_MEM_SPI_CS_CONTROL_STATE BIT1
+#define B_SERIAL_IO_MEM_SPI_CS_CONTROL_MODE BIT0
+
+#define R_SERIAL_IO_MEM_REMAP_ADR_LOW 0x240
+#define R_SERIAL_IO_MEM_REMAP_ADR_HIGH 0x244
+
+#define R_SERIAL_IO_MEM_I2C_SDA_HOLD 0x7C
+#define V_SERIAL_IO_MEM_I2C_SDA_HOLD_VALUE 0x002C002C
+
+//
+// I2C Controller
+// Registers accessed through BAR0 + offset
+//
+#define R_IC_CON 0x00 // I2c Control
+#define B_IC_MASTER_MODE BIT0
+#define B_IC_RESTART_EN BIT5
+#define B_IC_SLAVE_DISABLE BIT6
+#define V_IC_SPEED_STANDARD 0x02
+#define V_IC_SPEED_FAST 0x04
+#define V_IC_SPEED_HIGH 0x06
+
+#define R_IC_TAR 0x04 // I2c Target Address
+#define B_IC_TAR_10BITADDR_MASTER BIT12
+
+#define R_IC_DATA_CMD 0x10 // I2c Rx/Tx Data Buffer and Command
+#define B_IC_CMD_READ BIT8 // 1 = read, 0 = write
+#define B_IC_CMD_STOP BIT9 // 1 = STOP
+#define B_IC_CMD_RESTART BIT10 // 1 = IC_RESTART_EN
+#define V_IC_WRITE_CMD_MASK 0xFF
+
+#define R_IC_SS_SCL_HCNT 0x14 // Standard Speed I2c Clock SCL High Count
+#define R_IC_SS_SCL_LCNT 0x18 // Standard Speed I2c Clock SCL Low Count
+#define R_IC_FS_SCL_HCNT 0x1C // Full Speed I2c Clock SCL High Count
+#define R_IC_FS_SCL_LCNT 0x20 // Full Speed I2c Clock SCL Low Count
+#define R_IC_HS_SCL_HCNT 0x24 // High Speed I2c Clock SCL High Count
+#define R_IC_HS_SCL_LCNT 0x28 // High Speed I2c Clock SCL Low Count
+#define R_IC_INTR_STAT 0x2C // I2c Inetrrupt Status
+#define R_IC_INTR_MASK 0x30 // I2c Interrupt Mask
+#define B_IC_INTR_GEN_CALL BIT11 // General call received
+#define B_IC_INTR_START_DET BIT10
+#define B_IC_INTR_STOP_DET BIT9
+#define B_IC_INTR_ACTIVITY BIT8
+#define B_IC_INTR_TX_ABRT BIT6 // Set on NACK
+#define B_IC_INTR_TX_EMPTY BIT4
+#define B_IC_INTR_TX_OVER BIT3
+#define B_IC_INTR_RX_FULL BIT2 // Data bytes in RX FIFO over threshold
+#define B_IC_INTR_RX_OVER BIT1
+#define B_IC_INTR_RX_UNDER BIT0
+#define R_IC_RAW_INTR_STAT ( 0x34) // I2c Raw Interrupt Status
+#define R_IC_RX_TL ( 0x38) // I2c Receive FIFO Threshold
+#define R_IC_TX_TL ( 0x3C) // I2c Transmit FIFO Threshold
+#define R_IC_CLR_INTR ( 0x40) // Clear Combined and Individual Interrupts
+#define R_IC_CLR_RX_UNDER ( 0x44) // Clear RX_UNDER Interrupt
+#define R_IC_CLR_RX_OVER ( 0x48) // Clear RX_OVERinterrupt
+#define R_IC_CLR_TX_OVER ( 0x4C) // Clear TX_OVER interrupt
+#define R_IC_CLR_RD_REQ ( 0x50) // Clear RD_REQ interrupt
+#define R_IC_CLR_TX_ABRT ( 0x54) // Clear TX_ABRT interrupt
+#define R_IC_CLR_RX_DONE ( 0x58) // Clear RX_DONE interrupt
+#define R_IC_CLR_ACTIVITY ( 0x5C) // Clear ACTIVITY interrupt
+#define R_IC_CLR_STOP_DET ( 0x60) // Clear STOP_DET interrupt
+#define R_IC_CLR_START_DET ( 0x64) // Clear START_DET interrupt
+#define R_IC_CLR_GEN_CALL ( 0x68) // Clear GEN_CALL interrupt
+#define R_IC_ENABLE ( 0x6C) // I2c Enable
+
+#define R_IC_STATUS 0x70 // I2c Status
+#define B_IC_STATUS_RFF BIT4 // RX FIFO is completely full
+#define B_IC_STATUS_RFNE BIT3 // RX FIFO is not empty
+#define B_IC_STATUS_TFE BIT2 // TX FIFO is completely empty
+#define B_IC_STATUS_TFNF BIT1 // TX FIFO is not full
+#define B_IC_STATUS_ACTIVITY BIT0 // Controller Activity Status.
+
+#define R_IC_TXFL R ( 0x74) // Transmit FIFO Level Register
+#define R_IC_RXFLR ( 0x78) // Receive FIFO Level Register
+#define R_IC_SDA_HOLD ( 0x7C)
+#define R_IC_TX_ABRT_SOURCE ( 0x80) // I2c Transmit Abort Status Register
+#define B_IC_TX_ABRT_7B_ADDR_NACK BIT0 // NACK on 7-bit address
+
+#define R_IC_SDA_SETUP ( 0x94) // I2c SDA Setup Register
+#define R_IC_ACK_GENERAL_CALL ( 0x98) // I2c ACK General Call Register
+#define R_IC_ENABLE_STATUS ( 0x9C) // I2c Enable Status Register
+#define B_IC_EN BIT0 // I2c enable status
+
+#define R_IC_CLK_GATE ( 0xC0)
+#define R_IC_COMP_PARAM ( 0xF4) // Component Parameter Register
+#define R_IC_COMP_VERSION ( 0xF8) // Component Version ID
+#define R_IC_COMP_TYPE ( 0xFC) // Component Type
+
+//
+// Bridge Private Configuration Registers
+// accessed only through SB messaging. SB access = SerialIo IOSF2OCP Bridge Port ID + offset
+//
+#define R_SERIAL_IO_PCR_PMCTL 0x1D0
+#define V_SERIAL_IO_PCR_PMCTL_PWR_GATING 0x3F
+
+#define R_SERIAL_IO_PCR_PCICFGCTRLx 0x200
+#define V_SERIAL_IO_PCR_PCICFGCTRL_N_OFFS 0x04
+#define R_SERIAL_IO_PCR_PCICFGCTRL1 0x200 //I2C0
+#define R_SERIAL_IO_PCR_PCICFGCTRL2 0x204 //I2C1
+#define R_SERIAL_IO_PCR_PCICFGCTRL3 0x208 //I2C2
+#define R_SERIAL_IO_PCR_PCICFGCTRL4 0x20C //I2C3
+#define R_SERIAL_IO_PCR_PCICFGCTRL5 0x210 //I2C4
+#define R_SERIAL_IO_PCR_PCICFGCTRL6 0x214 //I2C5
+#define R_SERIAL_IO_PCR_PCICFGCTRL9 0x218 //UA00
+#define R_SERIAL_IO_PCR_PCICFGCTRL10 0x21C //UA01
+#define R_SERIAL_IO_PCR_PCICFGCTRL11 0x220 //UA02
+#define R_SERIAL_IO_PCR_PCICFGCTRL13 0x224 //SPI0
+#define R_SERIAL_IO_PCR_PCICFGCTRL14 0x228 //SPI1
+
+#define B_SERIAL_IO_PCR_PCICFGCTRL_PCI_CFG_DIS BIT0
+#define B_SERIAL_IO_PCR_PCICFGCTRL_ACPI_INTR_EN BIT1
+#define B_SERIAL_IO_PCR_PCICFGCTRL_BAR1_DIS BIT7
+#define B_SERIAL_IO_PCR_PCICFGCTRL_INT_PIN (BIT11 | BIT10 | BIT9 | BIT8)
+#define N_SERIAL_IO_PCR_PCICFGCTRL_INT_PIN 8
+#define V_SERIAL_IO_PCR_PCICFGCTRL_INTA 0x01
+#define V_SERIAL_IO_PCR_PCICFGCTRL_INTB 0x02
+#define V_SERIAL_IO_PCR_PCICFGCTRL_INTC 0x03
+#define V_SERIAL_IO_PCR_PCICFGCTRL_INTD 0x04
+#define B_SERIAL_IO_PCR_PCICFGCTRL_ACPI_IRQ 0x000FF000
+#define N_SERIAL_IO_PCR_PCICFGCTRL_ACPI_IRQ 12
+#define B_SERIAL_IO_PCR_PCICFGCTRL_PCI_IRQ 0x0FF00000
+#define N_SERIAL_IO_PCR_PCICFGCTRL_PCI_IRQ 20
+
+#define R_SERIAL_IO_PCR_GPPRVRW2 0x604
+#define B_SERIAL_IO_PCR_GPPRVRW2_PGCB_FRC_CLK_CP_EN BIT1
+#define B_SERIAL_IO_PCR_GPPRVRW2_CDC_SIDE_CFG_CG_EN BIT5
+#define B_SERIAL_IO_PCR_GPPRVRW2_CDC_SIDE_CFG_CLKREQ_CTL_EN BIT11
+#define V_SERIAL_IO_PCR_GPPRVRW2_CLK_GATING (B_SERIAL_IO_PCR_GPPRVRW2_PGCB_FRC_CLK_CP_EN | B_SERIAL_IO_PCR_GPPRVRW2_CDC_SIDE_CFG_CG_EN | B_SERIAL_IO_PCR_GPPRVRW2_CDC_SIDE_CFG_CLKREQ_CTL_EN)
+
+
+#define R_SERIAL_IO_PCR_GPPRVRW7 0x618
+#define B_SERIAL_IO_PCR_GPPRVRW7_UART0_BYTE_ADDR_EN BIT0
+#define B_SERIAL_IO_PCR_GPPRVRW7_UART1_BYTE_ADDR_EN BIT1
+#define B_SERIAL_IO_PCR_GPPRVRW7_UART2_BYTE_ADDR_EN BIT2
+
+//
+// Number of pins used by SerialIo controllers
+//
+#define PCH_SERIAL_IO_PINS_PER_I2C_CONTROLLER 2
+#define PCH_SERIAL_IO_PINS_PER_UART_CONTROLLER 4
+#define PCH_SERIAL_IO_PINS_PER_UART_CONTROLLER_NO_FLOW_CTRL 2
+#define PCH_SERIAL_IO_PINS_PER_SPI_CONTROLLER 4
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIoCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIoCnl.h
new file mode 100644
index 0000000000..62b859dc99
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSerialIoCnl.h
@@ -0,0 +1,138 @@
+/** @file
+ Device IDs for PCH Serial IO Controllers for PCH
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SERIAL_IO_CNL_
+#define _PCH_REGS_SERIAL_IO_CNL_
+
+//
+// Serial IO I2C0 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_I2C0 21
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_I2C0 0
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_I2C0_DEVICE_ID 0x9DE8
+#define V_CNL_PCH_H_SERIAL_IO_CFG_I2C0_DEVICE_ID 0xA368
+
+//
+// Serial IO I2C1 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_I2C1 21
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_I2C1 1
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_I2C1_DEVICE_ID 0x9DE9
+#define V_CNL_PCH_H_SERIAL_IO_CFG_I2C1_DEVICE_ID 0xA369
+
+//
+// Serial IO I2C2 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_I2C2 21
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_I2C2 2
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_I2C2_DEVICE_ID 0x9DEA
+#define V_CNL_PCH_H_SERIAL_IO_CFG_I2C2_DEVICE_ID 0xA36A
+
+//
+// Serial IO I2C3 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_I2C3 21
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_I2C3 3
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_I2C3_DEVICE_ID 0x9DEB
+#define V_CNL_PCH_H_SERIAL_IO_CFG_I2C3_DEVICE_ID 0xA36B
+
+//
+// Serial IO I2C4 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_I2C4 25
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_I2C4 0
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_I2C4_DEVICE_ID 0x9DC5
+
+//
+// Serial IO I2C5 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_I2C5 25
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_I2C5 1
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_I2C5_DEVICE_ID 0x9DC6
+
+//
+// Serial IO SPI0 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_SPI0 30
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_SPI0 2
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_SPI0_DEVICE_ID 0x9DAA
+#define V_CNL_PCH_H_SERIAL_IO_CFG_SPI0_DEVICE_ID 0xA32A
+
+//
+// Serial IO SPI1 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_SPI1 30
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_SPI1 3
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_SPI1_DEVICE_ID 0x9DAB
+#define V_CNL_PCH_H_SERIAL_IO_CFG_SPI1_DEVICE_ID 0xA32B
+
+//
+// Serial IO UART0 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_UART0 30
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_UART0 0
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_UART0_DEVICE_ID 0x9DA8
+#define V_CNL_PCH_H_SERIAL_IO_CFG_UART0_DEVICE_ID 0xA328
+
+//
+// Serial IO UART1 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_UART1 30
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_UART1 1
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_UART1_DEVICE_ID 0x9DA9
+#define V_CNL_PCH_H_SERIAL_IO_CFG_UART1_DEVICE_ID 0xA329
+
+//
+// Serial IO UART2 Controller Registers
+//
+#define PCI_DEVICE_NUMBER_PCH_SERIAL_IO_UART2 25
+#define PCI_FUNCTION_NUMBER_PCH_SERIAL_IO_UART2 2
+
+#define V_CNL_PCH_LP_SERIAL_IO_CFG_UART2_DEVICE_ID 0x9DC7
+#define V_CNL_PCH_H_SERIAL_IO_CFG_UART2_DEVICE_ID 0xA347
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSmbus.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSmbus.h
new file mode 100644
index 0000000000..e571a6a127
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSmbus.h
@@ -0,0 +1,151 @@
+/** @file
+ Register names for PCH Smbus Device.
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used .
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SMBUS_H_
+#define _PCH_REGS_SMBUS_H_
+
+//
+// SMBus Controller Registers (D31:F4)
+//
+#define PCI_DEVICE_NUMBER_PCH_SMBUS 31
+#define PCI_FUNCTION_NUMBER_PCH_SMBUS 4
+#define R_SMBUS_CFG_BASE 0x20
+#define V_SMBUS_CFG_BASE_SIZE (1 << 5)
+#define B_SMBUS_CFG_BASE_BAR 0x0000FFE0
+#define R_SMBUS_CFG_HOSTC 0x40
+#define B_SMBUS_CFG_HOSTC_SPDWD BIT4
+#define B_SMBUS_CFG_HOSTC_SSRESET BIT3
+#define B_SMBUS_CFG_HOSTC_I2C_EN BIT2
+#define B_SMBUS_CFG_HOSTC_SMI_EN BIT1
+#define B_SMBUS_CFG_HOSTC_HST_EN BIT0
+#define R_SMBUS_CFG_TCOBASE 0x50
+#define B_SMBUS_CFG_TCOBASE_BAR 0x0000FFE0
+#define R_SMBUS_CFG_TCOCTL 0x54
+#define B_SMBUS_CFG_TCOCTL_TCO_BASE_EN BIT8
+#define B_SMBUS_CFG_TCOCTL_TCO_BASE_LOCK BIT0
+#define R_SMBUS_CFG_64 0x64
+#define R_SMBUS_CFG_80 0x80
+
+//
+// SMBus I/O Registers
+//
+#define R_SMBUS_IO_HSTS 0x00 ///< Host Status Register R/W
+#define B_SMBUS_IO_HBSY 0x01
+#define B_SMBUS_IO_INTR 0x02
+#define B_SMBUS_IO_DERR 0x04
+#define B_SMBUS_IO_BERR 0x08
+#define B_SMBUS_IO_FAIL 0x10
+#define B_SMBUS_IO_SMBALERT_STS 0x20
+#define B_SMBUS_IO_IUS 0x40
+#define B_SMBUS_IO_BYTE_DONE_STS 0x80
+#define B_SMBUS_IO_ERROR (B_SMBUS_IO_DERR | B_SMBUS_IO_BERR | B_SMBUS_IO_FAIL)
+#define B_SMBUS_IO_HSTS_ALL 0xFF
+#define R_SMBUS_IO_HCTL 0x02 ///< Host Control Register R/W
+#define B_SMBUS_IO_INTREN 0x01
+#define B_SMBUS_IO_KILL 0x02
+#define B_SMBUS_IO_SMB_CMD 0x1C
+#define V_SMBUS_IO_SMB_CMD_QUICK 0x00
+#define V_SMBUS_IO_SMB_CMD_BYTE 0x04
+#define V_SMBUS_IO_SMB_CMD_BYTE_DATA 0x08
+#define V_SMBUS_IO_SMB_CMD_WORD_DATA 0x0C
+#define V_SMBUS_IO_SMB_CMD_PROCESS_CALL 0x10
+#define V_SMBUS_IO_SMB_CMD_BLOCK 0x14
+#define V_SMBUS_IO_SMB_CMD_IIC_READ 0x18
+#define V_SMBUS_IO_SMB_CMD_BLOCK_PROCESS 0x1C
+#define B_SMBUS_IO_LAST_BYTE 0x20
+#define B_SMBUS_IO_START 0x40
+#define B_SMBUS_IO_PEC_EN 0x80
+#define R_SMBUS_IO_HCMD 0x03 ///< Host Command Register R/W
+#define R_SMBUS_IO_TSA 0x04 ///< Transmit Slave Address Register R/W
+#define B_SMBUS_IO_RW_SEL 0x01
+#define B_SMBUS_IO_READ 0x01 // RW
+#define B_SMBUS_IO_WRITE 0x00 // RW
+#define B_SMBUS_IO_ADDRESS 0xFE
+#define R_SMBUS_IO_HD0 0x05 ///< Data 0 Register R/W
+#define R_SMBUS_IO_HD1 0x06 ///< Data 1 Register R/W
+#define R_SMBUS_IO_HBD 0x07 ///< Host Block Data Register R/W
+#define R_SMBUS_IO_PEC 0x08 ///< Packet Error Check Data Register R/W
+#define R_SMBUS_IO_RSA 0x09 ///< Receive Slave Address Register R/W
+#define B_SMBUS_IO_SLAVE_ADDR 0x7F
+#define R_SMBUS_IO_SD 0x0A ///< Receive Slave Data Register R/W
+#define R_SMBUS_IO_AUXS 0x0C ///< Auxiliary Status Register R/WC
+#define B_SMBUS_IO_CRCE 0x01
+#define B_SMBUS_IO_STCO 0x02 ///< SMBus TCO Mode
+#define R_SMBUS_IO_AUXC 0x0D ///< Auxiliary Control Register R/W
+#define B_SMBUS_IO_AAC 0x01
+#define B_SMBUS_IO_E32B 0x02
+#define R_SMBUS_IO_SMLC 0x0E ///< SMLINK Pin Control Register R/W
+#define B_SMBUS_IO_SMLINK0_CUR_STS 0x01
+#define B_SMBUS_IO_SMLINK1_CUR_STS 0x02
+#define B_SMBUS_IO_SMLINK_CLK_CTL 0x04
+#define R_SMBUS_IO_SMBC 0x0F ///< SMBus Pin Control Register R/W
+#define B_SMBUS_IO_SMBCLK_CUR_STS 0x01
+#define B_SMBUS_IO_SMBDATA_CUR_STS 0x02
+#define B_SMBUS_IO_SMBCLK_CTL 0x04
+#define R_SMBUS_IO_SSTS 0x10 ///< Slave Status Register R/WC
+#define B_SMBUS_IO_HOST_NOTIFY_STS 0x01
+#define R_SMBUS_IO_SCMD 0x11 ///< Slave Command Register R/W
+#define B_SMBUS_IO_HOST_NOTIFY_INTREN 0x01
+#define B_SMBUS_IO_HOST_NOTIFY_WKEN 0x02
+#define B_SMBUS_IO_SMBALERT_DIS 0x04
+#define R_SMBUS_IO_NDA 0x14 ///< Notify Device Address Register RO
+#define B_SMBUS_IO_DEVICE_ADDRESS 0xFE
+#define R_SMBUS_IO_NDLB 0x16 ///< Notify Data Low Byte Register RO
+#define R_SMBUS_IO_NDHB 0x17 ///< Notify Data High Byte Register RO
+
+//
+// SMBus Private Config Registers
+// (PID:SMB)
+//
+#define R_SMBUS_PCR_TCOCFG 0x00 ///< TCO Configuration register
+#define B_SMBUS_PCR_TCOCFG_IE BIT7 ///< TCO IRQ Enable
+#define B_SMBUS_PCR_TCOCFG_IS (BIT2 | BIT1 | BIT0) ///< TCO IRQ Select
+#define V_SMBUS_PCR_TCOCFG_IRQ_9 0x00
+#define V_SMBUS_PCR_TCOCFG_IRQ_10 0x01
+#define V_SMBUS_PCR_TCOCFG_IRQ_11 0x02
+#define V_SMBUS_PCR_TCOCFG_IRQ_20 0x04 ///< only if APIC enabled
+#define V_SMBUS_PCR_TCOCFG_IRQ_21 0x05 ///< only if APIC enabled
+#define V_SMBUS_PCR_TCOCFG_IRQ_22 0x06 ///< only if APIC enabled
+#define V_SMBUS_PCR_TCOCFG_IRQ_23 0x07 ///< only if APIC enabled
+#define R_SMBUS_PCR_SMBTM 0x04 ///< SMBus Test Mode
+#define B_SMBUS_PCR_SMBTM_SMBCT BIT1 ///< SMBus Counter
+#define B_SMBUS_PCR_SMBTM_SMBDG BIT0 ///< SMBus Deglitch
+#define R_SMBUS_PCR_SCTM 0x08 ///< Short Counter Test Mode
+#define B_SMBUS_PCR_SCTM_SSU BIT31 ///< Simulation Speed-Up
+#define R_SMBUS_PCR_GC 0x0C ///< General Control
+#define B_SMBUS_PCR_GC_FD BIT0 ///< Function Disable
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSpi.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSpi.h
new file mode 100644
index 0000000000..013603ca25
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsSpi.h
@@ -0,0 +1,295 @@
+/** @file
+ Register names for PCH SPI device.
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_SPI_H_
+#define _PCH_REGS_SPI_H_
+
+//
+// SPI Registers (D31:F5)
+//
+
+#define PCI_DEVICE_NUMBER_PCH_SPI 31
+#define PCI_FUNCTION_NUMBER_PCH_SPI 5
+
+#define R_SPI_CFG_BAR0 0x10
+#define B_SPI_CFG_BAR0_MASK 0x0FFF
+
+#define R_SPI_CFG_BDE 0xD8
+#define B_SPI_CFG_BDE_F8 0x8000
+#define B_SPI_CFG_BDE_F0 0x4000
+#define B_SPI_CFG_BDE_E8 0x2000
+#define B_SPI_CFG_BDE_E0 0x1000
+#define B_SPI_CFG_BDE_D8 0x0800
+#define B_SPI_CFG_BDE_D0 0x0400
+#define B_SPI_CFG_BDE_C8 0x0200
+#define B_SPI_CFG_BDE_C0 0x0100
+#define B_SPI_CFG_BDE_LEG_F 0x0080
+#define B_SPI_CFG_BDE_LEG_E 0x0040
+#define B_SPI_CFG_BDE_70 0x0008
+#define B_SPI_CFG_BDE_60 0x0004
+#define B_SPI_CFG_BDE_50 0x0002
+#define B_SPI_CFG_BDE_40 0x0001
+
+#define R_SPI_CFG_BC 0xDC
+#define S_SPI_CFG_BC 4
+#define N_SPI_CFG_BC_ASE_BWP 11
+#define B_SPI_CFG_BC_ASE_BWP BIT11
+#define N_SPI_CFG_BC_ASYNC_SS 10
+#define B_SPI_CFG_BC_ASYNC_SS BIT10
+#define B_SPI_CFG_BC_OSFH BIT9 ///< OS Function Hide
+#define N_SPI_CFG_BC_SYNC_SS 8
+#define B_SPI_CFG_BC_SYNC_SS BIT8
+#define B_SPI_CFG_BC_BILD BIT7
+#define B_SPI_CFG_BC_BBS BIT6 ///< Boot BIOS strap
+#define N_SPI_CFG_BC_BBS 6
+#define V_SPI_CFG_BC_BBS_SPI 0 ///< Boot BIOS strapped to SPI
+#define V_SPI_CFG_BC_BBS_LPC 1 ///< Boot BIOS strapped to LPC
+#define B_SPI_CFG_BC_EISS BIT5 ///< Enable InSMM.STS
+#define B_SPI_CFG_BC_TSS BIT4
+#define B_SPI_CFG_BC_SRC (BIT3 | BIT2)
+#define N_SPI_CFG_BC_SRC 2
+#define V_SPI_CFG_BC_SRC_PREF_EN_CACHE_EN 0x02 ///< Prefetching and Caching enabled
+#define V_SPI_CFG_BC_SRC_PREF_DIS_CACHE_DIS 0x01 ///< No prefetching and no caching
+#define V_SPI_CFG_BC_SRC_PREF_DIS_CACHE_EN 0x00 ///< No prefetching, but caching enabled
+#define B_SPI_CFG_BC_LE BIT1 ///< Lock Enable
+#define N_SPI_CFG_BC_BLE 1
+#define B_SPI_CFG_BC_WPD BIT0 ///< Write Protect Disable
+
+//
+// BIOS Flash Program Registers (based on SPI_BAR0)
+//
+#define R_SPI_MEM_BFPR 0x00 ///< BIOS Flash Primary Region Register(32bits), which is RO and contains the same value from FREG1
+#define B_SPI_MEM_BFPR_PRL 0x7FFF0000 ///< BIOS Flash Primary Region Limit mask
+#define N_SPI_MEM_BFPR_PRL 16 ///< BIOS Flash Primary Region Limit bit position
+#define B_SPI_MEM_BFPR_PRB 0x00007FFF ///< BIOS Flash Primary Region Base mask
+#define N_SPI_MEM_BFPR_PRB 0 ///< BIOS Flash Primary Region Base bit position
+#define R_SPI_MEM_HSFSC 0x04 ///< Hardware Sequencing Flash Status and Control Register(32bits)
+#define B_SPI_MEM_HSFSC_FSMIE BIT31 ///< Flash SPI SMI# Enable
+#define B_SPI_MEM_HSFSC_FDBC_MASK 0x3F000000 ///< Flash Data Byte Count ( <= 64), Count = (Value in this field) + 1.
+#define N_SPI_MEM_HSFSC_FDBC 24
+#define B_SPI_MEM_HSFSC_CYCLE_MASK 0x001E0000 ///< Flash Cycle.
+#define N_SPI_MEM_HSFSC_CYCLE 17
+#define V_SPI_MEM_HSFSC_CYCLE_READ 0 ///< Flash Cycle Read
+#define V_SPI_MEM_HSFSC_CYCLE_WRITE 2 ///< Flash Cycle Write
+#define V_SPI_MEM_HSFSC_CYCLE_4K_ERASE 3 ///< Flash Cycle 4K Block Erase
+#define V_SPI_MEM_HSFSC_CYCLE_64K_ERASE 4 ///< Flash Cycle 64K Sector Erase
+#define V_SPI_MEM_HSFSC_CYCLE_READ_SFDP 5 ///< Flash Cycle Read SFDP
+#define V_SPI_MEM_HSFSC_CYCLE_READ_JEDEC_ID 6 ///< Flash Cycle Read JEDEC ID
+#define V_SPI_MEM_HSFSC_CYCLE_WRITE_STATUS 7 ///< Flash Cycle Write Status
+#define V_SPI_MEM_HSFSC_CYCLE_READ_STATUS 8 ///< Flash Cycle Read Status
+#define B_SPI_MEM_HSFSC_CYCLE_FGO BIT16 ///< Flash Cycle Go.
+#define B_SPI_MEM_HSFSC_FLOCKDN BIT15 ///< Flash Configuration Lock-Down
+#define B_SPI_MEM_HSFSC_FDV BIT14 ///< Flash Descriptor Valid, once valid software can use hareware sequencing regs
+#define B_SPI_MEM_HSFSC_FDOPSS BIT13 ///< Flash Descriptor Override Pin-Strap Status
+#define B_SPI_MEM_HSFSC_PRR34_LOCKDN BIT12 ///< PRR3 PRR4 Lock-Down
+#define B_SPI_MEM_HSFSC_WRSDIS BIT11 ///< Write Status Disable
+#define B_SPI_MEM_HSFSC_SAF_CE BIT8 ///< SAF ctype error
+#define B_SPI_MEM_HSFSC_SAF_MODE_ACTIVE BIT7 ///< Indicates flash is attached either directly to the PCH via the SPI bus or EC/BMC
+#define B_SPI_MEM_HSFSC_SAF_LE BIT6 ///< SAF link error
+#define B_SPI_MEM_HSFSC_SCIP BIT5 ///< SPI cycle in progress
+#define B_SPI_MEM_HSFSC_SAF_DLE BIT4 ///< SAF Data length error
+#define B_SPI_MEM_HSFSC_SAF_ERROR BIT3 ///< SAF Error
+#define B_SPI_MEM_HSFSC_AEL BIT2 ///< Access Error Log
+#define B_SPI_MEM_HSFSC_FCERR BIT1 ///< Flash Cycle Error
+#define B_SPI_MEM_HSFSC_FDONE BIT0 ///< Flash Cycle Done
+#define R_SPI_MEM_FADDR 0x08 ///< SPI Flash Address
+#define B_SPI_MEM_FADDR_MASK 0x07FFFFFF ///< SPI Flash Address Mask (0~26bit)
+#define R_SPI_MEM_DLOCK 0x0C ///< Discrete Lock Bits
+#define B_SPI_MEM_DLOCK_PR0LOCKDN BIT8 ///< PR0LOCKDN
+#define R_SPI_MEM_FDATA00 0x10 ///< SPI Data 00 (32 bits)
+#define R_SPI_MEM_FDATA01 0x14 ///< SPI Data 01
+#define R_SPI_MEM_FDATA02 0x18 ///< SPI Data 02
+#define R_SPI_MEM_FDATA03 0x1C ///< SPI Data 03
+#define R_SPI_MEM_FDATA04 0x20 ///< SPI Data 04
+#define R_SPI_MEM_FDATA05 0x24 ///< SPI Data 05
+#define R_SPI_MEM_FDATA06 0x28 ///< SPI Data 06
+#define R_SPI_MEM_FDATA07 0x2C ///< SPI Data 07
+#define R_SPI_MEM_FDATA08 0x30 ///< SPI Data 08
+#define R_SPI_MEM_FDATA09 0x34 ///< SPI Data 09
+#define R_SPI_MEM_FDATA10 0x38 ///< SPI Data 10
+#define R_SPI_MEM_FDATA11 0x3C ///< SPI Data 11
+#define R_SPI_MEM_FDATA12 0x40 ///< SPI Data 12
+#define R_SPI_MEM_FDATA13 0x44 ///< SPI Data 13
+#define R_SPI_MEM_FDATA14 0x48 ///< SPI Data 14
+#define R_SPI_MEM_FDATA15 0x4C ///< SPI Data 15
+#define R_SPI_MEM_FRAP 0x50 ///< Flash Region Access Permisions Register
+#define B_SPI_MEM_FRAP_BRWA_MASK 0x0000FF00 ///< BIOS Region Write Access MASK, Region0~7 - 0: Flash Descriptor; 1: BIOS; 2: ME; 3: GbE; 4: PlatformData
+#define N_SPI_MEM_FRAP_BRWA 8 ///< BIOS Region Write Access bit position
+#define B_SPI_MEM_FRAP_BRRA_MASK 0x000000FF ///< BIOS Region Read Access MASK, Region0~7 - 0: Flash Descriptor; 1: BIOS; 2: ME; 3: GbE; 4: PlatformData
+#define B_SPI_MEM_FRAP_BMRAG_MASK 0x00FF0000 ///< BIOS Master Read Access Grant
+#define B_SPI_MEM_FRAP_BMWAG_MASK 0xFF000000 ///< BIOS Master Write Access Grant
+#define R_SPI_MEM_FREG0_FLASHD 0x54 ///< Flash Region 0(Flash Descriptor)(32bits)
+#define R_SPI_MEM_FREG1_BIOS 0x58 ///< Flash Region 1(BIOS)(32bits)
+#define R_SPI_MEM_FREG2_ME 0x5C ///< Flash Region 2(ME)(32bits)
+#define R_SPI_MEM_FREG3_GBE 0x60 ///< Flash Region 3(GbE)(32bits)
+#define R_SPI_MEM_FREG4_PLATFORM_DATA 0x64 ///< Flash Region 4(Platform Data)(32bits)
+#define R_SPI_MEM_FREG5_DER 0x68 ///< Flash Region 5(Device Expansion Region)(32bits)
+#define S_SPI_MEM_FREGX 4 ///< Size of Flash Region register
+#define B_SPI_MEM_FREGX_LIMIT_MASK 0x7FFF0000 ///< Flash Region Limit [30:16] represents [26:12], [11:0] are assumed to be FFFh
+#define N_SPI_MEM_FREGX_LIMIT 16 ///< Region limit bit position
+#define N_SPI_MEM_FREGX_LIMIT_REPR 12 ///< Region limit bit represents position
+#define B_SPI_MEM_FREGX_BASE_MASK 0x00007FFF ///< Flash Region Base, [14:0] represents [26:12]
+#define N_SPI_MEM_FREGX_BASE 0 ///< Region base bit position
+#define N_SPI_MEM_FREGX_BASE_REPR 12 ///< Region base bit represents position
+#define R_SPI_MEM_PR0 0x84 ///< Protected Region 0 Register
+#define R_SPI_MEM_PR1 0x88 ///< Protected Region 1 Register
+#define R_SPI_MEM_PR2 0x8C ///< Protected Region 2 Register
+#define R_SPI_MEM_PR3 0x90 ///< Protected Region 3 Register
+#define R_SPI_MEM_PR4 0x94 ///< Protected Region 4 Register
+#define S_SPI_MEM_PRX 4 ///< Protected Region X Register size
+#define B_SPI_MEM_PRX_WPE BIT31 ///< Write Protection Enable
+#define B_SPI_MEM_PRX_PRL_MASK 0x7FFF0000 ///< Protected Range Limit Mask, [30:16] here represents upper limit of address [26:12]
+#define N_SPI_MEM_PRX_PRL 16 ///< Protected Range Limit bit position
+#define B_SPI_MEM_PRX_RPE BIT15 ///< Read Protection Enable
+#define B_SPI_MEM_PRX_PRB_MASK 0x00007FFF ///< Protected Range Base Mask, [14:0] here represents base limit of address [26:12]
+#define N_SPI_MEM_PRX_PRB 0 ///< Protected Range Base bit position
+#define R_SPI_MEM_SFRAP 0xB0 ///< Secondary Flash Regions Access Permisions Register
+#define R_SPI_MEM_FDOC 0xB4 ///< Flash Descriptor Observability Control Register(32 bits)
+#define B_SPI_MEM_FDOC_FDSS_MASK (BIT14 | BIT13 | BIT12) ///< Flash Descritor Section Select
+#define V_SPI_MEM_FDOC_FDSS_FSDM 0x0000 ///< Flash Signature and Descriptor Map
+#define V_SPI_MEM_FDOC_FDSS_COMP 0x1000 ///< Component
+#define V_SPI_MEM_FDOC_FDSS_REGN 0x2000 ///< Region
+#define V_SPI_MEM_FDOC_FDSS_MSTR 0x3000 ///< Master
+#define V_SPI_MEM_FDOC_FDSS_PCHS 0x4000 ///< PCH soft straps
+#define V_SPI_MEM_FDOC_FDSS_SFDP 0x5000 ///< SFDP Parameter Table
+#define B_SPI_MEM_FDOC_FDSI_MASK 0x0FFC ///< Flash Descriptor Section Index
+#define R_SPI_MEM_FDOD 0xB8 ///< Flash Descriptor Observability Data Register(32 bits)
+#define R_SPI_MEM_SFDP0_VSCC0 0xC4 ///< Vendor Specific Component Capabilities Register(32 bits)
+#define B_SPI_MEM_SFDPX_VSCCX_CPPTV BIT31 ///< Component Property Parameter Table Valid
+#define B_SPI_MEM_SFDP0_VSCC0_VCL BIT30 ///< Vendor Component Lock
+#define B_SPI_MEM_SFDPX_VSCCX_EO_64K BIT29 ///< 64k Erase valid (EO_64k_valid)
+#define B_SPI_MEM_SFDPX_VSCCX_EO_4K BIT28 ///< 4k Erase valid (EO_4k_valid)
+#define B_SPI_MEM_SFDPX_VSCCX_RPMC BIT27 ///< RPMC Supported
+#define B_SPI_MEM_SFDPX_VSCCX_DPD BIT26 ///< Deep Powerdown Supported
+#define B_SPI_MEM_SFDPX_VSCCX_SUSRES BIT25 ///< Suspend/Resume Supported
+#define B_SPI_MEM_SFDPX_VSCCX_SOFTRES BIT24 ///< Soft Reset Supported
+#define B_SPI_MEM_SFDPX_VSCCX_64k_EO_MASK 0x00FF0000 ///< 64k Erase Opcode (EO_64k)
+#define B_SPI_MEM_SFDPX_VSCCX_4k_EO_MASK 0x0000FF00 ///< 4k Erase Opcode (EO_4k)
+#define B_SPI_MEM_SFDPX_VSCCX_QER (BIT7 | BIT6 | BIT5) ///< Quad Enable Requirements
+#define B_SPI_MEM_SFDPX_VSCCX_WEWS BIT4 ///< Write Enable on Write Status
+#define B_SPI_MEM_SFDPX_VSCCX_WSR BIT3 ///< Write Status Required
+#define B_SPI_MEM_SFDPX_VSCCX_WG_64B BIT2 ///< Write Granularity, 0: 1 Byte; 1: 64 Bytes
+#define R_SPI_MEM_SFDP1_VSCC1 0xC8 ///< Vendor Specific Component Capabilities Register(32 bits)
+#define R_SPI_MEM_PINTX 0xCC ///< Parameter Table Index
+#define N_SPI_MEM_PINTX_SPT 14
+#define V_SPI_MEM_PINTX_SPT_CPT0 0x0 ///< Component 0 Property Parameter Table
+#define V_SPI_MEM_PINTX_SPT_CPT1 0x1 ///< Component 1 Property Parameter Table
+#define N_SPI_MEM_PINTX_HORD 12
+#define V_SPI_MEM_PINTX_HORD_SFDP 0x0 ///< SFDP Header
+#define V_SPI_MEM_PINTX_HORD_PT 0x1 ///< Parameter Table Header
+#define V_SPI_MEM_PINTX_HORD_DATA 0x2 ///< Data
+#define R_SPI_MEM_PTDATA 0xD0 ///< Parameter Table Data
+#define R_SPI_MEM_SBRS 0xD4 ///< SPI Bus Requester Status
+
+//
+// Flash Descriptor Base Address Region (FDBAR) from Flash Region 0
+//
+#define R_SPI_FLASH_FDBAR_FLVALSIG 0x00 ///< Flash Valid Signature
+#define V_SPI_FLASH_FDBAR_FLVALSIG 0x0FF0A55A
+#define R_SPI_FLASH_FDBAR_FLASH_MAP0 0x04
+#define B_SPI_FLASH_FDBAR_FCBA 0x000000FF ///< Flash Component Base Address
+#define B_SPI_FLASH_FDBAR_NC 0x00000300 ///< Number Of Components
+#define N_SPI_FLASH_FDBAR_NC 8 ///< Number Of Components
+#define V_SPI_FLASH_FDBAR_NC_1 0x00000000
+#define V_SPI_FLASH_FDBAR_NC_2 0x00000100
+#define B_SPI_FLASH_FDBAR_FRBA 0x00FF0000 ///< Flash Region Base Address
+#define B_SPI_FLASH_FDBAR_NR 0x07000000 ///< Number Of Regions
+#define R_SPI_FLASH_FDBAR_FLASH_MAP1 0x08
+#define B_SPI_FLASH_FDBAR_FMBA 0x000000FF ///< Flash Master Base Address
+#define B_SPI_FLASH_FDBAR_NM 0x00000700 ///< Number Of Masters
+#define B_SPI_FLASH_FDBAR_FPSBA 0x00FF0000 ///< PCH Strap Base Address, [23:16] represents [11:4]
+#define N_SPI_FLASH_FDBAR_FPSBA 16 ///< PCH Strap base Address bit position
+#define N_SPI_FLASH_FDBAR_FPSBA_REPR 4 ///< PCH Strap base Address bit represents position
+#define B_SPI_FLASH_FDBAR_PCHSL 0xFF000000 ///< PCH Strap Length, [31:24] represents number of Dwords
+#define N_SPI_FLASH_FDBAR_PCHSL 24 ///< PCH Strap Length bit position
+#define R_SPI_FLASH_FDBAR_FLASH_MAP2 0x0C
+#define B_SPI_FLASH_FDBAR_FCPUSBA 0x000000FF ///< CPU Strap Base Address, [7:0] represents [11:4]
+#define N_SPI_FLASH_FDBAR_FCPUSBA 0 ///< CPU Strap Base Address bit position
+#define N_SPI_FLASH_FDBAR_FCPUSBA_REPR 4 ///< CPU Strap Base Address bit represents position
+#define B_SPI_FLASH_FDBAR_CPUSL 0x0000FF00 ///< CPU Strap Length, [15:8] represents number of Dwords
+#define N_SPI_FLASH_FDBAR_CPUSL 8 ///< CPU Strap Length bit position
+//
+// Flash Component Base Address (FCBA) from Flash Region 0
+//
+#define R_SPI_FLASH_FCBA_FLCOMP 0x00 ///< Flash Components Register
+#define B_SPI_FLASH_FLCOMP_RIDS_FREQ (BIT29 | BIT28 | BIT27) ///< Read ID and Read Status Clock Frequency
+#define B_SPI_FLASH_FLCOMP_WE_FREQ (BIT26 | BIT25 | BIT24) ///< Write and Erase Clock Frequency
+#define B_SPI_FLASH_FLCOMP_FRCF_FREQ (BIT23 | BIT22 | BIT21) ///< Fast Read Clock Frequency
+#define B_SPI_FLASH_FLCOMP_FR_SUP BIT20 ///< Fast Read Support.
+#define B_SPI_FLASH_FLCOMP_RC_FREQ (BIT19 | BIT18 | BIT17) ///< Read Clock Frequency.
+#define V_SPI_FLASH_FLCOMP_FREQ_48MHZ 0x02
+#define V_SPI_FLASH_FLCOMP_FREQ_30MHZ 0x04
+#define V_SPI_FLASH_FLCOMP_FREQ_17MHZ 0x06
+#define B_SPI_FLASH_FLCOMP_COMP1_MASK 0xF0 ///< Flash Component 1 Size MASK
+#define N_SPI_FLASH_FLCOMP_COMP1 4 ///< Flash Component 1 Size bit position
+#define B_SPI_FLASH_FLCOMP_COMP0_MASK 0x0F ///< Flash Component 0 Size MASK
+#define V_SPI_FLASH_FLCOMP_COMP_512KB 0x80000
+//
+// Descriptor Upper Map Section from Flash Region 0
+//
+#define R_SPI_FLASH_UMAP1 0xEFC ///< Flash Upper Map 1
+#define B_SPI_FLASH_UMAP1_VTBA 0x000000FF ///< VSCC Table Base Address
+#define B_SPI_FLASH_UMAP1_VTL 0x0000FF00 ///< VSCC Table Length
+
+//
+// SPI Private Configuration Space Registers
+//
+#define R_SPI_PCR_CLK_CTL 0xC004
+#define R_SPI_PCR_PWR_CTL 0xC008
+#define R_SPI_PCR_ESPI_SOFTSTRAPS 0xC210
+#define B_SPI_PCR_ESPI_SLAVE BIT12
+
+//
+// MMP0
+//
+#define R_PCH_SPI_STRP_MMP0 0xC4 ///< MMP0 Soft strap offset
+#define B_PCH_SPI_STRP_MMP0 0x10 ///< MMP0 Soft strap bit
+
+
+#define R_PCH_SPI_STRP_SFDP 0xF0 ///< PCH Soft Strap SFDP
+#define B_PCH_SPI_STRP_SFDP_QIORE BIT3 ///< Quad IO Read Enable
+#define B_PCH_SPI_STRP_SFDP_QORE BIT2 ///< Quad Output Read Enable
+#define B_PCH_SPI_STRP_SFDP_DIORE BIT1 ///< Dual IO Read Enable
+#define B_PCH_SPI_STRP_SFDP_DORE BIT0 ///< Dual Output Read Enable
+
+//
+// Descriptor Record 0
+//
+#define R_PCH_SPI_STRP_DSCR_0 0x00 ///< PCH Soft Strap 0
+#define B_PCH_SPI_STRP_DSCR_0_PTT_SUPP BIT22 ///< PTT Supported
+
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsThermalCnl.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsThermalCnl.h
new file mode 100644
index 0000000000..fb93a62364
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsThermalCnl.h
@@ -0,0 +1,49 @@
+/** @file
+ Register names for PCH Thermal Device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_THERMAL_H_
+#define _PCH_REGS_THERMAL_H_
+
+//
+// Thermal Device Registers (D18:0)
+//
+#define PCI_DEVICE_NUMBER_PCH_THERMAL 18
+#define PCI_FUNCTION_NUMBER_PCH_THERMAL 0
+#define R_THERMAL_CFG_MEM_TBAR 0x10
+#define B_THERMAL_CFG_MEM_TBAR_MASK 0xFFFFF000
+#define R_THERMAL_CFG_MEM_TBARH 0x14
+#endif
diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsTraceHub.h b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsTraceHub.h
new file mode 100644
index 0000000000..21f9839546
--- /dev/null
+++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Include/Register/PchRegsTraceHub.h
@@ -0,0 +1,134 @@
+/** @file
+ Register names for PCH TraceHub device
+
+ Conventions:
+
+ - Register definition format:
+ Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName
+ - Prefix:
+ 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 size
+ Definitions beginning with "N_" are the bit position
+ - [GenerationName]:
+ Three letter acronym of the generation is used
+ Register name without GenerationName applies to all generations.
+ - [ComponentName]:
+ This field indicates the component name that the register belongs to (e.g. PCH, SA etc.)
+ Register name without ComponentName applies to all components.
+ Register that is specific to -H denoted by "_PCH_H_" in component name.
+ Register that is specific to -LP denoted by "_PCH_LP_" in component name.
+ - SubsystemName:
+ This field indicates the subsystem name of the component that the register belongs to
+ (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
+ - RegisterSpace:
+ MEM - MMIO space register of subsystem.
+ IO - IO space register of subsystem.
+ PCR - Private configuration register of subsystem.
+ CFG - PCI configuration space register of subsystem.
+ - RegisterName:
+ Full register name.
+
+ Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef _PCH_REGS_TRACE_HUB_H_
+#define _PCH_REGS_TRACE_HUB_H_
+
+//
+// TraceHub Registers (D31:F7)
+//
+#define PCI_DEVICE_NUMBER_PCH_TRACE_HUB 31
+#define PCI_FUNCTION_NUMBER_PCH_TRACE_HUB 7
+
+#define R_TRACE_HUB_CFG_CSR_MTB_LBAR 0x10
+#define B_TRACE_HUB_CFG_CSR_MTB_RBAL 0xFFF00000
+#define R_TRACE_HUB_CFG_CSR_MTB_UBAR 0x14
+#define B_TRACE_HUB_CFG_CSR_MTB_RBAU 0xFFFFFFFF
+#define R_TRACE_HUB_CFG_SW_LBAR 0x18
+#define R_TRACE_HUB_CFG_SW_UBAR 0x1C
+#define B_TRACE_HUB_CFG_SW_RBAU 0xFFFFFFFF
+#define R_TRACE_HUB_CFG_RTIT_LBAR 0x20
+#define B_TRACE_HUB_CFG_RTIT_RBAL 0xFFFFFF00
+#define R_TRACE_HUB_CFG_RTIT_UBAR 0x24
+#define B_TRACE_HUB_CFG_RTIT_RBAU 0xFFFFFFFF
+#define R_TRACE_HUB_CFG_MSICID 0x40
+#define R_TRACE_HUB_CFG_MSINCP 0x41
+#define R_TRACE_HUB_CFG_MSIMC 0x42
+#define R_TRACE_HUB_CFG_MSILMA 0x44
+#define R_TRACE_HUB_CFG_MSIUMA 0x48
+#define R_TRACE_HUB_CFG_MSIMD 0x4C
+#define B_TRACE_HUB_CFG_FW_RBAU 0xFFFFFFFF
+#define R_TRACE_HUB_CFG_DSC 0x80
+#define B_TRACE_HUB_CFG_BYP BIT0 //< TraceHub Bypass
+#define R_TRACE_HUB_CFG_DSS 0x81
+#define R_TRACE_HUB_CFG_ISTOT 0x84
+#define R_TRACE_HUB_CFG_ICTOT 0x88
+#define R_TRACE_HUB_CFG_IPAD 0x8C
+#define R_TRACE_HUB_CFG_DSD 0x90
+
+//
+// Offsets from CSR_MTB_BAR
+//
+#define R_TRACE_HUB_MEM_MTB_GTHOPT0 0x00
+#define B_TRACE_HUB_MEM_MTB_GTHOPT0_P0FLUSH BIT7
+#define B_TRACE_HUB_MEM_MTB_GTHOPT0_P1FLUSH BIT15
+#define V_TRACE_HUB_MEM_MTB_SWDEST_PTI 0x0A
+#define V_TRACE_HUB_MEM_MTB_SWDEST_MEMEXI 0x08
+#define V_TRACE_HUB_MEM_MTB_SWDEST_DISABLE 0x00
+#define R_TRACE_HUB_MEM_MTB_SWDEST_1 0x0C
+#define B_TRACE_HUB_MEM_MTB_SWDEST_CSE_1 0x0000000F
+#define B_TRACE_HUB_MEM_MTB_SWDEST_CSE_2 0x000000F0
+#define B_TRACE_HUB_MEM_MTB_SWDEST_CSE_3 0x00000F00
+#define B_TRACE_HUB_MEM_MTB_SWDEST_ISH_1 0x0000F000
+#define B_TRACE_HUB_MEM_MTB_SWDEST_ISH_2 0x000F0000
+#define B_TRACE_HUB_MEM_MTB_SWDEST_ISH_3 0x00F00000
+#define B_TRACE_HUB_MEM_MTB_SWDEST_AUDIO 0x0F000000
+#define B_TRACE_HUB_MEM_MTB_SWDEST_PMC 0xF0000000
+#define R_TRACE_HUB_MEM_MTB_SWDEST_2 0x10
+#define B_TRACE_HUB_MEM_MTB_SWDEST_FTH 0x0000000F
+#define R_TRACE_HUB_MEM_MTB_SWDEST_3 0x14
+#define B_TRACE_HUB_MEM_MTB_SWDEST_MAESTRO 0x00000F00
+#define B_TRACE_HUB_MEM_MTB_SWDEST_MIPICAM 0x0F000000
+#define B_TRACE_HUB_MEM_MTB_SWDEST_AET 0xF0000000
+#define R_TRACE_HUB_MEM_MTB_SWDEST_4 0x18
+#define R_TRACE_HUB_MEM_MTB_MSC0CTL 0xA0100
+#define R_TRACE_HUB_MEM_MTB_MSC1CTL 0xA0200
+#define V_TRACE_HUB_MEM_MTB_MSCNMODE_DCI 0x2
+#define V_TRACE_HUB_MEM_MTB_MSCNMODE_DEBUG 0x3
+#define B_TRACE_HUB_MEM_MTB_MSCNLEN (BIT10 | BIT9 | BIT8)
+#define B_TRACE_HUB_MEM_MTB_MSCNMODE (BIT5 | BIT4)
+#define N_TRACE_HUB_MEM_MTB_MSCNMODE 0x4
+#define B_TRACE_HUB_MEM_MTB_MSCN_RD_HDR_OVRD BIT2
+#define B_TRACE_HUB_MEM_MTB_WRAPENN BIT1
+#define B_TRACE_HUB_MEM_MTB_MSCNEN BIT0
+#define R_TRACE_HUB_MEM_MTB_GTHSTAT 0xD4
+#define R_TRACE_HUB_MEM_MTB_SCR2 0xD8
+#define B_TRACE_HUB_MEM_MTB_SCR2_FCD BIT0
+#define B_TRACE_HUB_MEM_MTB_SCR2_FSEOFF2 BIT2
+#define B_TRACE_HUB_MEM_MTB_SCR2_FSEOFF3 BIT3
+#define B_TRACE_HUB_MEM_MTB_SCR2_FSEOFF4 BIT4
+#define B_TRACE_HUB_MEM_MTB_SCR2_FSEOFF5 BIT5
+#define B_TRACE_HUB_MEM_MTB_SCR2_FSEOFF6 BIT6
+#define B_TRACE_HUB_MEM_MTB_SCR2_FSEOFF7 BIT7
+#define R_TRACE_HUB_MEM_MTB_MSC0BAR 0xA0108
+#define R_TRACE_HUB_MEM_MTB_MSC0SIZE 0xA010C
+#define R_TRACE_HUB_MEM_MTB_MSC1BAR 0xA0208
+#define R_TRACE_HUB_MEM_MTB_MSC1SIZE 0xA020C
+#define R_TRACE_HUB_MEM_MTB_STREAMCFG1 0xA1000
+#define R_TRACE_HUB_MEM_MTB_SCR 0xC8
+#define R_TRACE_HUB_MEM_MTB_GTH_FREQ 0xCC
+#define V_TRACE_HUB_MEM_MTB_SCR 0x00130000
+#define R_TRACE_HUB_MEM_CSR_MTB_SCRATCHPAD0 0xE0
+#define R_TRACE_HUB_MEM_CSR_MTB_SCRATCHPAD1 0xE4
+#define R_TRACE_HUB_MEM_CSR_MTB_SCRATCHPAD10 0xE40
+#define R_TRACE_HUB_MEM_MTB_CTPGCS 0x1C14
+#define B_TRACE_HUB_MEM_MTB_CTPEN BIT0
+#define V_TRACE_HUB_MEM_MTB_CHLCNT 0x80
+#define R_TRACE_HUB_MEM_CSR_MTB_TSUCTRL 0x2000
+#define B_TRACE_HUB_MEM_CSR_MTB_TSUCTRL_CTCRESYNC BIT0
+
+#endif
--
2.16.2.windows.1
next prev parent reply other threads:[~2019-08-17 0:51 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-17 0:15 [edk2-platforms][PATCH V1 00/37] Coffee Lake and Whiskey Lake support Kubacki, Michael A
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 01/37] CoffeelakeSiliconPkg: Add package and Include headers Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:08 ` Chiu, Chasel
2019-08-17 1:18 ` Chaganty, Rangasai V
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 02/37] CoffeelakeSiliconPkg/Cpu: Add " Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:08 ` Chiu, Chasel
2019-08-17 6:58 ` Chaganty, Rangasai V
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 03/37] CoffeelakeSiliconPkg/Me: " Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:08 ` Chiu, Chasel
2019-08-17 7:04 ` Chaganty, Rangasai V
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 04/37] CoffeelakeSiliconPkg/Pch: Add include headers Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:08 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 05/37] CoffeelakeSiliconPkg/Pch: Add ConfigBlock headers Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:09 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 06/37] CoffeelakeSiliconPkg/Pch: Add Library include headers Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:09 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 07/37] CoffeelakeSiliconPkg/Pch: Add PPI and Protocol " Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:09 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 08/37] CoffeelakeSiliconPkg/Pch: Add Register " Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone [this message]
2019-08-17 1:09 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 09/37] CoffeelakeSiliconPkg/Pch: Add Private " Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:12 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 10/37] CoffeelakeSiliconPkg/Pch: Add Private/Library " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:09 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 11/37] CoffeelakeSiliconPkg/Pch: Add Private/Protocol " Kubacki, Michael A
2019-08-17 0:51 ` Nate DeSimone
2019-08-17 1:10 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 12/37] CoffeelakeSiliconPkg/SampleCode: Add Include headers Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:12 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 13/37] CoffeelakeSiliconPkg/SystemAgent: " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:12 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 14/37] CoffeelakeSiliconPkg: Add package common library instances Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:12 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 15/37] CoffeelakeSiliconPkg/Cpu: Add " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:15 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 16/37] CoffeelakeSiliconPkg/Me: " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:12 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 17/37] CoffeelakeSiliconPkg/Pch: Add Base " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:13 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 18/37] CoffeelakeSiliconPkg/Pch: Add DXE " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:13 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 19/37] CoffeelakeSiliconPkg/Pch: Add PEI " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:13 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 20/37] CoffeelakeSiliconPkg/Pch: Add SMM " Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:16 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 21/37] CoffeelakeSiliconPkg/Pch: Add Base " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:13 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 22/37] CoffeelakeSiliconPkg/Pch: Add DXE private " Kubacki, Michael A
2019-08-17 0:52 ` Nate DeSimone
2019-08-17 1:13 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 23/37] CoffeelakeSiliconPkg/Pch: Add PEI " Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:14 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 24/37] CoffeelakeSiliconPkg/Pch: Add SMM " Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:14 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 25/37] CoffeelakeSiliconPkg/SystemAgent: Add " Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:14 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 26/37] CoffeelakeSiliconPkg/Pch: Add modules Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:14 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 27/37] CoffeelakeSiliconPkg/Pch: Add PchSmiDispatcher Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:15 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 28/37] CoffeelakeSiliconPkg/SystemAgent: Add modules Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:15 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 29/37] CoffeelakeSiliconPkg: Add package DSC files Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:14 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 30/37] Maintainers.txt: Add CoffeelakeSiliconPkg maintainers Kubacki, Michael A
2019-08-17 0:53 ` Nate DeSimone
2019-08-17 1:15 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 31/37] WhiskeylakeOpenBoardPkg: Add package and headers Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:16 ` Chiu, Chasel
2019-08-19 18:09 ` Sinha, Ankit
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 32/37] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: Add headers Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:16 ` Chiu, Chasel
2019-08-17 0:15 ` [edk2-platforms][PATCH V1 33/37] WhiskeylakeOpenBoardPkg: Add library instances Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:16 ` Chiu, Chasel
2019-08-17 0:16 ` [edk2-platforms][PATCH V1 34/37] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:17 ` Chiu, Chasel
2019-08-17 20:08 ` Chaganty, Rangasai V
2019-08-17 0:16 ` [edk2-platforms][PATCH V1 35/37] WhiskeylakeOpenBoardPkg: Add modules Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:17 ` Chiu, Chasel
2019-08-17 7:50 ` Chaganty, Rangasai V
2019-08-17 0:16 ` [edk2-platforms][PATCH V1 36/37] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: Add DSC and build files Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:16 ` Chiu, Chasel
2019-08-17 20:11 ` Chaganty, Rangasai V
2019-08-17 0:16 ` [edk2-platforms][PATCH V1 37/37] Add WhiskeylakeOpenBoardPkg to global build config and documentation Kubacki, Michael A
2019-08-17 0:54 ` Nate DeSimone
2019-08-17 1:17 ` Chiu, Chasel
2019-08-17 20:00 ` Chaganty, Rangasai V
2019-08-19 18:14 ` [edk2-platforms][PATCH V1 00/37] Coffee Lake and Whiskey Lake support Sinha, Ankit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=02A34F284D1DA44BB705E61F7180EF0AAEE128CE@ORSMSX114.amr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox