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