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

config SOC_AMD_TURIN_POC
	bool

if SOC_AMD_TURIN_POC

config SOC_SPECIFIC_OPTIONS
	def_bool y
	select ACPI_SOC_NVS
	select ARCH_X86
	select DEFAULT_X2APIC
	select BOOT_DEVICE_SUPPORTS_WRITES if BOOT_DEVICE_SPI_FLASH
	select CACHE_MRC_SETTINGS
	select DRIVERS_USB_ACPI
	select DRIVERS_USB_PCI_XHCI
	select GENERIC_GPIO_LIB
	select HAVE_ACPI_TABLES
	select HAVE_CF9_RESET
	select HAVE_EM100_SUPPORT
	select HAVE_X86_64_SUPPORT
	select HAVE_SMI_HANDLER if !NO_SMM
	select IDT_IN_EVERY_STAGE
	select PARALLEL_MP_AP_WORK
	select PROVIDES_ROM_SHARING
	select RTC
	select SOC_AMD_COMMON
	select SOC_AMD_COMMON_BLOCK_ACPI
	select SOC_AMD_COMMON_BLOCK_ACPIMMIO
	select SOC_AMD_COMMON_BLOCK_ACPIMMIO_PM_IO_ACCESS
	select SOC_AMD_COMMON_BLOCK_ACPI_CPU_POWER_STATE
	select SOC_AMD_COMMON_BLOCK_ACPI_IVRS
	select SOC_AMD_COMMON_BLOCK_ACPI_MADT
	select SOC_AMD_COMMON_BLOCK_AOAC
	select SOC_AMD_COMMON_BLOCK_APOB
	select SOC_AMD_COMMON_BLOCK_BANKED_GPIOS
	select SOC_AMD_COMMON_BLOCK_CPUFREQ_FAM1AH
	select SOC_AMD_COMMON_BLOCK_DATA_FABRIC
	select SOC_AMD_COMMON_BLOCK_DATA_FABRIC_DOMAIN
	select SOC_AMD_COMMON_BLOCK_DATA_FABRIC_MULTI_PCI_SEGMENT
	select SOC_AMD_COMMON_BLOCK_DATA_FABRIC_EXTENDED_MMIO
	select SOC_AMD_COMMON_BLOCK_HAS_ESPI
	select SOC_AMD_COMMON_BLOCK_HAS_ESPI_ALERT_ENABLE
	select SOC_AMD_COMMON_BLOCK_ESPI_EXTENDED_DECODE_RANGES
	select SOC_AMD_COMMON_BLOCK_ESPI_RETAIN_PORT80_EN
	select SOC_AMD_COMMON_BLOCK_I2C
	select SOC_AMD_COMMON_BLOCK_I3C
	select SOC_AMD_COMMON_BLOCK_IOMMU
	select SOC_AMD_COMMON_BLOCK_LPC
	select SOC_AMD_COMMON_BLOCK_MCAX
	select SOC_AMD_COMMON_BLOCK_NONCAR
	select SOC_AMD_COMMON_BLOCK_PCI
	select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
	select SOC_AMD_COMMON_BLOCK_PM
	select SOC_AMD_COMMON_BLOCK_PSP_GEN2
	select SOC_AMD_COMMON_BLOCK_PSP_SMI
	select SOC_AMD_COMMON_BLOCK_PSP_SPL
	select SOC_AMD_COMMON_BLOCK_SMBUS
	select SOC_AMD_COMMON_BLOCK_SMI
	select SOC_AMD_COMMON_BLOCK_SMM
	select SOC_AMD_COMMON_BLOCK_SMU
	select SOC_AMD_COMMON_BLOCK_SMU_SX_ENTRY
	select SOC_AMD_COMMON_BLOCK_SPI
	select SOC_AMD_COMMON_BLOCK_SVI3
	select SOC_AMD_COMMON_BLOCK_TSC
	select SOC_AMD_COMMON_BLOCK_UART
	select SOC_AMD_COMMON_BLOCK_UCODE
	select SOC_AMD_COMMON_BLOCK_USE_ESPI
	select SOC_AMD_COMMON_BLOCK_XHCI
	select SOC_AMD_OPENSIL
	select SOC_AMD_OPENSIL_TURIN_POC
	select OPENSIL_DRIVER
	select DRAM_SUPPORT_DDR5
	select SSE2
	select X86_AMD_FIXED_MTRRS
	select X86_INIT_NEED_1_SIPI
	select VBOOT_X86_SHA256_ACCELERATION if VBOOT
	select UDK_2017_BINDING

config USE_X86_64_SUPPORT
	default y

config CHIPSET_DEVICETREE
	string
	default "soc/amd/turin_poc/chipset.cb"

config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ
	int
	default 150

config EARLY_RESERVED_DRAM_BASE
	hex
	default 0x7000000
	help
	  This variable defines the base address of the DRAM which is reserved
	  for usage by coreboot in early stages (i.e. before ramstage is up).
	  This memory gets reserved in BIOS tables to ensure that the OS does
	  not use it, thus preventing corruption of OS memory in case of S3
	  resume.

config EARLYRAM_BSP_STACK_SIZE
	hex
	default 0x10000

config STACK_SIZE
	hex
	default 0x10000

config MAX_CPUS
	int
	default 384

config PSP_APOB_DRAM_ADDRESS
	hex
	default 0x7010000
	help
	  Location in DRAM where the PSP will copy the AGESA PSP Output
	  Block.

config PSP_APOB_DRAM_SIZE
	hex
	default 0xd0000

config MRC_SETTINGS_CACHE_SIZE
	hex
	default 0xd0000

config PRERAM_CBMEM_CONSOLE_SIZE
	hex
	default 0x1600
	help
	  Increase this value if preram cbmem console is getting truncated

config C_ENV_BOOTBLOCK_SIZE
	hex
	default 0x20000
	help
	  Sets the size of the bootblock stage that should be loaded in DRAM.
	  This variable controls the DRAM allocation size in linker script
	  for bootblock stage.

config ROMSTAGE_ADDR
	hex
	default 0x7150000
	help
	  Sets the address in DRAM where romstage should be loaded.

config ROMSTAGE_SIZE
	hex
	default 0x70000
	help
	  Sets the size of DRAM allocation for romstage in linker script.

config ECAM_MMCONF_BASE_ADDRESS
	hex
	default 0xE0000000

config ECAM_MMCONF_BUS_NUMBER
	int
	default 256

config DISABLE_KEYBOARD_RESET_PIN
	bool
	help
	  Instruct the SoC to not use the state of GPIO_129 as keyboard reset.

config CPU_PT_ROM_MAP_GB
	default 1024

menu "PSP Configuration Options"

config AMDFW_CONFIG_FILE
	string
	default "src/soc/amd/turin_poc/fw.cfg"

config PSP_DISABLE_POSTCODES
	bool "Disable PSP post codes"
	help
	  Disables the output of port80 post codes from PSP.

config PSP_INIT_ESPI
	bool "Initialize eSPI in PSP Stage 2 Boot Loader"
	help
	  Select to initialize the eSPI controller in the PSP Stage 2 Boot
	  Loader.

config PSP_UNLOCK_SECURE_DEBUG
	bool
	default y

config HAVE_PSP_WHITELIST_FILE
	bool "Include a debug whitelist file in PSP build"
	default n
	help
	  Support secured unlock prior to reset using a whitelisted
	  serial number. This feature requires a signed whitelist image
	  and bootloader from AMD.

	  If unsure, answer 'n'

config PSP_WHITELIST_FILE
	string "Debug whitelist file path"
	depends on HAVE_PSP_WHITELIST_FILE

config PSP_SOFTFUSE_BITS
	string "PSP Soft Fuse bits to enable"
	default ""
	help
	  Space separated list of Soft Fuse bits to enable.
	  Bit 0:  Enable secure debug (Set by PSP_UNLOCK_SECURE_DEBUG)
	  Bit 7:  Disable PSP postcodes on Renoir and newer chips only
	          (Set by PSP_DISABLE_PORT80)
	  Bit 15: PSP debug output destination:
	          0=SoC MMIO UART, 1=IO port 0x3F8

	  See #57299 (NDA) for additional bit definitions.

config PSPV2_MBOX_CMD_OFFSET
	hex
	default 0x10970

endmenu

config CONSOLE_UART_BASE_ADDRESS
	depends on CONSOLE_SERIAL && AMD_SOC_CONSOLE_UART
	hex
	default 0xfedc9000 if UART_FOR_CONSOLE = 0
	default 0xfedca000 if UART_FOR_CONSOLE = 1
	default 0xfedce000 if UART_FOR_CONSOLE = 2
	default 0xfedcf000 if UART_FOR_CONSOLE = 3

config SMM_TSEG_SIZE
	hex
	default 0x800000

config ACPI_SSDT_PSD_INDEPENDENT
	bool "Allow core p-state independent transitions"
	default y
	help
	  AMD recommends the ACPI _PSD object to be configured to cause
	  cores to transition between p-states independently. A vendor may
	  choose to generate _PSD object to allow cores to transition together.

config ACPI_BERT
	bool "Build ACPI BERT Table"
	default y
	depends on HAVE_ACPI_TABLES
	help
	  Report Machine Check errors identified in POST to the OS in an
	  ACPI Boot Error Record Table.

config ACPI_BERT_SIZE
	hex
	default 0x4000 if ACPI_BERT
	default 0x0
	help
	  Specify the amount of DRAM reserved for gathering the data used to
	  generate the ACPI table.

config ASYNC_FILE_LOADING
	bool "Loads files from SPI asynchronously"
	select COOP_MULTITASKING
	select SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA
	select CBFS_PRELOAD
	help
	  When enabled, the platform will use the LPC SPI DMA controller to
	  asynchronously load contents from the SPI ROM. This will improve
	  boot time because the CPUs can be performing useful work while the
	  SPI contents are being preloaded.

config CBFS_CACHE_SIZE
	hex
	default 0x40000 if CBFS_PRELOAD

config VBOOT
	select VBOOT_STARTS_IN_BOOTBLOCK
	select VBOOT_VBNV_CMOS
	select VBOOT_VBNV_CMOS_BACKUP_TO_FLASH

config RO_REGION_ONLY
	string
	depends on VBOOT_SLOTS_RW_AB || VBOOT_SLOTS_RW_A
	default "apu/amdfw"

config DISABLE_SPI_FLASH_ROM_SHARING
	def_bool n
	help
	  Instruct the chipset to not honor the EGPIO67_SPI_ROM_REQ pin
	  which indicates a board level ROM transaction request. This
	  removes arbitration with board and assumes the chipset controls
	  the SPI flash bus entirely.

config SERIRQ_CONTINUOUS_MODE
	bool
	default n
	help
	  Set this option to y for serial IRQ in continuous mode.
	  Otherwise it is in quiet mode.

endif # SOC_AMD_TURIN_POC
