4 The "Serial Peripheral Interface" is a low level synchronous
5 protocol. Chips that support SPI can have data transfer rates
6 up to several tens of Mbit/sec. Chips are addressed with a
7 controller and a chipselect. Most SPI slaves don't support
8 dynamic device discovery; some are even write-only or read-only.
10 SPI is widely used by microcontrollers to talk with sensors,
11 eeprom and flash memory, codecs and various other controller
12 chips, analog to digital (and d-to-a) converters, and more.
13 MMC and SD cards can be accessed using SPI protocol; and for
14 DataFlash cards used in MMC sockets, SPI must always be used.
16 SPI is one of a family of similar protocols using a four wire
17 interface (select, clock, data in, data out) including Microwire
18 (half duplex), SSP, SSI, and PSP. This driver framework should
19 work with most such devices and controllers.
24 bool "Enable Driver Model for SPI drivers"
27 Enable driver model for SPI. The SPI slave interface
28 (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
29 the SPI uclass. Drivers provide methods to access the SPI
30 buses that they control. The uclass interface is defined in
31 include/spi.h. The existing spi_slave structure is attached
32 as 'parent data' to every slave on each bus. Slaves
33 typically use driver-private data instead of extending the
37 bool "SPI memory extension"
39 Enable this option if you want to enable the SPI memory extension.
40 This extension is meant to simplify interaction with SPI memories
41 by providing an high-level interface to send memory-like commands.
44 bool "SPI direct mapping"
47 Enable the SPI direct mapping API. Most modern SPI controllers can
48 directly map a SPI memory (or a portion of the SPI memory) in the CPU
49 address space. Most of the time this brings significant performance
50 improvements as it automates the whole process of sending SPI memory
51 operations every time a new region is accessed.
56 bool "Altera SPI driver"
58 Enable the Altera SPI driver. This driver can be used to
59 access the SPI NOR flash on platforms embedding this Altera
60 IP core. Please find details on the "Embedded Peripherals IP
61 User Guide" of Altera.
64 bool "Apple SPI driver"
65 default y if ARCH_APPLE
67 Enable the Apple SPI driver. This driver can be used to
68 access the SPI flash and keyboard on machines based on Apple SoCs.
71 bool "Andestech ATCSPI200 SPI driver"
73 Enable the Andestech ATCSPI200 SPI driver. This driver can be
74 used to access the SPI flash on AE3XX and AE250 platforms embedding
75 this Andestech IP core.
78 bool "Atheros SPI driver"
81 Enable the Atheros ar7xxx/ar9xxx SoC SPI driver, it was used
82 to access SPI NOR flash and other SPI peripherals. This driver
83 uses driver model and requires a device tree binding to operate.
84 please refer to doc/device-tree-bindings/spi/spi-ath79.txt.
87 bool "Atmel Quad SPI Controller"
90 Enable the Atmel Quad SPI controller in master mode. This driver
91 does not support generic SPI. The implementation supports only the
95 bool "Atmel SPI driver"
96 default y if ARCH_AT91
98 This enables driver for the Atmel SPI Controller, present on
99 many AT91 (ARM) chips. This driver can be used to access
100 the SPI Flash, such as AT25DF321.
103 bool "BCM63XX HSSPI driver"
104 depends on (ARCH_BMIPS || BCM6856 || BCM6858 || BCM63158)
106 Enable the BCM6328 HSSPI driver. This driver can be used to
107 access the SPI NOR flash on platforms embedding this Broadcom
111 bool "BCM6348 SPI driver"
112 depends on ARCH_BMIPS
114 Enable the BCM6348/BCM6358 SPI driver. This driver can be used to
115 access the SPI NOR flash on platforms embedding these Broadcom
119 bool "BCMSTB SPI driver"
121 Enable the Broadcom set-top box SPI driver. This driver can
122 be used to access the SPI flash on platforms embedding this
125 config CORTINA_SFLASH
126 bool "Cortina-Access Serial Flash controller driver"
127 depends on DM_SPI && SPI_MEM
129 Enable the Cortina-Access Serial Flash controller driver. This driver
130 can be used to access the SPI NOR/NAND flash on platforms embedding this
131 Cortina-Access IP core.
134 bool "Cadence QSPI driver"
136 Enable the Cadence Quad-SPI (QSPI) driver. This driver can be
137 used to access the SPI NOR flash on platforms embedding this
140 config HAS_CQSPI_REF_CLK
141 bool "Cadence QSPI static reference clock"
142 depends on CADENCE_QSPI
145 int "Cadence QSPI reference clock value in Hz"
146 depends on HAS_CQSPI_REF_CLK
148 config CADENCE_OSPI_VERSAL
149 bool "Configure Versal OSPI"
150 depends on (ARCH_VERSAL || ARCH_VERSAL_NET) && CADENCE_QSPI
153 This option is used to enable Versal OSPI DMA operations which
154 are used for ospi flash read using cadence qspi controller.
157 bool "ColdFire SPI driver"
159 Enable the ColdFire SPI driver. This driver can be used on
163 bool "Davinci & Keystone SPI driver"
164 depends on ARCH_DAVINCI || ARCH_KEYSTONE
166 Enable the Davinci SPI driver
168 config DESIGNWARE_SPI
169 bool "Designware SPI driver"
171 Enable the Designware SPI driver. This driver can be used to
172 access the SPI NOR flash on platforms embedding this Designware
176 bool "Samsung Exynos SPI driver"
178 Enable the Samsung Exynos SPI driver. This driver can be used to
179 access the SPI NOR flash on platforms embedding this Samsung
183 bool "Freescale DSPI driver"
185 Enable the Freescale DSPI driver. This driver can be used to
186 access the SPI NOR flash and SPI Data flash on platforms embedding
187 this Freescale DSPI IP core. LS102xA and Colibri VF50/VF61 platforms
191 bool "Freescale QSPI driver"
194 Enable the Freescale Quad-SPI (QSPI) driver. This driver can be
195 used to access the SPI NOR flash on platforms embedding this
198 config FSL_QSPI_AHB_FULL_MAP
199 bool "Use full AHB memory map space"
201 default y if ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_IMX8M
203 Enable the Freescale QSPI driver to use full AHB memory map space for
207 bool "SPI driver for GXP"
210 Enable support for SPI on GXP.
213 bool "Intel ICH SPI driver"
215 Enable the Intel ICH SPI driver. This driver can be used to
216 access the SPI NOR flash on platforms embedding this Intel
220 bool "Broadcom iProc QSPI Flash Controller driver"
222 Enable Broadcom iProc QSPI Flash Controller driver.
223 This driver can be used to access the SPI NOR flash.
226 bool "Marvell Kirkwood SPI Driver"
228 Enable support for SPI on various Marvell SoCs, such as
229 Kirkwood and Armada 375.
232 bool "Amlogic Meson SPI Flash Controller driver"
233 depends on ARCH_MESON
235 Enable the Amlogic Meson SPI Flash Controller SPIFC) driver.
236 This driver can be used to access the SPI NOR flash chips on
239 config MICROCHIP_COREQSPI
240 bool "Microchip FPGA QSPI Controller driver"
242 Enable the QSPI driver for Microchip FPGA QSPI controllers.
243 This driver can be used on Polarfire SoC.
246 bool "MPC8XX SPI Driver"
249 Enable support for SPI on MPC8XX
252 bool "MPC8XXX SPI Driver"
254 Enable support for SPI on the MPC8XXX PowerPC SoCs.
257 bool "MSCC bitbang SPI driver"
258 depends on SOC_VCOREIII
260 Enable MSCC bitbang SPI driver. This driver can be used on
264 bool "MediaTek MT7620 SPI driver"
265 depends on SOC_MT7620
267 Enable the MT7620 SPI driver. This driver can be used to access
268 generic SPI devices on MediaTek MT7620 SoC.
271 bool "MediaTek MT7621 SPI driver"
272 depends on SOC_MT7621 || SOC_MT7628
274 Enable the MT7621 SPI driver. This driver can be used to access
275 the SPI NOR flash on platforms embedding this Ralink / MediaTek
276 SPI core, like MT7621/7628/7688.
279 bool "Mediatek SPI-NOR controller driver"
282 Enable the Mediatek SPINOR controller driver. This driver has
283 better read/write performance with NOR.
286 bool "Mediatek SPI memory controller driver"
289 Enable the Mediatek SPI memory controller driver. This driver is
290 originally based on the MediaTek SNFI IP core. It can only be
291 used to access SPI memory devices like SPI-NOR or SPI-NAND on
292 platforms embedding this IP core, like MT7622/M7629.
295 bool "Mediatek SPI-MEM master controller driver"
298 Enable MediaTek SPI-MEM master controller driver. This driver mainly
299 supports SPI flashes. You can use single, dual or quad mode
300 transmission on this controller.
302 config MVEBU_A3700_SPI
303 bool "Marvell Armada 3700 SPI driver"
304 select CLK_ARMADA_3720
306 Enable the Marvell Armada 3700 SPI driver. This driver can be
307 used to access the SPI NOR flash on platforms embedding this
311 bool "MXS SPI Driver"
313 Enable the MXS SPI controller driver. This driver can be used
314 on the i.MX23 and i.MX28 SoCs.
317 bool "Macronix MX25F0A SPI controller"
319 Enable the Macronix MX25F0A SPI controller driver. This driver
320 can be used to access the SPI flash on platforms embedding
321 this Macronix IP core.
324 bool "FIU driver for Nuvoton NPCM SoC"
326 This enables support for the Flash Interface Unit SPI controller
330 bool "PSPI driver for Nuvoton NPCM SoC"
332 PSPI driver for NPCM SoC
335 bool "NXP FlexSPI driver"
338 Enable the NXP FlexSPI (FSPI) driver. This driver can be used to
339 access the SPI NOR flash on platforms embedding this NXP IP core.
342 bool "Octeon SPI driver"
343 depends on ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2
345 Enable the Octeon SPI driver. This driver can be used to
346 access the SPI NOR flash on Octeon II/III and OcteonTX/TX2
350 bool "McSPI driver for OMAP"
352 SPI master controller for OMAP24XX and later Multichannel SPI
353 (McSPI). This driver be used to access SPI chips on platforms
354 embedding this OMAP3 McSPI IP core.
357 bool "Microchip PIC32 SPI driver"
358 depends on MACH_PIC32
360 Enable the Microchip PIC32 SPI driver. This driver can be used
361 to access the SPI NOR flash, MMC-over-SPI on platforms based on
362 Microchip PIC32 family devices.
365 bool "ARM AMBA PL022 SSP controller driver"
368 This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
369 controller. If you have an embedded system with an AMBA(R)
370 bus and a PL022 controller, say Y or M here.
373 bool "Qualcomm SPI controller with QUP interface"
374 depends on ARCH_IPQ40XX
376 Qualcomm Universal Peripheral (QUP) core is an AHB slave that
377 provides a common data path (an output FIFO and an input FIFO)
378 for serial peripheral interface (SPI) mini-core. SPI in master
379 mode supports up to 50MHz, up to four chip selects, programmable
380 data path from 4 bits to 32 bits and numerous protocol variants.
382 config RENESAS_RPC_SPI
383 bool "Renesas RPC SPI driver"
384 depends on RCAR_64 || RZA1
387 Enable the Renesas RPC SPI driver, used to access SPI NOR flash
388 on Renesas RCar Gen3 SoCs. This uses driver model and requires a
389 device tree binding to operate.
392 bool "Rockchip SFC Driver"
394 Enable the Rockchip SFC Driver for SPI NOR flash. This device is
395 a limited purpose SPI controller for driving NOR flash on certain
396 Rockchip SoCs. This uses driver model and requires a device tree
400 bool "Rockchip SPI driver"
402 Enable the Rockchip SPI driver, used to access SPI NOR flash and
403 other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
404 This uses driver model and requires a device tree binding to
408 bool "Sandbox SPI driver"
409 depends on SANDBOX && DM
411 Enable SPI support for sandbox. This is an emulation of a real SPI
412 bus. Devices can be attached to the bus using the device tree
413 which specifies the driver to use. As an example, see this device
414 tree fragment from sandbox.dts. It shows that the SPI bus has a
415 single flash device on chip select 0 which is emulated by the driver
416 for "sandbox,spi-flash", which is in drivers/mtd/spi/sandbox.c.
419 #address-cells = <1>;
422 compatible = "sandbox,spi";
423 cs-gpios = <0>, <&gpio_a 0>;
426 compatible = "spansion,m25p16", "jedec,spi-nor";
427 spi-max-frequency = <40000000>;
428 sandbox,filename = "spi.bin";
432 config SANDBOX_SPI_MAX_BUS
437 config SANDBOX_SPI_MAX_CS
442 config SPI_ASPEED_SMC
443 bool "ASPEED SPI flash controller driver"
444 depends on DM_SPI && SPI_MEM
447 Enable ASPEED SPI flash controller driver for AST2500
451 bool "SiFive SPI driver"
453 This driver supports the SiFive SPI IP. If unsure say N.
454 Enable the SiFive SPI controller driver.
456 The SiFive SPI controller driver is found on various SiFive SoCs.
459 bool "Soft SPI driver"
461 Enable Soft SPI driver. This driver is to use GPIO simulate
465 tristate "Socionext F_OSPI SPI flash controller"
468 This enables support for the Socionext F_OSPI controller
469 for connecting an SPI flash memory over up to 8-bit wide bus.
470 It supports indirect access mode only.
473 bool "Allwinner SoC SPI controllers"
476 Enable the Allwinner SoC SPi controller driver.
478 Same controller driver can reuse in all Allwinner SoC variants.
481 bool "STM32F7 QSPI driver"
482 depends on STM32F4 || STM32F7 || ARCH_STM32MP
484 Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
485 used to access the SPI NOR flash chips on platforms embedding
489 bool "STM32 SPI driver"
490 depends on ARCH_STM32MP
492 Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP
493 SoCs. This uses driver model and requires a device tree binding to
497 bool "nVidia Tegra114 SPI driver"
499 Enable the nVidia Tegra114 SPI driver. This driver can be used to
500 access the SPI NOR flash on platforms embedding this nVidia Tegra114
503 This controller is different than the older SoCs SPI controller and
504 also register interface get changed with this controller.
506 config TEGRA20_SFLASH
507 bool "nVidia Tegra20 Serial Flash controller driver"
509 Enable the nVidia Tegra20 Serial Flash controller driver. This driver
510 can be used to access the SPI NOR flash on platforms embedding this
511 nVidia Tegra20 IP core.
514 bool "nVidia Tegra20/Tegra30 SLINK driver"
516 Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
517 be used to access the SPI NOR flash on platforms embedding this
518 nVidia Tegra20/Tegra30 IP cores.
521 bool "nVidia Tegra210 QSPI driver"
523 Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
524 be used to access SPI chips on platforms embedding this
525 NVIDIA Tegra210 IP core.
528 bool "TI QSPI driver"
531 Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
532 This driver support spi flash single, quad and memory reads.
535 bool "Socionext UniPhier SPI driver"
536 depends on ARCH_UNIPHIER
538 Enable the Socionext UniPhier SPI driver. This driver can
539 be used to access SPI chips on platforms embedding this
543 bool "Xilinx SPI driver"
545 Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
546 controller support 8 bit SPI transfers only, with or w/o FIFO.
547 For more info on Xilinx SPI Register Definitions and Overview
548 see driver file - drivers/spi/xilinx_spi.c
551 bool "Zynq SPI driver"
553 Enable the Zynq SPI driver. This driver can be used to
554 access the SPI NOR flash on platforms embedding this Zynq
558 bool "Zynq QSPI driver"
561 Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
562 used to access the SPI NOR flash on platforms embedding this
563 Zynq QSPI IP core. This IP is used to connect the flash in
564 4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.
567 bool "Configure ZynqMP Generic QSPI"
569 This option is used to enable ZynqMP QSPI controller driver which
570 is used to communicate with qspi flash devices.
575 bool "Freescale eSPI driver"
579 Enable the Freescale eSPI driver. This driver can be used to
580 access the SPI interface and SPI NOR flash on platforms embedding
581 this Freescale eSPI IP core.
584 bool "Renesas Quad SPI driver"
586 Enable the Renesas Quad SPI controller driver. This driver can be
587 used on Renesas SoCs.
590 bool "MXC SPI Driver"
592 Enable the MXC SPI controller driver. This driver can be used
593 on various i.MX SoCs such as i.MX31/35/51/6/7.
596 bool "Socionext SynQuacer HS-SPI driver"
597 depends on ARCH_SYNQUACER
599 Enable the Socionext HS-SPI driver for SynQuacer. This driver can
600 be used to access the SPI interface and SPI NOR flash on platforms
601 embedding this HS-SPI IP core.
603 endif # menu "SPI Support"