Merge branch 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-block.git] / drivers / spi / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # SPI driver configuration
4 #
5 menuconfig SPI
6         bool "SPI support"
7         depends on HAS_IOMEM
8         help
9           The "Serial Peripheral Interface" is a low level synchronous
10           protocol.  Chips that support SPI can have data transfer rates
11           up to several tens of Mbit/sec.  Chips are addressed with a
12           controller and a chipselect.  Most SPI slaves don't support
13           dynamic device discovery; some are even write-only or read-only.
14
15           SPI is widely used by microcontrollers to talk with sensors,
16           eeprom and flash memory, codecs and various other controller
17           chips, analog to digital (and d-to-a) converters, and more.
18           MMC and SD cards can be accessed using SPI protocol; and for
19           DataFlash cards used in MMC sockets, SPI must always be used.
20
21           SPI is one of a family of similar protocols using a four wire
22           interface (select, clock, data in, data out) including Microwire
23           (half duplex), SSP, SSI, and PSP.  This driver framework should
24           work with most such devices and controllers.
25
26 if SPI
27
28 config SPI_DEBUG
29         bool "Debug support for SPI drivers"
30         depends on DEBUG_KERNEL
31         help
32           Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
33           sysfs, and debugfs support in SPI controller and protocol drivers.
34
35 #
36 # MASTER side ... talking to discrete SPI slave chips including microcontrollers
37 #
38
39 config SPI_MASTER
40 #       bool "SPI Master Support"
41         bool
42         default SPI
43         help
44           If your system has an master-capable SPI controller (which
45           provides the clock and chipselect), you can enable that
46           controller and the protocol drivers for the SPI slave chips
47           that are connected.
48
49 if SPI_MASTER
50
51 config SPI_MEM
52         bool "SPI memory extension"
53         help
54           Enable this option if you want to enable the SPI memory extension.
55           This extension is meant to simplify interaction with SPI memories
56           by providing a high-level interface to send memory-like commands.
57
58 comment "SPI Master Controller Drivers"
59
60 config SPI_ALTERA
61         tristate "Altera SPI Controller"
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 config SPI_DW_PCI
230         tristate "PCI interface driver for DW SPI core"
231         depends on SPI_DESIGNWARE && PCI
232
233 config SPI_DW_MID_DMA
234         bool "DMA support for DW SPI controller on Intel MID platform"
235         depends on SPI_DW_PCI && DW_DMAC_PCI
236
237 config SPI_DW_MMIO
238         tristate "Memory-mapped io interface driver for DW SPI core"
239         depends on SPI_DESIGNWARE
240
241 config SPI_DLN2
242        tristate "Diolan DLN-2 USB SPI adapter"
243        depends on MFD_DLN2
244        help
245          If you say yes to this option, support will be included for Diolan
246          DLN2, a USB to SPI interface.
247
248          This driver can also be built as a module.  If so, the module
249          will be called spi-dln2.
250
251 config SPI_EFM32
252         tristate "EFM32 SPI controller"
253         depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
254         select SPI_BITBANG
255         help
256           Driver for the spi controller found on Energy Micro's EFM32 SoCs.
257
258 config SPI_EP93XX
259         tristate "Cirrus Logic EP93xx SPI controller"
260         depends on ARCH_EP93XX || COMPILE_TEST
261         help
262           This enables using the Cirrus EP93xx SPI controller in master
263           mode.
264
265 config SPI_FALCON
266         bool "Falcon SPI controller support"
267         depends on SOC_FALCON
268         help
269           The external bus unit (EBU) found on the FALC-ON SoC has SPI
270           emulation that is designed for serial flash access. This driver
271           has only been tested with m25p80 type chips. The hardware has no
272           support for other types of SPI peripherals.
273
274 config SPI_FSI
275         tristate "FSI SPI driver"
276         depends on FSI
277         help
278           This enables support for the driver for FSI bus attached SPI
279           controllers.
280
281 config SPI_FSL_LPSPI
282         tristate "Freescale i.MX LPSPI controller"
283         depends on ARCH_MXC || COMPILE_TEST
284         help
285           This enables Freescale i.MX LPSPI controllers in master mode.
286
287 config SPI_FSL_QUADSPI
288         tristate "Freescale QSPI controller"
289         depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
290         depends on HAS_IOMEM
291         help
292           This enables support for the Quad SPI controller in master mode.
293           Up to four flash chips can be connected on two buses with two
294           chipselects each.
295           This controller does not support generic SPI messages. It only
296           supports the high-level SPI memory interface.
297
298 config SPI_HISI_SFC_V3XX
299         tristate "HiSilicon SPI-NOR Flash Controller for Hi16XX chipsets"
300         depends on (ARM64 && ACPI) || COMPILE_TEST
301         depends on HAS_IOMEM
302         help
303           This enables support for HiSilicon v3xx SPI-NOR flash controller
304           found in hi16xx chipsets.
305
306 config SPI_NXP_FLEXSPI
307         tristate "NXP Flex SPI controller"
308         depends on ARCH_LAYERSCAPE || HAS_IOMEM
309         help
310           This enables support for the Flex SPI controller in master mode.
311           Up to four slave devices can be connected on two buses with two
312           chipselects each.
313           This controller does not support generic SPI messages and only
314           supports the high-level SPI memory interface.
315
316 config SPI_GPIO
317         tristate "GPIO-based bitbanging SPI Master"
318         depends on GPIOLIB || COMPILE_TEST
319         select SPI_BITBANG
320         help
321           This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
322           interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
323           slaves connected to a bus using this driver are configured as usual,
324           except that the spi_board_info.controller_data holds the GPIO number
325           for the chipselect used by this controller driver.
326
327           Note that this driver often won't achieve even 1 Mbit/sec speeds,
328           making it unusually slow for SPI.  If your platform can inline
329           GPIO operations, you should be able to leverage that for better
330           speed with a custom version of this driver; see the source code.
331
332 config SPI_IMG_SPFI
333         tristate "IMG SPFI controller"
334         depends on MIPS || COMPILE_TEST
335         help
336           This enables support for the SPFI master controller found on
337           IMG SoCs.
338
339 config SPI_IMX
340         tristate "Freescale i.MX SPI controllers"
341         depends on ARCH_MXC || COMPILE_TEST
342         select SPI_BITBANG
343         help
344           This enables support for the Freescale i.MX SPI controllers.
345
346 config SPI_JCORE
347         tristate "J-Core SPI Master"
348         depends on OF && (SUPERH || COMPILE_TEST)
349         help
350           This enables support for the SPI master controller in the J-Core
351           synthesizable, open source SoC.
352
353 config SPI_LM70_LLP
354         tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
355         depends on PARPORT
356         select SPI_BITBANG
357         help
358           This driver supports the NS LM70 LLP Evaluation Board,
359           which interfaces to an LM70 temperature sensor using
360           a parallel port.
361
362 config SPI_LP8841_RTC
363         tristate "ICP DAS LP-8841 SPI Controller for RTC"
364         depends on MACH_PXA27X_DT || COMPILE_TEST
365         help
366           This driver provides an SPI master device to drive Maxim
367           DS-1302 real time clock.
368
369           Say N here unless you plan to run the kernel on an ICP DAS
370           LP-8x4x industrial computer.
371
372 config SPI_MPC52xx
373         tristate "Freescale MPC52xx SPI (non-PSC) controller support"
374         depends on PPC_MPC52xx
375         help
376           This drivers supports the MPC52xx SPI controller in master SPI
377           mode.
378
379 config SPI_MPC52xx_PSC
380         tristate "Freescale MPC52xx PSC SPI controller"
381         depends on PPC_MPC52xx
382         help
383           This enables using the Freescale MPC52xx Programmable Serial
384           Controller in master SPI mode.
385
386 config SPI_MPC512x_PSC
387         tristate "Freescale MPC512x PSC SPI controller"
388         depends on PPC_MPC512x
389         help
390           This enables using the Freescale MPC5121 Programmable Serial
391           Controller in SPI master mode.
392
393 config SPI_FSL_LIB
394         tristate
395         depends on OF
396
397 config SPI_FSL_CPM
398         tristate
399         depends on FSL_SOC
400
401 config SPI_FSL_SPI
402         tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
403         depends on OF
404         select SPI_FSL_LIB
405         select SPI_FSL_CPM if FSL_SOC
406         help
407           This enables using the Freescale SPI controllers in master mode.
408           MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
409           MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
410           This also enables using the Aeroflex Gaisler GRLIB SPI controller in
411           master mode.
412
413 config SPI_FSL_DSPI
414         tristate "Freescale DSPI controller"
415         select REGMAP_MMIO
416         depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
417         help
418           This enables support for the Freescale DSPI controller in master
419           mode. VF610, LS1021A and ColdFire platforms uses the controller.
420
421 config SPI_FSL_ESPI
422         tristate "Freescale eSPI controller"
423         depends on FSL_SOC
424         help
425           This enables using the Freescale eSPI controllers in master mode.
426           From MPC8536, 85xx platform uses the controller, and all P10xx,
427           P20xx, P30xx,P40xx, P50xx uses this controller.
428
429 config SPI_MESON_SPICC
430         tristate "Amlogic Meson SPICC controller"
431         depends on COMMON_CLK
432         depends on ARCH_MESON || COMPILE_TEST
433         help
434           This enables master mode support for the SPICC (SPI communication
435           controller) available in Amlogic Meson SoCs.
436
437 config SPI_MESON_SPIFC
438         tristate "Amlogic Meson SPIFC controller"
439         depends on ARCH_MESON || COMPILE_TEST
440         select REGMAP_MMIO
441         help
442           This enables master mode support for the SPIFC (SPI flash
443           controller) available in Amlogic Meson SoCs.
444
445 config SPI_MT65XX
446         tristate "MediaTek SPI controller"
447         depends on ARCH_MEDIATEK || COMPILE_TEST
448         help
449           This selects the MediaTek(R) SPI bus driver.
450           If you want to use MediaTek(R) SPI interface,
451           say Y or M here.If you are not sure, say N.
452           SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
453
454 config SPI_MT7621
455         tristate "MediaTek MT7621 SPI Controller"
456         depends on RALINK || COMPILE_TEST
457         help
458           This selects a driver for the MediaTek MT7621 SPI Controller.
459
460 config SPI_MTK_NOR
461         tristate "MediaTek SPI NOR controller"
462         depends on ARCH_MEDIATEK || COMPILE_TEST
463         help
464           This enables support for SPI NOR controller found on MediaTek
465           ARM SoCs. This is a controller specifically for SPI-NOR flash.
466           It can perform generic SPI transfers up to 6 bytes via generic
467           SPI interface as well as several SPI-NOR specific instructions
468           via SPI MEM interface.
469
470 config SPI_NPCM_FIU
471         tristate "Nuvoton NPCM FLASH Interface Unit"
472         depends on ARCH_NPCM || COMPILE_TEST
473         depends on OF && HAS_IOMEM
474         help
475           This enables support for the Flash Interface Unit SPI controller
476           in master mode.
477           This driver does not support generic SPI. The implementation only
478           supports spi-mem interface.
479
480 config SPI_NPCM_PSPI
481         tristate "Nuvoton NPCM PSPI Controller"
482         depends on ARCH_NPCM || COMPILE_TEST
483         help
484           This driver provides support for Nuvoton NPCM BMC
485           Peripheral SPI controller in master mode.
486
487 config SPI_LANTIQ_SSC
488         tristate "Lantiq SSC SPI controller"
489         depends on LANTIQ || COMPILE_TEST
490         help
491           This driver supports the Lantiq SSC SPI controller in master
492           mode. This controller is found on Intel (former Lantiq) SoCs like
493           the Danube, Falcon, xRX200, xRX300.
494
495 config SPI_OC_TINY
496         tristate "OpenCores tiny SPI"
497         depends on GPIOLIB || COMPILE_TEST
498         select SPI_BITBANG
499         help
500           This is the driver for OpenCores tiny SPI master controller.
501
502 config SPI_OCTEON
503         tristate "Cavium OCTEON SPI controller"
504         depends on CAVIUM_OCTEON_SOC
505         help
506           SPI host driver for the hardware found on some Cavium OCTEON
507           SOCs.
508
509 config SPI_OMAP_UWIRE
510         tristate "OMAP1 MicroWire"
511         depends on ARCH_OMAP1
512         select SPI_BITBANG
513         help
514           This hooks up to the MicroWire controller on OMAP1 chips.
515
516 config SPI_OMAP24XX
517         tristate "McSPI driver for OMAP"
518         depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
519         select SG_SPLIT
520         help
521           SPI master controller for OMAP24XX and later Multichannel SPI
522           (McSPI) modules.
523
524 config SPI_TI_QSPI
525         tristate "DRA7xxx QSPI controller support"
526         depends on ARCH_OMAP2PLUS || COMPILE_TEST
527         help
528           QSPI master controller for DRA7xxx used for flash devices.
529           This device supports single, dual and quad read support, while
530           it only supports single write mode.
531
532 config SPI_OMAP_100K
533         tristate "OMAP SPI 100K"
534         depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
535         help
536           OMAP SPI 100K master controller for omap7xx boards.
537
538 config SPI_ORION
539         tristate "Orion SPI master"
540         depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
541         help
542           This enables using the SPI master controller on the Orion
543           and MVEBU chips.
544
545 config SPI_PIC32
546         tristate "Microchip PIC32 series SPI"
547         depends on MACH_PIC32 || COMPILE_TEST
548         help
549           SPI driver for Microchip PIC32 SPI master controller.
550
551 config SPI_PIC32_SQI
552         tristate "Microchip PIC32 Quad SPI driver"
553         depends on MACH_PIC32 || COMPILE_TEST
554         help
555           SPI driver for PIC32 Quad SPI controller.
556
557 config SPI_PL022
558         tristate "ARM AMBA PL022 SSP controller"
559         depends on ARM_AMBA
560         default y if MACH_U300
561         default y if ARCH_REALVIEW
562         default y if INTEGRATOR_IMPD1
563         default y if ARCH_VERSATILE
564         help
565           This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
566           controller. If you have an embedded system with an AMBA(R)
567           bus and a PL022 controller, say Y or M here.
568
569 config SPI_PPC4xx
570         tristate "PPC4xx SPI Controller"
571         depends on PPC32 && 4xx
572         select SPI_BITBANG
573         help
574           This selects a driver for the PPC4xx SPI Controller.
575
576 config SPI_PXA2XX
577         tristate "PXA2xx SSP SPI master"
578         depends on (ARCH_PXA || ARCH_MMP || PCI || ACPI)
579         select PXA_SSP if ARCH_PXA || ARCH_MMP
580         help
581           This enables using a PXA2xx or Sodaville SSP port as a SPI master
582           controller. The driver can be configured to use any SSP port and
583           additional documentation can be found a Documentation/spi/pxa2xx.rst.
584
585 config SPI_PXA2XX_PCI
586         def_tristate SPI_PXA2XX && PCI && COMMON_CLK
587
588 config SPI_ROCKCHIP
589         tristate "Rockchip SPI controller driver"
590         help
591           This selects a driver for Rockchip SPI controller.
592
593           If you say yes to this option, support will be included for
594           RK3066, RK3188 and RK3288 families of SPI controller.
595           Rockchip SPI controller support DMA transport and PIO mode.
596           The main usecase of this controller is to use spi flash as boot
597           device.
598
599 config SPI_RB4XX
600         tristate "Mikrotik RB4XX SPI master"
601         depends on SPI_MASTER && ATH79
602         help
603           SPI controller driver for the Mikrotik RB4xx series boards.
604
605 config SPI_RSPI
606         tristate "Renesas RSPI/QSPI controller"
607         depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
608         help
609           SPI driver for Renesas RSPI and QSPI blocks.
610
611 config SPI_QCOM_QSPI
612         tristate "QTI QSPI controller"
613         depends on ARCH_QCOM
614         help
615           QSPI(Quad SPI) driver for Qualcomm QSPI controller.
616
617 config SPI_QUP
618         tristate "Qualcomm SPI controller with QUP interface"
619         depends on ARCH_QCOM || (ARM && COMPILE_TEST)
620         help
621           Qualcomm Universal Peripheral (QUP) core is an AHB slave that
622           provides a common data path (an output FIFO and an input FIFO)
623           for serial peripheral interface (SPI) mini-core. SPI in master
624           mode supports up to 50MHz, up to four chip selects, programmable
625           data path from 4 bits to 32 bits and numerous protocol variants.
626
627           This driver can also be built as a module.  If so, the module
628           will be called spi_qup.
629
630 config SPI_QCOM_GENI
631         tristate "Qualcomm GENI based SPI controller"
632         depends on QCOM_GENI_SE
633         help
634           This driver supports GENI serial engine based SPI controller in
635           master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
636           yes to this option, support will be included for the built-in SPI
637           interface on the Qualcomm Technologies Inc.'s SoCs.
638
639           This driver can also be built as a module.  If so, the module
640           will be called spi-geni-qcom.
641
642 config SPI_S3C24XX
643         tristate "Samsung S3C24XX series SPI"
644         depends on ARCH_S3C24XX
645         select SPI_BITBANG
646         help
647           SPI driver for Samsung S3C24XX series ARM SoCs
648
649 config SPI_S3C24XX_FIQ
650         bool "S3C24XX driver with FIQ pseudo-DMA"
651         depends on SPI_S3C24XX
652         select FIQ
653         help
654           Enable FIQ support for the S3C24XX SPI driver to provide pseudo
655           DMA by using the fast-interrupt request framework, This allows
656           the driver to get DMA-like performance when there are either
657           no free DMA channels, or when doing transfers that required both
658           TX and RX data paths.
659
660 config SPI_S3C64XX
661         tristate "Samsung S3C64XX series type SPI"
662         depends on (PLAT_SAMSUNG || ARCH_EXYNOS || COMPILE_TEST)
663         help
664           SPI driver for Samsung S3C64XX and newer SoCs.
665
666 config SPI_SC18IS602
667         tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
668         depends on I2C
669         help
670           SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
671
672 config SPI_SH_MSIOF
673         tristate "SuperH MSIOF SPI controller"
674         depends on HAVE_CLK
675         depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
676         help
677           SPI driver for SuperH and SH Mobile MSIOF blocks.
678
679 config SPI_SH
680         tristate "SuperH SPI controller"
681         depends on SUPERH || COMPILE_TEST
682         help
683           SPI driver for SuperH SPI blocks.
684
685 config SPI_SH_SCI
686         tristate "SuperH SCI SPI controller"
687         depends on SUPERH
688         select SPI_BITBANG
689         help
690           SPI driver for SuperH SCI blocks.
691
692 config SPI_SH_HSPI
693         tristate "SuperH HSPI controller"
694         depends on ARCH_RENESAS || COMPILE_TEST
695         help
696           SPI driver for SuperH HSPI blocks.
697
698 config SPI_SIFIVE
699         tristate "SiFive SPI controller"
700         depends on HAS_IOMEM
701         help
702           This exposes the SPI controller IP from SiFive.
703
704 config SPI_SIRF
705         tristate "CSR SiRFprimaII SPI controller"
706         depends on SIRF_DMA
707         select SPI_BITBANG
708         help
709           SPI driver for CSR SiRFprimaII SoCs
710
711 config SPI_SLAVE_MT27XX
712         tristate "MediaTek SPI slave device"
713         depends on ARCH_MEDIATEK || COMPILE_TEST
714         depends on SPI_SLAVE
715         help
716           This selects the MediaTek(R) SPI slave device driver.
717           If you want to use MediaTek(R) SPI slave interface,
718           say Y or M here.If you are not sure, say N.
719           SPI slave drivers for Mediatek MT27XX series ARM SoCs.
720
721 config SPI_SPRD
722         tristate "Spreadtrum SPI controller"
723         depends on ARCH_SPRD || COMPILE_TEST
724         help
725           SPI driver for Spreadtrum SoCs.
726
727 config SPI_SPRD_ADI
728         tristate "Spreadtrum ADI controller"
729         depends on ARCH_SPRD || COMPILE_TEST
730         depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
731         help
732           ADI driver based on SPI for Spreadtrum SoCs.
733
734 config SPI_STM32
735         tristate "STMicroelectronics STM32 SPI controller"
736         depends on ARCH_STM32 || COMPILE_TEST
737         help
738           SPI driver for STMicroelectronics STM32 SoCs.
739
740           STM32 SPI controller supports DMA and PIO modes. When DMA
741           is not available, the driver automatically falls back to
742           PIO mode.
743
744 config SPI_STM32_QSPI
745         tristate "STMicroelectronics STM32 QUAD SPI controller"
746         depends on ARCH_STM32 || COMPILE_TEST
747         depends on OF
748         help
749           This enables support for the Quad SPI controller in master mode.
750           This driver does not support generic SPI. The implementation only
751           supports spi-mem interface.
752
753 config SPI_ST_SSC4
754         tristate "STMicroelectronics SPI SSC-based driver"
755         depends on ARCH_STI || COMPILE_TEST
756         help
757           STMicroelectronics SoCs support for SPI. If you say yes to
758           this option, support will be included for the SSC driven SPI.
759
760 config SPI_SUN4I
761         tristate "Allwinner A10 SoCs SPI controller"
762         depends on ARCH_SUNXI || COMPILE_TEST
763         help
764           SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
765
766 config SPI_SUN6I
767         tristate "Allwinner A31 SPI controller"
768         depends on ARCH_SUNXI || COMPILE_TEST
769         depends on RESET_CONTROLLER
770         help
771           This enables using the SPI controller on the Allwinner A31 SoCs.
772
773 config SPI_SYNQUACER
774         tristate "Socionext's SynQuacer HighSpeed SPI controller"
775         depends on ARCH_SYNQUACER || COMPILE_TEST
776         help
777           SPI driver for Socionext's High speed SPI controller which provides
778           various operating modes for interfacing to serial peripheral devices
779           that use the de-facto standard SPI protocol.
780
781           It also supports the new dual-bit and quad-bit SPI protocol.
782
783 config SPI_MXIC
784         tristate "Macronix MX25F0A SPI controller"
785         depends on SPI_MASTER
786         help
787           This selects the Macronix MX25F0A SPI controller driver.
788
789 config SPI_MXS
790         tristate "Freescale MXS SPI controller"
791         depends on ARCH_MXS
792         select STMP_DEVICE
793         help
794           SPI driver for Freescale MXS devices.
795
796 config SPI_TEGRA114
797         tristate "NVIDIA Tegra114 SPI Controller"
798         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
799         depends on RESET_CONTROLLER
800         help
801           SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
802           is different than the older SoCs SPI controller and also register interface
803           get changed with this controller.
804
805 config SPI_TEGRA20_SFLASH
806         tristate "Nvidia Tegra20 Serial flash Controller"
807         depends on ARCH_TEGRA || COMPILE_TEST
808         depends on RESET_CONTROLLER
809         help
810           SPI driver for Nvidia Tegra20 Serial flash Controller interface.
811           The main usecase of this controller is to use spi flash as boot
812           device.
813
814 config SPI_TEGRA20_SLINK
815         tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
816         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
817         depends on RESET_CONTROLLER
818         help
819           SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
820
821 config SPI_THUNDERX
822         tristate "Cavium ThunderX SPI controller"
823         depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
824         help
825           SPI host driver for the hardware found on Cavium ThunderX
826           SOCs.
827
828 config SPI_TOPCLIFF_PCH
829         tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
830         depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
831         help
832           SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
833           used in some x86 embedded processors.
834
835           This driver also supports the ML7213/ML7223/ML7831, a companion chip
836           for the Atom E6xx series and compatible with the Intel EG20T PCH.
837
838 config SPI_TXX9
839         tristate "Toshiba TXx9 SPI controller"
840         depends on GPIOLIB && (CPU_TX49XX || COMPILE_TEST)
841         help
842           SPI driver for Toshiba TXx9 MIPS SoCs
843
844 config SPI_UNIPHIER
845         tristate "Socionext UniPhier SPI Controller"
846         depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
847         help
848           This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
849
850           UniPhier SoCs have SCSSI and MCSSI SPI controllers.
851           Every UniPhier SoC has SCSSI which supports single channel.
852           Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
853           This driver supports SCSSI only.
854
855           If your SoC supports SCSSI, say Y here.
856
857 config SPI_XCOMM
858         tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
859         depends on I2C
860         help
861           Support for the SPI-I2C bridge found on the Analog Devices
862           AD-FMCOMMS1-EBZ board.
863
864 config SPI_XILINX
865         tristate "Xilinx SPI controller common module"
866         depends on HAS_IOMEM
867         select SPI_BITBANG
868         help
869           This exposes the SPI controller IP from the Xilinx EDK.
870
871           See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
872           Product Specification document (DS464) for hardware details.
873
874           Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
875
876 config SPI_XLP
877         tristate "Netlogic XLP SPI controller driver"
878         depends on CPU_XLP || ARCH_THUNDER2 || COMPILE_TEST
879         help
880           Enable support for the SPI controller on the Netlogic XLP SoCs.
881           Currently supported XLP variants are XLP8XX, XLP3XX, XLP2XX, XLP9XX
882           and XLP5XX.
883
884           If you have a Netlogic XLP platform say Y here.
885           If unsure, say N.
886
887 config SPI_XTENSA_XTFPGA
888         tristate "Xtensa SPI controller for xtfpga"
889         depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
890         select SPI_BITBANG
891         help
892           SPI driver for xtfpga SPI master controller.
893
894           This simple SPI master controller is built into xtfpga bitstreams
895           and is used to control daughterboard audio codec. It always transfers
896           16 bit words in SPI mode 0, automatically asserting CS on transfer
897           start and deasserting on end.
898
899 config SPI_ZYNQ_QSPI
900         tristate "Xilinx Zynq QSPI controller"
901         depends on ARCH_ZYNQ || COMPILE_TEST
902         help
903           This enables support for the Zynq Quad SPI controller
904           in master mode.
905           This controller only supports SPI memory interface.
906
907 config SPI_ZYNQMP_GQSPI
908         tristate "Xilinx ZynqMP GQSPI controller"
909         depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
910         help
911           Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
912
913 #
914 # Add new SPI master controllers in alphabetical order above this line
915 #
916
917 comment "SPI Multiplexer support"
918
919 config SPI_MUX
920         tristate "SPI multiplexer support"
921         select MULTIPLEXER
922         help
923           This adds support for SPI multiplexers. Each SPI mux will be
924           accessible as a SPI controller, the devices behind the mux will appear
925           to be chip selects on this controller. It is still necessary to
926           select one or more specific mux-controller drivers.
927
928 #
929 # There are lots of SPI device types, with sensors and memory
930 # being probably the most widely used ones.
931 #
932 comment "SPI Protocol Masters"
933
934 config SPI_SPIDEV
935         tristate "User mode SPI device driver support"
936         help
937           This supports user mode SPI protocol drivers.
938
939           Note that this application programming interface is EXPERIMENTAL
940           and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
941
942 config SPI_LOOPBACK_TEST
943         tristate "spi loopback test framework support"
944         depends on m
945         help
946           This enables the SPI loopback testing framework driver
947
948           primarily used for development of spi_master drivers
949           and to detect regressions
950
951 config SPI_TLE62X0
952         tristate "Infineon TLE62X0 (for power switching)"
953         depends on SYSFS
954         help
955           SPI driver for Infineon TLE62X0 series line driver chips,
956           such as the TLE6220, TLE6230 and TLE6240.  This provides a
957           sysfs interface, with each line presented as a kind of GPIO
958           exposing both switch control and diagnostic feedback.
959
960 #
961 # Add new SPI protocol masters in alphabetical order above this line
962 #
963
964 endif # SPI_MASTER
965
966 #
967 # SLAVE side ... listening to other SPI masters
968 #
969
970 config SPI_SLAVE
971         bool "SPI slave protocol handlers"
972         help
973           If your system has a slave-capable SPI controller, you can enable
974           slave protocol handlers.
975
976 if SPI_SLAVE
977
978 config SPI_SLAVE_TIME
979         tristate "SPI slave handler reporting boot up time"
980         help
981           SPI slave handler responding with the time of reception of the last
982           SPI message.
983
984 config SPI_SLAVE_SYSTEM_CONTROL
985         tristate "SPI slave handler controlling system state"
986         help
987           SPI slave handler to allow remote control of system reboot, power
988           off, halt, and suspend.
989
990 endif # SPI_SLAVE
991
992 endif # SPI