if ARCH_ZYNQMP

config SPL_FAT_SUPPORT
	default y

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBDISK_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

config SPL_MMC_SUPPORT
	default y if MMC_SDHCI_ZYNQ

config SPL_SERIAL_SUPPORT
	default y

config SPL_SPI_FLASH_SUPPORT
	default y if ZYNQ_QSPI

config SPL_SPI_SUPPORT
	default y if ZYNQ_QSPI

config SYS_BOARD
	default "zynqmp"

config SYS_VENDOR
	string "Vendor name"
	default "xilinx"

config SYS_SOC
	default "zynqmp"

config SYS_CONFIG_NAME
	string "Board configuration name"
	default "xilinx_zynqmp"
	help
	  This option contains information about board configuration name.
	  Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
	  will be used for board configuration.

config SYS_MEM_RSVD_FOR_MMU
	bool "Reserve memory for MMU Table"
	help
	  If defined this option is used to setup different space for
	  MMU table than the one which will be allocated during
	  relocation.

config BOOT_INIT_FILE
	string "boot.bin init register filename"
	depends on SPL
	default ""
	help
	  Add register writes to boot.bin format (max 256 pairs).
	  Expect a table of register-value pairs, e.g. "0x12345678 0x4321"

config PMUFW_INIT_FILE
	string "PMU firmware"
	depends on SPL
	default ""
	help
	  Include external PMUFW (Platform Management Unit FirmWare) to
	  a Xilinx bootable image (boot.bin).

config ZYNQMP_USB
	bool "Configure ZynqMP USB"

config ZYNQMP_NO_DDR
	bool "Disable DDR MMU mapping"
	help
	  This option configures MMU with no DDR to avoid speculative
	  access to DDR memory where DDR is not present.

config SYS_MALLOC_F_LEN
	default 0x600

config DEFINE_TCM_OCM_MMAP
	bool "Define TCM and OCM memory in MMU Table"
	default y if MP
	help
	  This option if enabled defines the TCM and OCM memory and its
	  memory attributes in MMU table entry.

config ZYNQMP_PSU_INIT_ENABLED
	bool "Include psu_init"
	help
	  Include psu_init to full u-boot. SPL include psu_init by default.

config SPL_ZYNQMP_ALT_BOOTMODE_ENABLED
	bool "Overwrite SPL bootmode"
	depends on SPL
	help
	  Overwrite bootmode selected via boot mode pins to tell SPL what should
	  be the next boot device.

config ZYNQ_SDHCI_MAX_FREQ
	default 200000000

config SPL_ZYNQMP_ALT_BOOTMODE
	hex
	default 0x0 if JTAG_MODE
	default 0x1 if QSPI_MODE_24BIT
	default 0x2 if QSPI_MODE_32BIT
	default 0x3 if SD_MODE
	default 0x4 if NAND_MODE
	default 0x5 if SD_MODE1
	default 0x6 if EMMC_MODE
	default 0x7 if USB_MODE
	default 0xa if SW_USBHOST_MODE
	default 0xb if SW_SATA_MODE
	default 0xe if SD1_LSHFT_MODE

choice
	prompt "Boot mode"
	depends on SPL_ZYNQMP_ALT_BOOTMODE_ENABLED
	default JTAG_MODE

config JTAG_MODE
	bool "JTAG_MODE"

config QSPI_MODE_24BIT
	bool "QSPI_MODE_24BIT"

config QSPI_MODE_32BIT
	bool "QSPI_MODE_32BIT"

config SD_MODE
	bool "SD_MODE"

config SD_MODE1
	bool "SD_MODE1"

config NAND_MODE
	bool "NAND_MODE"

config EMMC_MODE
	bool "EMMC_MODE"

config USB_MODE
	bool "USB"

config SW_USBHOST_MODE
	bool "SW USBHOST_MODE"

config SW_SATA_MODE
	bool "SW SATA_MODE"

config SD1_LSHFT_MODE
	bool "SD1_LSHFT_MODE"

endchoice

endif
