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