]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Include/IndustryStandard/Q35MchIch9.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / Include / IndustryStandard / Q35MchIch9.h
CommitLineData
cb2e3007
LE
1/** @file\r
2 Various register numbers and value bits based on the following publications:\r
3 - Intel(R) datasheet 316966-002\r
4 - Intel(R) datasheet 316972-004\r
5\r
6 Copyright (C) 2015, Red Hat, Inc.\r
7 Copyright (c) 2014, Gabriel L. Somlo <somlo@cmu.edu>\r
8\r
b26f0cf9 9 SPDX-License-Identifier: BSD-2-Clause-Patent\r
cb2e3007
LE
10**/\r
11\r
12#ifndef __Q35_MCH_ICH9_H__\r
13#define __Q35_MCH_ICH9_H__\r
14\r
15#include <Library/PciLib.h>\r
7ecfa0aa
LE
16#include <Uefi/UefiBaseType.h>\r
17#include <Uefi/UefiSpec.h>\r
18#include <Protocol/PciRootBridgeIo.h>\r
cb2e3007
LE
19\r
20//\r
21// Host Bridge Device ID (DID) value for Q35/MCH\r
22//\r
ac0a286f 23#define INTEL_Q35_MCH_DEVICE_ID 0x29C0\r
cb2e3007 24\r
6b225ace
LE
25//\r
26// B/D/F/Type: 0/0/0/PCI\r
27//\r
ac0a286f
MK
28#define DRAMC_REGISTER_Q35(Offset) PCI_LIB_ADDRESS (0, 0, 0, (Offset))\r
29\r
30#define MCH_EXT_TSEG_MB 0x50\r
31#define MCH_EXT_TSEG_MB_QUERY 0xFFFF\r
32\r
33#define MCH_GGC 0x52\r
34#define MCH_GGC_IVD BIT1\r
35\r
36#define MCH_PCIEXBAR_LOW 0x60\r
37#define MCH_PCIEXBAR_LOWMASK 0x0FFFFFFF\r
38#define MCH_PCIEXBAR_BUS_FF 0\r
39#define MCH_PCIEXBAR_EN BIT0\r
40\r
41#define MCH_PCIEXBAR_HIGH 0x64\r
42#define MCH_PCIEXBAR_HIGHMASK 0xFFFFFFF0\r
43\r
44#define MCH_PAM0 0x90\r
45#define MCH_PAM1 0x91\r
46#define MCH_PAM2 0x92\r
47#define MCH_PAM3 0x93\r
48#define MCH_PAM4 0x94\r
49#define MCH_PAM5 0x95\r
50#define MCH_PAM6 0x96\r
51\r
52#define MCH_DEFAULT_SMBASE_CTL 0x9C\r
53#define MCH_DEFAULT_SMBASE_QUERY 0xFF\r
54#define MCH_DEFAULT_SMBASE_IN_RAM 0x01\r
55#define MCH_DEFAULT_SMBASE_LCK 0x02\r
56#define MCH_DEFAULT_SMBASE_SIZE SIZE_128KB\r
57\r
58#define MCH_SMRAM 0x9D\r
59#define MCH_SMRAM_D_LCK BIT4\r
60#define MCH_SMRAM_G_SMRAME BIT3\r
61\r
62#define MCH_ESMRAMC 0x9E\r
63#define MCH_ESMRAMC_H_SMRAME BIT7\r
64#define MCH_ESMRAMC_E_SMERR BIT6\r
65#define MCH_ESMRAMC_SM_CACHE BIT5\r
66#define MCH_ESMRAMC_SM_L1 BIT4\r
67#define MCH_ESMRAMC_SM_L2 BIT3\r
68#define MCH_ESMRAMC_TSEG_EXT (BIT2 | BIT1)\r
69#define MCH_ESMRAMC_TSEG_8MB BIT2\r
70#define MCH_ESMRAMC_TSEG_2MB BIT1\r
71#define MCH_ESMRAMC_TSEG_1MB 0\r
72#define MCH_ESMRAMC_TSEG_MASK (BIT2 | BIT1)\r
73#define MCH_ESMRAMC_T_EN BIT0\r
74\r
75#define MCH_GBSM 0xA4\r
76#define MCH_GBSM_MB_SHIFT 20\r
77\r
78#define MCH_BGSM 0xA8\r
79#define MCH_BGSM_MB_SHIFT 20\r
80\r
81#define MCH_TSEGMB 0xAC\r
82#define MCH_TSEGMB_MB_SHIFT 20\r
83\r
84#define MCH_TOLUD 0xB0\r
85#define MCH_TOLUD_MB_SHIFT 4\r
6b225ace 86\r
cb2e3007
LE
87//\r
88// B/D/F/Type: 0/0x1f/0/PCI\r
89//\r
90#define POWER_MGMT_REGISTER_Q35(Offset) \\r
91 PCI_LIB_ADDRESS (0, 0x1f, 0, (Offset))\r
92\r
7ecfa0aa
LE
93#define POWER_MGMT_REGISTER_Q35_EFI_PCI_ADDRESS(Offset) \\r
94 EFI_PCI_ADDRESS (0, 0x1f, 0, (Offset))\r
95\r
ac0a286f
MK
96#define ICH9_PMBASE 0x40\r
97#define ICH9_PMBASE_MASK (BIT15 | BIT14 | BIT13 | BIT12 | BIT11 | \\r
6b225ace
LE
98 BIT10 | BIT9 | BIT8 | BIT7)\r
99\r
ac0a286f
MK
100#define ICH9_ACPI_CNTL 0x44\r
101#define ICH9_ACPI_CNTL_ACPI_EN BIT7\r
6b225ace 102\r
ac0a286f
MK
103#define ICH9_GEN_PMCON_1 0xA0\r
104#define ICH9_GEN_PMCON_1_SMI_LOCK BIT4\r
6b225ace 105\r
ac0a286f
MK
106#define ICH9_RCBA 0xF0\r
107#define ICH9_RCBA_EN BIT0\r
90721ba5 108\r
6b225ace
LE
109//\r
110// IO ports\r
111//\r
17efae27 112#define ICH9_APM_CNT 0xB2\r
ac0a286f 113#define ICH9_APM_CNT_CPU_HOTPLUG 0x04\r
17efae27 114#define ICH9_APM_STS 0xB3\r
6b225ace 115\r
ac0a286f 116#define ICH9_CPU_HOTPLUG_BASE 0x0CD8\r
b75d1de5 117\r
6b225ace
LE
118//\r
119// IO ports relative to PMBASE\r
120//\r
ac0a286f
MK
121#define ICH9_PMBASE_OFS_SMI_EN 0x30\r
122#define ICH9_SMI_EN_APMC_EN BIT5\r
123#define ICH9_SMI_EN_GBL_SMI_EN BIT0\r
6b225ace 124\r
ac0a286f 125#define ICH9_ROOT_COMPLEX_BASE 0xFED1C000\r
90721ba5 126\r
cb2e3007 127#endif\r