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

config IDS_OPTIONS_HOOKED_UP
	bool
	help
	  to Kconfig options.
	  Historically, IDS configuration was defined in a mainboard-specific
	  `OptionsIds.h` header. Select this on platforms where IDS config is
	  hooked up to Kconfig options instead.

if IDS_OPTIONS_HOOKED_UP

config IDS_ENABLED
	bool "Enable AGESA IDS (Integrated Debug Services) support"
	default y
	help
	  This is the master switch for the IDS sub-system. Use this option to
	  enable or remove the entire IDS feature set. This switch must be TRUE
	  for any of the other options to function.

comment "Warning: IDS options may not work. Enable at your own risk!"
	depends on IDS_ENABLED

config IDS_CONTROL_ENABLED
	bool "Enable IDS User Interface controls"
	depends on IDS_ENABLED
	help
	  This is the main switch for the IDS configuration controls. This
	  switch must be TRUE for any of the configuration controls to function.

	  This seems to allow AGESA to retrieve settings from CMOS.

config IDS_PERF_ANALYSIS
	bool "Enable IDS performance analysis"
	depends on IDS_ENABLED
	help
	  This is the main switch for the IDS performance analysis controls,
	  macros and support code needed to enable time data gathering. This
	  switch must be TRUE for any of the performance analysis features to
	  function.

config IDS_TRACING_ENABLED
	bool "Enable IDS console"
	depends on IDS_ENABLED
	help
	  This is the main switch for the IDS console controls, macros and
	  support code needed to enable tracing of algorithms. This switch
	  must be TRUE for any of the tracing features to function.

config IDS_TRACING_CONSOLE_SERIAL
	bool "Use serial port as IDS console"
	depends on IDS_TRACING_ENABLED
	default DRIVERS_UART_8250IO && CONSOLE_SERIAL
	help
	  Use an I/O-mapped serial port to output IDS messages.

endif # IDS_OPTIONS_HOOKED_UP

choice
	prompt "DDR3 memory profile"
	default CPU_AMD_AGESA_OPENSOURCE_MEM_JEDEC
	help
	  Choose the DDR3 memory profile to use for your RAM sticks, e.g. XMP 1.
	  XMP support is experimental, and your PC will fail booting if you choose
	  a profile which does not exist on ANY of your RAM sticks! If in doubt
	  check their SPD Data using a coreboot's great fork of memtest86+ 5.01.

config CPU_AMD_AGESA_OPENSOURCE_MEM_JEDEC
	bool "JEDEC"
	help
	  JEDEC memory profile, standard and stable. Is guaranteed to be working.

config CPU_AMD_AGESA_OPENSOURCE_MEM_XMP_1
	bool "XMP 1"
	help
	  XMP 1 memory profile. Check that it exists on ALL of your RAM sticks!

config CPU_AMD_AGESA_OPENSOURCE_MEM_XMP_2
	bool "XMP 2"
	help
	  XMP 2 memory profile. Check that it exists on ALL of your RAM sticks!

config CPU_AMD_AGESA_OPENSOURCE_MEM_CUSTOM
	bool "CUSTOM"
	help
	  Custom memory profile. Use the XMP SPD values as the base, if available.

endchoice

if CPU_AMD_AGESA_OPENSOURCE_MEM_CUSTOM

config CUSTOM_SPD_DIVIDENT
	int "[10]: Medium Timebase (MTB) Dividend"
	default 1
	range 1 255

config CUSTOM_SPD_DIVISOR
	int "[11]: Medium Timebase (MTB) Divisor"
	default 14
	range 1 255

config CUSTOM_SPD_TCK
	int "[12]: SDRAM Minimum Cycle Time, tCK"
	default 15
	range 1 255

config CUSTOM_SPD_CASLO
	int "[14]: CAS Latencies Supported, Lower Byte"
	default 124
	range 0 255

config CUSTOM_SPD_CASHI
	int "[15]: CAS Latencies Supported, Higher Byte"
	default 0
	range 0 255

config CUSTOM_SPD_TAA
	int "[16]: Min CAS Latency Time, tAA"
	default 132
	range 1 255

config CUSTOM_SPD_TWR
	int "[17]: Min Write Recovery Time, tWR"
	default 210
	range 1 255

config CUSTOM_SPD_TRCD
	int "[18]: Min RAS# to CAS# Delay Time, tRCD"
	default 132
	range 1 255

config CUSTOM_SPD_TRRD
	int "[19]: Min Row Active to Row Active Delay Time, tRRD"
	default 84
	range 1 255

config CUSTOM_SPD_TRP
	int "[20]: Min Row Precharge Delay Time, tRP"
	default 132
	range 1 255

config CUSTOM_SPD_UPPER_TRC
	int "[21][7:4]: Min Active to Active/Refresh Delay, UPPER tRC"
	default 2
	range 0 16

config CUSTOM_SPD_UPPER_TRAS
	int "[21][3:0]: Min Active to Precharge Delay Time, UPPER tRAS"
	default 1
	range 0 16

config CUSTOM_SPD_TRAS
	int "[22]: Min Active to Precharge Delay Time, LOWER tRAS"
	default 138
	range 1 255

config CUSTOM_SPD_TRC
	int "[23]: Min Active to Active/Refresh Delay, LOWER tRC"
	default 181
	range 1 255

if CPU_AMD_AGESA_FAMILY16_KB

config CUSTOM_SPD_TRFC_LO
	int "[24]: Min Refresh Recovery Delay Time, LOWER tRFC"
	default 56
	range 1 255

config CUSTOM_SPD_TRFC_HI
	int "[25]: Min Refresh Recovery Delay Time, UPPER tRFC"
	default 14
	range 0 255

endif

config CUSTOM_SPD_TWTR
	int "[26]: Min Internal Write to Read Command Delay, tWTR"
	default 105
	range 1 255

config CUSTOM_SPD_TRTP
	int "[27]: Min Internal Read to Precharge Command Delay, tRTP"
	default 105
	range 1 255

config CUSTOM_SPD_UPPER_TFAW
	int "[28][3:0]: Min Four Activate Window Delay, UPPER tFAW"
	default 1
	range 0 16

config CUSTOM_SPD_TFAW
	int "[29]: Min Four Activate Window Delay Time, tFAW"
	default 164
	range 1 255

endif