## SPDX-License-Identifier: GPL-2.0-only

config SOC_INTEL_SAPPHIRERAPIDS_SP
	bool
	select FSP_NVS_DATA_POST_SILICON_INIT
	select MICROCODE_BLOB_NOT_HOOKED_UP
	select SOC_INTEL_MEM_MAPPED_PM_CONFIGURATION
	select DISABLE_ACPI_HIBERNATE
	select DEFAULT_X2APIC_RUNTIME
	select CACHE_MRC_SETTINGS
	select CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED
	select PLATFORM_USES_FSP2_3
	select SOC_INTEL_CSE_SERVER_SKU
	select XEON_SP_COMMON_BASE
	help
	  Intel Sapphire Rapids-SP support

if SOC_INTEL_SAPPHIRERAPIDS_SP

config CHIPSET_DEVICETREE
	string
	default "soc/intel/xeon_sp/spr/chipset.cb"

config FSP_HEADER_PATH
	string "Location of FSP headers"
	depends on MAINBOARD_USES_FSP2_0
	default "src/vendorcode/intel/fsp/fsp2_0/sapphirerapids_sp"

config MAX_CPUS
	int
	default 255

config ACPI_CPU_STRING
	string
	default "C%03X"

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

config DCACHE_RAM_BASE
	hex
	default 0xfe800000

config DCACHE_RAM_SIZE
	hex
	default 0x1fff00
	help
	  The size of the cache-as-ram region required during bootblock
	  and/or romstage. FSP-T reserves the upper 0x100 for
	  FspReservedBuffer.

config DCACHE_BSP_STACK_SIZE
	hex
	default 0x40000
	help
	  The amount of anticipated stack usage in CAR by bootblock and
	  other stages. It needs to include FSP-M stack requirement and
	  CB romstage stack requirement. The integration documentation
	  says this needs to be 256KiB.

config FSP_M_RC_HEAP_SIZE
	hex
	default 0x150000
	help
	  On xeon_sp/spr FSP-M has two separate heap managers, one regular
	  whose size and base are controllable via the StackBase and
	  StackSize UPDs and a 'rc' heap manager that is statically
	  allocated at 0xfe800000 (the CAR base) and consumes about 0x150000
	  bytes of memory.

config CPU_MICROCODE_CBFS_LOC
	hex
	default 0xffe0fdc0

config CPU_MICROCODE_CBFS_LEN
	hex
	default 0x8c00

config HEAP_SIZE
	hex
	default 0x80000

config STACK_SIZE
	hex
	default 0x4000

config FSP_TEMP_RAM_SIZE
	hex
	depends on FSP_USES_CB_STACK
	default 0x60000
	help
	  The amount of anticipated heap usage in CAR by FSP.
	  Refer to Platform FSP integration guide document to know
	  the exact FSP requirement for Heap setup.  The FSP integration
	  documentation says this needs to be at least 128KiB, but practice
	  show this needs to be 256KiB or more.

config IED_REGION_SIZE
	hex
	default 0x400000

config IFD_CHIPSET
	string
	default "lbg"

config SOC_INTEL_COMMON_BLOCK_P2SB
	def_bool y

config SOC_INTEL_HAS_BIOS_DONE_MSR
	def_bool y

config SOC_INTEL_HAS_NCMEM
	def_bool y

config SOC_INTEL_HAS_CXL
	def_bool y

config SOC_INTEL_PCIE_64BIT_ALLOC
	def_bool y

config SOC_INTEL_MMAPVTD_ONLY_FOR_DPR
	def_bool y

config CPU_BCLK_MHZ
	int
	default 100

# SPR-SP has 4 IMCs, 2 channels per IMC, 2 DIMMs per channel
# Default value is set to two sockets, full config.
config MAX_IMC
	int
	default 4

config DIMM_MAX
	int
	default 32

# DDR4
config DIMM_SPD_SIZE
	int
	default 1024

config MAX_ACPI_TABLE_SIZE_KB
	int
	default 512 if MAX_SOCKET = 4
	default 224

config FIXED_SMBUS_IO_BASE
	default 0x780

config DISPLAY_UPD_IIO_DATA
	def_bool n
	depends on DISPLAY_UPD_DATA

if INTEL_TXT

config INTEL_TXT_SINIT_SIZE
	hex
	default 0x50000
	help
	  According to document number 572782 this needs to be 256KiB
	  for the SINIT module and 64KiB for SINIT data.

config INTEL_TXT_HEAP_SIZE
	hex
	default 0xf0000
	help
	  This must be 960KiB according to 572782.

endif # INTEL_TXT

config ENABLE_IO_MARGINING
	bool "Enable IO Margining"
	default n
	depends on !PCIEXP_ASPM
	help
	  Enable support for I/O margining. This is mutually exclusive with
	  ASPM. This option is intended for debugging and validation and
	  should normally be disabled.

config ENABLE_RMT
	bool "Enable RMT"
	default n
	help
	  Enable Rank Margining Tool. This option is intended for debugging and
	  validation and should normally be disabled.
endif
