| menuconfig SPI |
| bool "SPI Support" |
| help |
| The "Serial Peripheral Interface" is a low level synchronous |
| protocol. Chips that support SPI can have data transfer rates |
| up to several tens of Mbit/sec. Chips are addressed with a |
| controller and a chipselect. Most SPI slaves don't support |
| dynamic device discovery; some are even write-only or read-only. |
| |
| SPI is widely used by microcontrollers to talk with sensors, |
| eeprom and flash memory, codecs and various other controller |
| chips, analog to digital (and d-to-a) converters, and more. |
| MMC and SD cards can be accessed using SPI protocol; and for |
| DataFlash cards used in MMC sockets, SPI must always be used. |
| |
| SPI is one of a family of similar protocols using a four wire |
| interface (select, clock, data in, data out) including Microwire |
| (half duplex), SSP, SSI, and PSP. This driver framework should |
| work with most such devices and controllers. |
| |
| 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. |
| |
| config SPI_DIRMAP |
| bool "SPI direct mapping" |
| depends on SPI_MEM |
| help |
| Enable the SPI direct mapping API. Most modern SPI controllers can |
| directly map a SPI memory (or a portion of the SPI memory) in the CPU |
| address space. Most of the time this brings significant performance |
| improvements as it automates the whole process of sending SPI memory |
| operations every time a new region is accessed. |
| |
| 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 APPLE_SPI |
| bool "Apple SPI driver" |
| default y if ARCH_APPLE |
| help |
| Enable the Apple SPI driver. This driver can be used to |
| access the SPI flash and keyboard on machines based on Apple SoCs. |
| |
| 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_QSPI |
| bool "Atmel Quad SPI Controller" |
| depends on ARCH_AT91 |
| help |
| Enable the Atmel Quad SPI controller in master mode. This driver |
| does not support generic SPI. The implementation supports only the |
| spi-mem interface. |
| |
| 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 || ARCH_BCMBCA) |
| help |
| Enable the BCM63XX HSSPI driver. This driver can be used to |
| access the SPI NOR flash on platforms embedding this Broadcom |
| SPI core. |
| |
| config BCMBCA_HSSPI |
| bool "BCMBCA HSSPI driver" |
| depends on ARCH_BCMBCA && HAVE_SPI_CS_CTRL |
| help |
| This enables support for the High Speed SPI controller present on |
| newer Broadcom BCMBCA SoCs. These SoCs include an updated SPI controller |
| that adds the capability to allow the driver to control chip select |
| explicitly. |
| |
| 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 CORTINA_SFLASH |
| bool "Cortina-Access Serial Flash controller driver" |
| depends on DM_SPI && SPI_MEM |
| help |
| Enable the Cortina-Access Serial Flash controller driver. This driver |
| can be used to access the SPI NOR/NAND flash on platforms embedding this |
| Cortina-Access IP 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 HAS_CQSPI_REF_CLK |
| bool "Cadence QSPI static reference clock" |
| depends on CADENCE_QSPI |
| |
| config CQSPI_REF_CLK |
| int "Cadence QSPI reference clock value in Hz" |
| depends on HAS_CQSPI_REF_CLK |
| |
| config CADENCE_OSPI_VERSAL |
| bool "Configure Versal OSPI" |
| depends on (ARCH_VERSAL || ARCH_VERSAL_NET) && CADENCE_QSPI |
| imply DM_GPIO |
| help |
| This option is used to enable Versal OSPI DMA operations which |
| are used for ospi flash read using cadence qspi controller. |
| |
| config CF_SPI |
| bool "ColdFire SPI driver" |
| help |
| Enable the ColdFire SPI driver. This driver can be used on |
| some m68k SoCs. |
| |
| config DAVINCI_SPI |
| bool "Davinci & Keystone SPI driver" |
| depends on ARCH_DAVINCI || ARCH_KEYSTONE |
| help |
| Enable the Davinci SPI driver |
| |
| 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 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 FSL_QSPI_AHB_FULL_MAP |
| bool "Use full AHB memory map space" |
| depends on FSL_QSPI |
| default y if ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_IMX8M |
| help |
| Enable the Freescale QSPI driver to use full AHB memory map space for |
| flash access. |
| |
| config GXP_SPI |
| bool "SPI driver for GXP" |
| imply SPI_FLASH_BAR |
| help |
| Enable support for SPI on GXP. |
| |
| config ICH_SPI |
| bool "Intel ICH SPI driver" |
| 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 IPROC_QSPI |
| bool "Broadcom iProc QSPI Flash Controller driver" |
| help |
| Enable Broadcom iProc QSPI Flash Controller driver. |
| This driver can be used to access the SPI NOR flash. |
| |
| config KIRKWOOD_SPI |
| bool "Marvell Kirkwood SPI Driver" |
| help |
| Enable support for SPI on various Marvell SoCs, such as |
| Kirkwood and Armada 375. |
| |
| 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 MICROCHIP_COREQSPI |
| bool "Microchip FPGA QSPI Controller driver" |
| help |
| Enable the QSPI driver for Microchip FPGA QSPI controllers. |
| This driver can be used on Polarfire SoC. |
| |
| config MPC8XX_SPI |
| bool "MPC8XX SPI Driver" |
| depends on MPC8xx |
| help |
| Enable support for SPI on MPC8XX |
| |
| config MPC8XXX_SPI |
| bool "MPC8XXX SPI Driver" |
| help |
| Enable support for SPI on the MPC8XXX PowerPC SoCs. |
| |
| 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 MT7620_SPI |
| bool "MediaTek MT7620 SPI driver" |
| depends on SOC_MT7620 |
| help |
| Enable the MT7620 SPI driver. This driver can be used to access |
| generic SPI devices on MediaTek MT7620 SoC. |
| |
| config MT7621_SPI |
| bool "MediaTek MT7621 SPI driver" |
| depends on SOC_MT7621 || 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_SNOR |
| bool "Mediatek SPI-NOR controller driver" |
| depends on SPI_MEM |
| help |
| Enable the Mediatek SPINOR controller driver. This driver has |
| better read/write performance with NOR. |
| |
| config MTK_SNFI_SPI |
| bool "Mediatek SPI memory controller driver" |
| depends on SPI_MEM |
| help |
| Enable the Mediatek SPI memory controller driver. This driver is |
| originally based on the MediaTek SNFI IP core. It can only be |
| used to access SPI memory devices like SPI-NOR or SPI-NAND on |
| platforms embedding this IP core, like MT7622/M7629. |
| |
| config MTK_SPIM |
| bool "Mediatek SPI-MEM master controller driver" |
| depends on SPI_MEM |
| help |
| Enable MediaTek SPI-MEM master controller driver. This driver mainly |
| supports SPI flashes. You can use single, dual or quad mode |
| transmission on this controller. |
| |
| 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 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 SPI_MXIC |
| bool "Macronix MX25F0A SPI controller" |
| help |
| Enable the Macronix MX25F0A SPI controller driver. This driver |
| can be used to access the SPI flash on platforms embedding |
| this Macronix IP core. |
| |
| config NPCM_FIU_SPI |
| bool "FIU driver for Nuvoton NPCM SoC" |
| help |
| This enables support for the Flash Interface Unit SPI controller |
| in master mode. |
| |
| config NPCM_PSPI |
| bool "PSPI driver for Nuvoton NPCM SoC" |
| help |
| PSPI driver for NPCM SoC |
| |
| config NXP_FSPI |
| bool "NXP FlexSPI driver" |
| depends on SPI_MEM |
| help |
| Enable the NXP FlexSPI (FSPI) driver. This driver can be used to |
| access the SPI NOR flash on platforms embedding this NXP IP core. |
| |
| config OCTEON_SPI |
| bool "Octeon SPI driver" |
| depends on ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2 |
| help |
| Enable the Octeon SPI driver. This driver can be used to |
| access the SPI NOR flash on Octeon II/III and OcteonTX/TX2 |
| SoC platforms. |
| |
| 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. |
| |
| 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 SPI_QUP |
| bool "Qualcomm SPI controller with QUP interface" |
| depends on ARCH_IPQ40XX |
| help |
| Qualcomm Universal Peripheral (QUP) core is an AHB slave that |
| provides a common data path (an output FIFO and an input FIFO) |
| for serial peripheral interface (SPI) mini-core. SPI in master |
| mode supports up to 50MHz, up to four chip selects, programmable |
| data path from 4 bits to 32 bits and numerous protocol variants. |
| |
| config RENESAS_RPC_SPI |
| bool "Renesas RPC SPI driver" |
| depends on RCAR_64 || RZA1 |
| imply SPI_FLASH_SFDP_SUPPORT |
| 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_SFC |
| bool "Rockchip SFC Driver" |
| help |
| Enable the Rockchip SFC Driver for SPI NOR flash. This device is |
| a limited purpose SPI controller for driving NOR flash on certain |
| Rockchip 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", "jedec,spi-nor"; |
| spi-max-frequency = <40000000>; |
| sandbox,filename = "spi.bin"; |
| }; |
| }; |
| |
| config SANDBOX_SPI_MAX_BUS |
| int |
| depends on SANDBOX |
| default 1 |
| |
| config SANDBOX_SPI_MAX_CS |
| int |
| depends on SANDBOX |
| default 10 |
| |
| config SPI_ASPEED_SMC |
| bool "ASPEED SPI flash controller driver" |
| depends on DM_SPI && SPI_MEM |
| default n |
| help |
| Enable ASPEED SPI flash controller driver for AST2500 |
| and AST2600 SoCs. |
| |
| config SPI_SIFIVE |
| bool "SiFive SPI driver" |
| help |
| This driver supports the SiFive SPI IP. If unsure say N. |
| Enable the SiFive SPI controller driver. |
| |
| The SiFive SPI controller driver is found on various SiFive SoCs. |
| |
| config SOFT_SPI |
| bool "Soft SPI driver" |
| help |
| Enable Soft SPI driver. This driver is to use GPIO simulate |
| the SPI protocol. |
| |
| config SPI_SN_F_OSPI |
| tristate "Socionext F_OSPI SPI flash controller" |
| depends on SPI_MEM |
| help |
| This enables support for the Socionext F_OSPI controller |
| for connecting an SPI flash memory over up to 8-bit wide bus. |
| It supports indirect access mode only. |
| |
| config SPI_SUNXI |
| bool "Allwinner SoC SPI controllers" |
| default ARCH_SUNXI |
| 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 STM32_SPI |
| bool "STM32 SPI driver" |
| depends on ARCH_STM32MP |
| help |
| Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP |
| SoCs. This uses driver model and requires a device tree binding to |
| operate. |
| |
| 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 UNIPHIER_SPI |
| bool "Socionext UniPhier SPI driver" |
| depends on ARCH_UNIPHIER |
| help |
| Enable the Socionext UniPhier SPI driver. This driver can |
| be used to access SPI chips on platforms embedding this |
| UniPhier IP core. |
| |
| 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" |
| 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" |
| 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" |
| 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 FSL_ESPI |
| bool "Freescale eSPI driver" |
| depends on MPC85xx |
| imply SPI_FLASH_BAR |
| 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 SH_QSPI |
| bool "Renesas Quad SPI driver" |
| help |
| Enable the Renesas Quad SPI controller driver. This driver can be |
| used on Renesas 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 SYNQUACER_SPI |
| bool "Socionext SynQuacer HS-SPI driver" |
| depends on ARCH_SYNQUACER |
| help |
| Enable the Socionext HS-SPI driver for SynQuacer. This driver can |
| be used to access the SPI interface and SPI NOR flash on platforms |
| embedding this HS-SPI IP core. |
| |
| endif # menu "SPI Support" |