if ARCH_K3

choice
	prompt "Texas Instruments' K3 based SoC select"
	optional

config SOC_K3_AM6
	bool "TI's K3 based AM6 SoC Family Support"

endchoice

config SYS_SOC
	default "k3"

config SYS_K3_NON_SECURE_MSRAM_SIZE
	hex
	default 0x80000
	help
	  Describes the total size of the MCU MSRAM. This doesn't
	  specify the total size of SPL as ROM can use some part
	  of this RAM. Once ROM gives control to SPL then this
	  complete size can be usable.

config SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE
	hex
	default 0x58000
	help
	  Describes the maximum size of the image that ROM can download
	  from any boot media.

config SYS_K3_MCU_SCRATCHPAD_BASE
	hex
	default 0x40280000 if SOC_K3_AM6
	help
	  Describes the base address of MCU Scratchpad RAM.

config SYS_K3_MCU_SCRATCHPAD_SIZE
	hex
	default 0x200 if SOC_K3_AM6
	help
	  Describes the size of MCU Scratchpad RAM.

config SYS_K3_BOOT_PARAM_TABLE_INDEX
	hex
	default 0x41c7fbfc if SOC_K3_AM6
	help
	  Address at which ROM stores the value which determines if SPL
	  is booted up by primary boot media or secondary boot media.

config SYS_K3_KEY
	string "Key used to generate x509 certificate"
	help
	  This option enables to provide a custom key that can be used for
	  generating x509 certificate for spl binary. If not needed leave
	  it blank so that a random key is generated and used.

config SYS_K3_BOOT_CORE_ID
	int
	default 16

config K3_LOAD_SYSFW
	bool
	depends on SPL

config K3_SYSFW_IMAGE_NAME
	string "File name of SYSFW firmware and configuration blob"
	depends on K3_LOAD_SYSFW
	default	"sysfw.itb"
	help
	  Filename of the combined System Firmware and configuration image tree
	  blob to be loaded when booting from a filesystem.

config K3_SYSFW_IMAGE_MMCSD_RAW_MODE_SECT
	hex "MMC sector to load SYSFW firmware and configuration blob from"
	depends on K3_LOAD_SYSFW && SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
	default 0x3600
	help
	  Address on the MMC to load the combined System Firmware and
	  configuration image tree blob from, when the MMC is being used
	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).

config K3_SYSFW_IMAGE_MMCSD_RAW_MODE_PART
	hex "MMC partition to load SYSFW firmware and configuration blob from"
	depends on K3_LOAD_SYSFW && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
	default 2
	help
	  Partition on the MMC to the combined System Firmware and configuration
	  image tree blob from, when the MMC is being used in raw mode.

config K3_SYSFW_IMAGE_SIZE_MAX
	int "Amount of memory dynamically allocated for loading SYSFW blob"
	depends on K3_LOAD_SYSFW
	default	269000
	help
	  Amount of memory (in bytes) reserved through dynamic allocation at
	  runtime for loading the combined System Firmware and configuration image
	  tree blob. Keep it as tight as possible, as this directly affects the
	  overall SPL memory footprint.

config SYS_K3_SPL_ATF
	bool "Start Cortex-A from SPL"
	depends on SPL && CPU_V7R
	help
	  Enabling this will try to start Cortex-A (typically with ATF)
	  after SPL from R5.

source "board/ti/am65x/Kconfig"
endif
