if ARCH_UNIPHIER

config SYS_CONFIG_NAME
	default "uniphier"

choice
        prompt "UniPhier SoC select"

config ARCH_UNIPHIER_V7_MULTI
	bool "UniPhier V7 SoCs"
	select ARCH_SUPPORT_PSCI
	select ARMV7_NONSEC
	select CPU_V7A
	select CPU_V7_HAS_NONSEC
	select ARM_GLOBAL_TIMER if TIMER

config ARCH_UNIPHIER_V8_MULTI
	bool "UniPhier V8 SoCs"
	depends on !SPL
	select ARM64
	select CMD_UNZIP

endchoice

config ARCH_UNIPHIER_LD4
	bool "Enable UniPhier LD4 SoC support"
	depends on ARCH_UNIPHIER_V7_MULTI
	depends on !SPL || SPL_TEXT_BASE = 0x00040000
	default y

config ARCH_UNIPHIER_SLD8
	bool "Enable UniPhier sLD8 SoC support"
	depends on ARCH_UNIPHIER_V7_MULTI
	depends on !SPL || SPL_TEXT_BASE = 0x00040000
	default y

config ARCH_UNIPHIER_PRO4
	bool "Enable UniPhier Pro4 SoC support"
	depends on ARCH_UNIPHIER_V7_MULTI
	depends on !SPL || SPL_TEXT_BASE = 0x00100000
	default y

config ARCH_UNIPHIER_PRO5
	bool "Enable UniPhier Pro5 SoC support"
	depends on ARCH_UNIPHIER_V7_MULTI
	depends on !SPL || SPL_TEXT_BASE = 0x00100000
	default y

config ARCH_UNIPHIER_PXS2
	bool "Enable UniPhier Pxs2 SoC support"
	depends on ARCH_UNIPHIER_V7_MULTI
	depends on !SPL || SPL_TEXT_BASE = 0x00100000
	default y

config ARCH_UNIPHIER_LD6B
	bool "Enable UniPhier LD6b SoC support"
	depends on ARCH_UNIPHIER_V7_MULTI
	depends on !SPL || SPL_TEXT_BASE = 0x00100000
	default y

config ARCH_UNIPHIER_LD11
	bool "Enable UniPhier LD11 SoC support"
	depends on ARCH_UNIPHIER_V8_MULTI
	default y

config ARCH_UNIPHIER_LD20
	bool "Enable UniPhier LD20 SoC support"
	depends on ARCH_UNIPHIER_V8_MULTI
	default y
	select OF_BOARD_SETUP

config ARCH_UNIPHIER_PXS3
	bool "Enable UniPhier PXs3 SoC support"
	depends on ARCH_UNIPHIER_V8_MULTI
	default y

config CACHE_UNIPHIER
	bool "Enable the UniPhier L2 cache controller"
	depends on ARCH_UNIPHIER_V7_MULTI
	default y
	select SYS_CACHE_SHIFT_7
	help
	  This option allows to use the UniPhier System Cache as L2 cache.

config MICRO_SUPPORT_CARD
	bool "Use Micro Support Card"
	depends on UNIPHIER_SYSTEM_BUS
	help
	  This option provides support for the expansion board, available
	  on some UniPhier reference boards.

	  Say Y to use the on-board UART, Ether, LED devices.

config CMD_PINMON
	bool "Enable boot mode pins monitor command"
	default y
	help
	  The command "pinmon" shows the state of the boot mode pins.
	  The boot mode pins are latched when the system reset is deasserted
	  and determine which device the system should load a boot image from.

config CMD_DDRPHY_DUMP
	bool "Enable dump command of DDR PHY parameters"
	depends on ARCH_UNIPHIER_LD4 || ARCH_UNIPHIER_PRO4 || \
		ARCH_UNIPHIER_SLD8 || ARCH_UNIPHIER_LD11
	default y
	help
	  The command "ddrphy" shows the resulting parameters of DDR PHY
	  training; it is useful for the evaluation of DDR PHY training.

config CMD_DDRMPHY_DUMP
	bool "Enable dump command of DDR Multi PHY parameters"
	depends on ARCH_UNIPHIER_PXS2 || ARCH_UNIPHIER_LD6B
	default y
	help
	  The command "ddrmphy" shows the resulting parameters of DDR Multi PHY
	  training; it is useful for the evaluation of DDR Multi PHY training.

config SYS_SOC
	default "uniphier-v7" if ARCH_UNIPHIER_V7_MULTI
endif
