summaryrefslogtreecommitdiff
path: root/ReferenceCode/Chipset/LynxPoint/Include/PchRegs/PchRegsLpc.h
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/Chipset/LynxPoint/Include/PchRegs/PchRegsLpc.h')
-rw-r--r--ReferenceCode/Chipset/LynxPoint/Include/PchRegs/PchRegsLpc.h1018
1 files changed, 1018 insertions, 0 deletions
diff --git a/ReferenceCode/Chipset/LynxPoint/Include/PchRegs/PchRegsLpc.h b/ReferenceCode/Chipset/LynxPoint/Include/PchRegs/PchRegsLpc.h
new file mode 100644
index 0000000..c922e27
--- /dev/null
+++ b/ReferenceCode/Chipset/LynxPoint/Include/PchRegs/PchRegsLpc.h
@@ -0,0 +1,1018 @@
+/** @file
+ Register names for PCH LPC device
+
+ Conventions:
+
+ - Prefixes:
+ Definitions beginning with "R_" are registers
+ Definitions beginning with "B_" are bits within registers
+ Definitions beginning with "V_" are meaningful values of bits within the registers
+ 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. e.g., "_PCH_LPT_"
+ - Registers / bits that are different between SKUs are denoted by "_<SKU_name>"
+ at the end of the register/bit names
+ - Registers / bits of new devices introduced in a PCH generation will be just named
+ as "_PCH_" without <generation_name> inserted.
+
+@copyright
+ Copyright (c) 1999 - 2013 Intel Corporation. All rights reserved
+ This software and associated documentation (if any) is furnished
+ under a license and may only be used or copied in accordance
+ with the terms of the license. Except as permitted by such
+ license, no part of this software or documentation may be
+ reproduced, stored in a retrieval system, or transmitted in any
+ form or by any means without the express written consent of
+ Intel Corporation.
+
+ This file contains an 'Intel Peripheral Driver' and uniquely
+ identified as "Intel Reference Module" and is
+ licensed for Intel CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+**/
+#ifndef _PCH_REGS_LPC_H_
+#define _PCH_REGS_LPC_H_
+
+//
+// PCI to LPC Bridge Registers (D31:F0)
+//
+#define PCI_DEVICE_NUMBER_PCH_LPC 31
+#define PCI_FUNCTION_NUMBER_PCH_LPC 0
+
+#define PCH_HPET_BDF_MAX 8
+
+typedef enum {
+ LptHB0 = 0,
+ LptHC0,
+ LptHC1,
+ LptHC2,
+ LptLpB0,
+ LptLpB1,
+ LptLpB2,
+ PchSteppingMax
+} PCH_STEPPING;
+
+#define R_PCH_LPC_VENDOR_ID 0x00
+#define V_PCH_LPC_VENDOR_ID V_PCH_INTEL_VENDOR_ID
+#define R_PCH_LPC_DEVICE_ID 0x02
+
+//
+// LynxPoint Desktop LPC Device IDs
+//
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_SUPER_SKU 0x8C42 ///< LynxPoint Desktop Super SKU
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_0 0x8C44 ///< Intel Z87 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_1 0x8C46 ///< Intel Z85 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_2 0x8C4A ///< Intel H87 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_3 0x8C4C ///< Intel Q85 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_4 0x8C4E ///< Intel Q87 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_5 0x8C50 ///< Intel B85 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_DT_6 0x8C5C ///< Intel H81 Chipset
+
+//
+// LynxPoint Mobile LPC Device IDs
+//
+#define V_PCH_LPTH_LPC_DEVICE_ID_MB_SUPER_SKU 0x8C41 ///< LynxPoint Mobile Super SKU
+#define V_PCH_LPTH_LPC_DEVICE_ID_MB_0 0x8C49 ///< Intel HM86 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_MB_1 0x8C4B ///< Intel HM87 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_MB_2 0x8C4F ///< Intel QM87 Chipset
+
+//
+// Lynxpoint Server/WS LPC Device IDs
+//
+#define V_PCH_LPTH_LPC_DEVICE_ID_SVR_0 0x8C52 ///< Server Essential SKU Intel C222 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_SVR_1 0x8C54 ///< Server Standard SKU Intel C224 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_SVR_2 0x8C56 ///< Server Advanced SKU Intel C226 Chipset
+#define V_PCH_LPTH_LPC_DEVICE_ID_SVR_3 0x8C58 ///< WS SKU
+
+#define V_PCH_LPTLP_LPC_DEVICE_ID_UNFUSE 0x9C40 ///< LynxPoint LP Unfuse
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_SUPER_SKU 0x9C41 ///< LynxPoint LP Mobile Super SKU
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_0 0x9C42 ///< LynxPoint LP Mobile TBD SKU
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_1 0x9C43 ///< LynxPoint LP Mobile Premium SKU
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_2 0x9C44 ///< LynxPoint LP Mobile TBD SKU
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_3 0x9C45 ///< LynxPoint LP Mobile Mainstream SKU
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_4 0x9C46 ///< LynxPoint LP Mobile TBD SKU
+#define V_PCH_LPTLP_LPC_DEVICE_ID_MB_5 0x9C47 ///< LynxPoint LP Mobile Value SKU
+
+#define R_PCH_LPC_COMMAND 0x04
+#define B_PCH_LPC_COMMAND_FBE 0x0200
+#define B_PCH_LPC_COMMAND_SERR_EN 0x0100
+#define B_PCH_LPC_COMMAND_WCC 0x0080
+#define B_PCH_LPC_COMMAND_PER 0x0040
+#define B_PCH_LPC_COMMAND_VPS 0x0020
+#define B_PCH_LPC_COMMAND_PMWE 0x0010
+#define B_PCH_LPC_COMMAND_SCE 0x0008
+#define B_PCH_LPC_COMMAND_BME 0x0004
+#define B_PCH_LPC_COMMAND_MSE 0x0002
+#define B_PCH_LPC_COMMAND_IOSE 0x0001
+#define R_PCH_LPC_DEV_STS 0x06
+#define B_PCH_LPC_DEV_STS_DPE 0x8000
+#define B_PCH_LPC_DEV_STS_SSE 0x4000
+#define B_PCH_LPC_DEV_STS_RMA 0x2000
+#define B_PCH_LPC_DEV_STS_RTA 0x1000
+#define B_PCH_LPC_DEV_STS_STA 0x0800
+#define B_PCH_LPC_DEV_STS_DEVT_STS 0x0600
+#define B_PCH_LPC_DEV_STS_MDPED 0x0100
+#define B_PCH_LPC_DEV_STS_FB2B 0x0080
+#define B_PCH_LPC_DEV_STS_UDF 0x0040
+#define B_PCH_LPC_DEV_STS_66MHZ_CAP 0x0020
+#define R_PCH_LPC_RID 0x08
+#define V_PCH_LPT_LPC_RID_0 0x00
+#define V_PCH_LPT_LPC_RID_1 0x01
+#define V_PCH_LPT_LPC_RID_2 0x02
+#define V_PCH_LPT_LPC_RID_3 0x03
+#define V_PCH_LPT_LPC_RID_4 0x04
+#define V_PCH_LPT_LPC_RID_5 0x05
+#define R_PCH_LPC_PI 0x09
+#define R_PCH_LPC_SCC 0x0A
+#define R_PCH_LPC_BCC 0x0B
+#define R_PCH_LPC_PLT 0x0D
+#define R_PCH_LPC_HEADTYP 0x0E
+#define B_PCH_LPC_HEADTYP_MFD BIT7
+#define B_PCH_LPC_HEADTYP_HT 0x7F
+#define R_PCH_LPC_SS 0x2C
+#define B_PCH_LPC_SS_SSID 0xFFFF0000
+#define B_PCH_LPC_SS_SSVID 0x0000FFFF
+#define R_PCH_LPC_ACPI_BASE 0x40
+#define B_PCH_LPC_ACPI_BASE_BAR 0xFFFC
+#define R_PCH_LPC_ACPI_CNT 0x44
+#define B_PCH_LPC_ACPI_CNT_ACPI_EN 0x80
+#define B_PCH_LPC_ACPI_CNT_SCI_IRG_SEL 0x07
+#define R_PCH_LPC_GPIO_BASE 0x48
+#define B_PCH_LPC_GPIO_BASE_BAR 0xFFFC
+#define R_PCH_LPC_GPIO_CNT 0x4C
+#define B_PCH_LPC_GPIO_CNT_GPIO_EN 0x10
+#define B_PCH_LPC_GPIO_LOCKDOWN_EN 0x01
+#define R_PCH_LPC_VLW_VBDF 0x50
+#define B_PCH_LPC_VLW_VBDF 0xFFFF
+#define R_PCH_LPC_VLW_VCTRL 0x54
+#define B_PCH_LPC_VLW_VCTRL_VCLE BIT15
+#define B_PCH_LPC_VLW_VCTRL_FERRVDMDEN BIT5
+#define B_PCH_LPC_VLW_VCTRL_NMIVMEN BIT4
+#define B_PCH_LPC_VLW_VCTRL_INITVMEN BIT3
+#define B_PCH_LPC_VLW_VCTRL_SMIVMEN BIT2
+#define B_PCH_LPC_VLW_VCTRL_INTRVMEN BIT1
+#define B_PCH_LPC_VLW_VCTRL_A20VMEN BIT0
+#define R_PCH_LPC_PIRQA_ROUT 0x60
+#define R_PCH_LPC_PIRQB_ROUT 0x61
+#define R_PCH_LPC_PIRQC_ROUT 0x62
+#define R_PCH_LPC_PIRQD_ROUT 0x63
+
+//
+// Bit values are the same for R_PCH_LPC_PIRQA_ROUT to R_PCH_LPC_PIRQH_ROUT
+//
+#define B_PCH_LPC_PIRQX_ROUT_IRQEN 0x80
+#define B_PCH_LPC_PIRQX_ROUT 0x0F
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_3 0x03
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_4 0x04
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_5 0x05
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_6 0x06
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_7 0x07
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_9 0x09
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_10 0x0A
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_11 0x0B
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_12 0x0C
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_14 0x0E
+#define V_PCH_LPC_PIRQX_ROUT_IRQ_15 0x0F
+#define R_PCH_LPC_SERIRQ_CNT 0x64
+#define B_PCH_LPC_SERIRQ_CNT_SIRQEN 0x80
+#define B_PCH_LPC_SERIRQ_CNT_SIRQMD 0x40
+#define B_PCH_LPC_SERIRQ_CNT_SIRQSZ 0x3C
+#define N_PCH_LPC_SERIRQ_CNT_SIRQSZ 2
+#define B_PCH_LPC_SERIRQ_CNT_SFPW 0x03
+#define N_PCH_LPC_SERIRQ_CNT_SFPW 0
+#define V_PCH_LPC_SERIRQ_CNT_SFPW_4CLK 0x00
+#define V_PCH_LPC_SERIRQ_CNT_SFPW_6CLK 0x01
+#define V_PCH_LPC_SERIRQ_CNT_SFPW_8CLK 0x02
+#define R_PCH_LPC_PIRQE_ROUT 0x68
+#define R_PCH_LPC_PIRQF_ROUT 0x69
+#define R_PCH_LPC_PIRQG_ROUT 0x6A
+#define R_PCH_LPC_PIRQH_ROUT 0x6B
+#define R_PCH_LPC_IOXAPIC 0x6C
+#define B_PCH_LPC_IOXAPIC_BUS 0xFF00
+#define B_PCH_LPC_IOXAPIC_DEVICE 0x00F8
+#define B_PCH_LPC_IOXAPIC_FUNC 0x0007
+#define R_PCH_LPC_HPET0 0x70
+#define B_PCH_LPC_HPET0_BUS 0xFF00
+#define B_PCH_LPC_HPET0_DEVICE 0x00F8
+#define B_PCH_LPC_HPET0_FUNC 0x0007
+#define R_PCH_LPC_HPET1 0x72
+#define B_PCH_LPC_HPET1_BUS 0xFF00
+#define B_PCH_LPC_HPET1_DEVICE 0x00F8
+#define B_PCH_LPC_HPET1_FUNC 0x0007
+#define R_PCH_LPC_HPET2 0x74
+#define B_PCH_LPC_HPET2_BUS 0xFF00
+#define B_PCH_LPC_HPET2_DEVICE 0x00F8
+#define B_PCH_LPC_HPET2_FUNC 0x0007
+#define R_PCH_LPC_HPET3 0x76
+#define B_PCH_LPC_HPET3_BUS 0xFF00
+#define B_PCH_LPC_HPET3_DEVICE 0x00F8
+#define B_PCH_LPC_HPET3_FUNC 0x0007
+#define R_PCH_LPC_HPET4 0x78
+#define B_PCH_LPC_HPET4_BUS 0xFF00
+#define B_PCH_LPC_HPET4_DEVICE 0x00F8
+#define B_PCH_LPC_HPET4_FUNC 0x0007
+#define R_PCH_LPC_HPET5 0x7A
+#define B_PCH_LPC_HPET5_BUS 0xFF00
+#define B_PCH_LPC_HPET5_DEVICE 0x00F8
+#define B_PCH_LPC_HPET5_FUNC 0x0007
+#define R_PCH_LPC_HPET6 0x7C
+#define B_PCH_LPC_HPET6_BUS 0xFF00
+#define B_PCH_LPC_HPET6_DEVICE 0x00F8
+#define B_PCH_LPC_HPET6_FUNC 0x0007
+#define R_PCH_LPC_HPET7 0x7E
+#define B_PCH_LPC_HPET7_BUS 0xFF00
+#define B_PCH_LPC_HPET7_DEVICE 0x00F8
+#define B_PCH_LPC_HPET7_FUNC 0x0007
+#define R_PCH_LPC_IO_DEC 0x80
+#define B_PCH_LPC_FDD_DEC 0x1000
+#define B_PCH_LPC_LPT_DEC 0x0300
+#define B_PCH_LPC_COMB_DEC 0x0070
+#define V_PCH_LPC_COMB_3F8 0x00
+#define V_PCH_LPC_COMB_2F8 0x10
+#define V_PCH_LPC_COMB_220 0x20
+#define V_PCH_LPC_COMB_228 0x30
+#define V_PCH_LPC_COMB_238 0x40
+#define V_PCH_LPC_COMB_2E8 0x50
+#define V_PCH_LPC_COMB_338 0x60
+#define V_PCH_LPC_COMB_3E8 0x70
+#define B_PCH_LPC_COMA_DEC 0x0007
+#define V_PCH_LPC_COMA_3F8 0x00
+#define V_PCH_LPC_COMA_2F8 0x01
+#define V_PCH_LPC_COMA_220 0x02
+#define V_PCH_LPC_COMA_228 0x03
+#define V_PCH_LPC_COMA_238 0x04
+#define V_PCH_LPC_COMA_2E8 0x05
+#define V_PCH_LPC_COMA_338 0x06
+#define V_PCH_LPC_COMA_3E8 0x07
+#define R_PCH_LPC_ENABLES 0x82
+#define B_PCH_LPC_ENABLES_CNF2_EN 0x2000
+#define B_PCH_LPC_ENABLES_CNF1_EN 0x1000
+#define B_PCH_LPC_ENABLES_MC_EN 0x0800
+#define B_PCH_LPC_ENABLES_KBC_EN 0x0400
+#define B_PCH_LPC_ENABLES_GAMEH_EN 0x0200
+#define B_PCH_LPC_ENABLES_GAMEL_EN 0x0100
+#define B_PCH_LPC_ENABLES_FDD_EN 0x0008
+#define B_PCH_LPC_ENABLES_LPT_EN 0x0004
+#define B_PCH_LPC_ENABLES_COMB_EN 0x0002
+#define B_PCH_LPC_ENABLES_COMA_EN 0x0001
+#define R_PCH_LPC_GEN1_DEC 0x84
+#define B_PCH_LPC_GEN1_DEC_IODRA 0x00FC0000
+#define B_PCH_LPC_GEN1_DEC_IOBAR 0x0000FFFC
+#define B_PCH_LPC_GEN1_DEC_EN 0x00000001
+#define R_PCH_LPC_GEN2_DEC 0x88
+#define R_PCH_LPC_GEN3_DEC 0x8C
+#define R_PCH_LPC_GEN4_DEC 0x90
+#define R_PCH_LPC_ULKMC 0x94
+#define B_PCH_LPC_ULKMC_SMIBYENDPS BIT15
+#define B_PCH_LPC_ULKMC_TRAPBY64W BIT11
+#define B_PCH_LPC_ULKMC_TRAPBY64R BIT10
+#define B_PCH_LPC_ULKMC_TRAPBY60W BIT9
+#define B_PCH_LPC_ULKMC_TRAPBY60R BIT8
+#define B_PCH_LPC_ULKMC_SMIATENDPS BIT7
+#define B_PCH_LPC_ULKMC_PSTATE BIT6
+#define B_PCH_LPC_ULKMC_A20PASSEN BIT5
+#define B_PCH_LPC_ULKMC_USBSMIEN BIT4
+#define B_PCH_LPC_ULKMC_64WEN BIT3
+#define B_PCH_LPC_ULKMC_64REN BIT2
+#define B_PCH_LPC_ULKMC_60WEN BIT1
+#define B_PCH_LPC_ULKMC_60REN BIT0
+#define R_PCH_LPC_LGMR 0x98
+#define B_PCH_LPC_LGMR_MA 0xFFFF0000
+#define B_PCH_LPC_LGMR_LMRD_EN BIT0
+
+#define R_PCH_LPC_FWH_BIOS_SEL 0xD0
+#define B_PCH_LPC_FWH_BIOS_SEL_F8 0xF0000000
+#define B_PCH_LPC_FWH_BIOS_SEL_F0 0x0F000000
+#define B_PCH_LPC_FWH_BIOS_SEL_E8 0x00F00000
+#define B_PCH_LPC_FWH_BIOS_SEL_E0 0x000F0000
+#define B_PCH_LPC_FWH_BIOS_SEL_D8 0x0000F000
+#define B_PCH_LPC_FWH_BIOS_SEL_D0 0x00000F00
+#define B_PCH_LPC_FWH_BIOS_SEL_C8 0x000000F0
+#define B_PCH_LPC_FWH_BIOS_SEL_C0 0x0000000F
+#define R_PCH_LPC_FWH_BIOS_SEL2 0xD4
+#define B_PCH_LPC_FWH_BIOS_SEL2_70 0xF000
+#define B_PCH_LPC_FWH_BIOS_SEL2_60 0x0F00
+#define B_PCH_LPC_FWH_BIOS_SEL2_50 0x00F0
+#define B_PCH_LPC_FWH_BIOS_SEL2_40 0x000F
+#define R_PCH_LPC_FWH_BIOS_DEC 0xD8
+#define B_PCH_LPC_FWH_BIOS_DEC_F8 0x8000
+#define B_PCH_LPC_FWH_BIOS_DEC_F0 0x4000
+#define B_PCH_LPC_FWH_BIOS_DEC_E8 0x2000
+#define B_PCH_LPC_FWH_BIOS_DEC_E0 0x1000
+#define B_PCH_LPC_FWH_BIOS_DEC_D8 0x0800
+#define B_PCH_LPC_FWH_BIOS_DEC_D0 0x0400
+#define B_PCH_LPC_FWH_BIOS_DEC_C8 0x0200
+#define B_PCH_LPC_FWH_BIOS_DEC_C0 0x0100
+#define B_PCH_LPC_FWH_BIOS_LEG_F 0x0080
+#define B_PCH_LPC_FWH_BIOS_LEG_E 0x0040
+#define B_PCH_LPC_FWH_BIOS_DEC_70 0x0008
+#define B_PCH_LPC_FWH_BIOS_DEC_60 0x0004
+#define B_PCH_LPC_FWH_BIOS_DEC_50 0x0002
+#define B_PCH_LPC_FWH_BIOS_DEC_40 0x0001
+#define R_PCH_LPC_BIOS_CNTL 0xDC
+#define S_PCH_LPC_BIOS_CNTL 1
+#define B_PCH_LPC_BIOS_CNTL_SMM_BWP 0x20 ///< SMM BIOS write protect disable
+#define B_PCH_LPC_BIOS_CNTL_TSS 0x10
+#define V_PCH_LPC_BIOS_CNTL_SRC 0x0C
+#define V_PCH_SRC_PREF_EN_CACHE_EN 0x08
+#define V_PCH_SRC_PREF_DIS_CACHE_DIS 0x04
+#define V_PCH_SRC_PREF_DIS_CACHE_EN 0x00
+#define B_PCH_LPC_BIOS_CNTL_BLE 0x02
+#define B_PCH_LPC_BIOS_CNTL_BIOSWE 0x01
+#define N_PCH_LPC_BIOS_CNTL_BLE 1
+#define N_PCH_LPC_BIOS_CNTL_BIOSWE 0
+#define R_PCH_LPC_FDCAP 0xE0
+#define B_PCH_LPC_FDCAP_NEXT 0xFF00
+#define B_PCH_LPC_FDCAP_CID 0x00FF
+#define R_PCH_LPC_FDLEN 0xE2
+#define B_PCH_LPC_FDLEN 0xFF
+#define R_PCH_LPC_FDVER 0xE3
+#define B_PCH_LPC_FDVER_VSCID 0xF0
+#define B_PCH_LPC_FDVER_CV 0x0F
+#define R_PCH_LPC_FVECIDX 0xE4
+#define B_PCH_LPC_FVECIDX_IDX 0x0000003C
+#define R_PCH_LPC_FVECD 0xE8
+#define R_PCH_LPC_FVEC0 0x00
+#define B_PCH_LPC_FVEC0_USB_PORT_CAP 0x00000C00
+#define V_PCH_LPC_FVEC0_USB_14_PORT 0x00000000
+#define V_PCH_LPC_FVEC0_USB_12_PORT 0x00000400
+#define V_PCH_LPC_FVEC0_USB_10_PORT 0x00000800
+#define B_PCH_LPC_FVEC0_SATA_RAID_CAP 0x00000080
+#define B_PCH_LPC_FVEC0_SATA_PORT23_CAP 0x00000040
+#define B_PCH_LPC_FVEC0_SATA_PORT1_6GB_CAP 0x00000008
+#define B_PCH_LPC_FVEC0_SATA_PORT0_6GB_CAP 0x00000004
+#define B_PCH_LPC_FVEC0_PCI_CAP 0x00000002
+#define R_PCH_LPC_FVEC1 0x01
+#define B_PCH_LPC_FVEC1_USB_R_CAP 0x00400000
+#define R_PCH_LPC_FVEC2 0x02
+#define B_PCH_LPC_FVEC2_IATT_CAP 0x00400000 ///< Intel Anti-Theft Technology Capability
+#define V_PCH_LPC_FVEC2_PCIE_PORT78_CAP 0x00200000
+#define V_PCH_LPC_FVEC2_PCH_IG_SUPPORT_CAP 0x00020000 ///< PCH Integrated Graphics Support Capability
+#define R_PCH_LPC_FVEC3 0x03
+#define B_PCH_LPC_FVEC3_DCMI_CAP 0x00002000 ///< Data Center Manageability Interface (DCMI) Capability
+#define B_PCH_LPC_FVEC3_NM_CAP 0x00001000 ///< Node Manager Capability
+#define R_PCH_LPC_RCBA 0xF0
+#define B_PCH_LPC_RCBA_BAR 0xFFFFC000
+#define B_PCH_LPC_RCBA_EN 0x00000001
+
+#define R_PCH_LPC_GEN_PMCON_1 0xA0
+#define B_PCH_LPC_GEN_PMCON_PER_SMI_SEL 0x0003
+#define V_PCH_LPC_GEN_PMCON_PER_SMI_64S 0x0000
+#define V_PCH_LPC_GEN_PMCON_PER_SMI_32S 0x0001
+#define V_PCH_LPC_GEN_PMCON_PER_SMI_16S 0x0002
+#define V_PCH_LPC_GEN_PMCON_PER_SMI_8S 0x0003
+#define B_PCH_LPC_GEN_PMCON_CLKRUN_EN 0x0004
+#define B_PCH_LPC_GEN_PMCON_PSEUDO_CLKRUN_EN 0x0008
+#define B_PCH_LPC_GEN_PMCON_SMI_LOCK 0x0010
+#define B_PCH_LPC_GEN_PMCON_PWRBTN_LVL 0x0200
+#define B_PCH_LPC_GEN_PMCON_BIOS_PCI_EXP_EN 0x0400
+#define B_PCH_LPC_GEN_PMCON_REQ_CLKRUN_BBCLKGATE 0x0800
+#define B_PCH_LPC_GEN_PMCON_ALLOW_SPXB_CG_INC0 0x1000
+#define B_PCH_LPC_GEN_PMCON_ALLOW_PLL_SD_INC0 0x2000
+#define R_PCH_LPC_GEN_PMCON_2 0xA2
+#define B_PCH_LPC_GEN_PMCON_PWROK_FLR 0x01
+#define B_PCH_LPC_GEN_PMCON_SYSPWR_FLR 0x02
+#define B_PCH_LPC_GEN_PMCON_MIN_SLP_S4 0x04
+#define B_PCH_LPC_GEN_PMCON_CTS 0x08
+#define B_PCH_LPC_GEN_PMCON_SRS 0x10
+#define B_PCH_LPC_GEN_PMCON_MEM_SR 0x20
+#define B_PCH_LPC_GEN_PMCON_DRAM_INIT 0x80
+#define B_PCH_LPC_GEN_PMCON_SX_PP_EN 0x0800
+#define B_PCH_LPC_GEN_PMCON_AG3_PP_EN 0x1000
+#define B_PCH_LPC_GEN_PMCON_DSX_PP_DIS 0x2000
+#define B_PCH_LPC_GEN_PMCON_DC_PP_DIS 0x4000
+#define R_PCH_LPC_GEN_PMCON_3 0xA4
+#define B_PCH_LPC_GEN_PMCON_PME_B0_S5_DIS BIT15
+#define B_PCH_LPC_GEN_PMCON_SUS_PWR_FLR BIT14
+#define B_PCH_LPC_GEN_PMCON_WOL_ENABLE_OVERRIDE BIT13
+#define B_PCH_LPC_GEN_PMCON_DISABLE_SX_STRETCH BIT12
+#define B_PCH_LPC_GEN_PMCON_SLP_S3_MAW 0xC00
+#define V_PCH_LPC_GEN_PMCON_SLP_S3_MAW_60US 0x000
+#define V_PCH_LPC_GEN_PMCON_SLP_S3_MAW_1MS 0x400
+#define V_PCH_LPC_GEN_PMCON_SLP_S3_MAW_50MS 0x800
+#define V_PCH_LPC_GEN_PMCON_SLP_S3_MAW_2S 0xC00
+#define B_PCH_LPC_GEN_PMCON_GEN_RST_STS BIT9
+#define B_PCH_LPC_GEN_PMCON_SWSMI_RTSL 0xC0
+#define V_PCH_LPC_GEN_PMCON_SWSMI_RTSL_64MS 0xC0
+#define V_PCH_LPC_GEN_PMCON_SWSMI_RTSL_32MS 0x80
+#define V_PCH_LPC_GEN_PMCON_SWSMI_RTSL_16MS 0x40
+#define V_PCH_LPC_GEN_PMCON_SWSMI_RTSL_1_5MS 0x00
+#define B_PCH_LPC_GEN_PMCON_SLP_S4_MAW 0x30
+#define V_PCH_LPC_GEN_PMCON_SLP_S4_MAW_1S 0x30
+#define V_PCH_LPC_GEN_PMCON_SLP_S4_MAW_2S 0x20
+#define V_PCH_LPC_GEN_PMCON_SLP_S4_MAW_3S 0x10
+#define V_PCH_LPC_GEN_PMCON_SLP_S4_MAW_4S 0x00
+#define B_PCH_LPC_GEN_PMCON_SLP_S4_ASE 0x08
+#define B_PCH_LPC_GEN_PMCON_RTC_PWR_STS 0x04
+#define B_PCH_LPC_GEN_PMCON_PWR_FLR 0x02
+#define B_PCH_LPC_GEN_PMCON_AFTERG3_EN 0x01
+#define R_PCH_LPC_GEN_PMCON_LOCK 0xA6
+#define B_PCH_LPC_GEN_PMCON_LOCK_S4_STRET_LD BIT2 ///< Lock down SLP_S3/SLP_S4 Minimum Assertion width
+#define B_PCH_LPC_GEN_PMCON_LOCK_ABASE_LK BIT1 ///< Lock ACPI BASE at 0x40, only cleared by reset when set
+#define R_PCH_LPC_CIR4 0xA9 ///< Chipset Initialization Register 4
+#define R_PCH_LPC_BM_BREAK_EN2 0xAA
+#define B_PCH_LPC_BM_BREAK_EN2_SATA3 BIT0
+#define R_PCH_LPC_BM_BREAK_EN 0xAB
+#define B_PCH_LPC_BM_BREAK_EN_STORAGE BIT7
+#define B_PCH_LPC_BM_BREAK_EN_PCIE BIT6
+#define B_PCH_LPC_BM_BREAK_EN_EHCI BIT2
+#define B_PCH_LPC_BM_BREAK_EN_HDA BIT0
+#define R_PCH_LPC_PMIR 0xAC
+#define B_PCH_LPC_PMIR_CF9LOCK BIT31 ///< CF9h Lockdown
+#define B_PCH_LPC_PMIR_CF9GR BIT20 ///< CF9h Global Reset
+#define B_PCH_LPC_PMIR_SKIP_HOST_RST_HS BIT19
+
+#define R_PCH_LPC_GPI_ROUT 0xB8
+#define B_PCH_LPC_GPI_ROUT_0 (BIT1 | BIT0)
+#define B_PCH_LPC_GPI_ROUT_1 (BIT3 | BIT2)
+#define B_PCH_LPC_GPI_ROUT_2 (BIT5 | BIT4)
+#define B_PCH_LPC_GPI_ROUT_3 (BIT7 | BIT6)
+#define B_PCH_LPC_GPI_ROUT_4 (BIT9 | BIT8)
+#define B_PCH_LPC_GPI_ROUT_5 (BIT11 | BIT10)
+#define B_PCH_LPC_GPI_ROUT_6 (BIT13 | BIT12)
+#define B_PCH_LPC_GPI_ROUT_7 (BIT15 | BIT14)
+#define B_PCH_LPC_GPI_ROUT_8 (BIT17 | BIT16)
+#define B_PCH_LPC_GPI_ROUT_9 (BIT19 | BIT18)
+#define B_PCH_LPC_GPI_ROUT_10 (BIT21 | BIT20)
+#define B_PCH_LPC_GPI_ROUT_11 (BIT23 | BIT22)
+#define B_PCH_LPC_GPI_ROUT_12 (BIT25 | BIT24)
+#define B_PCH_LPC_GPI_ROUT_13 (BIT27 | BIT26)
+#define B_PCH_LPC_GPI_ROUT_14 (BIT29 | BIT28)
+#define B_PCH_LPC_GPI_ROUT_15 (BIT31 | BIT30)
+
+#define R_PCH_LPC_GPI_ROUT2 0xBC
+#define B_PCH_LPC_GPI_ROUT2_17 (BIT1 | BIT0)
+#define B_PCH_LPC_GPI_ROUT2_19 (BIT3 | BIT2)
+#define B_PCH_LPC_GPI_ROUT2_21 (BIT5 | BIT4)
+#define B_PCH_LPC_GPI_ROUT2_22 (BIT7 | BIT6)
+#define B_PCH_LPC_GPI_ROUT2_43 (BIT9 | BIT8)
+#define B_PCH_LPC_GPI_ROUT2_56 (BIT11 | BIT10)
+#define B_PCH_LPC_GPI_ROUT2_57 (BIT13 | BIT12)
+#define B_PCH_LPC_GPI_ROUT2_60 (BIT15 | BIT14)
+
+#define R_PCH_LP_LPC_GPI_ROUT0 0x30
+#define R_PCH_LP_LPC_GPI_ROUT1 0x34
+#define R_PCH_LP_LPC_GPI_ROUT2 0x38
+
+#define R_PCH_LPC_MDAP 0xC0
+#define B_PCH_LPC_MDAP_POLICY_EN BIT31
+#define B_PCH_LPC_MDAP_PDMA_EN BIT30
+#define B_PCH_LPC_MDAP_VALUE 0x0001FFFF
+//
+// APM Registers
+//
+#define R_PCH_APM_CNT 0xB2
+#define R_PCH_APM_STS 0xB3
+
+//
+// ACPI and legacy I/O register offsets from PMBASE
+//
+#define R_PCH_ACPI_PM1_STS 0x00
+#define S_PCH_ACPI_PM1_STS 2
+#define B_PCH_ACPI_PM1_STS_WAK 0x8000
+#define B_PCH_ACPI_PM1_STS_PRBTNOR 0x0800
+#define B_PCH_ACPI_PM1_STS_RTC 0x0400
+#define B_PCH_ACPI_PM1_STS_PWRBTN 0x0100
+#define B_PCH_ACPI_PM1_STS_GBL 0x0020
+#define B_PCH_ACPI_PM1_STS_BM 0x0010
+#define B_PCH_ACPI_PM1_STS_TMROF 0x0001
+#define N_PCH_ACPI_PM1_STS_WAK 15
+#define N_PCH_ACPI_PM1_STS_PRBTNOR 11
+#define N_PCH_ACPI_PM1_STS_RTC 10
+#define N_PCH_ACPI_PM1_STS_PWRBTN 8
+#define N_PCH_ACPI_PM1_STS_GBL 5
+#define N_PCH_ACPI_PM1_STS_BM 4
+#define N_PCH_ACPI_PM1_STS_TMROF 0
+
+#define R_PCH_ACPI_PM1_EN 0x02
+#define S_PCH_ACPI_PM1_EN 2
+#define B_PCH_ACPI_PM1_EN_RTC 0x0400
+#define B_PCH_ACPI_PM1_EN_PWRBTN 0x0100
+#define B_PCH_ACPI_PM1_EN_GBL 0x0020
+#define B_PCH_ACPI_PM1_EN_TMROF 0X0001
+#define N_PCH_ACPI_PM1_EN_RTC 10
+#define N_PCH_ACPI_PM1_EN_PWRBTN 8
+#define N_PCH_ACPI_PM1_EN_GBL 5
+#define N_PCH_ACPI_PM1_EN_TMROF 0
+
+#define R_PCH_ACPI_PM1_CNT 0x04
+#define S_PCH_ACPI_PM1_CNT 4
+#define B_PCH_ACPI_PM1_CNT_SLP_EN 0x00002000
+#define B_PCH_ACPI_PM1_CNT_SLP_TYP 0x00001C00
+#define V_PCH_ACPI_PM1_CNT_S0 0x00000000
+#define V_PCH_ACPI_PM1_CNT_S1 0x00000400
+#define V_PCH_ACPI_PM1_CNT_S3 0x00001400
+#define V_PCH_ACPI_PM1_CNT_S4 0x00001800
+#define V_PCH_ACPI_PM1_CNT_S5 0x00001C00
+#define B_PCH_ACPI_PM1_CNT_GBL_RLS 0x00000004
+#define B_PCH_ACPI_PM1_CNT_BM_RLD 0x00000002
+#define B_PCH_ACPI_PM1_CNT_SCI_EN 0x00000001
+
+#define R_PCH_ACPI_PM1_TMR 0x08
+#define V_PCH_ACPI_TMR_FREQUENCY 3579545
+#define B_PCH_ACPI_PM1_TMR_VAL 0xFFFFFF
+#define V_PCH_ACPI_PM1_TMR_MAX_VAL 0x1000000 ///< The timer is 24 bit overflow
+
+#define R_PCH_ACPI_GPE0_STS_127_96 0x8C
+#define S_PCH_ACPI_GPE0_STS_127_96 4
+#define B_PCH_ACPI_GPE0_STS_127_96_WADT BIT18
+#define B_PCH_ACPI_GPE0_STS_127_96_GP27 BIT16
+#define B_PCH_ACPI_GPE0_STS_127_96_PME_B0 BIT13
+#define B_PCH_ACPI_GPE0_STS_127_96_ME_SCI BIT12
+#define B_PCH_ACPI_GPE0_STS_127_96_PME BIT11
+#define B_PCH_ACPI_GPE0_STS_127_96_BATLOW BIT10
+#define B_PCH_ACPI_GPE0_STS_127_96_PCI_EXP BIT9
+#define B_PCH_ACPI_GPE0_STS_127_96_RI BIT8
+#define B_PCH_ACPI_GPE0_STS_127_96_SMB_WAK BIT7
+#define B_PCH_ACPI_GPE0_STS_127_96_TC0SCI BIT6
+#define B_PCH_ACPI_GPE0_STS_127_96_SWGPE BIT2
+#define B_PCH_ACPI_GPE0_STS_127_96_HOT_PLUG BIT1
+#define N_PCH_ACPI_GPE0_STS_127_96_PME_B0 13
+#define N_PCH_ACPI_GPE0_STS_127_96_PME 11
+#define N_PCH_ACPI_GPE0_STS_127_96_BATLOW 10
+#define N_PCH_ACPI_GPE0_STS_127_96_PCI_EXP 9
+#define N_PCH_ACPI_GPE0_STS_127_96_RI 8
+#define N_PCH_ACPI_GPE0_STS_127_96_SMB_WAK 7
+#define N_PCH_ACPI_GPE0_STS_127_96_TC0SCI 6
+#define N_PCH_ACPI_GPE0_STS_127_96_SWGPE 2
+#define N_PCH_ACPI_GPE0_STS_127_96_HOT_PLUG 1
+
+#define R_PCH_ACPI_GPE0_EN_127_96 0x9C
+#define S_PCH_ACPI_GPE0_EN_127_96 4
+#define B_PCH_ACPI_GPE0_EN_127_96_WADT BIT18
+#define B_PCH_ACPI_GPE0_EN_127_96_GP27 BIT16
+#define B_PCH_ACPI_GPE0_EN_127_96_PME_B0 BIT13
+#define B_PCH_ACPI_GPE0_EN_127_96_ME_SCI BIT12
+#define B_PCH_ACPI_GPE0_EN_127_96_PME BIT11
+#define B_PCH_ACPI_GPE0_EN_127_96_BATLOW BIT10
+#define B_PCH_ACPI_GPE0_EN_127_96_PCI_EXP BIT9
+#define B_PCH_ACPI_GPE0_EN_127_96_RI BIT8
+#define B_PCH_ACPI_GPE0_EN_127_96_TC0SCI BIT6
+#define B_PCH_ACPI_GPE0_EN_127_96_SWGPE BIT2
+#define B_PCH_ACPI_GPE0_EN_127_96_HOT_PLUG BIT1
+#define N_PCH_ACPI_GPE0_EN_127_96_PME_B0 13
+#define N_PCH_ACPI_GPE0_EN_127_96_USB3 12
+#define N_PCH_ACPI_GPE0_EN_127_96_PME 11
+#define N_PCH_ACPI_GPE0_EN_127_96_BATLOW 10
+#define N_PCH_ACPI_GPE0_EN_127_96_PCI_EXP 9
+#define N_PCH_ACPI_GPE0_EN_127_96_RI 8
+#define N_PCH_ACPI_GPE0_EN_127_96_TC0SCI 6
+#define N_PCH_ACPI_GPE0_EN_127_96_SWGPE 2
+#define N_PCH_ACPI_GPE0_EN_127_96_HOT_PLUG 1
+
+#define R_PCH_ACPI_GPE0a_STS 0x20
+#define S_PCH_ACPI_GPE0a_STS 4
+#define B_PCH_ACPI_GPE0a_STS_GPInn 0xFFFF0000
+#define B_PCH_ACPI_GPE0a_STS_PME_B0 BIT13
+#define B_PCH_ACPI_GPE0a_STS_PME BIT11
+#define B_PCH_ACPI_GPE0a_STS_BATLOW BIT10
+#define B_PCH_ACPI_GPE0a_STS_PCI_EXP BIT9
+#define B_PCH_ACPI_GPE0a_STS_RI BIT8
+#define B_PCH_ACPI_GPE0a_STS_SMB_WAK BIT7
+#define B_PCH_ACPI_GPE0a_STS_TC0SCI BIT6
+#define B_PCH_ACPI_GPE0a_STS_SWGPE BIT2
+#define B_PCH_ACPI_GPE0a_STS_HOT_PLUG BIT1
+#define N_PCH_ACPI_GPE0a_STS_PME_B0 13
+#define N_PCH_ACPI_GPE0a_STS_PME 11
+#define N_PCH_ACPI_GPE0a_STS_BATLOW 10
+#define N_PCH_ACPI_GPE0a_STS_PCI_EXP 9
+#define N_PCH_ACPI_GPE0a_STS_RI 8
+#define N_PCH_ACPI_GPE0a_STS_SMB_WAK 7
+#define N_PCH_ACPI_GPE0a_STS_TC0SCI 6
+#define N_PCH_ACPI_GPE0a_STS_SWGPE 2
+#define N_PCH_ACPI_GPE0a_STS_HOT_PLUG 1
+
+#define R_PCH_ACPI_GPE0b_STS 0x24
+#define S_PCH_ACPI_GPE0b_STS 4
+#define B_PCH_ACPI_GPE0b_STS_GP60 BIT31
+#define B_PCH_ACPI_GPE0b_STS_GP57 BIT30
+#define B_PCH_ACPI_GPE0b_STS_GP56 BIT29
+#define B_PCH_ACPI_GPE0b_STS_GP43 BIT28
+#define B_PCH_ACPI_GPE0b_STS_GP22 BIT27
+#define B_PCH_ACPI_GPE0b_STS_GP21 BIT26
+#define B_PCH_ACPI_GPE0b_STS_GP19 BIT25
+#define B_PCH_ACPI_GPE0b_STS_GP17 BIT24
+#define B_PCH_ACPI_GPE0b_STS_WADT BIT6
+#define B_PCH_ACPI_GPE0b_STS_ME_SCI BIT4
+#define B_PCH_ACPI_GPE0b_STS_GP27 BIT3
+
+#define R_PCH_ACPI_GPE0a_EN 0x28
+#define S_PCH_ACPI_GPE0a_EN 4
+#define B_PCH_ACPI_GPE0a_EN_GPInn 0xFFFF0000
+#define B_PCH_ACPI_GPE0a_EN_PME_B0 BIT13
+#define B_PCH_ACPI_GPE0a_EN_PME BIT11
+#define B_PCH_ACPI_GPE0a_EN_BATLOW BIT10
+#define B_PCH_ACPI_GPE0a_EN_PCI_EXP BIT9
+#define B_PCH_ACPI_GPE0a_EN_RI BIT8
+#define B_PCH_ACPI_GPE0a_EN_TC0SCI BIT6
+#define B_PCH_ACPI_GPE0a_EN_SWGPE BIT2
+#define B_PCH_ACPI_GPE0a_EN_HOT_PLUG BIT1
+#define N_PCH_ACPI_GPE0a_EN_USB4 14
+#define N_PCH_ACPI_GPE0a_EN_PME_B0 13
+#define N_PCH_ACPI_GPE0a_EN_USB3 12
+#define N_PCH_ACPI_GPE0a_EN_PME 11
+#define N_PCH_ACPI_GPE0a_EN_BATLOW 10
+#define N_PCH_ACPI_GPE0a_EN_PCI_EXP 9
+#define N_PCH_ACPI_GPE0a_EN_RI 8
+#define N_PCH_ACPI_GPE0a_EN_TC0SCI 6
+#define N_PCH_ACPI_GPE0a_EN_SWGPE 2
+#define N_PCH_ACPI_GPE0a_EN_HOT_PLUG 1
+
+#define R_PCH_ACPI_GPE0b_EN 0x2C
+#define S_PCH_ACPI_GPE0b_EN 4
+#define B_PCH_ACPI_GPE0b_EN_GP60 BIT31
+#define B_PCH_ACPI_GPE0b_EN_GP57 BIT30
+#define B_PCH_ACPI_GPE0b_EN_GP56 BIT29
+#define B_PCH_ACPI_GPE0b_EN_GP43 BIT28
+#define B_PCH_ACPI_GPE0b_EN_GP22 BIT27
+#define B_PCH_ACPI_GPE0b_EN_GP21 BIT26
+#define B_PCH_ACPI_GPE0b_EN_GP19 BIT25
+#define B_PCH_ACPI_GPE0b_EN_GP17 BIT24
+#define B_PCH_ACPI_GPE0b_EN_WADT BIT6
+#define B_PCH_ACPI_GPE0b_EN_ME_SCI BIT4
+#define B_PCH_ACPI_GPE0b_EN_GP27 BIT3
+
+#define R_PCH_SMI_EN 0x30
+#define S_PCH_SMI_EN 4
+#define B_PCH_SMI_EN_LEGACY_USB3 BIT31
+#define B_PCH_SMI_EN_GPIO_UNLOCK_SMI BIT27
+#define B_PCH_SMI_EN_INTEL_USB2 BIT18
+#define B_PCH_SMI_EN_LEGACY_USB2 BIT17
+#define B_PCH_SMI_EN_PERIODIC BIT14
+#define B_PCH_SMI_EN_TCO BIT13
+#define B_PCH_SMI_EN_MCSMI BIT11
+#define B_PCH_SMI_EN_BIOS_RLS BIT7
+#define B_PCH_SMI_EN_SWSMI_TMR BIT6
+#define B_PCH_SMI_EN_APMC BIT5
+#define B_PCH_SMI_EN_ON_SLP_EN BIT4
+#define B_PCH_SMI_EN_LEGACY_USB BIT3
+#define B_PCH_SMI_EN_BIOS BIT2
+#define B_PCH_SMI_EN_EOS BIT1
+#define B_PCH_SMI_EN_GBL_SMI BIT0
+#define N_PCH_SMI_EN_LEGACY_USB3 31
+#define N_PCH_SMI_EN_GPIO_UNLOCK 27
+#define N_PCH_SMI_EN_INTEL_USB2 18
+#define N_PCH_SMI_EN_LEGACY_USB2 17
+#define N_PCH_SMI_EN_PERIODIC 14
+#define N_PCH_SMI_EN_TCO 13
+#define N_PCH_SMI_EN_MCSMI 11
+#define N_PCH_SMI_EN_BIOS_RLS 7
+#define N_PCH_SMI_EN_SWSMI_TMR 6
+#define N_PCH_SMI_EN_APMC 5
+#define N_PCH_SMI_EN_ON_SLP_EN 4
+#define N_PCH_SMI_EN_LEGACY_USB 3
+#define N_PCH_SMI_EN_BIOS 2
+#define N_PCH_SMI_EN_EOS 1
+#define N_PCH_SMI_EN_GBL_SMI 0
+
+#define R_PCH_SMI_STS 0x34
+#define S_PCH_SMI_STS 4
+#define B_PCH_SMI_STS_LEGACY_USB3 BIT31
+#define B_PCH_SMI_STS_GPIO_UNLOCK BIT27
+#define B_PCH_SMI_STS_SPI BIT26
+#define B_PCH_SMI_STS_MONITOR BIT21
+#define B_PCH_SMI_STS_PCI_EXP BIT20
+#define B_PCH_SMI_STS_PATCH BIT19
+#define B_PCH_SMI_STS_INTEL_USB2 BIT18
+#define B_PCH_SMI_STS_LEGACY_USB2 BIT17
+#define B_PCH_SMI_STS_SMBUS BIT16
+#define B_PCH_SMI_STS_SERIRQ BIT15
+#define B_PCH_SMI_STS_PERIODIC BIT14
+#define B_PCH_SMI_STS_TCO BIT13
+#define B_PCH_SMI_STS_DEVMON BIT12
+#define B_PCH_SMI_STS_MCSMI BIT11
+#define B_PCH_SMI_STS_GPIO_SMI BIT10
+#define B_PCH_SMI_STS_GPE1 BIT10
+#define B_PCH_SMI_STS_GPE0 BIT9
+#define B_PCH_SMI_STS_PM1_STS_REG BIT8
+#define B_PCH_SMI_STS_SWSMI_TMR BIT6
+#define B_PCH_SMI_STS_APM BIT5
+#define B_PCH_SMI_STS_ON_SLP_EN BIT4
+#define B_PCH_SMI_STS_LEGACY_USB BIT3
+#define B_PCH_SMI_STS_BIOS BIT2
+#define N_PCH_SMI_STS_LEGACY_USB3 31
+#define N_PCH_SMI_STS_GPIO_UNLOCK 27
+#define N_PCH_SMI_STS_SPI 26
+#define N_PCH_SMI_STS_MONITOR 21
+#define N_PCH_SMI_STS_PCI_EXP 20
+#define N_PCH_SMI_STS_PATCH 19
+#define N_PCH_SMI_STS_INTEL_USB2 18
+#define N_PCH_SMI_STS_LEGACY_USB2 17
+#define N_PCH_SMI_STS_SMBUS 16
+#define N_PCH_SMI_STS_SERIRQ 15
+#define N_PCH_SMI_STS_PERIODIC 14
+#define N_PCH_SMI_STS_TCO 13
+#define N_PCH_SMI_STS_DEVMON 12
+#define N_PCH_SMI_STS_MCSMI 11
+#define N_PCH_SMI_STS_GPE1 10
+#define N_PCH_SMI_STS_GPE0 9
+#define N_PCH_SMI_STS_PM1_STS_REG 8
+#define N_PCH_SMI_STS_SWSMI_TMR 6
+#define N_PCH_SMI_STS_APM 5
+#define N_PCH_SMI_STS_ON_SLP_EN 4
+#define N_PCH_SMI_STS_LEGACY_USB 3
+#define N_PCH_SMI_STS_BIOS 2
+
+#define R_PCH_LPTH_ALT_GP_SMI_EN 0x38
+#define S_PCH_LPTH_ALT_GP_SMI_EN 2
+#define R_PCH_LPTH_ALT_GP_SMI_STS 0x3A
+#define S_PCH_LPTH_ALT_GP_SMI_STS 2
+#define V_PCH_LPTH_ALT_GP_SMI_GPIBASE 0
+#define S_PCH_LPTH_ALT_GP_SMI_GPISIZE 16
+
+#define R_PCH_LPTLP_ALT_GP_SMI_EN 0x54
+#define S_PCH_LPTLP_ALT_GP_SMI_EN 4
+#define R_PCH_LPTLP_ALT_GP_SMI_STS 0x50
+#define S_PCH_LPTLP_ALT_GP_SMI_STS 4
+#define V_PCH_LPTLP_ALT_GP_SMI_GPIBASE 32
+#define S_PCH_LPTLP_ALT_GP_SMI_GPISIZE 16
+
+//
+// USB Per-Port Registers Write Control
+//
+#define R_PCH_UPRWC 0x3C
+#define S_PCH_UPRWC 2
+#define B_PCH_UPRWC_WR_EN_SMI_STS 0x0100
+#define B_PCH_UPRWC_WR_EN 0x0002
+#define B_PCH_UPRWC_WR_EN_SMI_EN 0x0001
+
+#define R_PCH_ACPI_GPE_CNTL 0x42
+#define B_PCH_ACPI_GPE_CNTL_SWGPE_CTRL BIT1
+
+#define R_PCH_DEVACT_STS 0x44
+#define S_PCH_DEVACT_STS 2
+#define B_PCH_DEVACT_STS_MASK 0x13E1
+#define B_PCH_DEVACT_STS_KBC 0x1000
+#define B_PCH_DEVACT_STS_PIRQDH 0x0200
+#define B_PCH_DEVACT_STS_PIRQCG 0x0100
+#define B_PCH_DEVACT_STS_PIRQBF 0x0080
+#define B_PCH_DEVACT_STS_PIRQAE 0x0040
+#define N_PCH_DEVACT_STS_KBC 12
+#define N_PCH_DEVACT_STS_PIRQDH 9
+#define N_PCH_DEVACT_STS_PIRQCG 8
+#define N_PCH_DEVACT_STS_PIRQBF 7
+#define N_PCH_DEVACT_STS_PIRQAE 6
+
+#define R_PCH_ACPI_PM2_CNT 0x50
+#define B_PCH_ACPI_PM2_CNT_ARB_DIS 0x01
+
+#define R_PCH_OC_WDT_CTL 0x54
+#define B_PCH_OC_WDT_CTL_RLD BIT31
+#define B_PCH_OC_WDT_CTL_ICCSURV_STS BIT25
+#define B_PCH_OC_WDT_CTL_NO_ICCSURV_STS BIT24
+#define B_PCH_OC_WDT_CTL_FORCE_ALL BIT15
+#define B_PCH_OC_WDT_CTL_EN BIT14
+#define B_PCH_OC_WDT_CTL_ICCSURV BIT13
+#define B_PCH_OC_WDT_CTL_LCK BIT12
+#define B_PCH_OC_WDT_CTL_TOV_MASK 0x3FF
+#define B_PCH_OC_WDT_CTL_FAILURE_STS BIT23
+#define B_PCH_OC_WDT_CTL_UNXP_RESET_STS BIT22
+#define B_PCH_OC_WDT_CTL_AFTER_POST 0x3F0000
+#define V_PCH_OC_WDT_CTL_STATUS_FAILURE 1
+#define V_PCH_OC_WDT_CTL_STATUS_OK 0
+
+#define R_PCH_ALT_GPI_SMI_EN2 0x5C
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP60_SMI_EN BIT7
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP57_SMI_EN BIT6
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP56_SMI_EN BIT5
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP43_SMI_EN BIT4
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP22_SMI_EN BIT3
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP21_SMI_EN BIT2
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP19_SMI_EN BIT1
+#define B_PCH_ALT_GPI_SMI_EN2_ALT_GP17_SMI_EN BIT0
+#define R_PCH_ALT_GPI_SMI_STS2 0x5E
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP60_SMI_STS BIT7
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP57_SMI_STS BIT6
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP56_SMI_STS BIT5
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP43_SMI_STS BIT4
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP22_SMI_STS BIT3
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP21_SMI_STS BIT2
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP19_SMI_STS BIT1
+#define B_PCH_ALT_GPI_SMI_STS2_ALT_GP17_SMI_STS BIT0
+
+//
+// TCO register I/O map
+//
+#define PCH_TCO_BASE 0x60
+
+#define R_PCH_TCO_RLD 0x0
+#define R_PCH_TCO_DAT_IN 0x2
+#define R_PCH_TCO_DAT_OUT 0x3
+#define R_PCH_TCO1_STS 0x04
+#define S_PCH_TCO1_STS 2
+#define B_PCH_TCO1_STS_DMISERR 0x1000
+#define B_PCH_TCO1_STS_DMISMI 0x0400
+#define B_PCH_TCO1_STS_DMISCI 0x0200
+#define B_PCH_TCO1_STS_BIOSWR 0x0100
+#define B_PCH_TCO1_STS_NEWCENTURY 0x0080
+#define B_PCH_TCO1_STS_TIMEOUT 0x0008
+#define B_PCH_TCO1_STS_TCO_INT 0x0004
+#define B_PCH_TCO1_STS_SW_TCO_SMI 0x0002
+#define B_PCH_TCO1_STS_NMI2SMI 0001
+#define N_PCH_TCO1_STS_DMISMI 10
+#define N_PCH_TCO1_STS_BIOSWR 8
+#define N_PCH_TCO1_STS_NEWCENTURY 7
+#define N_PCH_TCO1_STS_TIMEOUT 3
+#define N_PCH_TCO1_STS_SW_TCO_SMI 1
+#define N_PCH_TCO1_STS_NMI2SMI 0
+
+#define R_PCH_TCO2_STS 0x06
+#define S_PCH_TCO2_STS 2
+#define B_PCH_TCO2_STS_SMLINK_SLV_SMI BIT4
+#define B_PCH_TCO2_STS_BAD_BIOS BIT3
+#define B_PCH_TCO2_STS_BOOT BIT2
+#define B_PCH_TCO2_STS_SECOND_TO BIT1
+#define B_PCH_TCO2_STS_INTRD_DET BIT0
+#define N_PCH_TCO2_STS_INTRD_DET 0
+
+#define R_PCH_TCO1_CNT 0x08
+#define S_PCH_TCO1_CNT 2
+#define B_PCH_TCO_CNT_LOCK BIT12
+#define B_PCH_TCO_CNT_TMR_HLT BIT11
+#define B_PCH_TCO_CNT_NMI2SMI_EN BIT9
+#define B_PCH_TCO_CNT_NMI_NOW BIT8
+#define N_PCH_TCO_CNT_NMI2SMI_EN 9
+
+#define R_PCH_TCO2_CNT 0x0A
+#define S_PCH_TCO2_CNT 2
+#define B_PCH_TCO2_CNT_OS_POLICY 0x0030
+#define B_PCH_TCO2_CNT_GPI11_ALERT_DISABLE 0x0008
+#define B_PCH_TCO2_CNT_INTRD_SEL 0x0006
+#define N_PCH_TCO2_CNT_INTRD_SEL 2
+
+#define R_PCH_TCO_MESSAGE1 0x0C
+#define R_PCH_TCO_MESSAGE2 0x0D
+#define R_PCH_TCO_WDCNT 0x0E
+#define R_PCH_TCO_SW_IRQ_GEN 0x10
+#define B_PCH_TCO_IRQ12_CAUSE BIT1
+#define B_PCH_TCO_IRQ1_CAUSE BIT0
+#define R_PCH_TCO_TMR 0x12
+
+//
+// GPIO Init register offsets from GPIOBASE
+//
+#define R_PCH_GPIO_USE_SEL 0x00
+#define R_PCH_GPIO_IO_SEL 0x04
+#define R_PCH_GPIO_LVL 0x0C
+#define R_PCH_GPIO_IOAPIC_SEL 0x10
+#define V_PCH_GPIO_IOAPIC_SEL 0xFFFF
+#define R_PCH_GPIO_BLINK 0x18
+#define R_PCH_GPIO_SER_BLINK 0x1C
+#define R_PCH_GPIO_SB_CMDSTS 0x20
+#define B_PCH_GPIO_SB_CMDSTS_DLS_MASK 0x00C00000 ///< Data length select
+#define B_PCH_GPIO_SB_CMDSTS_DRS_MASK 0x003F0000 ///< Data rate select
+#define B_PCH_GPIO_SB_CMDSTS_BUSY BIT8
+#define B_PCH_GPIO_SB_CMDSTS_GO BIT0
+#define R_PCH_GPIO_SB_DATA 0x24
+#define R_PCH_GPIO_NMI_EN 0x28
+#define B_PCH_GPIO_NMI_EN 0xFFFF
+#define R_PCH_GPIO_NMI_STS 0x2A
+#define B_PCH_GPIO_NMI_STS 0xFFFF
+#define R_PCH_GPIO_GPI_INV 0x2C
+#define R_PCH_GPIO_USE_SEL2 0x30
+#define R_PCH_GPIO_IO_SEL2 0x34
+#define R_PCH_GPIO_LVL2 0x38
+#define R_PCH_GPIO_USE_SEL3 0x40
+#define R_PCH_GPIO_IO_SEL3 0x44
+#define R_PCH_GPIO_LVL3 0x48
+
+#define R_PCH_GP_RST_SEL 0x60
+#define S_PCH_GP_RST_SEL 4
+#define R_PCH_GP_RST_SEL2 0x64
+#define S_PCH_GP_RST_SEL2 4
+#define R_PCH_GP_RST_SEL3 0x68
+#define S_PCH_GP_RST_SEL3 4
+
+typedef struct {
+ UINT16 GpioOwn : 1;
+ UINT16 GpiRout : 1;
+ UINT16 GpiIe : 1;
+ UINT16 GpioUseSel : 1;
+ UINT16 GpioIoSel : 1;
+ UINT16 GpiInv : 1;
+ UINT16 GpiLxEb : 1;
+ UINT16 GpoLvl : 1;
+ UINT16 GpiWp : 2;
+ UINT16 GpinDis : 1;
+ UINT16 Reserved : 5;
+} PCH_GPIO_DEFINITION;
+
+#define R_PCH_GPIO_OWN0 0x00
+#define B_PCH_GPIO_OWN0_GPIO_USE_SEL BIT0
+#define B_PCH_GPIO_OWN0_GPIO_IO_SEL BIT2
+#define B_PCH_GPIO_OWN0_GPI_INV BIT3
+#define B_PCH_GPIO_OWN0_GPI_LxEB BIT4
+#define B_PCH_GPIO_OWN0_GPI_LVL BIT30
+#define B_PCH_GPIO_OWN0_GPO_LVL BIT31
+
+#define V_PCH_GPIO_OWN_GPIO 0x01
+#define V_PCH_GPIO_OWN_ACPI 0x00
+
+#define V_PCH_GPIO_USE_SEL_NATIVE 0x00
+#define V_PCH_GPIO_USE_SEL_GPIO 0x01
+
+#define V_PCH_GPIO_IO_SEL_OUT 0x00
+#define V_PCH_GPIO_IO_SEL_IN 0x01
+
+#define V_PCH_GPO_LVL_LOW 0x00
+#define V_PCH_GPO_LVL_HIGH 0x01
+
+#define V_PCH_GPI_LVL_NORMAL 0x00
+#define V_PCH_GPI_LVL_INVERTED 0x01
+
+#define V_PCH_GPI_LxEB_EDGE 0x00
+#define V_PCH_GPI_LxEB_LEVEL 0x01
+
+#define V_PCH_GPINDIS_ENABLE 0x00
+#define V_PCH_GPINDIS_DISABLE 0x01
+
+#define V_PCH_GPIWP_NONE 0x00
+#define V_PCH_GPIWP_DOWN 0x01
+#define V_PCH_GPIWP_UP 0x02
+
+#define R_PCH_GPIO_ROUT0 0x30
+#define V_PCH_GPIO_ROUT0_NMI_SMI 0x01
+#define V_PCH_GPIO_ROUT0_SCI 0x00
+
+#define R_PCH_GPIO_GC 0x7C
+#define R_PCH_GPI_IS0 0x80
+#define R_PCH_GPI_IS1 0x84
+#define R_PCH_GPI_IS2 0x88
+#define V_PCH_GPI_IS_CLEARALL 0xFFFFFFFF
+
+#define R_PCH_GPI_IE0 0x90
+#define V_PCH_GPI_IE_APIC_DISABLED 0x00
+#define V_PCH_GPI_IE_APIC_ENABLED 0x01
+
+#define R_PCH_GPI_IE1 0x94
+#define R_PCH_GPI_IE2 0x98
+#define V_PCH_GPI_IE_CLEARALL 0x00000000
+
+#define R_PCH_GP_N_CONFIG0 0x100
+#define R_PCH_GP_X_CONFIG0(n) (R_PCH_GP_N_CONFIG0 + ((n) * 0x08))
+#define R_PCH_GP_18_CONFIG0 R_PCH_GP_X_CONFIG0(18)
+#define R_PCH_GP_19_CONFIG0 R_PCH_GP_X_CONFIG0(19)
+#define R_PCH_GP_20_CONFIG0 R_PCH_GP_X_CONFIG0(20)
+#define R_PCH_GP_21_CONFIG0 R_PCH_GP_X_CONFIG0(21)
+#define R_PCH_GP_22_CONFIG0 R_PCH_GP_X_CONFIG0(22)
+#define R_PCH_GP_23_CONFIG0 R_PCH_GP_X_CONFIG0(23)
+#define R_PCH_GP_29_CONFIG0 R_PCH_GP_X_CONFIG0(29)
+#define R_PCH_GP_30_CONFIG0 R_PCH_GP_X_CONFIG0(30)
+#define R_PCH_GP_60_CONFIG0 R_PCH_GP_X_CONFIG0(60)
+#define R_PCH_GP_73_CONFIG0 R_PCH_GP_X_CONFIG0(73)
+#define R_PCH_GP_83_CONFIG0 R_PCH_GP_X_CONFIG0(83) ///< SPI0
+#define R_PCH_GP_87_CONFIG0 R_PCH_GP_X_CONFIG0(87) ///< SPI1
+#define R_PCH_GP_91_CONFIG0 R_PCH_GP_X_CONFIG0(91) ///< UART0
+#define V_PCH_GPIO_PIN_MAX 95
+
+//
+// Processor interface registers
+//
+#define R_PCH_NMI_SC 0x61
+#define B_PCH_NMI_SC_SERR_NMI_STS BIT7
+#define B_PCH_NMI_SC_IOCHK_NMI_STS BIT6
+#define B_PCH_NMI_SC_TMR2_OUT_STS BIT5
+#define B_PCH_NMI_SC_REF_TOGGLE BIT4
+#define B_PCH_NMI_SC_IOCHK_NMI_EN BIT3
+#define B_PCH_NMI_SC_PCI_SERR_EN BIT2
+#define B_PCH_NMI_SC_SPKR_DAT_EN BIT1
+#define B_PCH_NMI_SC_TIM_CNT2_EN BIT0
+#define R_PCH_NMI_EN 0x70
+#define B_PCH_NMI_EN_NMI_EN BIT7
+
+//
+// RTC register
+//
+#define R_PCH_RTC_INDEX 0x70
+#define R_PCH_RTC_TARGET 0x71
+#define R_PCH_RTC_EXT_INDEX 0x72
+#define R_PCH_RTC_EXT_TARGET 0x73
+#define R_PCH_RTC_REGA 0x0A
+#define B_PCH_RTC_REGA_UIP 0x80
+#define R_PCH_RTC_REGB 0x0B
+#define B_PCH_RTC_REGB_SET 0x80
+#define B_PCH_RTC_REGB_PIE 0x40
+#define B_PCH_RTC_REGB_AIE 0x20
+#define B_PCH_RTC_REGB_UIE 0x10
+#define B_PCH_RTC_REGB_DM 0x04
+#define B_PCH_RTC_REGB_HOURFORM 0x02
+#define R_PCH_RTC_REGC 0x0C
+#define R_PCH_RTC_REGD 0x0D
+
+//
+// Reset Generator I/O Port
+//
+#define R_PCH_RST_CNT 0xCF9
+#define B_PCH_RST_CNT_FULL_RST BIT3
+#define B_PCH_RST_CNT_RST_CPU BIT2
+#define B_PCH_RST_CNT_SYS_RST BIT1
+#define V_PCH_RST_CNT_FULLRESET 0x0E
+#define V_PCH_RST_CNT_HARDRESET 0x06
+#define V_PCH_RST_CNT_SOFTRESET 0x04
+#define V_PCH_RST_CNT_HARDSTARTSTATE 0x02
+#define V_PCH_RST_CNT_SOFTSTARTSTATE 0x00
+#endif