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