menuconfig SPI
	bool "SPI Support"

if SPI

config DM_SPI
	bool "Enable Driver Model for SPI drivers"
	depends on DM
	help
	  Enable driver model for SPI. The SPI slave interface
	  (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
	  the SPI uclass. Drivers provide methods to access the SPI
	  buses that they control. The uclass interface is defined in
	  include/spi.h. The existing spi_slave structure is attached
	  as 'parent data' to every slave on each bus. Slaves
	  typically use driver-private data instead of extending the
	  spi_slave structure.

config SPI_MEM
	bool "SPI memory extension"
	help
	  Enable this option if you want to enable the SPI memory extension.
	  This extension is meant to simplify interaction with SPI memories
	  by providing an high-level interface to send memory-like commands.

if DM_SPI

config ALTERA_SPI
	bool "Altera SPI driver"
	help
	  Enable the Altera SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this Altera
	  IP core. Please find details on the "Embedded Peripherals IP
	  User Guide" of Altera.

config ATCSPI200_SPI
	bool "Andestech ATCSPI200 SPI driver"
	help
	  Enable the Andestech ATCSPI200 SPI driver. This driver can be
	  used to access the SPI flash on AE3XX and AE250 platforms embedding
	  this Andestech IP core.

config ATH79_SPI
	bool "Atheros SPI driver"
	depends on ARCH_ATH79
	help
	  Enable the Atheros ar7xxx/ar9xxx SoC SPI driver, it was used
	  to access SPI NOR flash and other SPI peripherals. This driver
	  uses driver model and requires a device tree binding to operate.
	  please refer to doc/device-tree-bindings/spi/spi-ath79.txt.

config ATMEL_SPI
	bool "Atmel SPI driver"
	default y if ARCH_AT91
	help
	  This enables driver for the Atmel SPI Controller, present on
	  many AT91 (ARM) chips. This driver can be used to access
	  the SPI Flash, such as AT25DF321.

config BCM63XX_HSSPI
	bool "BCM63XX HSSPI driver"
	depends on ARCH_BMIPS
	help
	  Enable the BCM6328 HSSPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this Broadcom
	  SPI core.

config BCM63XX_SPI
	bool "BCM6348 SPI driver"
	depends on ARCH_BMIPS
	help
	  Enable the BCM6348/BCM6358 SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding these Broadcom
	  SPI cores.

config BCMSTB_SPI
	bool "BCMSTB SPI driver"
	help
	  Enable the Broadcom set-top box SPI driver. This driver can
	  be used to access the SPI flash on platforms embedding this
	  Broadcom SPI core.

config CADENCE_QSPI
	bool "Cadence QSPI driver"
	help
	  Enable the Cadence Quad-SPI (QSPI) driver. This driver can be
	  used to access the SPI NOR flash on platforms embedding this
	  Cadence IP core.

config DESIGNWARE_SPI
	bool "Designware SPI driver"
	help
	  Enable the Designware SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this Designware
	  IP core.

config EXYNOS_SPI
	bool "Samsung Exynos SPI driver"
	help
	  Enable the Samsung Exynos SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this Samsung
	  Exynos IP core.

config FSL_DSPI
	bool "Freescale DSPI driver"
	help
	  Enable the Freescale DSPI driver. This driver can be used to
	  access the SPI NOR flash and SPI Data flash on platforms embedding
	  this Freescale DSPI IP core. LS102xA and Colibri VF50/VF61 platforms
	  use this driver.

config ICH_SPI
	bool "Intel ICH SPI driver"
	imply SPI_FLASH_BAR
	help
	  Enable the Intel ICH SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this Intel
	  ICH IP core.

config MESON_SPIFC
	bool "Amlogic Meson SPI Flash Controller driver"
	depends on ARCH_MESON
	help
	  Enable the Amlogic Meson SPI Flash Controller SPIFC) driver.
	  This driver can be used to access the SPI NOR flash chips on
	  Amlogic Meson SoCs.

config MPC8XX_SPI
	bool "MPC8XX SPI Driver"
	depends on MPC8xx
	help
	  Enable support for SPI on MPC8XX

config MT7621_SPI
	bool "MediaTek MT7621 SPI driver"
	depends on SOC_MT7628
	help
	  Enable the MT7621 SPI driver. This driver can be used to access
	  the SPI NOR flash on platforms embedding this Ralink / MediaTek
	  SPI core, like MT7621/7628/7688.

config MTK_QSPI
	bool "Mediatek QSPI driver"
	imply SPI_FLASH_BAR
	help
	  Enable the Mediatek QSPI driver. This driver can be
	  used to access the SPI NOR flash on platforms embedding this
	  Mediatek QSPI IP core.

config MVEBU_A3700_SPI
	bool "Marvell Armada 3700 SPI driver"
	select CLK_ARMADA_3720
	help
	  Enable the Marvell Armada 3700 SPI driver. This driver can be
	  used to access the SPI NOR flash on platforms embedding this
	  Marvell IP core.

config PIC32_SPI
	bool "Microchip PIC32 SPI driver"
	depends on MACH_PIC32
	help
	  Enable the Microchip PIC32 SPI driver. This driver can be used
	  to access the SPI NOR flash, MMC-over-SPI on platforms based on
	  Microchip PIC32 family devices.

config PL022_SPI
	bool "ARM AMBA PL022 SSP controller driver"
	depends on ARM
	help
	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
	  controller. If you have an embedded system with an AMBA(R)
	  bus and a PL022 controller, say Y or M here.

config RENESAS_RPC_SPI
	bool "Renesas RPC SPI driver"
	depends on RCAR_GEN3 || RZA1
	imply SPI_FLASH_BAR
	help
	  Enable the Renesas RPC SPI driver, used to access SPI NOR flash
	  on Renesas RCar Gen3 SoCs. This uses driver model and requires a
	  device tree binding to operate.

config ROCKCHIP_SPI
	bool "Rockchip SPI driver"
	help
	  Enable the Rockchip SPI driver, used to access SPI NOR flash and
	  other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
	  This uses driver model and requires a device tree binding to
	  operate.

config SANDBOX_SPI
	bool "Sandbox SPI driver"
	depends on SANDBOX && DM
	help
	  Enable SPI support for sandbox. This is an emulation of a real SPI
	  bus. Devices can be attached to the bus using the device tree
	  which specifies the driver to use. As an example, see this device
	  tree fragment from sandbox.dts. It shows that the SPI bus has a
	  single flash device on chip select 0 which is emulated by the driver
	  for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c.

	  spi@0 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;
		compatible = "sandbox,spi";
		cs-gpios = <0>, <&gpio_a 0>;
		flash@0 {
			reg = <0>;
			compatible = "spansion,m25p16", "sandbox,spi-flash";
			spi-max-frequency = <40000000>;
			sandbox,filename = "spi.bin";
		};
	  };

config SPI_SUNXI
	bool "Allwinner SoC SPI controllers"
	help
	  Enable the Allwinner SoC SPi controller driver.

	  Same controller driver can reuse in all Allwinner SoC variants.

config STM32_QSPI
	bool "STM32F7 QSPI driver"
	depends on STM32F4 || STM32F7 || ARCH_STM32MP
	help
	  Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
	  used to access the SPI NOR flash chips on platforms embedding
	  this ST IP core.

config TEGRA114_SPI
	bool "nVidia Tegra114 SPI driver"
	help
	  Enable the nVidia Tegra114 SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this nVidia Tegra114
	  IP core.

	  This controller is different than the older SoCs SPI controller and
	  also register interface get changed with this controller.

config TEGRA20_SFLASH
	bool "nVidia Tegra20 Serial Flash controller driver"
	help
	  Enable the nVidia Tegra20 Serial Flash controller driver. This driver
	  can be used to access the SPI NOR flash on platforms embedding this
	  nVidia Tegra20 IP core.

config TEGRA20_SLINK
	bool "nVidia Tegra20/Tegra30 SLINK driver"
	help
	  Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
	  be used to access the SPI NOR flash on platforms embedding this
	  nVidia Tegra20/Tegra30 IP cores.

config TEGRA210_QSPI
	bool "nVidia Tegra210 QSPI driver"
	help
	  Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
	  be used to access SPI chips on platforms embedding this
	  NVIDIA Tegra210 IP core.

config TI_QSPI
	bool "TI QSPI driver"
	imply TI_EDMA3
	help
	  Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
	  This driver support spi flash single, quad and memory reads.

config XILINX_SPI
	bool "Xilinx SPI driver"
	help
	  Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
	  controller support 8 bit SPI transfers only, with or w/o FIFO.
	  For more info on Xilinx SPI Register Definitions and Overview
	  see driver file - drivers/spi/xilinx_spi.c

config ZYNQ_SPI
	bool "Zynq SPI driver"
	depends on ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL
	help
	  Enable the Zynq SPI driver. This driver can be used to
	  access the SPI NOR flash on platforms embedding this Zynq
	  SPI IP core.

config ZYNQ_QSPI
	bool "Zynq QSPI driver"
	depends on ARCH_ZYNQ
	imply SPI_FLASH_BAR
	help
	  Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
	  used to access the SPI NOR flash on platforms embedding this
	  Zynq QSPI IP core. This IP is used to connect the flash in
	  4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.

config ZYNQMP_GQSPI
	bool "Configure ZynqMP Generic QSPI"
	depends on ARCH_ZYNQMP || ARCH_VERSAL
	help
	  This option is used to enable ZynqMP QSPI controller driver which
	  is used to communicate with qspi flash devices.

endif # if DM_SPI

config SOFT_SPI
	bool "Soft SPI driver"
	help
	 Enable Soft SPI driver. This driver is to use GPIO simulate
	 the SPI protocol.

config MSCC_BB_SPI
	bool "MSCC bitbang SPI driver"
	depends on SOC_VCOREIII
	help
	  Enable MSCC bitbang SPI driver. This driver can be used on
	  MSCC SOCs.

config CF_SPI
	bool "ColdFire SPI driver"
	help
	  Enable the ColdFire SPI driver. This driver can be used on
	  some m68k SoCs.

config FSL_ESPI
	bool "Freescale eSPI driver"
	help
	  Enable the Freescale eSPI driver. This driver can be used to
	  access the SPI interface and SPI NOR flash on platforms embedding
	  this Freescale eSPI IP core.

config FSL_QSPI
	bool "Freescale QSPI driver"
	imply SPI_FLASH_BAR
	help
	  Enable the Freescale Quad-SPI (QSPI) driver. This driver can be
	  used to access the SPI NOR flash on platforms embedding this
	  Freescale IP core.

config DAVINCI_SPI
	bool "Davinci & Keystone SPI driver"
	depends on ARCH_DAVINCI || ARCH_KEYSTONE
	help
	  Enable the Davinci SPI driver

config SH_SPI
	bool "SuperH SPI driver"
	help
	  Enable the SuperH SPI controller driver. This driver can be used
	  on various SuperH SoCs, such as SH7757.

config SH_QSPI
	bool "Renesas Quad SPI driver"
	help
	  Enable the Renesas Quad SPI controller driver. This driver can be
	  used on Renesas SoCs.

config KIRKWOOD_SPI
	bool "Marvell Kirkwood SPI Driver"
	help
	  Enable support for SPI on various Marvell SoCs, such as
	  Kirkwood and Armada 375.

config LPC32XX_SSP
	bool "LPC32XX SPI Driver"
	help
	  Enable support for SPI on LPC32xx

config MPC8XXX_SPI
	bool "MPC8XXX SPI Driver"
	help
	  Enable support for SPI on the MPC8XXX PowerPC SoCs.

config MXC_SPI
	bool "MXC SPI Driver"
	help
	  Enable the MXC SPI controller driver. This driver can be used
	  on various i.MX SoCs such as i.MX31/35/51/6/7.

config MXS_SPI
	bool "MXS SPI Driver"
	help
	  Enable the MXS SPI controller driver. This driver can be used
	  on the i.MX23 and i.MX28 SoCs.

config OMAP3_SPI
	bool "McSPI driver for OMAP"
	help
	  SPI master controller for OMAP24XX and later Multichannel SPI
	  (McSPI). This driver be used to access SPI chips on platforms
	  embedding this OMAP3 McSPI IP core.

endif # menu "SPI Support"
