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

config SOC_INTEL_DENVERTON_NS
	bool
	select ARCH_X86
	select BOOT_DEVICE_SUPPORTS_WRITES
	select CACHE_MRC_SETTINGS
	select CPU_INTEL_COMMON
	select CPU_INTEL_FIRMWARE_INTERFACE_TABLE
	select CPU_SUPPORTS_PM_TIMER_EMULATION
	select DEBUG_GPIO
	select EDK2_CPU_TIMER_LIB if PAYLOAD_EDK2
	select FSP_M_XIP
	select FSP_T_XIP if FSP_CAR
	select HAVE_INTEL_FSP_REPO
	select HAVE_SMI_HANDLER
	select INTEL_DESCRIPTOR_MODE_CAPABLE
	select PCR_COMMON_IOSF_1_0
	select PLATFORM_USES_FSP2_0
	select SOC_INTEL_COMMON
	select SOC_INTEL_COMMON_RESET
	select SOC_INTEL_COMMON_BLOCK
	select SOC_INTEL_COMMON_BLOCK_CPU
	select SOC_INTEL_COMMON_BLOCK_ACPI
	select SOC_INTEL_COMMON_BLOCK_PMC
	select ACPI_INTEL_HARDWARE_SLEEP_VALUES
	select SOC_INTEL_COMMON_BLOCK_SPI
	select SOC_INTEL_COMMON_BLOCK_FAST_SPI
	select SOC_INTEL_COMMON_BLOCK_GPIO
	select SOC_INTEL_COMMON_BLOCK_PCR
	select SOC_INTEL_COMMON_BLOCK_PMC_DISCOVERABLE
	select SOC_INTEL_COMMON_BLOCK_SMBUS
	select SUPPORT_CPU_UCODE_IN_CBFS
	select SOUTHBRIDGE_INTEL_COMMON_SMBUS
	select TSC_MONOTONIC_TIMER
	select TSC_SYNC_MFENCE
	select UDELAY_TSC
	select UDK_2017_BINDING
	select USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
	select USE_FSP_NOTIFY_PHASE_READY_TO_BOOT
	select USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE
	help
	  Intel Denverton-NS SoC support

if SOC_INTEL_DENVERTON_NS

config CPU_INTEL_NUM_FIT_ENTRIES
	int
	default 1

config ECAM_MMCONF_BASE_ADDRESS
	default 0xe0000000

config ECAM_MMCONF_BUS_NUMBER
	int
	default 256

config FSP_HEADER_PATH
	default "3rdparty/fsp/DenvertonNSFspBinPkg/Include/"

config FSP_FD_PATH
	default "3rdparty/fsp/DenvertonNSFspBinPkg/FspBin/DenvertonNSFsp.fd"

# CAR memory layout on DENVERTON_NS hardware:
## CAR base address - 0xfef00000
## CAR size 1MB - 0x100 (0xfff00)
## coreboot usage:
## DCACHE base - 0xfef00000
## DCACHE size - 0xb0000
## FSP usage:
## FSP base - 0xfefb0000
## FSP size - 0x50000 - 0x100 (0x4ff00)
config MAX_CPUS
	int
	default 16

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 0xfef00000

config DCACHE_RAM_SIZE
	hex
	default 0xb0000 if FSP_CAR
	default 0x100000 if !FSP_CAR

config DCACHE_BSP_STACK_SIZE
	hex
	default 0x10000

config CPU_BCLK_MHZ
	int
	default 100

config CPU_XTAL_HZ
	default 24000000

config SMM_TSEG_SIZE
	hex
	default 0x200000

config SMM_RESERVED_SIZE
	hex
	default 0x000000

config IQAT_ENABLE
	bool "Enable IQAT"
	default y

config HSUART_DEV
	hex
	default 0x1a

choice
	prompt "UART mode selection"
	default NON_LEGACY_UART_MODE

config NON_LEGACY_UART_MODE
	bool "Non Legacy Mode"
	help
	  Disable legacy UART mode

config LEGACY_UART_MODE
	bool "Legacy Mode"
	help
	  Enable legacy UART mode
	select CONSOLE_SERIAL
	select DRIVERS_UART
	select DRIVERS_UART_8250IO
endchoice

config ENABLE_HSUART
	depends on NON_LEGACY_UART_MODE
	bool "Enable High-speed UART debug port selected by UART_FOR_CONSOLE."
	default n
	select CONSOLE_SERIAL
	select DRIVERS_UART
	select DRIVERS_UART_8250MEM

config CONSOLE_UART_BASE_ADDRESS
	depends on ENABLE_HSUART
	hex "MMIO base address for UART"
	default 0xd4000000

choice
	prompt "Cache-as-ram implementation"
	default USE_DENVERTON_NS_CAR_NEM_ENHANCED
	help
	  This option allows you to select how cache-as-ram (CAR) is set up.

config USE_DENVERTON_NS_CAR_NEM_ENHANCED
	bool "Enhanced Non-evict mode"
	select SOC_INTEL_COMMON_BLOCK_CAR
	select INTEL_CAR_NEM_ENHANCED
	help
	  A current limitation of NEM (Non-Evict mode) is that code and data sizes
	  are derived from the requirement to not write out any modified cache line.
	  With NEM, if there is no physical memory behind the cached area,
	  the modified data will be lost and NEM results will be inconsistent.
	  ENHANCED NEM guarantees that modified data is always
	  kept in cache while clean data is replaced.

config USE_DENVERTON_NS_FSP_CAR
	bool "Use FSP CAR"
	select FSP_CAR
	help
	  Use FSP APIs to initialize and tear down the Cache-As-Ram.

endchoice

config IFD_CHIPSET
	string
	default "dnv"

endif ## SOC_INTEL_DENVERTON_NS