if ARCH_MVEBU

config HAVE_MVEBU_EFUSE
	bool

config ARMADA_32BIT
	bool
	select ARCH_MISC_INIT
	select BOARD_EARLY_INIT_F
	select CPU_V7A
	select SPL_DM if SPL
	select SPL_DM_SEQ_ALIAS if SPL
	select SPL_OF_CONTROL if SPL
	select SPL_SIMPLE_BUS if SPL
	select SUPPORT_SPL
	select TRANSLATION_OFFSET

config ARMADA_64BIT
	bool
	select ARM64

# ARMv7 SoCs...
config ARMADA_375
	bool
	select ARMADA_32BIT

config ARMADA_38X
	bool
	select ARMADA_32BIT
	select HAVE_MVEBU_EFUSE

config ARMADA_38X_HS_IMPEDANCE_THRESH
	hex  "Armada 38x USB 2.0 High-Speed Impedance Threshold (0x0 - 0x7)"
	depends on ARMADA_38X
	default 0x6
	range 0x0 0x7

config ARMADA_XP
	bool
	select ARMADA_32BIT

# ARMv8 SoCs...
config ARMADA_3700
	bool
	select ARM64

# Armada 7K and 8K are very similar - use only one Kconfig symbol for both
config ARMADA_8K
	bool
	select ARM64

# Armada PLL frequency (used for NAND clock generation)
config SYS_MVEBU_PLL_CLOCK
	int
	default "2000000000" if ARMADA_XP || ARMADA_3700 || ARMADA_8K || ARMADA_MSYS
	default "1000000000" if ARMADA_38X || ARMADA_375

# Armada XP/38x SoC types...
config MV78230
	bool
	select ARMADA_XP

config MV78260
	bool
	select ARMADA_XP
	imply CMD_SATA

config MV78460
	bool
	select ARMADA_XP

config ARMADA_MSYS
	bool
	select ARMADA_32BIT

config 98DX4251
	bool
	select ARMADA_MSYS

config 98DX3336
	bool
	select ARMADA_MSYS

config 98DX3236
	bool
	select ARMADA_MSYS

config 88F6820
	bool
	select ARMADA_38X

choice
	prompt "Armada XP/375/38x/3700/7K/8K board select"
	optional

config TARGET_CLEARFOG
	bool "Support ClearFog"
	select 88F6820
	select BOARD_LATE_INIT

config TARGET_HELIOS4
	bool "Support Helios4"
	select 88F6820

config TARGET_MVEBU_ARMADA_37XX
	bool "Support Armada 37xx platforms"
	select ARMADA_3700
	imply SCSI

config TARGET_DB_88F6720
	bool "Support DB-88F6720 Armada 375"
	select ARMADA_375

config TARGET_DB_88F6820_GP
	bool "Support DB-88F6820-GP"
	select 88F6820

config TARGET_DB_88F6820_AMC
	bool "Support DB-88F6820-AMC"
	select 88F6820

config TARGET_TURRIS_OMNIA
	bool "Support Turris Omnia"
	select 88F6820
	select BOARD_LATE_INIT
	select DM_I2C
	select I2C_MUX
	select I2C_MUX_PCA954x
	select SPL_I2C_MUX
	select SYS_I2C_MVTWSI
	select ATSHA204A

config TARGET_TURRIS_MOX
	bool "Support Turris Mox"
	select ARMADA_3700

config TARGET_MVEBU_ARMADA_8K
	bool "Support Armada 7k/8k platforms"
	select ARMADA_8K
	select BOARD_LATE_INIT
	imply SCSI

config TARGET_OCTEONTX2_CN913x
	bool "Support CN913x platforms"
	select ARMADA_8K
	imply BOARD_EARLY_INIT_R
	select BOARD_LATE_INIT
	imply SCSI

config TARGET_DB_MV784MP_GP
	bool "Support db-mv784mp-gp"
	select MV78460

config TARGET_DS414
	bool "Support Synology DS414"
	select MV78230

config TARGET_MAXBCM
	bool "Support maxbcm"
	select MV78460

config TARGET_THEADORABLE
	bool "Support theadorable Armada XP"
	select BOARD_LATE_INIT if USB
	select MV78260
	imply CMD_SATA

config TARGET_CONTROLCENTERDC
	bool "Support CONTROLCENTERDC"
	select 88F6820

config TARGET_X530
	bool "Support Allied Telesis x530"
	select 88F6820

config TARGET_DB_XC3_24G4XG
	bool "Support DB-XC3-24G4XG"
	select 98DX3336

config TARGET_CRS3XX_98DX3236
	bool "Support CRS3XX-98DX3236"
	select 98DX3236

endchoice

choice
	prompt "DDR bus width"
	default DDR_64BIT
	depends on ARMADA_XP

config DDR_64BIT
	bool "64bit bus width"

config DDR_32BIT
	bool "32bit bus width"

endchoice

config DDR_LOG_LEVEL
	int "DDR training code log level"
	depends on ARMADA_XP
	default 0
	range 0 3
	help
	  Amount of information provided on error while running the DDR
	  training code.  At level 0, provides an error code in a case of
	  failure, RL, WL errors and other algorithm failure.  At level 1,
	  provides the D-Unit setup (SPD/Static configuration).  At level 2,
	  provides the windows margin as a results of DQS centeralization.
	  At level 3, rovides the windows margin of each DQ as a results of
	  DQS centeralization.

config SYS_BOARD
	default "clearfog" if TARGET_CLEARFOG
	default "helios4" if TARGET_HELIOS4
	default "mvebu_armada-37xx" if TARGET_MVEBU_ARMADA_37XX
	default "db-88f6720" if TARGET_DB_88F6720
	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
	default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
	default "turris_omnia" if TARGET_TURRIS_OMNIA
	default "turris_mox" if TARGET_TURRIS_MOX
	default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
	default "octeontx2_cn913x" if TARGET_OCTEONTX2_CN913x
	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
	default "ds414" if TARGET_DS414
	default "maxbcm" if TARGET_MAXBCM
	default "theadorable" if TARGET_THEADORABLE
	default "a38x" if TARGET_CONTROLCENTERDC
	default "x530" if TARGET_X530
	default "db-xc3-24g4xg" if TARGET_DB_XC3_24G4XG
	default "crs3xx-98dx3236" if TARGET_CRS3XX_98DX3236

config SYS_CONFIG_NAME
	default "clearfog" if TARGET_CLEARFOG
	default "helios4" if TARGET_HELIOS4
	default "mvebu_armada-37xx" if TARGET_MVEBU_ARMADA_37XX
	default "db-88f6720" if TARGET_DB_88F6720
	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
	default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
	default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
	default "mvebu_armada-8k" if TARGET_OCTEONTX2_CN913x
	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
	default "ds414" if TARGET_DS414
	default "maxbcm" if TARGET_MAXBCM
	default "theadorable" if TARGET_THEADORABLE
	default "turris_omnia" if TARGET_TURRIS_OMNIA
	default "turris_mox" if TARGET_TURRIS_MOX
	default "controlcenterdc" if TARGET_CONTROLCENTERDC
	default "x530" if TARGET_X530
	default "db-xc3-24g4xg" if TARGET_DB_XC3_24G4XG
	default "crs3xx-98dx3236" if TARGET_CRS3XX_98DX3236

config SYS_VENDOR
	default "Marvell" if TARGET_DB_MV784MP_GP
	default "Marvell" if TARGET_MVEBU_ARMADA_37XX
	default "Marvell" if TARGET_DB_88F6720
	default "Marvell" if TARGET_DB_88F6820_GP
	default "Marvell" if TARGET_DB_88F6820_AMC
	default "Marvell" if TARGET_MVEBU_ARMADA_8K
	default "Marvell" if TARGET_OCTEONTX2_CN913x
	default "Marvell" if TARGET_DB_XC3_24G4XG
	default "Marvell" if TARGET_MVEBU_DB_88F7040
	default "solidrun" if TARGET_CLEARFOG
	default "kobol" if TARGET_HELIOS4
	default "Synology" if TARGET_DS414
	default "CZ.NIC" if TARGET_TURRIS_OMNIA
	default "CZ.NIC" if TARGET_TURRIS_MOX
	default "gdsys" if TARGET_CONTROLCENTERDC
	default "alliedtelesis" if TARGET_X530
	default "mikrotik" if TARGET_CRS3XX_98DX3236

config SYS_SOC
	default "mvebu"

choice
	prompt "Boot method"
	depends on SPL

config MVEBU_SPL_BOOT_DEVICE_SPI
	bool "SPI NOR flash"
	imply ENV_IS_IN_SPI_FLASH
	imply SPL_DM_SPI
	imply SPL_SPI_FLASH_SUPPORT
	imply SPL_SPI_LOAD
	imply SPL_SPI
	select SPL_BOOTROM_SUPPORT

config MVEBU_SPL_BOOT_DEVICE_MMC
	bool "SDIO/MMC card"
	imply ENV_IS_IN_MMC
	# GPIO needed for eMMC/SD card presence detection
	imply SPL_DM_GPIO
	imply SPL_DM_MMC
	imply SPL_GPIO
	imply SPL_LIBDISK_SUPPORT
	imply SPL_MMC
	select SPL_BOOTROM_SUPPORT

config MVEBU_SPL_BOOT_DEVICE_SATA
	bool "SATA"
	imply SPL_SATA_SUPPORT
	imply SPL_LIBDISK_SUPPORT
	select SPL_BOOTROM_SUPPORT

config MVEBU_SPL_BOOT_DEVICE_UART
	bool "UART"
	select SPL_BOOTROM_SUPPORT

endchoice

config MVEBU_EFUSE
	bool "Enable eFuse support"
	depends on HAVE_MVEBU_EFUSE
	help
	  Enable support for reading and writing eFuses on mvebu SoCs.

config MVEBU_EFUSE_FAKE
	bool "Fake eFuse access (dry run)"
	depends on MVEBU_EFUSE
	help
	  This enables a "dry run" mode where eFuses are not really programmed.
	  Instead the eFuse accesses are emulated by writing to and reading
	  from a memory block.
	  This is can be used for testing prog scripts.

config SECURED_MODE_IMAGE
	bool "Build image for trusted boot"
	default false
	depends on 88F6820
	help
	  Build an image that employs the ARMADA SoC's trusted boot framework
	  for securely booting images.

config SECURED_MODE_CSK_INDEX
	int "Index of active CSK"
	default 0
	depends on SECURED_MODE_IMAGE

source "board/solidrun/clearfog/Kconfig"
source "board/kobol/helios4/Kconfig"

endif
