Merge tag 'spi-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
[linux-block.git] / drivers / spi / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # SPI driver configuration
4 #
5 menuconfig SPI
6         bool "SPI support"
7         depends on HAS_IOMEM
8         help
9           The "Serial Peripheral Interface" is a low level synchronous
10           protocol.  Chips that support SPI can have data transfer rates
11           up to several tens of Mbit/sec.  Chips are addressed with a
12           controller and a chipselect.  Most SPI slaves don't support
13           dynamic device discovery; some are even write-only or read-only.
14
15           SPI is widely used by microcontrollers to talk with sensors,
16           eeprom and flash memory, codecs and various other controller
17           chips, analog to digital (and d-to-a) converters, and more.
18           MMC and SD cards can be accessed using SPI protocol; and for
19           DataFlash cards used in MMC sockets, SPI must always be used.
20
21           SPI is one of a family of similar protocols using a four wire
22           interface (select, clock, data in, data out) including Microwire
23           (half duplex), SSP, SSI, and PSP.  This driver framework should
24           work with most such devices and controllers.
25
26 if SPI
27
28 config SPI_DEBUG
29         bool "Debug support for SPI drivers"
30         depends on DEBUG_KERNEL
31         help
32           Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
33           sysfs, and debugfs support in SPI controller and protocol drivers.
34
35 #
36 # MASTER side ... talking to discrete SPI slave chips including microcontrollers
37 #
38
39 config SPI_MASTER
40 #       bool "SPI Master Support"
41         bool
42         default SPI
43         help
44           If your system has an master-capable SPI controller (which
45           provides the clock and chipselect), you can enable that
46           controller and the protocol drivers for the SPI slave chips
47           that are connected.
48
49 if SPI_MASTER
50
51 config SPI_MEM
52         bool "SPI memory extension"
53         help
54           Enable this option if you want to enable the SPI memory extension.
55           This extension is meant to simplify interaction with SPI memories
56           by providing a high-level interface to send memory-like commands.
57
58 comment "SPI Master Controller Drivers"
59
60 config SPI_ALTERA
61         tristate "Altera SPI Controller platform driver"
62         select SPI_ALTERA_CORE
63         select REGMAP_MMIO
64         help
65           This is the driver for the Altera SPI Controller.
66
67 config SPI_ALTERA_CORE
68         tristate "Altera SPI Controller core code" if COMPILE_TEST
69         select REGMAP
70         help
71           "The core code for the Altera SPI Controller"
72
73 config SPI_ALTERA_DFL
74         tristate "DFL bus driver for Altera SPI Controller"
75         depends on FPGA_DFL
76         select SPI_ALTERA_CORE
77         help
78           This is a Device Feature List (DFL) bus driver for the
79           Altera SPI master controller.  The SPI master is connected
80           to a SPI slave to Avalon bridge in a Intel MAX BMC.
81
82 config SPI_AR934X
83         tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
84         depends on ATH79 || COMPILE_TEST
85         help
86           This enables support for the SPI controller present on the
87           Qualcomm Atheros AR934X/QCA95XX SoCs.
88
89 config SPI_ATH79
90         tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
91         depends on ATH79 || COMPILE_TEST
92         select SPI_BITBANG
93         help
94           This enables support for the SPI controller present on the
95           Atheros AR71XX/AR724X/AR913X SoCs.
96
97 config SPI_ARMADA_3700
98         tristate "Marvell Armada 3700 SPI Controller"
99         depends on (ARCH_MVEBU && OF) || COMPILE_TEST
100         help
101           This enables support for the SPI controller present on the
102           Marvell Armada 3700 SoCs.
103
104 config SPI_ASPEED_SMC
105         tristate "Aspeed flash controllers in SPI mode"
106         depends on ARCH_ASPEED || COMPILE_TEST
107         depends on OF
108         help
109           This enables support for the Firmware Memory controller (FMC)
110           in the Aspeed AST2600, AST2500 and AST2400 SoCs when attached
111           to SPI NOR chips, and support for the SPI flash memory
112           controller (SPI) for the host firmware. The implementation
113           only supports SPI NOR.
114
115 config SPI_ATMEL
116         tristate "Atmel SPI Controller"
117         depends on ARCH_AT91 || COMPILE_TEST
118         depends on OF
119         help
120           This selects a driver for the Atmel SPI Controller, present on
121           many AT91 ARM chips.
122
123 config SPI_AT91_USART
124         tristate "Atmel USART Controller SPI driver"
125         depends on (ARCH_AT91 || COMPILE_TEST)
126         depends on MFD_AT91_USART
127         help
128           This selects a driver for the AT91 USART Controller as SPI Master,
129           present on AT91 and SAMA5 SoC series.
130
131 config SPI_ATMEL_QUADSPI
132         tristate "Atmel Quad SPI Controller"
133         depends on ARCH_AT91 || COMPILE_TEST
134         depends on OF && HAS_IOMEM
135         help
136           This enables support for the Quad SPI controller in master mode.
137           This driver does not support generic SPI. The implementation only
138           supports spi-mem interface.
139
140 config SPI_AU1550
141         tristate "Au1550/Au1200/Au1300 SPI Controller"
142         depends on MIPS_ALCHEMY
143         select SPI_BITBANG
144         help
145           If you say yes to this option, support will be included for the
146           PSC SPI controller found on Au1550, Au1200 and Au1300 series.
147
148 config SPI_AXI_SPI_ENGINE
149         tristate "Analog Devices AXI SPI Engine controller"
150         depends on HAS_IOMEM
151         help
152           This enables support for the Analog Devices AXI SPI Engine SPI controller.
153           It is part of the SPI Engine framework that is used in some Analog Devices
154           reference designs for FPGAs.
155
156 config SPI_BCM2835
157         tristate "BCM2835 SPI controller"
158         depends on GPIOLIB
159         depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
160         help
161           This selects a driver for the Broadcom BCM2835 SPI master.
162
163           The BCM2835 contains two types of SPI master controller; the
164           "universal SPI master", and the regular SPI controller. This driver
165           is for the regular SPI controller. Slave mode operation is not also
166           not supported.
167
168 config SPI_BCM2835AUX
169         tristate "BCM2835 SPI auxiliary controller"
170         depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
171         help
172           This selects a driver for the Broadcom BCM2835 SPI aux master.
173
174           The BCM2835 contains two types of SPI master controller; the
175           "universal SPI master", and the regular SPI controller.
176           This driver is for the universal/auxiliary SPI controller.
177
178 config SPI_BCM63XX
179         tristate "Broadcom BCM63xx SPI controller"
180         depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
181         help
182           Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
183
184 config SPI_BCM63XX_HSSPI
185         tristate "Broadcom BCM63XX HS SPI controller driver"
186         depends on BCM63XX || BMIPS_GENERIC || ARCH_BCMBCA || COMPILE_TEST
187         help
188           This enables support for the High Speed SPI controller present on
189           newer Broadcom BCM63XX SoCs.
190
191 config SPI_BCM_QSPI
192         tristate "Broadcom BSPI and MSPI controller support"
193         depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
194                         BMIPS_GENERIC || COMPILE_TEST
195         default ARCH_BCM_IPROC
196         help
197           Enables support for the Broadcom SPI flash and MSPI controller.
198           Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
199           based platforms. This driver works for both SPI master for SPI NOR
200           flash device as well as MSPI device.
201
202 config SPI_BCMBCA_HSSPI
203         tristate "Broadcom BCMBCA HS SPI controller driver"
204         depends on ARCH_BCMBCA || COMPILE_TEST
205         help
206           This enables support for the High Speed SPI controller present on
207           newer Broadcom BCMBCA SoCs. These SoCs include an updated SPI controller
208           that adds the capability to allow the driver to control chip select
209           explicitly.
210
211 config SPI_BITBANG
212         tristate "Utilities for Bitbanging SPI masters"
213         help
214           With a few GPIO pins, your system can bitbang the SPI protocol.
215           Select this to get SPI support through I/O pins (GPIO, parallel
216           port, etc).  Or, some systems' SPI master controller drivers use
217           this code to manage the per-word or per-transfer accesses to the
218           hardware shift registers.
219
220           This is library code, and is automatically selected by drivers that
221           need it.  You only need to select this explicitly to support driver
222           modules that aren't part of this kernel tree.
223
224 config SPI_BUTTERFLY
225         tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
226         depends on PARPORT
227         select SPI_BITBANG
228         help
229           This uses a custom parallel port cable to connect to an AVR
230           Butterfly <http://www.atmel.com/products/avr/butterfly>, an
231           inexpensive battery powered microcontroller evaluation board.
232           This same cable can be used to flash new firmware.
233
234 config SPI_CADENCE
235         tristate "Cadence SPI controller"
236         help
237           This selects the Cadence SPI controller master driver
238           used by Xilinx Zynq and ZynqMP.
239
240 config SPI_CADENCE_QUADSPI
241         tristate "Cadence Quad SPI controller"
242         depends on OF && (ARM || ARM64 || X86 || COMPILE_TEST)
243         help
244           Enable support for the Cadence Quad SPI Flash controller.
245
246           Cadence QSPI is a specialized controller for connecting an SPI
247           Flash over 1/2/4-bit wide bus. Enable this option if you have a
248           device with a Cadence QSPI controller and want to access the
249           Flash as an MTD device.
250
251 config SPI_CADENCE_XSPI
252         tristate "Cadence XSPI controller"
253         depends on OF && HAS_IOMEM
254         depends on SPI_MEM
255         help
256           Enable support for the Cadence XSPI Flash controller.
257
258           Cadence XSPI is a specialized controller for connecting an SPI
259           Flash over up to 8-bit wide bus. Enable this option if you have a
260           device with a Cadence XSPI controller and want to access the
261           Flash as an MTD device.
262
263 config SPI_CLPS711X
264         tristate "CLPS711X host SPI controller"
265         depends on ARCH_CLPS711X || COMPILE_TEST
266         help
267           This enables dedicated general purpose SPI/Microwire1-compatible
268           master mode interface (SSI1) for CLPS711X-based CPUs.
269
270 config SPI_COLDFIRE_QSPI
271         tristate "Freescale Coldfire QSPI controller"
272         depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
273         help
274           This enables support for the Coldfire QSPI controller in master
275           mode.
276
277 config SPI_DAVINCI
278         tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
279         depends on ARCH_DAVINCI || ARCH_KEYSTONE
280         select SPI_BITBANG
281         help
282           SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
283
284 config SPI_DESIGNWARE
285         tristate "DesignWare SPI controller core support"
286         imply SPI_MEM
287         help
288           general driver for SPI controller core from DesignWare
289
290 if SPI_DESIGNWARE
291
292 config SPI_DW_DMA
293         bool "DMA support for DW SPI controller"
294
295 config SPI_DW_PCI
296         tristate "PCI interface driver for DW SPI core"
297         depends on PCI
298
299 config SPI_DW_MMIO
300         tristate "Memory-mapped io interface driver for DW SPI core"
301         depends on HAS_IOMEM
302
303 config SPI_DW_BT1
304         tristate "Baikal-T1 SPI driver for DW SPI core"
305         depends on MIPS_BAIKAL_T1 || COMPILE_TEST
306         select MULTIPLEXER
307         help
308           Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
309           controllers. Two of them are pretty much normal: with IRQ, DMA,
310           FIFOs of 64 words depth, 4x CSs, but the third one as being a
311           part of the Baikal-T1 System Boot Controller has got a very
312           limited resources: no IRQ, no DMA, only a single native
313           chip-select and Tx/Rx FIFO with just 8 words depth available.
314           The later one is normally connected to an external SPI-nor flash
315           of 128Mb (in general can be of bigger size).
316
317 config SPI_DW_BT1_DIRMAP
318         bool "Directly mapped Baikal-T1 Boot SPI flash support"
319         depends on SPI_DW_BT1
320         help
321           Directly mapped SPI flash memory is an interface specific to the
322           Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
323           can be used to access a peripheral memory device just by
324           reading/writing data from/to it. Note that the system APB bus
325           will stall during each IO from/to the dirmap region until the
326           operation is finished. So try not to use it concurrently with
327           time-critical tasks (like the SPI memory operations implemented
328           in this driver).
329
330 endif
331
332 config SPI_DLN2
333        tristate "Diolan DLN-2 USB SPI adapter"
334        depends on MFD_DLN2
335        help
336          If you say yes to this option, support will be included for Diolan
337          DLN2, a USB to SPI interface.
338
339          This driver can also be built as a module.  If so, the module
340          will be called spi-dln2.
341
342 config SPI_EP93XX
343         tristate "Cirrus Logic EP93xx SPI controller"
344         depends on ARCH_EP93XX || COMPILE_TEST
345         help
346           This enables using the Cirrus EP93xx SPI controller in master
347           mode.
348
349 config SPI_FALCON
350         bool "Falcon SPI controller support"
351         depends on SOC_FALCON
352         help
353           The external bus unit (EBU) found on the FALC-ON SoC has SPI
354           emulation that is designed for serial flash access. This driver
355           has only been tested with m25p80 type chips. The hardware has no
356           support for other types of SPI peripherals.
357
358 config SPI_FSI
359         tristate "FSI SPI driver"
360         depends on FSI
361         help
362           This enables support for the driver for FSI bus attached SPI
363           controllers.
364
365 config SPI_FSL_LPSPI
366         tristate "Freescale i.MX LPSPI controller"
367         depends on ARCH_MXC || COMPILE_TEST
368         help
369           This enables Freescale i.MX LPSPI controllers in master mode.
370
371 config SPI_FSL_QUADSPI
372         tristate "Freescale QSPI controller"
373         depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
374         depends on HAS_IOMEM
375         help
376           This enables support for the Quad SPI controller in master mode.
377           Up to four flash chips can be connected on two buses with two
378           chipselects each.
379           This controller does not support generic SPI messages. It only
380           supports the high-level SPI memory interface.
381
382 config SPI_GXP
383         tristate "GXP SPI driver"
384         depends on ARCH_HPE || COMPILE_TEST
385         help
386           This enables support for the driver for GXP bus attached SPI
387           controllers.
388
389 config SPI_HISI_KUNPENG
390         tristate "HiSilicon SPI Controller for Kunpeng SoCs"
391         depends on (ARM64 && ACPI) || COMPILE_TEST
392         help
393           This enables support for HiSilicon SPI controller found on
394           Kunpeng SoCs.
395
396           This driver can also be built as a module. If so, the module
397           will be called hisi-kunpeng-spi.
398
399 config SPI_HISI_SFC_V3XX
400         tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
401         depends on (ARM64 && ACPI) || COMPILE_TEST
402         depends on HAS_IOMEM
403         help
404           This enables support for HiSilicon v3xx SPI NOR flash controller
405           found in hi16xx chipsets.
406
407 config SPI_NXP_FLEXSPI
408         tristate "NXP Flex SPI controller"
409         depends on ARCH_LAYERSCAPE || HAS_IOMEM
410         help
411           This enables support for the Flex SPI controller in master mode.
412           Up to four slave devices can be connected on two buses with two
413           chipselects each.
414           This controller does not support generic SPI messages and only
415           supports the high-level SPI memory interface.
416
417 config SPI_GPIO
418         tristate "GPIO-based bitbanging SPI Master"
419         depends on GPIOLIB || COMPILE_TEST
420         select SPI_BITBANG
421         help
422           This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
423           interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
424           slaves connected to a bus using this driver are configured as usual,
425           except that the spi_board_info.controller_data holds the GPIO number
426           for the chipselect used by this controller driver.
427
428           Note that this driver often won't achieve even 1 Mbit/sec speeds,
429           making it unusually slow for SPI.  If your platform can inline
430           GPIO operations, you should be able to leverage that for better
431           speed with a custom version of this driver; see the source code.
432
433 config SPI_IMG_SPFI
434         tristate "IMG SPFI controller"
435         depends on MIPS || COMPILE_TEST
436         help
437           This enables support for the SPFI master controller found on
438           IMG SoCs.
439
440 config SPI_IMX
441         tristate "Freescale i.MX SPI controllers"
442         depends on ARCH_MXC || COMPILE_TEST
443         help
444           This enables support for the Freescale i.MX SPI controllers.
445
446 config SPI_INGENIC
447         tristate "Ingenic SoCs SPI controller"
448         depends on MACH_INGENIC || COMPILE_TEST
449         help
450           This enables support for the Ingenic SoCs SPI controller.
451
452           To compile this driver as a module, choose M here: the module
453           will be called spi-ingenic.
454
455 config SPI_INTEL
456         tristate
457
458 config SPI_INTEL_PCI
459         tristate "Intel PCH/PCU SPI flash PCI driver"
460         depends on PCI
461         depends on X86 || COMPILE_TEST
462         depends on SPI_MEM
463         select SPI_INTEL
464         help
465           This enables PCI support for the Intel PCH/PCU SPI controller in
466           master mode. This controller is used to hold BIOS and other
467           persistent settings. Controllers present in modern Intel hardware
468           only work in hardware sequencing mode, this means that the
469           controller exposes a subset of operations that makes it safer to
470           use. Using this driver it is possible to upgrade BIOS directly
471           from Linux.
472
473           To compile this driver as a module, choose M here: the module
474           will be called spi-intel-pci.
475
476 config SPI_INTEL_PLATFORM
477         tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
478         depends on X86 || COMPILE_TEST
479         depends on SPI_MEM
480         select SPI_INTEL
481         help
482           This enables platform support for the Intel PCH/PCU SPI
483           controller in master mode that is used to hold BIOS and other
484           persistent settings. Most of these controllers work in
485           software sequencing mode, which means that the controller
486           exposes the low level SPI-NOR opcodes to the software. Using
487           this driver it is possible to upgrade BIOS directly from Linux.
488
489           Say N here unless you know what you are doing. Overwriting the
490           SPI flash may render the system unbootable.
491
492           To compile this driver as a module, choose M here: the module
493           will be called spi-intel-platform.
494
495 config SPI_JCORE
496         tristate "J-Core SPI Master"
497         depends on OF && (SUPERH || COMPILE_TEST)
498         help
499           This enables support for the SPI master controller in the J-Core
500           synthesizable, open source SoC.
501
502 config SPI_LM70_LLP
503         tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
504         depends on PARPORT
505         select SPI_BITBANG
506         help
507           This driver supports the NS LM70 LLP Evaluation Board,
508           which interfaces to an LM70 temperature sensor using
509           a parallel port.
510
511 config SPI_LP8841_RTC
512         tristate "ICP DAS LP-8841 SPI Controller for RTC"
513         depends on MACH_PXA27X_DT || COMPILE_TEST
514         help
515           This driver provides an SPI master device to drive Maxim
516           DS-1302 real time clock.
517
518           Say N here unless you plan to run the kernel on an ICP DAS
519           LP-8x4x industrial computer.
520
521 config SPI_MPC52xx
522         tristate "Freescale MPC52xx SPI (non-PSC) controller support"
523         depends on PPC_MPC52xx
524         help
525           This drivers supports the MPC52xx SPI controller in master SPI
526           mode.
527
528 config SPI_MPC52xx_PSC
529         tristate "Freescale MPC52xx PSC SPI controller"
530         depends on PPC_MPC52xx
531         help
532           This enables using the Freescale MPC52xx Programmable Serial
533           Controller in master SPI mode.
534
535 config SPI_MPC512x_PSC
536         tristate "Freescale MPC512x PSC SPI controller"
537         depends on PPC_MPC512x
538         help
539           This enables using the Freescale MPC5121 Programmable Serial
540           Controller in SPI master mode.
541
542 config SPI_FSL_LIB
543         tristate
544         depends on OF
545
546 config SPI_FSL_CPM
547         tristate
548         depends on FSL_SOC
549
550 config SPI_FSL_SPI
551         tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
552         depends on OF
553         select SPI_FSL_LIB
554         select SPI_FSL_CPM if FSL_SOC
555         help
556           This enables using the Freescale SPI controllers in master mode.
557           MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
558           MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
559           This also enables using the Aeroflex Gaisler GRLIB SPI controller in
560           master mode.
561
562 config SPI_FSL_DSPI
563         tristate "Freescale DSPI controller"
564         select REGMAP_MMIO
565         depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
566         help
567           This enables support for the Freescale DSPI controller in master
568           mode. VF610, LS1021A and ColdFire platforms uses the controller.
569
570 config SPI_FSL_ESPI
571         tristate "Freescale eSPI controller"
572         depends on FSL_SOC
573         help
574           This enables using the Freescale eSPI controllers in master mode.
575           From MPC8536, 85xx platform uses the controller, and all P10xx,
576           P20xx, P30xx,P40xx, P50xx uses this controller.
577
578 config SPI_MESON_SPICC
579         tristate "Amlogic Meson SPICC controller"
580         depends on COMMON_CLK
581         depends on ARCH_MESON || COMPILE_TEST
582         help
583           This enables master mode support for the SPICC (SPI communication
584           controller) available in Amlogic Meson SoCs.
585
586 config SPI_MESON_SPIFC
587         tristate "Amlogic Meson SPIFC controller"
588         depends on ARCH_MESON || COMPILE_TEST
589         select REGMAP_MMIO
590         help
591           This enables master mode support for the SPIFC (SPI flash
592           controller) available in Amlogic Meson SoCs.
593
594 config SPI_MICROCHIP_CORE
595         tristate "Microchip FPGA SPI controllers"
596         depends on SPI_MASTER
597         help
598           This enables the SPI driver for Microchip FPGA SPI controllers.
599           Say Y or M here if you want to use the "hard" controllers on
600           PolarFire SoC.
601           If built as a module, it will be called spi-microchip-core.
602
603 config SPI_MICROCHIP_CORE_QSPI
604         tristate "Microchip FPGA QSPI controllers"
605         depends on SPI_MASTER
606         help
607           This enables the QSPI driver for Microchip FPGA QSPI controllers.
608           Say Y or M here if you want to use the QSPI controllers on
609           PolarFire SoC.
610           If built as a module, it will be called spi-microchip-core-qspi.
611
612 config SPI_MT65XX
613         tristate "MediaTek SPI controller"
614         depends on ARCH_MEDIATEK || COMPILE_TEST
615         help
616           This selects the MediaTek(R) SPI bus driver.
617           If you want to use MediaTek(R) SPI interface,
618           say Y or M here.If you are not sure, say N.
619           SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
620
621 config SPI_MT7621
622         tristate "MediaTek MT7621 SPI Controller"
623         depends on RALINK || COMPILE_TEST
624         help
625           This selects a driver for the MediaTek MT7621 SPI Controller.
626
627 config SPI_MTK_NOR
628         tristate "MediaTek SPI NOR controller"
629         depends on ARCH_MEDIATEK || COMPILE_TEST
630         help
631           This enables support for SPI NOR controller found on MediaTek
632           ARM SoCs. This is a controller specifically for SPI NOR flash.
633           It can perform generic SPI transfers up to 6 bytes via generic
634           SPI interface as well as several SPI NOR specific instructions
635           via SPI MEM interface.
636
637 config SPI_MTK_SNFI
638         tristate "MediaTek SPI NAND Flash Interface"
639         depends on ARCH_MEDIATEK || COMPILE_TEST
640         depends on MTD_NAND_ECC_MEDIATEK
641         help
642           This enables support for SPI-NAND mode on the MediaTek NAND
643           Flash Interface found on MediaTek ARM SoCs. This controller
644           is implemented as a SPI-MEM controller with pipelined ECC
645           capcability.
646
647 config SPI_WPCM_FIU
648         tristate "Nuvoton WPCM450 Flash Interface Unit"
649         depends on ARCH_NPCM || COMPILE_TEST
650         select REGMAP
651         help
652           This enables support got the Flash Interface Unit SPI controller
653           present in the Nuvoton WPCM450 SoC.
654
655           This driver does not support generic SPI. The implementation only
656           supports the spi-mem interface.
657
658 config SPI_NPCM_FIU
659         tristate "Nuvoton NPCM FLASH Interface Unit"
660         depends on ARCH_NPCM || COMPILE_TEST
661         depends on OF && HAS_IOMEM
662         help
663           This enables support for the Flash Interface Unit SPI controller
664           in master mode.
665           This driver does not support generic SPI. The implementation only
666           supports spi-mem interface.
667
668 config SPI_NPCM_PSPI
669         tristate "Nuvoton NPCM PSPI Controller"
670         depends on ARCH_NPCM || COMPILE_TEST
671         help
672           This driver provides support for Nuvoton NPCM BMC
673           Peripheral SPI controller in master mode.
674
675 config SPI_LANTIQ_SSC
676         tristate "Lantiq SSC SPI controller"
677         depends on LANTIQ || X86 || COMPILE_TEST
678         help
679           This driver supports the Lantiq SSC SPI controller in master
680           mode. This controller is found on Intel (former Lantiq) SoCs like
681           the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
682
683 config SPI_OC_TINY
684         tristate "OpenCores tiny SPI"
685         depends on GPIOLIB || COMPILE_TEST
686         select SPI_BITBANG
687         help
688           This is the driver for OpenCores tiny SPI master controller.
689
690 config SPI_OCTEON
691         tristate "Cavium OCTEON SPI controller"
692         depends on CAVIUM_OCTEON_SOC
693         help
694           SPI host driver for the hardware found on some Cavium OCTEON
695           SOCs.
696
697 config SPI_OMAP_UWIRE
698         tristate "OMAP1 MicroWire"
699         depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
700         select SPI_BITBANG
701         help
702           This hooks up to the MicroWire controller on OMAP1 chips.
703
704 config SPI_OMAP24XX
705         tristate "McSPI driver for OMAP"
706         depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
707         select SG_SPLIT
708         help
709           SPI master controller for OMAP24XX and later Multichannel SPI
710           (McSPI) modules.
711
712 config SPI_TI_QSPI
713         tristate "DRA7xxx QSPI controller support"
714         depends on ARCH_OMAP2PLUS || COMPILE_TEST
715         help
716           QSPI master controller for DRA7xxx used for flash devices.
717           This device supports single, dual and quad read support, while
718           it only supports single write mode.
719
720 config SPI_ORION
721         tristate "Orion SPI master"
722         depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
723         help
724           This enables using the SPI master controller on the Orion
725           and MVEBU chips.
726
727 config SPI_PCI1XXXX
728         tristate "PCI1XXXX SPI Bus support"
729         depends on PCI
730         help
731           Say "yes" to Enable the SPI Bus support for the PCI1xxxx card
732           This is a PCI to SPI Bus driver
733           This driver can be built as module. If so, the module will be
734           called as spi-pci1xxxx.
735
736 config SPI_PIC32
737         tristate "Microchip PIC32 series SPI"
738         depends on MACH_PIC32 || COMPILE_TEST
739         help
740           SPI driver for Microchip PIC32 SPI master controller.
741
742 config SPI_PIC32_SQI
743         tristate "Microchip PIC32 Quad SPI driver"
744         depends on MACH_PIC32 || COMPILE_TEST
745         help
746           SPI driver for PIC32 Quad SPI controller.
747
748 config SPI_PL022
749         tristate "ARM AMBA PL022 SSP controller"
750         depends on ARM_AMBA
751         default y if ARCH_REALVIEW
752         default y if INTEGRATOR_IMPD1
753         default y if ARCH_VERSATILE
754         help
755           This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
756           controller. If you have an embedded system with an AMBA(R)
757           bus and a PL022 controller, say Y or M here.
758
759 config SPI_PPC4xx
760         tristate "PPC4xx SPI Controller"
761         depends on PPC32 && 4xx
762         select SPI_BITBANG
763         help
764           This selects a driver for the PPC4xx SPI Controller.
765
766 config SPI_PXA2XX
767         tristate "PXA2xx SSP SPI master"
768         depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
769         select PXA_SSP if ARCH_PXA || ARCH_MMP
770         help
771           This enables using a PXA2xx or Sodaville SSP port as a SPI master
772           controller. The driver can be configured to use any SSP port and
773           additional documentation can be found a Documentation/spi/pxa2xx.rst.
774
775 config SPI_PXA2XX_PCI
776         def_tristate SPI_PXA2XX && PCI && COMMON_CLK
777
778 config SPI_ROCKCHIP
779         tristate "Rockchip SPI controller driver"
780         help
781           This selects a driver for Rockchip SPI controller.
782
783           If you say yes to this option, support will be included for
784           RK3066, RK3188 and RK3288 families of SPI controller.
785           Rockchip SPI controller support DMA transport and PIO mode.
786           The main usecase of this controller is to use spi flash as boot
787           device.
788
789 config SPI_ROCKCHIP_SFC
790         tristate "Rockchip Serial Flash Controller (SFC)"
791         depends on ARCH_ROCKCHIP || COMPILE_TEST
792         depends on HAS_IOMEM && HAS_DMA
793         help
794           This enables support for Rockchip serial flash controller. This
795           is a specialized controller used to access SPI flash on some
796           Rockchip SOCs.
797
798           ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
799           the driver automatically falls back to PIO mode.
800
801 config SPI_RB4XX
802         tristate "Mikrotik RB4XX SPI master"
803         depends on SPI_MASTER && ATH79
804         help
805           SPI controller driver for the Mikrotik RB4xx series boards.
806
807 config SPI_RPCIF
808         tristate "Renesas RPC-IF SPI driver"
809         depends on RENESAS_RPCIF
810         help
811           SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
812
813 config SPI_RSPI
814         tristate "Renesas RSPI/QSPI controller"
815         depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
816         help
817           SPI driver for Renesas RSPI and QSPI blocks.
818
819 config SPI_QCOM_QSPI
820         tristate "QTI QSPI controller"
821         depends on ARCH_QCOM
822         help
823           QSPI(Quad SPI) driver for Qualcomm QSPI controller.
824
825 config SPI_QUP
826         tristate "Qualcomm SPI controller with QUP interface"
827         depends on ARCH_QCOM || COMPILE_TEST
828         help
829           Qualcomm Universal Peripheral (QUP) core is an AHB slave that
830           provides a common data path (an output FIFO and an input FIFO)
831           for serial peripheral interface (SPI) mini-core. SPI in master
832           mode supports up to 50MHz, up to four chip selects, programmable
833           data path from 4 bits to 32 bits and numerous protocol variants.
834
835           This driver can also be built as a module.  If so, the module
836           will be called spi_qup.
837
838 config SPI_QCOM_GENI
839         tristate "Qualcomm GENI based SPI controller"
840         depends on QCOM_GENI_SE
841         help
842           This driver supports GENI serial engine based SPI controller in
843           master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
844           yes to this option, support will be included for the built-in SPI
845           interface on the Qualcomm Technologies Inc.'s SoCs.
846
847           This driver can also be built as a module.  If so, the module
848           will be called spi-geni-qcom.
849
850 config SPI_S3C64XX
851         tristate "Samsung S3C64XX/Exynos SoC series type SPI"
852         depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
853         help
854           SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
855           Choose Y/M here only if you build for such Samsung SoC.
856
857 config SPI_SC18IS602
858         tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
859         depends on I2C
860         help
861           SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
862
863 config SPI_SH_MSIOF
864         tristate "SuperH MSIOF SPI controller"
865         depends on HAVE_CLK
866         depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
867         help
868           SPI driver for SuperH and SH Mobile MSIOF blocks.
869
870 config SPI_SH
871         tristate "SuperH SPI controller"
872         depends on SUPERH || COMPILE_TEST
873         help
874           SPI driver for SuperH SPI blocks.
875
876 config SPI_SH_SCI
877         tristate "SuperH SCI SPI controller"
878         depends on SUPERH
879         select SPI_BITBANG
880         help
881           SPI driver for SuperH SCI blocks.
882
883 config SPI_SH_HSPI
884         tristate "SuperH HSPI controller"
885         depends on ARCH_RENESAS || COMPILE_TEST
886         help
887           SPI driver for SuperH HSPI blocks.
888
889 config SPI_SIFIVE
890         tristate "SiFive SPI controller"
891         depends on HAS_IOMEM
892         help
893           This exposes the SPI controller IP from SiFive.
894
895 config SPI_SLAVE_MT27XX
896         tristate "MediaTek SPI slave device"
897         depends on ARCH_MEDIATEK || COMPILE_TEST
898         depends on SPI_SLAVE
899         help
900           This selects the MediaTek(R) SPI slave device driver.
901           If you want to use MediaTek(R) SPI slave interface,
902           say Y or M here.If you are not sure, say N.
903           SPI slave drivers for Mediatek MT27XX series ARM SoCs.
904
905 config SPI_SN_F_OSPI
906         tristate "Socionext F_OSPI SPI flash controller"
907         depends on OF && HAS_IOMEM
908         depends on SPI_MEM
909         help
910           This enables support for the Socionext F_OSPI controller
911           for connecting an SPI Flash memory over up to 8-bit wide bus.
912           It supports indirect access mode only.
913
914 config SPI_SPRD
915         tristate "Spreadtrum SPI controller"
916         depends on ARCH_SPRD || COMPILE_TEST
917         help
918           SPI driver for Spreadtrum SoCs.
919
920 config SPI_SPRD_ADI
921         tristate "Spreadtrum ADI controller"
922         depends on ARCH_SPRD || COMPILE_TEST
923         depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
924         help
925           ADI driver based on SPI for Spreadtrum SoCs.
926
927 config SPI_STM32
928         tristate "STMicroelectronics STM32 SPI controller"
929         depends on ARCH_STM32 || COMPILE_TEST
930         help
931           SPI driver for STMicroelectronics STM32 SoCs.
932
933           STM32 SPI controller supports DMA and PIO modes. When DMA
934           is not available, the driver automatically falls back to
935           PIO mode.
936
937 config SPI_STM32_QSPI
938         tristate "STMicroelectronics STM32 QUAD SPI controller"
939         depends on ARCH_STM32 || COMPILE_TEST
940         depends on OF
941         depends on SPI_MEM
942         help
943           This enables support for the Quad SPI controller in master mode.
944           This driver does not support generic SPI. The implementation only
945           supports spi-mem interface.
946
947 config SPI_ST_SSC4
948         tristate "STMicroelectronics SPI SSC-based driver"
949         depends on ARCH_STI || COMPILE_TEST
950         help
951           STMicroelectronics SoCs support for SPI. If you say yes to
952           this option, support will be included for the SSC driven SPI.
953
954 config SPI_SUN4I
955         tristate "Allwinner A10 SoCs SPI controller"
956         depends on ARCH_SUNXI || COMPILE_TEST
957         help
958           SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
959
960 config SPI_SUN6I
961         tristate "Allwinner A31 SPI controller"
962         depends on ARCH_SUNXI || COMPILE_TEST
963         depends on RESET_CONTROLLER
964         help
965           This enables using the SPI controller on the Allwinner A31 SoCs.
966
967 config SPI_SUNPLUS_SP7021
968         tristate "Sunplus SP7021 SPI controller"
969         depends on SOC_SP7021 || COMPILE_TEST
970         help
971           This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
972           This driver can also be built as a module. If so, the module will be
973           called as spi-sunplus-sp7021.
974
975           If you have a  Sunplus SP7021 platform say Y here.
976           If unsure, say N.
977
978 config SPI_SYNQUACER
979         tristate "Socionext's SynQuacer HighSpeed SPI controller"
980         depends on ARCH_SYNQUACER || COMPILE_TEST
981         help
982           SPI driver for Socionext's High speed SPI controller which provides
983           various operating modes for interfacing to serial peripheral devices
984           that use the de-facto standard SPI protocol.
985
986           It also supports the new dual-bit and quad-bit SPI protocol.
987
988 config SPI_MXIC
989         tristate "Macronix MX25F0A SPI controller"
990         depends on SPI_MASTER
991         imply MTD_NAND_ECC_MXIC
992         help
993           This selects the Macronix MX25F0A SPI controller driver.
994
995 config SPI_MXS
996         tristate "Freescale MXS SPI controller"
997         depends on ARCH_MXS
998         select STMP_DEVICE
999         help
1000           SPI driver for Freescale MXS devices.
1001
1002 config SPI_TEGRA210_QUAD
1003         tristate "NVIDIA Tegra QSPI Controller"
1004         depends on ARCH_TEGRA || COMPILE_TEST
1005         depends on RESET_CONTROLLER
1006         help
1007           QSPI driver for NVIDIA Tegra QSPI Controller interface. This
1008           controller is different from the SPI controller and is available
1009           on Tegra SoCs starting from Tegra210.
1010
1011 config SPI_TEGRA114
1012         tristate "NVIDIA Tegra114 SPI Controller"
1013         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
1014         depends on RESET_CONTROLLER
1015         help
1016           SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
1017           is different than the older SoCs SPI controller and also register interface
1018           get changed with this controller.
1019
1020 config SPI_TEGRA20_SFLASH
1021         tristate "Nvidia Tegra20 Serial flash Controller"
1022         depends on ARCH_TEGRA || COMPILE_TEST
1023         depends on RESET_CONTROLLER
1024         help
1025           SPI driver for Nvidia Tegra20 Serial flash Controller interface.
1026           The main usecase of this controller is to use spi flash as boot
1027           device.
1028
1029 config SPI_TEGRA20_SLINK
1030         tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
1031         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
1032         depends on RESET_CONTROLLER
1033         help
1034           SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
1035
1036 config SPI_THUNDERX
1037         tristate "Cavium ThunderX SPI controller"
1038         depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
1039         help
1040           SPI host driver for the hardware found on Cavium ThunderX
1041           SOCs.
1042
1043 config SPI_TOPCLIFF_PCH
1044         tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
1045         depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
1046         help
1047           SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
1048           used in some x86 embedded processors.
1049
1050           This driver also supports the ML7213/ML7223/ML7831, a companion chip
1051           for the Atom E6xx series and compatible with the Intel EG20T PCH.
1052
1053 config SPI_UNIPHIER
1054         tristate "Socionext UniPhier SPI Controller"
1055         depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
1056         depends on HAS_IOMEM
1057         help
1058           This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
1059
1060           UniPhier SoCs have SCSSI and MCSSI SPI controllers.
1061           Every UniPhier SoC has SCSSI which supports single channel.
1062           Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
1063           This driver supports SCSSI only.
1064
1065           If your SoC supports SCSSI, say Y here.
1066
1067 config SPI_XCOMM
1068         tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
1069         depends on I2C
1070         help
1071           Support for the SPI-I2C bridge found on the Analog Devices
1072           AD-FMCOMMS1-EBZ board.
1073
1074 config SPI_XILINX
1075         tristate "Xilinx SPI controller common module"
1076         depends on HAS_IOMEM
1077         select SPI_BITBANG
1078         help
1079           This exposes the SPI controller IP from the Xilinx EDK.
1080
1081           See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
1082           Product Specification document (DS464) for hardware details.
1083
1084           Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
1085
1086 config SPI_XLP
1087         tristate "Cavium ThunderX2 SPI controller driver"
1088         depends on ARCH_THUNDER2 || COMPILE_TEST
1089         help
1090           Enable support for the SPI controller on the Cavium ThunderX2.
1091           (Originally on Netlogic XLP SoCs.)
1092
1093           If you have a Cavium ThunderX2 platform say Y here.
1094           If unsure, say N.
1095
1096 config SPI_XTENSA_XTFPGA
1097         tristate "Xtensa SPI controller for xtfpga"
1098         depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
1099         select SPI_BITBANG
1100         help
1101           SPI driver for xtfpga SPI master controller.
1102
1103           This simple SPI master controller is built into xtfpga bitstreams
1104           and is used to control daughterboard audio codec. It always transfers
1105           16 bit words in SPI mode 0, automatically asserting CS on transfer
1106           start and deasserting on end.
1107
1108 config SPI_ZYNQ_QSPI
1109         tristate "Xilinx Zynq QSPI controller"
1110         depends on ARCH_ZYNQ || COMPILE_TEST
1111         help
1112           This enables support for the Zynq Quad SPI controller
1113           in master mode.
1114           This controller only supports SPI memory interface.
1115
1116 config SPI_ZYNQMP_GQSPI
1117         tristate "Xilinx ZynqMP GQSPI controller"
1118         depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
1119         help
1120           Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
1121
1122 config SPI_AMD
1123         tristate "AMD SPI controller"
1124         depends on SPI_MASTER || COMPILE_TEST
1125         help
1126           Enables SPI controller driver for AMD SoC.
1127
1128 #
1129 # Add new SPI master controllers in alphabetical order above this line
1130 #
1131
1132 comment "SPI Multiplexer support"
1133
1134 config SPI_MUX
1135         tristate "SPI multiplexer support"
1136         select MULTIPLEXER
1137         help
1138           This adds support for SPI multiplexers. Each SPI mux will be
1139           accessible as a SPI controller, the devices behind the mux will appear
1140           to be chip selects on this controller. It is still necessary to
1141           select one or more specific mux-controller drivers.
1142
1143 #
1144 # There are lots of SPI device types, with sensors and memory
1145 # being probably the most widely used ones.
1146 #
1147 comment "SPI Protocol Masters"
1148
1149 config SPI_SPIDEV
1150         tristate "User mode SPI device driver support"
1151         help
1152           This supports user mode SPI protocol drivers.
1153
1154 config SPI_LOOPBACK_TEST
1155         tristate "spi loopback test framework support"
1156         depends on m
1157         help
1158           This enables the SPI loopback testing framework driver
1159
1160           primarily used for development of spi_master drivers
1161           and to detect regressions
1162
1163 config SPI_TLE62X0
1164         tristate "Infineon TLE62X0 (for power switching)"
1165         depends on SYSFS
1166         help
1167           SPI driver for Infineon TLE62X0 series line driver chips,
1168           such as the TLE6220, TLE6230 and TLE6240.  This provides a
1169           sysfs interface, with each line presented as a kind of GPIO
1170           exposing both switch control and diagnostic feedback.
1171
1172 #
1173 # Add new SPI protocol masters in alphabetical order above this line
1174 #
1175
1176 endif # SPI_MASTER
1177
1178 #
1179 # SLAVE side ... listening to other SPI masters
1180 #
1181
1182 config SPI_SLAVE
1183         bool "SPI slave protocol handlers"
1184         help
1185           If your system has a slave-capable SPI controller, you can enable
1186           slave protocol handlers.
1187
1188 if SPI_SLAVE
1189
1190 config SPI_SLAVE_TIME
1191         tristate "SPI slave handler reporting boot up time"
1192         help
1193           SPI slave handler responding with the time of reception of the last
1194           SPI message.
1195
1196 config SPI_SLAVE_SYSTEM_CONTROL
1197         tristate "SPI slave handler controlling system state"
1198         help
1199           SPI slave handler to allow remote control of system reboot, power
1200           off, halt, and suspend.
1201
1202 endif # SPI_SLAVE
1203
1204 config SPI_DYNAMIC
1205         def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
1206
1207 endif # SPI