blob: 201825deb1a2b5e35d616fc16b166a0ee5b96d64 [file] [log] [blame]
#ifndef __DEV_Q35_H
#define __DEV_Q35_H
#include "types.h" // u16
#define PCI_DEVICE_ID_INTEL_Q35_MCH 0x29c0
#define Q35_HOST_BRIDGE_PAM0 0x90
#define Q35_HOST_BRIDGE_SMRAM 0x9d
#define Q35_HOST_BRIDGE_PCIEXBAR 0x60
#define Q35_HOST_BRIDGE_PCIEXBAR_SIZE (256 * 1024 * 1024)
#define Q35_HOST_BRIDGE_PCIEXBAR_ADDR 0xb0000000
#define Q35_HOST_BRIDGE_PCIEXBAREN ((u64)1)
#define Q35_HOST_PCIE_PCI_SEGMENT 0
#define Q35_HOST_PCIE_START_BUS_NUMBER 0
#define Q35_HOST_PCIE_END_BUS_NUMBER 255
#define PCI_DEVICE_ID_INTEL_ICH9_LPC 0x2918
#define ICH9_LPC_PMBASE 0x40
#define ICH9_LPC_PMBASE_RTE 0x1
#define ICH9_LPC_ACPI_CTRL 0x44
#define ICH9_LPC_ACPI_CTRL_ACPI_EN 0x80
#define ICH9_LPC_PIRQA_ROUT 0x60
#define ICH9_LPC_PIRQE_ROUT 0x68
#define ICH9_LPC_PIRQ_ROUT_IRQEN 0x80
#define ICH9_LPC_GEN_PMCON_1 0xa0
#define ICH9_LPC_GEN_PMCON_1_SMI_LOCK (1 << 4)
#define ICH9_LPC_PORT_ELCR1 0x4d0
#define ICH9_LPC_PORT_ELCR2 0x4d1
#define ICH9_LPC_RCBA 0xf0
#define ICH9_LPC_RCBA_ADDR 0xfed1c000
#define ICH9_LPC_RCBA_EN 0x1
#define PCI_DEVICE_ID_INTEL_ICH9_SMBUS 0x2930
#define ICH9_SMB_SMB_BASE 0x20
#define ICH9_SMB_HOSTC 0x40
#define ICH9_SMB_HOSTC_HST_EN 0x01
#define ICH9_ACPI_ENABLE 0x2
#define ICH9_ACPI_DISABLE 0x3
/* ICH9 LPC PM I/O registers are 128 ports and 128-aligned */
#define ICH9_PMIO_GPE0_STS 0x20
#define ICH9_PMIO_GPE0_BLK_LEN 0x10
#define ICH9_PMIO_SMI_EN 0x30
#define ICH9_PMIO_SMI_EN_APMC_EN (1 << 5)
#define ICH9_PMIO_SMI_EN_GLB_SMI_EN (1 << 0)
/* FADT ACPI_ENABLE/ACPI_DISABLE */
#define ICH9_APM_ACPI_ENABLE 0x2
#define ICH9_APM_ACPI_DISABLE 0x3
#endif // dev-q35.h