if ARCH_UNIPHIER

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

config SPL_MMC_SUPPORT
	default y if !ARCH_UNIPHIER_64BIT

config SPL_NAND_SUPPORT
	default y if !ARM64

config SPL_SERIAL_SUPPORT
	default y

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 SPL_SEPARATE_BSS
	select ARMV8_MULTIENTRY
	select ARMV8_SPIN_TABLE

choice
        prompt "UniPhier SoC select"
        default ARCH_UNIPHIER_PRO4

config ARCH_UNIPHIER_SLD3
	bool "UniPhier PH1-sLD3 SoC"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_LD4_SLD8
	bool "UniPhier PH1-LD4/PH1-sLD8 SoC"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_PRO4
	bool "UniPhier PH1-Pro4 SoC"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_PRO5_PXS2_LD6B
	bool "UniPhier PH1-Pro5/ProXstream2/PH1-LD6b SoC"
	select ARCH_UNIPHIER_32BIT

config ARCH_UNIPHIER_LD11
	bool "UniPhier PH1-LD11 SoC"
	select ARCH_UNIPHIER_64BIT

config ARCH_UNIPHIER_LD20
	bool "UniPhier PH1-LD20 SoC"
	select ARCH_UNIPHIER_64BIT
	select OF_BOARD_SETUP

endchoice

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

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

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

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

config ARCH_UNIPHIER_LD6B
	bool "Enable UniPhier PH1-LD6b SoC support"
	depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
	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
	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
