if ARCH_EXYNOS

config BOARD_COMMON
	def_bool y
	depends on !TARGET_SMDKV310 && !TARGET_ARNDALE && !TARGET_EXYNOS_MOBILE && !TARGET_E850_96

config SPI_BOOTING
	bool

config USB_BOOTING
	bool

choice
	prompt "EXYNOS architecture type select"
	optional

config ARCH_EXYNOS4
	bool "Exynos4 SoC family"
	select BOARD_EARLY_INIT_F
	select CPU_V7A
	select MMC
	help
	  Samsung Exynos4 SoC family are based on ARM Cortex-A9 CPU. There
	  are multiple SoCs in this family including Exynos4210, Exynos4412,
	  and Exynos4212.

config ARCH_EXYNOS5
	bool "Exynos5 SoC family"
	select BOARD_EARLY_INIT_F
	select CPU_V7A
	select SHA_HW_ACCEL
	select SPI_BOOTING if EXYNOS5_DT
	select USB_BOOTING
	imply CMD_HASH
	imply CRC32_VERIFY
	imply HASH_VERIFY
	imply KEYBOARD
	imply USB_ETHER_ASIX
	imply USB_ETHER_RTL8152
	imply USB_ETHER_SMSC95XX
	select MMC

	help
	  Samsung Exynos5 SoC family are based on ARM Cortex-A15 CPU (and
	  Cortex-A7 CPU in big.LITTLE configuration). There are multiple SoCs
	  in this family including Exynos5250, Exynos5420 and Exynos5800.

config ARCH_EXYNOS7
	bool "Exynos7 SoC family"
	select ARM64
	select BOARD_EARLY_INIT_F
	select MMC
	help
	  Samsung Exynos7 SoC family are based on ARM Cortex-A57 CPU or
	  Cortex-A53 CPU (and some in a big.LITTLE configuration). There are
	  multiple SoCs in this family including Exynos7420.

config ARCH_EXYNOS9
	bool "Exynos9 SoC family"
	select ARM64
	select MMC
	help
	  Samsung Exynos9 SoC family are based on ARMv8 Cortex CPU. There are
	  multiple SoCs in this family including Exynos850.

endchoice

if ARCH_EXYNOS4

config EXYNOS4210
	bool

choice
	prompt "EXYNOS4 board select"

config TARGET_SMDKV310
	bool "Exynos4210 SMDKV310 board"
	select EXYNOS4210
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_TRATS
	select MISC_COMMON
	bool "Exynos4210 Trats board"

config TARGET_S5PC210_UNIVERSAL
	bool "EXYNOS4210 Universal C210 board"
	select MISC_COMMON

config TARGET_ORIGEN
	bool "Exynos4210 Origen board"
	select EXYNOS4210
	select SUPPORT_SPL

config TARGET_TRATS2
	bool "Exynos4412 Trat2 board"
	select MISC_COMMON

config TARGET_ODROID
	bool "Exynos4412 Odroid board"
	select MISC_COMMON

endchoice
endif

if ARCH_EXYNOS5

config EXYNOS5250
	bool

config EXYNOS5420
	bool

config EXYNOS5_DT
	bool

config SPL_GPIO
	default y

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

choice
	prompt "EXYNOS5 board select"

config TARGET_ODROID_XU3
	bool "Exynos5422 Odroid board"
	select EXYNOS5_DT
	select EXYNOS5420
	select MISC_COMMON
	select OF_CONTROL

config TARGET_ARNDALE
	bool "Exynos5250 Arndale board"
	select ARM_ERRATA_773022
	select ARM_ERRATA_774769
	select CPU_V7_HAS_NONSEC
	select CPU_V7_HAS_VIRT
	select EXYNOS5250
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_SMDK5250
	bool "SMDK5250 board"
	select EXYNOS5_DT
	select EXYNOS5250
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_SNOW
	bool "Snow board"
	select EXYNOS5_DT
	select EXYNOS5250
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_SPRING
	bool "Spring board"
	select EXYNOS5_DT
	select EXYNOS5250
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_SMDK5420
	bool "SMDK5420 board"
	select EXYNOS5_DT
	select EXYNOS5420
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_PEACH_PI
	bool "Peach Pi board"
	select EXYNOS5_DT
	select EXYNOS5420
	select OF_CONTROL
	select SUPPORT_SPL

config TARGET_PEACH_PIT
	bool "Peach Pit board"
	select EXYNOS5_DT
	select EXYNOS5420
	select OF_CONTROL
	select SUPPORT_SPL

endchoice
endif

if ARCH_EXYNOS7

choice
	prompt "EXYNOS7 board select"

config TARGET_ESPRESSO7420
	bool "ESPRESSO7420 board"
	select ARM64
	select ARMV8_MULTIENTRY
	select CLK_EXYNOS
	select OF_CONTROL
	select PINCTRL
	select PINCTRL_EXYNOS7420
	select SUPPORT_SPL

config  TARGET_A5Y17LTE
	bool "Samsung SM-A520F board"
	select ARM64
	select CLK_EXYNOS
	select OF_CONTROL
	select PINCTRL
	select PINCTRL_EXYNOS78x0
	select SUPPORT_SPL

config  TARGET_A7Y17LTE
	bool "Samsung SM-A720F board"
	select ARM64
	select CLK_EXYNOS
	select OF_CONTROL
	select PINCTRL
	select PINCTRL_EXYNOS78x0
	select SUPPORT_SPL

config  TARGET_A3Y17LTE
	bool "Samsung SM-A320F board"
	select ARM64
	select CLK_EXYNOS
	select OF_CONTROL
	select PINCTRL
	select PINCTRL_EXYNOS78x0
	select SUPPORT_SPL

endchoice
endif

if ARCH_EXYNOS9

choice
	prompt "EXYNOS9 board select"

config TARGET_E850_96
	bool "WinLink E850-96 board"
	select ARM64
	select CLK_EXYNOS
	select OF_CONTROL
	select PINCTRL
	select PINCTRL_EXYNOS850
	imply OF_UPSTREAM
	imply DM_RNG
	imply RNG_EXYNOS

endchoice
endif

config TARGET_EXYNOS_MOBILE
	bool "Samsung Exynos Generic Boards (for mobile devices)"
	select ARM64
	select BOARD_EARLY_INIT_F
	select CLK_EXYNOS
	select LINUX_KERNEL_IMAGE_HEADER
	select OF_CONTROL

config SYS_SOC
	default "exynos"

config EXYNOS_ACE_SHA
	bool "Advanced Crypto Engine SHA support"
	depends on (ARCH_EXYNOS4 || ARCH_EXYNOS5) && (LIB_HW_RAND || SHA_HW_ACCEL)
	default y if ARCH_EXYNOS5

config EXYNOS_TMU
	bool "Exynos5 thermal management unit support"
	depends on ARCH_EXYNOS5
	default y

source "board/samsung/smdkv310/Kconfig"
source "board/samsung/trats/Kconfig"
source "board/samsung/universal_c210/Kconfig"
source "board/samsung/origen/Kconfig"
source "board/samsung/trats2/Kconfig"
source "board/samsung/odroid/Kconfig"
source "board/samsung/arndale/Kconfig"
source "board/samsung/smdk5250/Kconfig"
source "board/samsung/smdk5420/Kconfig"
source "board/samsung/espresso7420/Kconfig"
source "board/samsung/axy17lte/Kconfig"
source "board/samsung/e850-96/Kconfig"
source "board/samsung/exynos-mobile/Kconfig"

endif
