if ARCH_UNIPHIER

config SYS_CONFIG_NAME
	default "uniphier"

config ARCH_UNIPHIER_32BIT
	bool
	select CPU_V7
	select CPU_V7_HAS_NONSEC
	select ARMV7_NONSEC
	select ARCH_SUPPORT_PSCI

config ARCH_UNIPHIER_64BIT
	bool
	select ARM64
	select CMD_UNZIP
	select SPL_SEPARATE_BSS if SPL
	select ARMV8_MULTIENTRY if SPL
	select ARMV8_SPIN_TABLE if SPL

choice
        prompt "UniPhier SoC select"
        default ARCH_UNIPHIER_PRO4

config ARCH_UNIPHIER_SLD3
	bool "UniPhier sLD3 SoC"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_LD4_SLD8
	bool "UniPhier LD4/sLD8 SoCs"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_PRO4
	bool "UniPhier Pro4 SoC"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_PRO5_PXS2_LD6B
	bool "UniPhier Pro5/PXs2/LD6b SoCs"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_LD11_SINGLE
	bool "UniPhier LD11 SoC"
	select ARCH_UNIPHIER_64BIT

config ARCH_UNIPHIER_LD20_SINGLE
	bool "UniPhier LD20 SoC"
	select ARCH_UNIPHIER_64BIT

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

endchoice

config ARCH_UNIPHIER_LD4
	bool "Enable UniPhier LD4 SoC support"
	depends on ARCH_UNIPHIER_LD4_SLD8
	default y

config ARCH_UNIPHIER_SLD8
	bool "Enable UniPhier sLD8 SoC support"
	depends on ARCH_UNIPHIER_LD4_SLD8
	default y

config ARCH_UNIPHIER_PRO5
	bool "Enable UniPhier Pro5 SoC support"
	depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
	default y

config ARCH_UNIPHIER_PXS2
	bool "Enable UniPhier Pxs2 SoC support"
	depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
	default y

config ARCH_UNIPHIER_LD6B
	bool "Enable UniPhier LD6b SoC support"
	depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
	default y

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

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

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_32BIT
	select SYS_CACHE_SHIFT_7
	default y
	help
	  This option allows to use the UniPhier System Cache as L2 cache.

config MICRO_SUPPORT_CARD
	bool "Use Micro Support Card"
	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.

endif
