config SOC_INTEL_ELKHARTLAKE
	bool
	help
	  Intel Elkhartlake support

if SOC_INTEL_ELKHARTLAKE

config CPU_SPECIFIC_OPTIONS
	def_bool y
	select ACPI_INTEL_HARDWARE_SLEEP_VALUES
	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 DISPLAY_FSP_VERSION_INFO
	select EDK2_CPU_TIMER_LIB if PAYLOAD_EDK2
	select FSP_COMPRESS_FSP_S_LZ4
	select FSP_M_XIP
	select FSP_STATUS_GLOBAL_RESET_REQUIRED_3
	select GENERIC_GPIO_LIB
	select HAVE_FSP_GOP
	select HAVE_SMI_HANDLER
	select IDT_IN_EVERY_STAGE
	select INTEL_CAR_NEM
	select INTEL_DESCRIPTOR_MODE_CAPABLE
	select INTEL_GMA_ACPI
	select INTEL_GMA_ADD_VBT if RUN_FSP_GOP
	select MP_SERVICES_PPI_V1
	select MRC_SETTINGS_PROTECT
	select PARALLEL_MP_AP_WORK
	select PLATFORM_USES_FSP2_1
	select PMC_GLOBAL_RESET_ENABLE_LOCK
	select SOC_INTEL_COMMON
	select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
	select SOC_INTEL_COMMON_BLOCK
	select SOC_INTEL_COMMON_BLOCK_ACPI
	select SOC_INTEL_COMMON_BLOCK_ACPI_CPPC
	select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
	select SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
	select SOC_INTEL_COMMON_BLOCK_ACPI_PEP
	select SOC_INTEL_COMMON_BLOCK_CAR
	select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
	select SOC_INTEL_COMMON_BLOCK_CPU
	select SOC_INTEL_COMMON_BLOCK_CPU_MPINIT
	select SOC_INTEL_COMMON_BLOCK_CPU_SMMRELOCATE
	select SOC_INTEL_COMMON_BLOCK_GPIO_DUAL_ROUTE_SUPPORT
	select SOC_INTEL_COMMON_BLOCK_GSPI_VERSION_2
	select SOC_INTEL_COMMON_BLOCK_HDA
	select HAVE_INTEL_FSP_REPO
	select HECI_DISABLE_USING_SMM if DISABLE_HECI1_AT_PRE_BOOT
	select SOC_INTEL_COMMON_BLOCK_ME_SPEC_15
	select SOC_INTEL_COMMON_BLOCK_PMC_EPOC
	select SOC_INTEL_COMMON_BLOCK_POWER_LIMIT
	select SOC_INTEL_COMMON_BLOCK_SA
	select SOC_INTEL_COMMON_BLOCK_SCS
	select SOC_INTEL_COMMON_BLOCK_SMM
	select SOC_INTEL_COMMON_BLOCK_SMM_IO_TRAP
	select SOC_INTEL_COMMON_FSP_RESET
	select SOC_INTEL_COMMON_PCH_CLIENT
	select SOC_INTEL_COMMON_RESET
	select SOC_INTEL_MEM_MAPPED_PM_CONFIGURATION
	select SSE2
	select SUPPORT_CPU_UCODE_IN_CBFS
	select TSC_MONOTONIC_TIMER
	select UDELAY_TSC
	select UDK_202005_BINDING
	select USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
	select SOC_INTEL_RAPL_DISABLE_VIA_MCHBAR
	select X86_CLFLUSH_CAR

config MAX_CPUS
	int
	default 4

config DCACHE_RAM_BASE
	default 0xfef00000

config DCACHE_RAM_SIZE
	default 0xc0000
	help
	  The size of the cache-as-ram region required during bootblock
	  and/or romstage.

config DCACHE_BSP_STACK_SIZE
	hex
	default 0x30400
	help
	  The amount of anticipated stack usage in CAR by bootblock and
	  other stages. In the case of FSP_USES_CB_STACK default value will be
	  sum of FSP-M stack requirement (192KiB) and CB romstage stack requirement (~1KiB).

config FSP_TEMP_RAM_SIZE
	hex
	default 0x40000
	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.

config IFD_CHIPSET
	string
	default "ehl"

config IED_REGION_SIZE
	hex
	default 0x0

config HEAP_SIZE
	hex
	default 0x8000

config MAX_ROOT_PORTS
	int
	default 7

config MAX_SATA_PORTS
	int
	default 2

config MAX_PCIE_CLOCK_SRC
	int
	default 6

config SMM_TSEG_SIZE
	hex
	default 0x1000000

config SMM_RESERVED_SIZE
	hex
	default 0x200000

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

config ECAM_MMCONF_BASE_ADDRESS
	default 0xc0000000

config CPU_BCLK_MHZ
	int
	default 100

config SOC_INTEL_COMMON_BLOCK_GSPI_CLOCK_MHZ
	int
	default 120

config CPU_XTAL_HZ
	default 38400000

config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ
	int
	default 100

config SOC_INTEL_COMMON_BLOCK_GSPI_MAX
	int
	default 3

config SOC_INTEL_I2C_DEV_MAX
	int
	default 8

config SOC_INTEL_UART_DEV_MAX
	int
	default 3

config CONSOLE_UART_BASE_ADDRESS
	hex
	default 0xfe042000
	depends on INTEL_LPSS_UART_FOR_CONSOLE

# Clock divider parameters for 115200 baud rate
# Baudrate = (UART source clock * M) /(N *16)
# EHL UART source clock: 100MHz
config SOC_INTEL_COMMON_LPSS_UART_CLK_M_VAL
	hex
	default 0x25a

config SOC_INTEL_COMMON_LPSS_UART_CLK_N_VAL
	hex
	default 0x7fff

config VBOOT
	select VBOOT_MUST_REQUEST_DISPLAY
	select VBOOT_STARTS_IN_BOOTBLOCK

config CBFS_SIZE
	default 0x200000

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

config FSP_FD_PATH
	string
	depends on FSP_USE_REPO
	default "3rdparty/fsp/ElkhartLakeFspBinPkg/FspBin/FSPRel.bin"

config PSE_ENABLE
	bool "Enable PSE ARM controller"
	help
	  Enable PSE IP. The PSE describes the integrated programmable
	  service engine that is designed together with x86 Atom cores
	  as an Asymmetric Multi-Processing (AMP) system.

config ADD_PSE_IMAGE_TO_CBFS
	bool "Add PSE Firmware to CBFS"
	depends on PSE_ENABLE
	default n
	help
	  PSE FW binary is required to use PSE dedicated peripherals from
	  x86 subsystem. Once PSE is enabled, the FW will be loaded from
	  CBFS by FSP and executed.

config PSE_IMAGE_FILE
	string "PSE binary path and filename"
	depends on ADD_PSE_IMAGE_TO_CBFS
	help
	  The path and filename of the PSE binary.

config PSE_FW_FILE_SIZE_KIB
	hex "Memory buffer (KiB) for PSE FW image"
	depends on ADD_PSE_IMAGE_TO_CBFS
	default 0x200
	help
	  It is recommended to allocate at least 512 KiB for PSE FW.

config PSE_CONFIG_BUFFER_SIZE_KIB
	hex "Memory buffer (KiB) for PSE config data"
	depends on ADD_PSE_IMAGE_TO_CBFS
	default 0x100
	help
	  It is recommended to allocate at least 256 KiB for PSE config
	  data (FSP will append PSE config data to memory region right
	  after PSE FW memory region).

config EHL_TSN_DRIVER
	bool
	default n
	help
	  Enable TSN GbE driver to provide board specific settings in the GBE MAC.
	  As an example of a possible change, the MAC address could be adjusted.

config SOC_INTEL_ELKHARTLAKE_DEBUG_CONSENT
	int "Debug Consent for EHL"
	# USB DBC is more common for developers so make this default to 3 if
	# SOC_INTEL_DEBUG_CONSENT=y
	default 3 if SOC_INTEL_DEBUG_CONSENT
	default 0
	help
	  This is to control debug interface on SOC.
	  Setting non-zero value will allow to use DBC or DCI to debug SOC.
	  PlatformDebugConsent in FspmUpd.h has the details.

	  Desired platform debug type are
	  0:Disabled, 1:Enabled (DCI OOB+[DbC]), 2:Enabled (DCI OOB),
	  3:Enabled (USB3 DbC), 4:Enabled (XDP/MIPI60), 5:Enabled (USB2 DbC),
	  6:Enable (2-wire DCI OOB), 7:Manual

config PRERAM_CBMEM_CONSOLE_SIZE
	hex
	default 0x1400

config SOC_INTEL_ELKHARTLAKE_TCO_NO_REBOOT_EN
	bool "Disable reset on second TCO expiration"
	depends on SOC_INTEL_COMMON_BLOCK_TCO
	default n
	help
	  Setting this option will prevent a host reset if the TCO timer expires
	  for the second time. Since this feature is not exposed to the OS in the
	  standard TCO interface, this setting can be enabled on firmware level.
	  This might be useful depending on the TCO policy.

config DIMM_SPD_SIZE
	default 512

endif
