# This file is part of the coreboot project.
# SPDX-License-Identifier: GPL-2.0-only

config SOUTHBRIDGE_INTEL_I82801IX
	bool
	select SOUTHBRIDGE_INTEL_COMMON_SMBUS
	select SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9 if !BOARD_EMULATION_QEMU_X86_Q35
	select SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ
	select SOUTHBRIDGE_INTEL_COMMON_PMBASE
	select SOUTHBRIDGE_INTEL_COMMON_RTC
	select SOUTHBRIDGE_INTEL_COMMON_RESET
	select IOAPIC
	select USE_WATCHDOG_ON_BOOT
	select HAVE_SMI_HANDLER
	select HAVE_USBDEBUG_OPTIONS
	select SOUTHBRIDGE_INTEL_COMMON_GPIO
	select SOUTHBRIDGE_INTEL_COMMON_SMM
	select SOUTHBRIDGE_INTEL_COMMON_PMCLIB
	select INTEL_DESCRIPTOR_MODE_CAPABLE
	select ACPI_INTEL_HARDWARE_SLEEP_VALUES
	select SOUTHBRIDGE_INTEL_COMMON_WATCHDOG
	select SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG

if SOUTHBRIDGE_INTEL_I82801IX

config EHCI_BAR
	hex
	default 0xfef00000

## Some enterprise variants may require an IFD
config INTEL_DESCRIPTOR_MODE_REQUIRED
	bool
	default n

config HPET_MIN_TICKS
	hex
	default 0x80

endif
