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_SKIP_LOWLEVEL_INIT if SPL
	select SPL_SIMPLE_BUS if SPL
	select SUPPORT_SPL
	select SYS_L2_PL310 if !SYS_L2CACHE_OFF
	select TRANSLATION_OFFSET
	select SPL_SYS_NO_VECTOR_TABLE if SPL
	select ARCH_VERY_EARLY_INIT

# 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
	select HAVE_MVEBU_EFUSE

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

config ALLEYCAT_5
	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

config CUSTOMER_BOARD_SUPPORT
	bool

choice
	prompt "Armada XP/375/38x/3700/7K/8K/Alleycat-5 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_DRIVERS_MISC
	select SPL_I2C_MUX
	select SPL_SYS_MALLOC_SIMPLE
	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_MVEBU_ALLEYCAT5
	bool "Support AlleyCat 5 platforms"
	select ALLEYCAT_5

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 BOARD_ECC_SUPPORT
	select MV78460

config TARGET_DS414
	bool "Support Synology DS414"
	select MV78230

config TARGET_MAXBCM
	bool "Support maxbcm"
	select BOARD_ECC_SUPPORT
	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
	select CUSTOMER_BOARD_SUPPORT

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 DDR_RESET_ON_TRAINING_FAILURE
	bool "Reset the board on DDR training failure instead of hanging"
	depends on ARMADA_38X || ARMADA_XP
	help
	  If DDR training fails in SPL, reset the board instead of hanging.
	  Some boards are known to fail DDR training occasionally and an
	  immediate reset may be preferable to waiting until the board is
	  reset by watchdog (if there even is one).

	  Note that if booting via UART and the DDR training fails, the
	  device will still hang - it doesn't make sense to reset the board
	  in such a case.

config BOARD_ECC_SUPPORT
	bool

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
	default "mvebu_alleycat-5" if TARGET_MVEBU_ALLEYCAT5

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
	default "mvebu_alleycat-5" if TARGET_MVEBU_ALLEYCAT5

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
	default "Marvell" if TARGET_MVEBU_ALLEYCAT5

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
	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 MVEBU_EFUSE_VHV_GPIO
	string "VHV_Enable GPIO name for eFuse programming"
	depends on MVEBU_EFUSE && !ARMADA_3700
	help
	  The eFuse programing (burning) phase requires supplying 1.8V to the
	  device on the VHV power pin, while for normal operation the VHV power
	  rail must be left unconnected. See Marvell AN-389: ARMADA VHV Power
	  document (Doc. No. MV-S302545-00 Rev. C, August 2, 2016) for details.
	  .
	  This specify VHV_Enable GPIO name used in U-Boot for enabling VHV power.

config MVEBU_EFUSE_VHV_GPIO_ACTIVE_LOW
	bool "VHV_Enable GPIO is Active Low"
	depends on MVEBU_EFUSE_VHV_GPIO != ""

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
