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