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