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