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