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"

config SOC_K3_J721E
	bool "TI's K3 based J721E SoC Family Support"

endchoice

config SYS_SOC
	default "k3"

config SYS_K3_NON_SECURE_MSRAM_SIZE
	hex
	default 0x80000 if SOC_K3_AM6
	default 0x100000 if SOC_K3_J721E
	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 if SOC_K3_AM6
	default 0xc0000 if SOC_K3_J721E
	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
	default 0x40280000 if SOC_K3_J721E
	help
	  Describes the base address of MCU Scratchpad RAM.

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

config SYS_K3_BOOT_PARAM_TABLE_INDEX
	hex
	default 0x41c7fbfc if SOC_K3_AM6
	default 0x41cffc00 if SOC_K3_J721E
	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	276000
	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"
source "board/ti/j721e/Kconfig"
endif
