# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2018-2019 Texas Instruments Incorporated - http://www.ti.com/
#	Lokesh Vutla <lokeshvutla@ti.com>

choice
	prompt "K3 J721E based boards"
	optional

config TARGET_J721E_A72_EVM
	bool "TI K3 based J721E EVM running on A72"
	select ARM64
	select SOC_K3_J721E
	select BOARD_LATE_INIT
	imply TI_I2C_BOARD_DETECT
	select SYS_DISABLE_DCACHE_OPS

config TARGET_J721E_R5_EVM
	bool "TI K3 based J721E EVM running on R5"
	select CPU_V7R
	select SYS_THUMB_BUILD
	select SOC_K3_J721E
	select K3_LOAD_SYSFW
	select RAM
	select SPL_RAM
	select K3_J721E_DDRSS
	imply SYS_K3_SPL_ATF
	imply TI_I2C_BOARD_DETECT

config TARGET_J7200_A72_EVM
	bool "TI K3 based J7200 EVM running on A72"
	select ARM64
	select SOC_K3_J721E
	select BOARD_LATE_INIT
	imply TI_I2C_BOARD_DETECT
	select SYS_DISABLE_DCACHE_OPS

config TARGET_J7200_R5_EVM
	bool "TI K3 based J7200 EVM running on R5"
	select CPU_V7R
	select SYS_THUMB_BUILD
	select SOC_K3_J721E
	select K3_LOAD_SYSFW
	select RAM
	select SPL_RAM
	select K3_J721E_DDRSS
	imply SYS_K3_SPL_ATF
	imply TI_I2C_BOARD_DETECT

endchoice

if TARGET_J721E_A72_EVM

config SYS_BOARD
       default "j721e"

config SYS_VENDOR
       default "ti"

config SYS_CONFIG_NAME
       default "j721e_evm"

source "board/ti/common/Kconfig"

endif

if TARGET_J721E_R5_EVM

config SYS_BOARD
       default "j721e"

config SYS_VENDOR
       default "ti"

config SYS_CONFIG_NAME
       default "j721e_evm"

config SPL_LDSCRIPT
	default "arch/arm/mach-omap2/u-boot-spl.lds"

source "board/ti/common/Kconfig"

endif

if TARGET_J7200_A72_EVM

config SYS_BOARD
       default "j721e"

config SYS_VENDOR
       default "ti"

config SYS_CONFIG_NAME
       default "j721e_evm"

source "board/ti/common/Kconfig"

endif

if TARGET_J7200_R5_EVM

config SYS_BOARD
       default "j721e"

config SYS_VENDOR
       default "ti"

config SYS_CONFIG_NAME
       default "j721e_evm"

config SPL_LDSCRIPT
	default "arch/arm/mach-omap2/u-boot-spl.lds"

source "board/ti/common/Kconfig"

endif
