spi: dw: Add DW SPI DMA/PCI/MMIO dependency on the DW SPI core
[platform/kernel/linux-starfive.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"
62         help
63           This is the driver for the Altera SPI Controller.
64
65 config SPI_AR934X
66         tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
67         depends on ATH79 || COMPILE_TEST
68         help
69           This enables support for the SPI controller present on the
70           Qualcomm Atheros AR934X/QCA95XX SoCs.
71
72 config SPI_ATH79
73         tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
74         depends on ATH79 || COMPILE_TEST
75         select SPI_BITBANG
76         help
77           This enables support for the SPI controller present on the
78           Atheros AR71XX/AR724X/AR913X SoCs.
79
80 config SPI_ARMADA_3700
81         tristate "Marvell Armada 3700 SPI Controller"
82         depends on (ARCH_MVEBU && OF) || COMPILE_TEST
83         help
84           This enables support for the SPI controller present on the
85           Marvell Armada 3700 SoCs.
86
87 config SPI_ATMEL
88         tristate "Atmel SPI Controller"
89         depends on ARCH_AT91 || COMPILE_TEST
90         depends on OF
91         help
92           This selects a driver for the Atmel SPI Controller, present on
93           many AT91 ARM chips.
94
95 config SPI_AT91_USART
96         tristate "Atmel USART Controller SPI driver"
97         depends on (ARCH_AT91 || COMPILE_TEST)
98         depends on MFD_AT91_USART
99         help
100           This selects a driver for the AT91 USART Controller as SPI Master,
101           present on AT91 and SAMA5 SoC series.
102
103 config SPI_ATMEL_QUADSPI
104         tristate "Atmel Quad SPI Controller"
105         depends on ARCH_AT91 || (ARM && COMPILE_TEST && !ARCH_EBSA110)
106         depends on OF && HAS_IOMEM
107         help
108           This enables support for the Quad SPI controller in master mode.
109           This driver does not support generic SPI. The implementation only
110           supports spi-mem interface.
111
112 config SPI_AU1550
113         tristate "Au1550/Au1200/Au1300 SPI Controller"
114         depends on MIPS_ALCHEMY
115         select SPI_BITBANG
116         help
117           If you say yes to this option, support will be included for the
118           PSC SPI controller found on Au1550, Au1200 and Au1300 series.
119
120 config SPI_AXI_SPI_ENGINE
121         tristate "Analog Devices AXI SPI Engine controller"
122         depends on HAS_IOMEM
123         help
124           This enables support for the Analog Devices AXI SPI Engine SPI controller.
125           It is part of the SPI Engine framework that is used in some Analog Devices
126           reference designs for FPGAs.
127
128 config SPI_BCM2835
129         tristate "BCM2835 SPI controller"
130         depends on GPIOLIB
131         depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
132         help
133           This selects a driver for the Broadcom BCM2835 SPI master.
134
135           The BCM2835 contains two types of SPI master controller; the
136           "universal SPI master", and the regular SPI controller. This driver
137           is for the regular SPI controller. Slave mode operation is not also
138           not supported.
139
140 config SPI_BCM2835AUX
141         tristate "BCM2835 SPI auxiliary controller"
142         depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
143         help
144           This selects a driver for the Broadcom BCM2835 SPI aux master.
145
146           The BCM2835 contains two types of SPI master controller; the
147           "universal SPI master", and the regular SPI controller.
148           This driver is for the universal/auxiliary SPI controller.
149
150 config SPI_BCM63XX
151         tristate "Broadcom BCM63xx SPI controller"
152         depends on BCM63XX || COMPILE_TEST
153         help
154           Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
155
156 config SPI_BCM63XX_HSSPI
157         tristate "Broadcom BCM63XX HS SPI controller driver"
158         depends on BCM63XX || ARCH_BCM_63XX || COMPILE_TEST
159         help
160           This enables support for the High Speed SPI controller present on
161           newer Broadcom BCM63XX SoCs.
162
163 config SPI_BCM_QSPI
164         tristate "Broadcom BSPI and MSPI controller support"
165         depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
166                         BMIPS_GENERIC || COMPILE_TEST
167         default ARCH_BCM_IPROC
168         help
169           Enables support for the Broadcom SPI flash and MSPI controller.
170           Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
171           based platforms. This driver works for both SPI master for spi-nor
172           flash device as well as MSPI device.
173
174 config SPI_BITBANG
175         tristate "Utilities for Bitbanging SPI masters"
176         help
177           With a few GPIO pins, your system can bitbang the SPI protocol.
178           Select this to get SPI support through I/O pins (GPIO, parallel
179           port, etc).  Or, some systems' SPI master controller drivers use
180           this code to manage the per-word or per-transfer accesses to the
181           hardware shift registers.
182
183           This is library code, and is automatically selected by drivers that
184           need it.  You only need to select this explicitly to support driver
185           modules that aren't part of this kernel tree.
186
187 config SPI_BUTTERFLY
188         tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
189         depends on PARPORT
190         select SPI_BITBANG
191         help
192           This uses a custom parallel port cable to connect to an AVR
193           Butterfly <http://www.atmel.com/products/avr/butterfly>, an
194           inexpensive battery powered microcontroller evaluation board.
195           This same cable can be used to flash new firmware.
196
197 config SPI_CADENCE
198         tristate "Cadence SPI controller"
199         help
200           This selects the Cadence SPI controller master driver
201           used by Xilinx Zynq and ZynqMP.
202
203 config SPI_CLPS711X
204         tristate "CLPS711X host SPI controller"
205         depends on ARCH_CLPS711X || COMPILE_TEST
206         help
207           This enables dedicated general purpose SPI/Microwire1-compatible
208           master mode interface (SSI1) for CLPS711X-based CPUs.
209
210 config SPI_COLDFIRE_QSPI
211         tristate "Freescale Coldfire QSPI controller"
212         depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
213         help
214           This enables support for the Coldfire QSPI controller in master
215           mode.
216
217 config SPI_DAVINCI
218         tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
219         depends on ARCH_DAVINCI || ARCH_KEYSTONE
220         select SPI_BITBANG
221         help
222           SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
223
224 config SPI_DESIGNWARE
225         tristate "DesignWare SPI controller core support"
226         help
227           general driver for SPI controller core from DesignWare
228
229 if SPI_DESIGNWARE
230
231 config SPI_DW_DMA
232         bool "DMA support for DW SPI controller"
233
234 config SPI_DW_PCI
235         tristate "PCI interface driver for DW SPI core"
236         depends on PCI
237
238 config SPI_DW_MMIO
239         tristate "Memory-mapped io interface driver for DW SPI core"
240         depends on HAS_IOMEM
241
242 endif
243
244 config SPI_DLN2
245        tristate "Diolan DLN-2 USB SPI adapter"
246        depends on MFD_DLN2
247        help
248          If you say yes to this option, support will be included for Diolan
249          DLN2, a USB to SPI interface.
250
251          This driver can also be built as a module.  If so, the module
252          will be called spi-dln2.
253
254 config SPI_EFM32
255         tristate "EFM32 SPI controller"
256         depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
257         select SPI_BITBANG
258         help
259           Driver for the spi controller found on Energy Micro's EFM32 SoCs.
260
261 config SPI_EP93XX
262         tristate "Cirrus Logic EP93xx SPI controller"
263         depends on ARCH_EP93XX || COMPILE_TEST
264         help
265           This enables using the Cirrus EP93xx SPI controller in master
266           mode.
267
268 config SPI_FALCON
269         bool "Falcon SPI controller support"
270         depends on SOC_FALCON
271         help
272           The external bus unit (EBU) found on the FALC-ON SoC has SPI
273           emulation that is designed for serial flash access. This driver
274           has only been tested with m25p80 type chips. The hardware has no
275           support for other types of SPI peripherals.
276
277 config SPI_FSI
278         tristate "FSI SPI driver"
279         depends on FSI
280         help
281           This enables support for the driver for FSI bus attached SPI
282           controllers.
283
284 config SPI_FSL_LPSPI
285         tristate "Freescale i.MX LPSPI controller"
286         depends on ARCH_MXC || COMPILE_TEST
287         help
288           This enables Freescale i.MX LPSPI controllers in master mode.
289
290 config SPI_FSL_QUADSPI
291         tristate "Freescale QSPI controller"
292         depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
293         depends on HAS_IOMEM
294         help
295           This enables support for the Quad SPI controller in master mode.
296           Up to four flash chips can be connected on two buses with two
297           chipselects each.
298           This controller does not support generic SPI messages. It only
299           supports the high-level SPI memory interface.
300
301 config SPI_HISI_SFC_V3XX
302         tristate "HiSilicon SPI-NOR Flash Controller for Hi16XX chipsets"
303         depends on (ARM64 && ACPI) || COMPILE_TEST
304         depends on HAS_IOMEM
305         help
306           This enables support for HiSilicon v3xx SPI-NOR flash controller
307           found in hi16xx chipsets.
308
309 config SPI_NXP_FLEXSPI
310         tristate "NXP Flex SPI controller"
311         depends on ARCH_LAYERSCAPE || HAS_IOMEM
312         help
313           This enables support for the Flex SPI controller in master mode.
314           Up to four slave devices can be connected on two buses with two
315           chipselects each.
316           This controller does not support generic SPI messages and only
317           supports the high-level SPI memory interface.
318
319 config SPI_GPIO
320         tristate "GPIO-based bitbanging SPI Master"
321         depends on GPIOLIB || COMPILE_TEST
322         select SPI_BITBANG
323         help
324           This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
325           interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
326           slaves connected to a bus using this driver are configured as usual,
327           except that the spi_board_info.controller_data holds the GPIO number
328           for the chipselect used by this controller driver.
329
330           Note that this driver often won't achieve even 1 Mbit/sec speeds,
331           making it unusually slow for SPI.  If your platform can inline
332           GPIO operations, you should be able to leverage that for better
333           speed with a custom version of this driver; see the source code.
334
335 config SPI_IMG_SPFI
336         tristate "IMG SPFI controller"
337         depends on MIPS || COMPILE_TEST
338         help
339           This enables support for the SPFI master controller found on
340           IMG SoCs.
341
342 config SPI_IMX
343         tristate "Freescale i.MX SPI controllers"
344         depends on ARCH_MXC || COMPILE_TEST
345         select SPI_BITBANG
346         help
347           This enables support for the Freescale i.MX SPI controllers.
348
349 config SPI_JCORE
350         tristate "J-Core SPI Master"
351         depends on OF && (SUPERH || COMPILE_TEST)
352         help
353           This enables support for the SPI master controller in the J-Core
354           synthesizable, open source SoC.
355
356 config SPI_LM70_LLP
357         tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
358         depends on PARPORT
359         select SPI_BITBANG
360         help
361           This driver supports the NS LM70 LLP Evaluation Board,
362           which interfaces to an LM70 temperature sensor using
363           a parallel port.
364
365 config SPI_LP8841_RTC
366         tristate "ICP DAS LP-8841 SPI Controller for RTC"
367         depends on MACH_PXA27X_DT || COMPILE_TEST
368         help
369           This driver provides an SPI master device to drive Maxim
370           DS-1302 real time clock.
371
372           Say N here unless you plan to run the kernel on an ICP DAS
373           LP-8x4x industrial computer.
374
375 config SPI_MPC52xx
376         tristate "Freescale MPC52xx SPI (non-PSC) controller support"
377         depends on PPC_MPC52xx
378         help
379           This drivers supports the MPC52xx SPI controller in master SPI
380           mode.
381
382 config SPI_MPC52xx_PSC
383         tristate "Freescale MPC52xx PSC SPI controller"
384         depends on PPC_MPC52xx
385         help
386           This enables using the Freescale MPC52xx Programmable Serial
387           Controller in master SPI mode.
388
389 config SPI_MPC512x_PSC
390         tristate "Freescale MPC512x PSC SPI controller"
391         depends on PPC_MPC512x
392         help
393           This enables using the Freescale MPC5121 Programmable Serial
394           Controller in SPI master mode.
395
396 config SPI_FSL_LIB
397         tristate
398         depends on OF
399
400 config SPI_FSL_CPM
401         tristate
402         depends on FSL_SOC
403
404 config SPI_FSL_SPI
405         tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
406         depends on OF
407         select SPI_FSL_LIB
408         select SPI_FSL_CPM if FSL_SOC
409         help
410           This enables using the Freescale SPI controllers in master mode.
411           MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
412           MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
413           This also enables using the Aeroflex Gaisler GRLIB SPI controller in
414           master mode.
415
416 config SPI_FSL_DSPI
417         tristate "Freescale DSPI controller"
418         select REGMAP_MMIO
419         depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
420         help
421           This enables support for the Freescale DSPI controller in master
422           mode. VF610, LS1021A and ColdFire platforms uses the controller.
423
424 config SPI_FSL_ESPI
425         tristate "Freescale eSPI controller"
426         depends on FSL_SOC
427         help
428           This enables using the Freescale eSPI controllers in master mode.
429           From MPC8536, 85xx platform uses the controller, and all P10xx,
430           P20xx, P30xx,P40xx, P50xx uses this controller.
431
432 config SPI_MESON_SPICC
433         tristate "Amlogic Meson SPICC controller"
434         depends on COMMON_CLK
435         depends on ARCH_MESON || COMPILE_TEST
436         help
437           This enables master mode support for the SPICC (SPI communication
438           controller) available in Amlogic Meson SoCs.
439
440 config SPI_MESON_SPIFC
441         tristate "Amlogic Meson SPIFC controller"
442         depends on ARCH_MESON || COMPILE_TEST
443         select REGMAP_MMIO
444         help
445           This enables master mode support for the SPIFC (SPI flash
446           controller) available in Amlogic Meson SoCs.
447
448 config SPI_MT65XX
449         tristate "MediaTek SPI controller"
450         depends on ARCH_MEDIATEK || COMPILE_TEST
451         help
452           This selects the MediaTek(R) SPI bus driver.
453           If you want to use MediaTek(R) SPI interface,
454           say Y or M here.If you are not sure, say N.
455           SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
456
457 config SPI_MT7621
458         tristate "MediaTek MT7621 SPI Controller"
459         depends on RALINK || COMPILE_TEST
460         help
461           This selects a driver for the MediaTek MT7621 SPI Controller.
462
463 config SPI_MTK_NOR
464         tristate "MediaTek SPI NOR controller"
465         depends on ARCH_MEDIATEK || COMPILE_TEST
466         help
467           This enables support for SPI NOR controller found on MediaTek
468           ARM SoCs. This is a controller specifically for SPI-NOR flash.
469           It can perform generic SPI transfers up to 6 bytes via generic
470           SPI interface as well as several SPI-NOR specific instructions
471           via SPI MEM interface.
472
473 config SPI_NPCM_FIU
474         tristate "Nuvoton NPCM FLASH Interface Unit"
475         depends on ARCH_NPCM || COMPILE_TEST
476         depends on OF && HAS_IOMEM
477         help
478           This enables support for the Flash Interface Unit SPI controller
479           in master mode.
480           This driver does not support generic SPI. The implementation only
481           supports spi-mem interface.
482
483 config SPI_NPCM_PSPI
484         tristate "Nuvoton NPCM PSPI Controller"
485         depends on ARCH_NPCM || COMPILE_TEST
486         help
487           This driver provides support for Nuvoton NPCM BMC
488           Peripheral SPI controller in master mode.
489
490 config SPI_LANTIQ_SSC
491         tristate "Lantiq SSC SPI controller"
492         depends on LANTIQ || COMPILE_TEST
493         help
494           This driver supports the Lantiq SSC SPI controller in master
495           mode. This controller is found on Intel (former Lantiq) SoCs like
496           the Danube, Falcon, xRX200, xRX300.
497
498 config SPI_OC_TINY
499         tristate "OpenCores tiny SPI"
500         depends on GPIOLIB || COMPILE_TEST
501         select SPI_BITBANG
502         help
503           This is the driver for OpenCores tiny SPI master controller.
504
505 config SPI_OCTEON
506         tristate "Cavium OCTEON SPI controller"
507         depends on CAVIUM_OCTEON_SOC
508         help
509           SPI host driver for the hardware found on some Cavium OCTEON
510           SOCs.
511
512 config SPI_OMAP_UWIRE
513         tristate "OMAP1 MicroWire"
514         depends on ARCH_OMAP1
515         select SPI_BITBANG
516         help
517           This hooks up to the MicroWire controller on OMAP1 chips.
518
519 config SPI_OMAP24XX
520         tristate "McSPI driver for OMAP"
521         depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
522         select SG_SPLIT
523         help
524           SPI master controller for OMAP24XX and later Multichannel SPI
525           (McSPI) modules.
526
527 config SPI_TI_QSPI
528         tristate "DRA7xxx QSPI controller support"
529         depends on ARCH_OMAP2PLUS || COMPILE_TEST
530         help
531           QSPI master controller for DRA7xxx used for flash devices.
532           This device supports single, dual and quad read support, while
533           it only supports single write mode.
534
535 config SPI_OMAP_100K
536         tristate "OMAP SPI 100K"
537         depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
538         help
539           OMAP SPI 100K master controller for omap7xx boards.
540
541 config SPI_ORION
542         tristate "Orion SPI master"
543         depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
544         help
545           This enables using the SPI master controller on the Orion
546           and MVEBU chips.
547
548 config SPI_PIC32
549         tristate "Microchip PIC32 series SPI"
550         depends on MACH_PIC32 || COMPILE_TEST
551         help
552           SPI driver for Microchip PIC32 SPI master controller.
553
554 config SPI_PIC32_SQI
555         tristate "Microchip PIC32 Quad SPI driver"
556         depends on MACH_PIC32 || COMPILE_TEST
557         help
558           SPI driver for PIC32 Quad SPI controller.
559
560 config SPI_PL022
561         tristate "ARM AMBA PL022 SSP controller"
562         depends on ARM_AMBA
563         default y if MACH_U300
564         default y if ARCH_REALVIEW
565         default y if INTEGRATOR_IMPD1
566         default y if ARCH_VERSATILE
567         help
568           This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
569           controller. If you have an embedded system with an AMBA(R)
570           bus and a PL022 controller, say Y or M here.
571
572 config SPI_PPC4xx
573         tristate "PPC4xx SPI Controller"
574         depends on PPC32 && 4xx
575         select SPI_BITBANG
576         help
577           This selects a driver for the PPC4xx SPI Controller.
578
579 config SPI_PXA2XX
580         tristate "PXA2xx SSP SPI master"
581         depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
582         select PXA_SSP if ARCH_PXA || ARCH_MMP
583         help
584           This enables using a PXA2xx or Sodaville SSP port as a SPI master
585           controller. The driver can be configured to use any SSP port and
586           additional documentation can be found a Documentation/spi/pxa2xx.rst.
587
588 config SPI_PXA2XX_PCI
589         def_tristate SPI_PXA2XX && PCI && COMMON_CLK
590
591 config SPI_ROCKCHIP
592         tristate "Rockchip SPI controller driver"
593         help
594           This selects a driver for Rockchip SPI controller.
595
596           If you say yes to this option, support will be included for
597           RK3066, RK3188 and RK3288 families of SPI controller.
598           Rockchip SPI controller support DMA transport and PIO mode.
599           The main usecase of this controller is to use spi flash as boot
600           device.
601
602 config SPI_RB4XX
603         tristate "Mikrotik RB4XX SPI master"
604         depends on SPI_MASTER && ATH79
605         help
606           SPI controller driver for the Mikrotik RB4xx series boards.
607
608 config SPI_RSPI
609         tristate "Renesas RSPI/QSPI controller"
610         depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
611         help
612           SPI driver for Renesas RSPI and QSPI blocks.
613
614 config SPI_QCOM_QSPI
615         tristate "QTI QSPI controller"
616         depends on ARCH_QCOM
617         help
618           QSPI(Quad SPI) driver for Qualcomm QSPI controller.
619
620 config SPI_QUP
621         tristate "Qualcomm SPI controller with QUP interface"
622         depends on ARCH_QCOM || (ARM && COMPILE_TEST)
623         help
624           Qualcomm Universal Peripheral (QUP) core is an AHB slave that
625           provides a common data path (an output FIFO and an input FIFO)
626           for serial peripheral interface (SPI) mini-core. SPI in master
627           mode supports up to 50MHz, up to four chip selects, programmable
628           data path from 4 bits to 32 bits and numerous protocol variants.
629
630           This driver can also be built as a module.  If so, the module
631           will be called spi_qup.
632
633 config SPI_QCOM_GENI
634         tristate "Qualcomm GENI based SPI controller"
635         depends on QCOM_GENI_SE
636         help
637           This driver supports GENI serial engine based SPI controller in
638           master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
639           yes to this option, support will be included for the built-in SPI
640           interface on the Qualcomm Technologies Inc.'s SoCs.
641
642           This driver can also be built as a module.  If so, the module
643           will be called spi-geni-qcom.
644
645 config SPI_S3C24XX
646         tristate "Samsung S3C24XX series SPI"
647         depends on ARCH_S3C24XX
648         select SPI_BITBANG
649         help
650           SPI driver for Samsung S3C24XX series ARM SoCs
651
652 config SPI_S3C24XX_FIQ
653         bool "S3C24XX driver with FIQ pseudo-DMA"
654         depends on SPI_S3C24XX
655         select FIQ
656         help
657           Enable FIQ support for the S3C24XX SPI driver to provide pseudo
658           DMA by using the fast-interrupt request framework, This allows
659           the driver to get DMA-like performance when there are either
660           no free DMA channels, or when doing transfers that required both
661           TX and RX data paths.
662
663 config SPI_S3C64XX
664         tristate "Samsung S3C64XX series type SPI"
665         depends on (PLAT_SAMSUNG || ARCH_EXYNOS || COMPILE_TEST)
666         help
667           SPI driver for Samsung S3C64XX and newer SoCs.
668
669 config SPI_SC18IS602
670         tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
671         depends on I2C
672         help
673           SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
674
675 config SPI_SH_MSIOF
676         tristate "SuperH MSIOF SPI controller"
677         depends on HAVE_CLK
678         depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
679         help
680           SPI driver for SuperH and SH Mobile MSIOF blocks.
681
682 config SPI_SH
683         tristate "SuperH SPI controller"
684         depends on SUPERH || COMPILE_TEST
685         help
686           SPI driver for SuperH SPI blocks.
687
688 config SPI_SH_SCI
689         tristate "SuperH SCI SPI controller"
690         depends on SUPERH
691         select SPI_BITBANG
692         help
693           SPI driver for SuperH SCI blocks.
694
695 config SPI_SH_HSPI
696         tristate "SuperH HSPI controller"
697         depends on ARCH_RENESAS || COMPILE_TEST
698         help
699           SPI driver for SuperH HSPI blocks.
700
701 config SPI_SIFIVE
702         tristate "SiFive SPI controller"
703         depends on HAS_IOMEM
704         help
705           This exposes the SPI controller IP from SiFive.
706
707 config SPI_SIRF
708         tristate "CSR SiRFprimaII SPI controller"
709         depends on SIRF_DMA
710         select SPI_BITBANG
711         help
712           SPI driver for CSR SiRFprimaII SoCs
713
714 config SPI_SLAVE_MT27XX
715         tristate "MediaTek SPI slave device"
716         depends on ARCH_MEDIATEK || COMPILE_TEST
717         depends on SPI_SLAVE
718         help
719           This selects the MediaTek(R) SPI slave device driver.
720           If you want to use MediaTek(R) SPI slave interface,
721           say Y or M here.If you are not sure, say N.
722           SPI slave drivers for Mediatek MT27XX series ARM SoCs.
723
724 config SPI_SPRD
725         tristate "Spreadtrum SPI controller"
726         depends on ARCH_SPRD || COMPILE_TEST
727         help
728           SPI driver for Spreadtrum SoCs.
729
730 config SPI_SPRD_ADI
731         tristate "Spreadtrum ADI controller"
732         depends on ARCH_SPRD || COMPILE_TEST
733         depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
734         help
735           ADI driver based on SPI for Spreadtrum SoCs.
736
737 config SPI_STM32
738         tristate "STMicroelectronics STM32 SPI controller"
739         depends on ARCH_STM32 || COMPILE_TEST
740         help
741           SPI driver for STMicroelectronics STM32 SoCs.
742
743           STM32 SPI controller supports DMA and PIO modes. When DMA
744           is not available, the driver automatically falls back to
745           PIO mode.
746
747 config SPI_STM32_QSPI
748         tristate "STMicroelectronics STM32 QUAD SPI controller"
749         depends on ARCH_STM32 || COMPILE_TEST
750         depends on OF
751         help
752           This enables support for the Quad SPI controller in master mode.
753           This driver does not support generic SPI. The implementation only
754           supports spi-mem interface.
755
756 config SPI_ST_SSC4
757         tristate "STMicroelectronics SPI SSC-based driver"
758         depends on ARCH_STI || COMPILE_TEST
759         help
760           STMicroelectronics SoCs support for SPI. If you say yes to
761           this option, support will be included for the SSC driven SPI.
762
763 config SPI_SUN4I
764         tristate "Allwinner A10 SoCs SPI controller"
765         depends on ARCH_SUNXI || COMPILE_TEST
766         help
767           SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
768
769 config SPI_SUN6I
770         tristate "Allwinner A31 SPI controller"
771         depends on ARCH_SUNXI || COMPILE_TEST
772         depends on RESET_CONTROLLER
773         help
774           This enables using the SPI controller on the Allwinner A31 SoCs.
775
776 config SPI_SYNQUACER
777         tristate "Socionext's SynQuacer HighSpeed SPI controller"
778         depends on ARCH_SYNQUACER || COMPILE_TEST
779         help
780           SPI driver for Socionext's High speed SPI controller which provides
781           various operating modes for interfacing to serial peripheral devices
782           that use the de-facto standard SPI protocol.
783
784           It also supports the new dual-bit and quad-bit SPI protocol.
785
786 config SPI_MXIC
787         tristate "Macronix MX25F0A SPI controller"
788         depends on SPI_MASTER
789         help
790           This selects the Macronix MX25F0A SPI controller driver.
791
792 config SPI_MXS
793         tristate "Freescale MXS SPI controller"
794         depends on ARCH_MXS
795         select STMP_DEVICE
796         help
797           SPI driver for Freescale MXS devices.
798
799 config SPI_TEGRA114
800         tristate "NVIDIA Tegra114 SPI Controller"
801         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
802         depends on RESET_CONTROLLER
803         help
804           SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
805           is different than the older SoCs SPI controller and also register interface
806           get changed with this controller.
807
808 config SPI_TEGRA20_SFLASH
809         tristate "Nvidia Tegra20 Serial flash Controller"
810         depends on ARCH_TEGRA || COMPILE_TEST
811         depends on RESET_CONTROLLER
812         help
813           SPI driver for Nvidia Tegra20 Serial flash Controller interface.
814           The main usecase of this controller is to use spi flash as boot
815           device.
816
817 config SPI_TEGRA20_SLINK
818         tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
819         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
820         depends on RESET_CONTROLLER
821         help
822           SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
823
824 config SPI_THUNDERX
825         tristate "Cavium ThunderX SPI controller"
826         depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
827         help
828           SPI host driver for the hardware found on Cavium ThunderX
829           SOCs.
830
831 config SPI_TOPCLIFF_PCH
832         tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
833         depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
834         help
835           SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
836           used in some x86 embedded processors.
837
838           This driver also supports the ML7213/ML7223/ML7831, a companion chip
839           for the Atom E6xx series and compatible with the Intel EG20T PCH.
840
841 config SPI_TXX9
842         tristate "Toshiba TXx9 SPI controller"
843         depends on GPIOLIB && (CPU_TX49XX || COMPILE_TEST)
844         help
845           SPI driver for Toshiba TXx9 MIPS SoCs
846
847 config SPI_UNIPHIER
848         tristate "Socionext UniPhier SPI Controller"
849         depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
850         depends on HAS_IOMEM
851         help
852           This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
853
854           UniPhier SoCs have SCSSI and MCSSI SPI controllers.
855           Every UniPhier SoC has SCSSI which supports single channel.
856           Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
857           This driver supports SCSSI only.
858
859           If your SoC supports SCSSI, say Y here.
860
861 config SPI_XCOMM
862         tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
863         depends on I2C
864         help
865           Support for the SPI-I2C bridge found on the Analog Devices
866           AD-FMCOMMS1-EBZ board.
867
868 config SPI_XILINX
869         tristate "Xilinx SPI controller common module"
870         depends on HAS_IOMEM
871         select SPI_BITBANG
872         help
873           This exposes the SPI controller IP from the Xilinx EDK.
874
875           See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
876           Product Specification document (DS464) for hardware details.
877
878           Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
879
880 config SPI_XLP
881         tristate "Netlogic XLP SPI controller driver"
882         depends on CPU_XLP || ARCH_THUNDER2 || COMPILE_TEST
883         help
884           Enable support for the SPI controller on the Netlogic XLP SoCs.
885           Currently supported XLP variants are XLP8XX, XLP3XX, XLP2XX, XLP9XX
886           and XLP5XX.
887
888           If you have a Netlogic XLP platform say Y here.
889           If unsure, say N.
890
891 config SPI_XTENSA_XTFPGA
892         tristate "Xtensa SPI controller for xtfpga"
893         depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
894         select SPI_BITBANG
895         help
896           SPI driver for xtfpga SPI master controller.
897
898           This simple SPI master controller is built into xtfpga bitstreams
899           and is used to control daughterboard audio codec. It always transfers
900           16 bit words in SPI mode 0, automatically asserting CS on transfer
901           start and deasserting on end.
902
903 config SPI_ZYNQ_QSPI
904         tristate "Xilinx Zynq QSPI controller"
905         depends on ARCH_ZYNQ || COMPILE_TEST
906         help
907           This enables support for the Zynq Quad SPI controller
908           in master mode.
909           This controller only supports SPI memory interface.
910
911 config SPI_ZYNQMP_GQSPI
912         tristate "Xilinx ZynqMP GQSPI controller"
913         depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
914         help
915           Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
916
917 config SPI_AMD
918         tristate "AMD SPI controller"
919         depends on SPI_MASTER || COMPILE_TEST
920         help
921           Enables SPI controller driver for AMD SoC.
922
923 #
924 # Add new SPI master controllers in alphabetical order above this line
925 #
926
927 comment "SPI Multiplexer support"
928
929 config SPI_MUX
930         tristate "SPI multiplexer support"
931         select MULTIPLEXER
932         help
933           This adds support for SPI multiplexers. Each SPI mux will be
934           accessible as a SPI controller, the devices behind the mux will appear
935           to be chip selects on this controller. It is still necessary to
936           select one or more specific mux-controller drivers.
937
938 #
939 # There are lots of SPI device types, with sensors and memory
940 # being probably the most widely used ones.
941 #
942 comment "SPI Protocol Masters"
943
944 config SPI_SPIDEV
945         tristate "User mode SPI device driver support"
946         help
947           This supports user mode SPI protocol drivers.
948
949           Note that this application programming interface is EXPERIMENTAL
950           and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
951
952 config SPI_LOOPBACK_TEST
953         tristate "spi loopback test framework support"
954         depends on m
955         help
956           This enables the SPI loopback testing framework driver
957
958           primarily used for development of spi_master drivers
959           and to detect regressions
960
961 config SPI_TLE62X0
962         tristate "Infineon TLE62X0 (for power switching)"
963         depends on SYSFS
964         help
965           SPI driver for Infineon TLE62X0 series line driver chips,
966           such as the TLE6220, TLE6230 and TLE6240.  This provides a
967           sysfs interface, with each line presented as a kind of GPIO
968           exposing both switch control and diagnostic feedback.
969
970 #
971 # Add new SPI protocol masters in alphabetical order above this line
972 #
973
974 endif # SPI_MASTER
975
976 #
977 # SLAVE side ... listening to other SPI masters
978 #
979
980 config SPI_SLAVE
981         bool "SPI slave protocol handlers"
982         help
983           If your system has a slave-capable SPI controller, you can enable
984           slave protocol handlers.
985
986 if SPI_SLAVE
987
988 config SPI_SLAVE_TIME
989         tristate "SPI slave handler reporting boot up time"
990         help
991           SPI slave handler responding with the time of reception of the last
992           SPI message.
993
994 config SPI_SLAVE_SYSTEM_CONTROL
995         tristate "SPI slave handler controlling system state"
996         help
997           SPI slave handler to allow remote control of system reboot, power
998           off, halt, and suspend.
999
1000 endif # SPI_SLAVE
1001
1002 endif # SPI