xref: /openbmc/linux/drivers/spi/Kconfig (revision f8e17c17)
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_NPCM_FIU
447	tristate "Nuvoton NPCM FLASH Interface Unit"
448	depends on ARCH_NPCM || COMPILE_TEST
449	depends on OF && HAS_IOMEM
450	help
451	  This enables support for the Flash Interface Unit SPI controller
452	  in master mode.
453	  This driver does not support generic SPI. The implementation only
454	  supports spi-mem interface.
455
456config SPI_NPCM_PSPI
457	tristate "Nuvoton NPCM PSPI Controller"
458	depends on ARCH_NPCM || COMPILE_TEST
459	help
460	  This driver provides support for Nuvoton NPCM BMC
461	  Peripheral SPI controller in master mode.
462
463config SPI_LANTIQ_SSC
464	tristate "Lantiq SSC SPI controller"
465	depends on LANTIQ || COMPILE_TEST
466	help
467	  This driver supports the Lantiq SSC SPI controller in master
468	  mode. This controller is found on Intel (former Lantiq) SoCs like
469	  the Danube, Falcon, xRX200, xRX300.
470
471config SPI_OC_TINY
472	tristate "OpenCores tiny SPI"
473	depends on GPIOLIB || COMPILE_TEST
474	select SPI_BITBANG
475	help
476	  This is the driver for OpenCores tiny SPI master controller.
477
478config SPI_OCTEON
479	tristate "Cavium OCTEON SPI controller"
480	depends on CAVIUM_OCTEON_SOC
481	help
482	  SPI host driver for the hardware found on some Cavium OCTEON
483	  SOCs.
484
485config SPI_OMAP_UWIRE
486	tristate "OMAP1 MicroWire"
487	depends on ARCH_OMAP1
488	select SPI_BITBANG
489	help
490	  This hooks up to the MicroWire controller on OMAP1 chips.
491
492config SPI_OMAP24XX
493	tristate "McSPI driver for OMAP"
494	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
495	select SG_SPLIT
496	help
497	  SPI master controller for OMAP24XX and later Multichannel SPI
498	  (McSPI) modules.
499
500config SPI_TI_QSPI
501	tristate "DRA7xxx QSPI controller support"
502	depends on ARCH_OMAP2PLUS || COMPILE_TEST
503	help
504	  QSPI master controller for DRA7xxx used for flash devices.
505	  This device supports single, dual and quad read support, while
506	  it only supports single write mode.
507
508config SPI_OMAP_100K
509	tristate "OMAP SPI 100K"
510	depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
511	help
512	  OMAP SPI 100K master controller for omap7xx boards.
513
514config SPI_ORION
515	tristate "Orion SPI master"
516	depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
517	help
518	  This enables using the SPI master controller on the Orion
519	  and MVEBU chips.
520
521config SPI_PIC32
522	tristate "Microchip PIC32 series SPI"
523	depends on MACH_PIC32 || COMPILE_TEST
524	help
525	  SPI driver for Microchip PIC32 SPI master controller.
526
527config SPI_PIC32_SQI
528	tristate "Microchip PIC32 Quad SPI driver"
529	depends on MACH_PIC32 || COMPILE_TEST
530	help
531	  SPI driver for PIC32 Quad SPI controller.
532
533config SPI_PL022
534	tristate "ARM AMBA PL022 SSP controller"
535	depends on ARM_AMBA
536	default y if MACH_U300
537	default y if ARCH_REALVIEW
538	default y if INTEGRATOR_IMPD1
539	default y if ARCH_VERSATILE
540	help
541	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
542	  controller. If you have an embedded system with an AMBA(R)
543	  bus and a PL022 controller, say Y or M here.
544
545config SPI_PPC4xx
546	tristate "PPC4xx SPI Controller"
547	depends on PPC32 && 4xx
548	select SPI_BITBANG
549	help
550	  This selects a driver for the PPC4xx SPI Controller.
551
552config SPI_PXA2XX
553	tristate "PXA2xx SSP SPI master"
554	depends on (ARCH_PXA || ARCH_MMP || PCI || ACPI)
555	select PXA_SSP if ARCH_PXA || ARCH_MMP
556	help
557	  This enables using a PXA2xx or Sodaville SSP port as a SPI master
558	  controller. The driver can be configured to use any SSP port and
559	  additional documentation can be found a Documentation/spi/pxa2xx.rst.
560
561config SPI_PXA2XX_PCI
562	def_tristate SPI_PXA2XX && PCI && COMMON_CLK
563
564config SPI_ROCKCHIP
565	tristate "Rockchip SPI controller driver"
566	help
567	  This selects a driver for Rockchip SPI controller.
568
569	  If you say yes to this option, support will be included for
570	  RK3066, RK3188 and RK3288 families of SPI controller.
571	  Rockchip SPI controller support DMA transport and PIO mode.
572	  The main usecase of this controller is to use spi flash as boot
573	  device.
574
575config SPI_RB4XX
576	tristate "Mikrotik RB4XX SPI master"
577	depends on SPI_MASTER && ATH79
578	help
579	  SPI controller driver for the Mikrotik RB4xx series boards.
580
581config SPI_RSPI
582	tristate "Renesas RSPI/QSPI controller"
583	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
584	help
585	  SPI driver for Renesas RSPI and QSPI blocks.
586
587config SPI_QCOM_QSPI
588	tristate "QTI QSPI controller"
589	depends on ARCH_QCOM
590	help
591	  QSPI(Quad SPI) driver for Qualcomm QSPI controller.
592
593config SPI_QUP
594	tristate "Qualcomm SPI controller with QUP interface"
595	depends on ARCH_QCOM || (ARM && COMPILE_TEST)
596	help
597	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
598	  provides a common data path (an output FIFO and an input FIFO)
599	  for serial peripheral interface (SPI) mini-core. SPI in master
600	  mode supports up to 50MHz, up to four chip selects, programmable
601	  data path from 4 bits to 32 bits and numerous protocol variants.
602
603	  This driver can also be built as a module.  If so, the module
604	  will be called spi_qup.
605
606config SPI_QCOM_GENI
607	tristate "Qualcomm GENI based SPI controller"
608	depends on QCOM_GENI_SE
609	help
610	  This driver supports GENI serial engine based SPI controller in
611	  master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
612	  yes to this option, support will be included for the built-in SPI
613	  interface on the Qualcomm Technologies Inc.'s SoCs.
614
615	  This driver can also be built as a module.  If so, the module
616	  will be called spi-geni-qcom.
617
618config SPI_S3C24XX
619	tristate "Samsung S3C24XX series SPI"
620	depends on ARCH_S3C24XX
621	select SPI_BITBANG
622	help
623	  SPI driver for Samsung S3C24XX series ARM SoCs
624
625config SPI_S3C24XX_FIQ
626	bool "S3C24XX driver with FIQ pseudo-DMA"
627	depends on SPI_S3C24XX
628	select FIQ
629	help
630	  Enable FIQ support for the S3C24XX SPI driver to provide pseudo
631	  DMA by using the fast-interrupt request framework, This allows
632	  the driver to get DMA-like performance when there are either
633	  no free DMA channels, or when doing transfers that required both
634	  TX and RX data paths.
635
636config SPI_S3C64XX
637	tristate "Samsung S3C64XX series type SPI"
638	depends on (PLAT_SAMSUNG || ARCH_EXYNOS || COMPILE_TEST)
639	help
640	  SPI driver for Samsung S3C64XX and newer SoCs.
641
642config SPI_SC18IS602
643	tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
644	depends on I2C
645	help
646	  SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
647
648config SPI_SH_MSIOF
649	tristate "SuperH MSIOF SPI controller"
650	depends on HAVE_CLK
651	depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
652	help
653	  SPI driver for SuperH and SH Mobile MSIOF blocks.
654
655config SPI_SH
656	tristate "SuperH SPI controller"
657	depends on SUPERH || COMPILE_TEST
658	help
659	  SPI driver for SuperH SPI blocks.
660
661config SPI_SH_SCI
662	tristate "SuperH SCI SPI controller"
663	depends on SUPERH
664	select SPI_BITBANG
665	help
666	  SPI driver for SuperH SCI blocks.
667
668config SPI_SH_HSPI
669	tristate "SuperH HSPI controller"
670	depends on ARCH_RENESAS || COMPILE_TEST
671	help
672	  SPI driver for SuperH HSPI blocks.
673
674config SPI_SIFIVE
675	tristate "SiFive SPI controller"
676	depends on HAS_IOMEM
677	help
678	  This exposes the SPI controller IP from SiFive.
679
680config SPI_SIRF
681	tristate "CSR SiRFprimaII SPI controller"
682	depends on SIRF_DMA
683	select SPI_BITBANG
684	help
685	  SPI driver for CSR SiRFprimaII SoCs
686
687config SPI_SLAVE_MT27XX
688	tristate "MediaTek SPI slave device"
689	depends on ARCH_MEDIATEK || COMPILE_TEST
690	depends on SPI_SLAVE
691	help
692	  This selects the MediaTek(R) SPI slave device driver.
693	  If you want to use MediaTek(R) SPI slave interface,
694	  say Y or M here.If you are not sure, say N.
695	  SPI slave drivers for Mediatek MT27XX series ARM SoCs.
696
697config SPI_SPRD
698	tristate "Spreadtrum SPI controller"
699	depends on ARCH_SPRD || COMPILE_TEST
700	help
701	  SPI driver for Spreadtrum SoCs.
702
703config SPI_SPRD_ADI
704	tristate "Spreadtrum ADI controller"
705	depends on ARCH_SPRD || COMPILE_TEST
706	depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
707	help
708	  ADI driver based on SPI for Spreadtrum SoCs.
709
710config SPI_STM32
711	tristate "STMicroelectronics STM32 SPI controller"
712	depends on ARCH_STM32 || COMPILE_TEST
713	help
714	  SPI driver for STMicroelectronics STM32 SoCs.
715
716	  STM32 SPI controller supports DMA and PIO modes. When DMA
717	  is not available, the driver automatically falls back to
718	  PIO mode.
719
720config SPI_STM32_QSPI
721	tristate "STMicroelectronics STM32 QUAD SPI controller"
722	depends on ARCH_STM32 || COMPILE_TEST
723	depends on OF
724	help
725	  This enables support for the Quad SPI controller in master mode.
726	  This driver does not support generic SPI. The implementation only
727	  supports spi-mem interface.
728
729config SPI_ST_SSC4
730	tristate "STMicroelectronics SPI SSC-based driver"
731	depends on ARCH_STI || COMPILE_TEST
732	help
733	  STMicroelectronics SoCs support for SPI. If you say yes to
734	  this option, support will be included for the SSC driven SPI.
735
736config SPI_SUN4I
737	tristate "Allwinner A10 SoCs SPI controller"
738	depends on ARCH_SUNXI || COMPILE_TEST
739	help
740	  SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
741
742config SPI_SUN6I
743	tristate "Allwinner A31 SPI controller"
744	depends on ARCH_SUNXI || COMPILE_TEST
745	depends on RESET_CONTROLLER
746	help
747	  This enables using the SPI controller on the Allwinner A31 SoCs.
748
749config SPI_SYNQUACER
750	tristate "Socionext's SynQuacer HighSpeed SPI controller"
751	depends on ARCH_SYNQUACER || COMPILE_TEST
752	help
753	  SPI driver for Socionext's High speed SPI controller which provides
754	  various operating modes for interfacing to serial peripheral devices
755	  that use the de-facto standard SPI protocol.
756
757	  It also supports the new dual-bit and quad-bit SPI protocol.
758
759config SPI_MXIC
760	tristate "Macronix MX25F0A SPI controller"
761	depends on SPI_MASTER
762	help
763	  This selects the Macronix MX25F0A SPI controller driver.
764
765config SPI_MXS
766	tristate "Freescale MXS SPI controller"
767	depends on ARCH_MXS
768	select STMP_DEVICE
769	help
770	  SPI driver for Freescale MXS devices.
771
772config SPI_TEGRA114
773	tristate "NVIDIA Tegra114 SPI Controller"
774	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
775	depends on RESET_CONTROLLER
776	help
777	  SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
778	  is different than the older SoCs SPI controller and also register interface
779	  get changed with this controller.
780
781config SPI_TEGRA20_SFLASH
782	tristate "Nvidia Tegra20 Serial flash Controller"
783	depends on ARCH_TEGRA || COMPILE_TEST
784	depends on RESET_CONTROLLER
785	help
786	  SPI driver for Nvidia Tegra20 Serial flash Controller interface.
787	  The main usecase of this controller is to use spi flash as boot
788	  device.
789
790config SPI_TEGRA20_SLINK
791	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
792	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
793	depends on RESET_CONTROLLER
794	help
795	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
796
797config SPI_THUNDERX
798	tristate "Cavium ThunderX SPI controller"
799	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
800	help
801	  SPI host driver for the hardware found on Cavium ThunderX
802	  SOCs.
803
804config SPI_TOPCLIFF_PCH
805	tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
806	depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
807	help
808	  SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
809	  used in some x86 embedded processors.
810
811	  This driver also supports the ML7213/ML7223/ML7831, a companion chip
812	  for the Atom E6xx series and compatible with the Intel EG20T PCH.
813
814config SPI_TXX9
815	tristate "Toshiba TXx9 SPI controller"
816	depends on GPIOLIB && (CPU_TX49XX || COMPILE_TEST)
817	help
818	  SPI driver for Toshiba TXx9 MIPS SoCs
819
820config SPI_UNIPHIER
821	tristate "Socionext UniPhier SPI Controller"
822	depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
823	help
824	  This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
825
826	  UniPhier SoCs have SCSSI and MCSSI SPI controllers.
827	  Every UniPhier SoC has SCSSI which supports single channel.
828	  Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
829	  This driver supports SCSSI only.
830
831	  If your SoC supports SCSSI, say Y here.
832
833config SPI_XCOMM
834	tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
835	depends on I2C
836	help
837	  Support for the SPI-I2C bridge found on the Analog Devices
838	  AD-FMCOMMS1-EBZ board.
839
840config SPI_XILINX
841	tristate "Xilinx SPI controller common module"
842	depends on HAS_IOMEM
843	select SPI_BITBANG
844	help
845	  This exposes the SPI controller IP from the Xilinx EDK.
846
847	  See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
848	  Product Specification document (DS464) for hardware details.
849
850	  Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
851
852config SPI_XLP
853	tristate "Netlogic XLP SPI controller driver"
854	depends on CPU_XLP || ARCH_THUNDER2 || COMPILE_TEST
855	help
856	  Enable support for the SPI controller on the Netlogic XLP SoCs.
857	  Currently supported XLP variants are XLP8XX, XLP3XX, XLP2XX, XLP9XX
858	  and XLP5XX.
859
860	  If you have a Netlogic XLP platform say Y here.
861	  If unsure, say N.
862
863config SPI_XTENSA_XTFPGA
864	tristate "Xtensa SPI controller for xtfpga"
865	depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
866	select SPI_BITBANG
867	help
868	  SPI driver for xtfpga SPI master controller.
869
870	  This simple SPI master controller is built into xtfpga bitstreams
871	  and is used to control daughterboard audio codec. It always transfers
872	  16 bit words in SPI mode 0, automatically asserting CS on transfer
873	  start and deasserting on end.
874
875config SPI_ZYNQ_QSPI
876	tristate "Xilinx Zynq QSPI controller"
877	depends on ARCH_ZYNQ || COMPILE_TEST
878	help
879	  This enables support for the Zynq Quad SPI controller
880	  in master mode.
881	  This controller only supports SPI memory interface.
882
883config SPI_ZYNQMP_GQSPI
884	tristate "Xilinx ZynqMP GQSPI controller"
885	depends on (SPI_MASTER && HAS_DMA) || COMPILE_TEST
886	help
887	  Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
888
889#
890# Add new SPI master controllers in alphabetical order above this line
891#
892
893#
894# There are lots of SPI device types, with sensors and memory
895# being probably the most widely used ones.
896#
897comment "SPI Protocol Masters"
898
899config SPI_SPIDEV
900	tristate "User mode SPI device driver support"
901	help
902	  This supports user mode SPI protocol drivers.
903
904	  Note that this application programming interface is EXPERIMENTAL
905	  and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
906
907config SPI_LOOPBACK_TEST
908	tristate "spi loopback test framework support"
909	depends on m
910	help
911	  This enables the SPI loopback testing framework driver
912
913	  primarily used for development of spi_master drivers
914	  and to detect regressions
915
916config SPI_TLE62X0
917	tristate "Infineon TLE62X0 (for power switching)"
918	depends on SYSFS
919	help
920	  SPI driver for Infineon TLE62X0 series line driver chips,
921	  such as the TLE6220, TLE6230 and TLE6240.  This provides a
922	  sysfs interface, with each line presented as a kind of GPIO
923	  exposing both switch control and diagnostic feedback.
924
925#
926# Add new SPI protocol masters in alphabetical order above this line
927#
928
929endif # SPI_MASTER
930
931#
932# SLAVE side ... listening to other SPI masters
933#
934
935config SPI_SLAVE
936	bool "SPI slave protocol handlers"
937	help
938	  If your system has a slave-capable SPI controller, you can enable
939	  slave protocol handlers.
940
941if SPI_SLAVE
942
943config SPI_SLAVE_TIME
944	tristate "SPI slave handler reporting boot up time"
945	help
946	  SPI slave handler responding with the time of reception of the last
947	  SPI message.
948
949config SPI_SLAVE_SYSTEM_CONTROL
950	tristate "SPI slave handler controlling system state"
951	help
952	  SPI slave handler to allow remote control of system reboot, power
953	  off, halt, and suspend.
954
955endif # SPI_SLAVE
956
957endif # SPI
958