# SPDX-License-Identifier: GPL-2.0-or-later

source "src/soc/intel/xeon_sp/*/Kconfig"

config XEON_SP_IBL
	bool
	default n

config XEON_SP_COMMON_BASE
	bool
	select ACPI_INTEL_HARDWARE_SLEEP_VALUES
	select ARCH_X86
	select BOOT_DEVICE_SUPPORTS_WRITES
	select CPU_INTEL_COMMON
	select CPU_INTEL_FIRMWARE_INTERFACE_TABLE
	select FSP_CAR
	select FSP_M_XIP
	select FSP_COMPRESS_FSP_S_LZ4
	select FSP_PLATFORM_MEMORY_SETTINGS_VERSIONS
	select FSP_T_XIP
	select HAVE_SMI_HANDLER
	select INTEL_CAR_NEM # For postcar only now
	select INTEL_DESCRIPTOR_MODE_CAPABLE
	select PARALLEL_MP_AP_WORK
	select PMC_GLOBAL_RESET_ENABLE_LOCK
	select POSTCAR_STAGE
	select REG_SCRIPT
	select SMM_TSEG
	select SOC_INTEL_COMMON
	select SOC_INTEL_COMMON_RESET
	select SOC_INTEL_COMMON_BLOCK
	select SOC_INTEL_COMMON_BLOCK_ACPI
	select SOC_INTEL_COMMON_BLOCK_CPU
	select SOC_INTEL_COMMON_BLOCK_GPIO_DUAL_ROUTE_SUPPORT
	select SOC_INTEL_COMMON_BLOCK_GPIO_PADCFG_PADTOL
	select SOC_INTEL_COMMON_BLOCK_PMC_DISCOVERABLE
	select SOC_INTEL_COMMON_BLOCK_SMM
	select SOC_INTEL_COMMON_BLOCK_TCO
	select SUPPORT_CPU_UCODE_IN_CBFS
	select SMM_PCI_RESOURCE_STORE
	select SOC_INTEL_COMMON_PCH_SERVER if !XEON_SP_IBL
	select SOC_INTEL_COMMON_IBL_BASE if XEON_SP_IBL
	select TSC_MONOTONIC_TIMER
	select TPM_STARTUP_IGNORE_POSTINIT if INTEL_TXT
	select UDELAY_TSC
	select USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
	select USE_FSP_NOTIFY_PHASE_READY_TO_BOOT
	select USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE

if XEON_SP_COMMON_BASE

config MAX_SOCKET
	int
	default 2

config MAX_HECI_DEVICES
	int
	default 5

# For 2S config, the number of cpus could be as high as
# 2 threads * 20 cores * 2 sockets
config MAX_CPUS
	int
	default 80

config INTEL_ACPI_BASE_ADDRESS
	hex
	default 0x500
	help
	  IO Address of ACPI.

config INTEL_PCH_PWRM_BASE_ADDRESS
	hex
	default 0xfe000000
	help
	  PCH PWRM Base address.

config PCR_BASE_ADDRESS
	hex
	default 0xfd000000
	help
	  This option allows you to select MMIO Base Address of sideband bus.

config DCACHE_BSP_STACK_SIZE
	hex
	default 0x10000

config ECAM_MMCONF_BASE_ADDRESS
	default 0x80000000

config ECAM_MMCONF_BUS_NUMBER
	default 512 if MAX_SOCKET = 4
	default 256

config ALWAYS_ALLOW_ABOVE_4G_ALLOCATION
	default y

config HPET_MIN_TICKS
	hex
	default 0x80

config SOC_INTEL_XEON_RAS
	bool
	select SOC_ACPI_HEST
	select SOC_RAS_ELOG

config HAVE_IOAT_DOMAINS
	bool

config SOC_INTEL_HAS_CXL
	bool

endif ## SOC_INTEL_XEON_SP
