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_GEN3 || 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 SPI_ASPEED_SMC
433 bool "ASPEED SPI flash controller driver"
434 depends on DM_SPI && SPI_MEM
437 Enable ASPEED SPI flash controller driver for AST2500
441 bool "SiFive SPI driver"
443 This driver supports the SiFive SPI IP. If unsure say N.
444 Enable the SiFive SPI controller driver.
446 The SiFive SPI controller driver is found on various SiFive SoCs.
449 bool "Soft SPI driver"
451 Enable Soft SPI driver. This driver is to use GPIO simulate
455 bool "Allwinner SoC SPI controllers"
458 Enable the Allwinner SoC SPi controller driver.
460 Same controller driver can reuse in all Allwinner SoC variants.
463 bool "STM32F7 QSPI driver"
464 depends on STM32F4 || STM32F7 || ARCH_STM32MP
466 Enable the STM32F7 Quad-SPI (QSPI) driver. This driver can be
467 used to access the SPI NOR flash chips on platforms embedding
471 bool "STM32 SPI driver"
472 depends on ARCH_STM32MP
474 Enable the STM32 Serial Peripheral Interface (SPI) driver for STM32MP
475 SoCs. This uses driver model and requires a device tree binding to
479 bool "nVidia Tegra114 SPI driver"
481 Enable the nVidia Tegra114 SPI driver. This driver can be used to
482 access the SPI NOR flash on platforms embedding this nVidia Tegra114
485 This controller is different than the older SoCs SPI controller and
486 also register interface get changed with this controller.
488 config TEGRA20_SFLASH
489 bool "nVidia Tegra20 Serial Flash controller driver"
491 Enable the nVidia Tegra20 Serial Flash controller driver. This driver
492 can be used to access the SPI NOR flash on platforms embedding this
493 nVidia Tegra20 IP core.
496 bool "nVidia Tegra20/Tegra30 SLINK driver"
498 Enable the nVidia Tegra20/Tegra30 SLINK driver. This driver can
499 be used to access the SPI NOR flash on platforms embedding this
500 nVidia Tegra20/Tegra30 IP cores.
503 bool "nVidia Tegra210 QSPI driver"
505 Enable the Tegra Quad-SPI (QSPI) driver for T210. This driver
506 be used to access SPI chips on platforms embedding this
507 NVIDIA Tegra210 IP core.
510 bool "TI QSPI driver"
513 Enable the TI Quad-SPI (QSPI) driver for DRA7xx and AM43xx evms.
514 This driver support spi flash single, quad and memory reads.
517 bool "Socionext UniPhier SPI driver"
518 depends on ARCH_UNIPHIER
520 Enable the Socionext UniPhier SPI driver. This driver can
521 be used to access SPI chips on platforms embedding this
525 bool "Xilinx SPI driver"
527 Enable the Xilinx SPI driver from the Xilinx EDK. This SPI
528 controller support 8 bit SPI transfers only, with or w/o FIFO.
529 For more info on Xilinx SPI Register Definitions and Overview
530 see driver file - drivers/spi/xilinx_spi.c
533 bool "Zynq SPI driver"
535 Enable the Zynq SPI driver. This driver can be used to
536 access the SPI NOR flash on platforms embedding this Zynq
540 bool "Zynq QSPI driver"
543 Enable the Zynq Quad-SPI (QSPI) driver. This driver can be
544 used to access the SPI NOR flash on platforms embedding this
545 Zynq QSPI IP core. This IP is used to connect the flash in
546 4-bit qspi, 8-bit dual stacked and shared 4-bit dual parallel.
549 bool "Configure ZynqMP Generic QSPI"
551 This option is used to enable ZynqMP QSPI controller driver which
552 is used to communicate with qspi flash devices.
557 bool "Freescale eSPI driver"
560 Enable the Freescale eSPI driver. This driver can be used to
561 access the SPI interface and SPI NOR flash on platforms embedding
562 this Freescale eSPI IP core.
565 bool "Renesas Quad SPI driver"
567 Enable the Renesas Quad SPI controller driver. This driver can be
568 used on Renesas SoCs.
571 bool "MXC SPI Driver"
573 Enable the MXC SPI controller driver. This driver can be used
574 on various i.MX SoCs such as i.MX31/35/51/6/7.
577 bool "Socionext SynQuacer HS-SPI driver"
578 depends on ARCH_SYNQUACER
580 Enable the Socionext HS-SPI driver for SynQuacer. This driver can
581 be used to access the SPI interface and SPI NOR flash on platforms
582 embedding this HS-SPI IP core.
584 endif # menu "SPI Support"