if ARCH_ZYNQMP

config SPL_FS_FAT
	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_SPL_PM_CFG_OBJ_FILE
	string "PMU firmware configuration object to load at runtime by SPL"
	depends on SPL
	help
	  Path to a binary PMU firmware configuration object to be linked
	  into U-Boot SPL and loaded at runtime into the PMU firmware.

	  The ZynqMP Power Management Unit (PMU) needs a configuration
	  object for most SoC peripherals to work. To have it loaded by
	  U-Boot SPL set here the file name (absolute path or relative to
	  the top source tree) of your configuration, which must be a
	  binary blob. It will be linked in the SPL binary and loaded
	  into the PMU firmware by U-Boot SPL during board
	  initialization.

	  Leave this option empty if your PMU firmware has a hard-coded
	  configuration object or you are loading it by any other means.

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_TWO_SDHCI
	bool "Enable booting from both SDHCIs"
	depends on SPL
	help
	  This option reflects that board has two SDHCI controllers which
	  platform can use as boot device. This option ensures that SPL will
	  setup BOOT_DEVICE_MMC2 for SDHCI1 controller and BOOT_DEVICE_MMC1 for
	  SDHCI0 controller. Platforms which have only one SDHCI controller
	  shouldn't enable this option because it for software SDHCI0 or SDHCI1
	  are both covered by BOOT_DEVICE_MMC1.

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
