xref: /linux/drivers/spi/Kconfig (revision fa5ef105618ae9b5aaa51b3f09e41d88d4514207)
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
58config SPI_OFFLOAD
59	bool
60
61comment "SPI Master Controller Drivers"
62
63config SPI_AIROHA_SNFI
64	tristate "Airoha SPI NAND Flash Interface"
65	depends on ARCH_AIROHA || COMPILE_TEST
66	depends on SPI_MASTER
67	select REGMAP_MMIO
68	help
69	  This enables support for SPI-NAND mode on the Airoha NAND
70	  Flash Interface found on Airoha ARM SoCs. This controller
71	  is implemented as a SPI-MEM controller.
72
73config SPI_ALTERA
74	tristate "Altera SPI Controller platform driver"
75	select SPI_ALTERA_CORE
76	select REGMAP_MMIO
77	help
78	  This is the driver for the Altera SPI Controller.
79
80config SPI_ALTERA_CORE
81	tristate "Altera SPI Controller core code" if COMPILE_TEST
82	select REGMAP
83	help
84	  "The core code for the Altera SPI Controller"
85
86config SPI_ALTERA_DFL
87	tristate "DFL bus driver for Altera SPI Controller"
88	depends on FPGA_DFL
89	select SPI_ALTERA_CORE
90	help
91	  This is a Device Feature List (DFL) bus driver for the
92	  Altera SPI master controller.  The SPI master is connected
93	  to a SPI slave to Avalon bridge in a Intel MAX BMC.
94
95config SPI_AMLOGIC_SPIFC_A1
96	tristate "Amlogic A1 SPIFC controller"
97	depends on ARCH_MESON || COMPILE_TEST
98	help
99	  This enables master mode support for the SPIFC (SPI flash
100	  controller) available in Amlogic A1 (A113L SoC).
101
102config SPI_AMLOGIC_SPIFC_A4
103	tristate "Amlogic A4 SPI Flash controller"
104	depends on ARCH_MESON || COMPILE_TEST
105	select REGMAP_MMIO
106	help
107	  This enables SPI mode on the NAND Flash Controller of Amlogic
108	  ARM SoCs. It supports SPI Nor Flash and SPI NAND Flash (Could
109	  enable Host ECC HW engine). The controller implements the
110	  SPI-MEM interface, it doesn't support generic SPI.
111
112config SPI_AMLOGIC_SPISG
113	tristate "Amlogic SPISG controller"
114	depends on COMMON_CLK
115	depends on ARCH_MESON || COMPILE_TEST
116	help
117	  This enables master mode support for the SPISG (SPI scatter-gather
118	  communication controller), which is available on platforms such as
119	  Amlogic A4 SoCs.
120
121config SPI_APPLE
122	tristate "Apple SoC SPI Controller platform driver"
123	depends on ARCH_APPLE || COMPILE_TEST
124	help
125	  This enables support for the SPI controller present on
126	  many Apple SoCs, including the t8103 (M1), t8112 (M2)
127	  and t600x (M1 Pro/Max/Ultra). Multiple SPI controller
128	  instances are present on the SoC and each connects usually
129	  to a single device like spi-nor (nvram), input device controller
130	  or fingerprint sensor.
131
132config SPI_AR934X
133	tristate "Qualcomm Atheros AR934X/QCA95XX SPI controller driver"
134	depends on ATH79 || COMPILE_TEST
135	help
136	  This enables support for the SPI controller present on the
137	  Qualcomm Atheros AR934X/QCA95XX SoCs.
138
139config SPI_ATH79
140	tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
141	depends on ATH79 || COMPILE_TEST
142	select SPI_BITBANG
143	help
144	  This enables support for the SPI controller present on the
145	  Atheros AR71XX/AR724X/AR913X SoCs.
146
147config SPI_ARMADA_3700
148	tristate "Marvell Armada 3700 SPI Controller"
149	depends on (ARCH_MVEBU && OF) || COMPILE_TEST
150	help
151	  This enables support for the SPI controller present on the
152	  Marvell Armada 3700 SoCs.
153
154config SPI_ASPEED_SMC
155	tristate "Aspeed flash controllers in SPI mode"
156	depends on ARCH_ASPEED || COMPILE_TEST
157	depends on OF
158	help
159	  This enables support for the Firmware Memory controller (FMC)
160	  in the Aspeed AST2600, AST2500 and AST2400 SoCs when attached
161	  to SPI NOR chips, and support for the SPI flash memory
162	  controller (SPI) for the host firmware. The implementation
163	  only supports SPI NOR.
164
165config SPI_ATMEL
166	tristate "Atmel SPI Controller"
167	depends on ARCH_MICROCHIP || COMPILE_TEST
168	depends on OF
169	help
170	  This selects a driver for the Atmel SPI Controller, present on
171	  many AT91 ARM chips.
172
173config SPI_AT91_USART
174	tristate "Atmel USART Controller SPI driver"
175	depends on (ARCH_AT91 || COMPILE_TEST)
176	depends on MFD_AT91_USART
177	help
178	  This selects a driver for the AT91 USART Controller as SPI Master,
179	  present on AT91 and SAMA5 SoC series.
180
181config SPI_ATMEL_QUADSPI
182	tristate "Atmel Quad SPI Controller"
183	depends on ARCH_AT91 || COMPILE_TEST
184	depends on OF && HAS_IOMEM
185	help
186	  This enables support for the Quad SPI controller in master mode.
187	  This driver does not support generic SPI. The implementation only
188	  supports spi-mem interface.
189
190config SPI_AU1550
191	tristate "Au1550/Au1200/Au1300 SPI Controller"
192	depends on MIPS_ALCHEMY
193	select SPI_BITBANG
194	help
195	  If you say yes to this option, support will be included for the
196	  PSC SPI controller found on Au1550, Au1200 and Au1300 series.
197
198config SPI_AXI_SPI_ENGINE
199	tristate "Analog Devices AXI SPI Engine controller"
200	depends on HAS_IOMEM
201	select SPI_OFFLOAD
202	help
203	  This enables support for the Analog Devices AXI SPI Engine SPI controller.
204	  It is part of the SPI Engine framework that is used in some Analog Devices
205	  reference designs for FPGAs.
206
207config SPI_BCM2835
208	tristate "BCM2835 SPI controller"
209	depends on GPIOLIB
210	depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
211	help
212	  This selects a driver for the Broadcom BCM2835 SPI master.
213
214	  The BCM2835 contains two types of SPI master controller; the
215	  "universal SPI master", and the regular SPI controller. This driver
216	  is for the regular SPI controller. Slave mode operation is not also
217	  not supported.
218
219config SPI_BCM2835AUX
220	tristate "BCM2835 SPI auxiliary controller"
221	depends on ((ARCH_BCM2835 || ARCH_BRCMSTB) && GPIOLIB) || COMPILE_TEST
222	help
223	  This selects a driver for the Broadcom BCM2835 SPI aux master.
224
225	  The BCM2835 contains two types of SPI master controller; the
226	  "universal SPI master", and the regular SPI controller.
227	  This driver is for the universal/auxiliary SPI controller.
228
229config SPI_BCM63XX
230	tristate "Broadcom BCM63xx SPI controller"
231	depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
232	help
233	  Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
234
235config SPI_BCM63XX_HSSPI
236	tristate "Broadcom BCM63XX HS SPI controller driver"
237	depends on BCM63XX || BMIPS_GENERIC || ARCH_BCMBCA || COMPILE_TEST
238	help
239	  This enables support for the High Speed SPI controller present on
240	  newer Broadcom BCM63XX SoCs.
241
242config SPI_BCM_QSPI
243	tristate "Broadcom BSPI and MSPI controller support"
244	depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \
245			BMIPS_GENERIC || COMPILE_TEST
246	default ARCH_BCM_IPROC
247	help
248	  Enables support for the Broadcom SPI flash and MSPI controller.
249	  Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs
250	  based platforms. This driver works for both SPI master for SPI NOR
251	  flash device as well as MSPI device.
252
253config SPI_BCMBCA_HSSPI
254	tristate "Broadcom BCMBCA HS SPI controller driver"
255	depends on ARCH_BCMBCA || COMPILE_TEST
256	help
257	  This enables support for the High Speed SPI controller present on
258	  newer Broadcom BCMBCA SoCs. These SoCs include an updated SPI controller
259	  that adds the capability to allow the driver to control chip select
260	  explicitly.
261
262config SPI_BITBANG
263	tristate "Utilities for Bitbanging SPI host controllers"
264	help
265	  With a few GPIO pins, your system can bitbang the SPI protocol.
266	  Select this to get SPI support through I/O pins (GPIO, parallel
267	  port, etc).  Or, some systems' SPI host controller drivers use
268	  this code to manage the per-word or per-transfer accesses to the
269	  hardware shift registers.
270
271	  This is library code, and is automatically selected by drivers that
272	  need it.  You only need to select this explicitly to support driver
273	  modules that aren't part of this kernel tree.
274
275config SPI_BUTTERFLY
276	tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
277	depends on PARPORT
278	select SPI_BITBANG
279	help
280	  This uses a custom parallel port cable to connect to an AVR
281	  Butterfly <http://www.atmel.com/products/avr/butterfly>, an
282	  inexpensive battery powered microcontroller evaluation board.
283	  This same cable can be used to flash new firmware.
284
285config SPI_CADENCE
286	tristate "Cadence SPI controller"
287	help
288	  This selects the Cadence SPI controller master driver
289	  used by Xilinx Zynq and ZynqMP.
290
291config SPI_CADENCE_QUADSPI
292	tristate "Cadence Quad SPI controller"
293	depends on OF && (ARM || ARM64 || X86 || RISCV || MIPS || COMPILE_TEST)
294	help
295	  Enable support for the Cadence Quad SPI Flash controller.
296
297	  Cadence QSPI is a specialized controller for connecting an SPI
298	  Flash over 1/2/4-bit wide bus. Enable this option if you have a
299	  device with a Cadence QSPI controller and want to access the
300	  Flash as an MTD device.
301
302config SPI_CADENCE_XSPI
303	tristate "Cadence XSPI controller"
304	depends on OF && HAS_IOMEM && 64BIT
305	depends on SPI_MEM
306	help
307	  Enable support for the Cadence XSPI Flash controller.
308
309	  Cadence XSPI is a specialized controller for connecting an SPI
310	  Flash over up to 8-bit wide bus. Enable this option if you have a
311	  device with a Cadence XSPI controller and want to access the
312	  Flash as an MTD device.
313
314config SPI_CH341
315	tristate "CH341 USB2SPI adapter"
316	depends on SPI_MASTER && USB
317	help
318	  Enables the SPI controller on the CH341a USB to serial chip
319
320config SPI_CLPS711X
321	tristate "CLPS711X host SPI controller"
322	depends on ARCH_CLPS711X || COMPILE_TEST
323	help
324	  This enables dedicated general purpose SPI/Microwire1-compatible
325	  master mode interface (SSI1) for CLPS711X-based CPUs.
326
327config SPI_COLDFIRE_QSPI
328	tristate "Freescale Coldfire QSPI controller"
329	depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
330	help
331	  This enables support for the Coldfire QSPI controller in master
332	  mode.
333
334config SPI_CS42L43
335	tristate "Cirrus Logic CS42L43 SPI controller"
336	depends on MFD_CS42L43 && PINCTRL_CS42L43
337	select GPIO_SWNODE_UNDEFINED
338	help
339	  This enables support for the SPI controller inside the Cirrus Logic
340	  CS42L43 audio codec.
341
342config SPI_DAVINCI
343	tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
344	depends on ARCH_DAVINCI || ARCH_KEYSTONE || COMPILE_TEST
345	select SPI_BITBANG
346	help
347	  SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
348
349config SPI_DESIGNWARE
350	tristate "DesignWare SPI controller core support"
351	imply SPI_MEM
352	help
353	  general driver for SPI controller core from DesignWare
354
355if SPI_DESIGNWARE
356
357config SPI_DW_DMA
358	bool "DMA support for DW SPI controller"
359
360config SPI_DW_PCI
361	tristate "PCI interface driver for DW SPI core"
362	depends on PCI
363
364config SPI_DW_MMIO
365	tristate "Memory-mapped io interface driver for DW SPI core"
366	depends on HAS_IOMEM
367
368config SPI_DW_BT1
369	tristate "Baikal-T1 SPI driver for DW SPI core"
370	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
371	select MULTIPLEXER
372	help
373	  Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
374	  controllers. Two of them are pretty much normal: with IRQ, DMA,
375	  FIFOs of 64 words depth, 4x CSs, but the third one as being a
376	  part of the Baikal-T1 System Boot Controller has got a very
377	  limited resources: no IRQ, no DMA, only a single native
378	  chip-select and Tx/Rx FIFO with just 8 words depth available.
379	  The later one is normally connected to an external SPI-nor flash
380	  of 128Mb (in general can be of bigger size).
381
382config SPI_DW_BT1_DIRMAP
383	bool "Directly mapped Baikal-T1 Boot SPI flash support"
384	depends on SPI_DW_BT1
385	help
386	  Directly mapped SPI flash memory is an interface specific to the
387	  Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
388	  can be used to access a peripheral memory device just by
389	  reading/writing data from/to it. Note that the system APB bus
390	  will stall during each IO from/to the dirmap region until the
391	  operation is finished. So try not to use it concurrently with
392	  time-critical tasks (like the SPI memory operations implemented
393	  in this driver).
394
395endif
396
397config SPI_DLN2
398       tristate "Diolan DLN-2 USB SPI adapter"
399       depends on MFD_DLN2
400       help
401	 If you say yes to this option, support will be included for Diolan
402	 DLN2, a USB to SPI interface.
403
404	 This driver can also be built as a module.  If so, the module
405	 will be called spi-dln2.
406
407config SPI_EP93XX
408	tristate "Cirrus Logic EP93xx SPI controller"
409	depends on ARCH_EP93XX || COMPILE_TEST
410	help
411	  This enables using the Cirrus EP93xx SPI controller in master
412	  mode.
413
414config SPI_FALCON
415	bool "Falcon SPI controller support"
416	depends on SOC_FALCON
417	help
418	  The external bus unit (EBU) found on the FALC-ON SoC has SPI
419	  emulation that is designed for serial flash access. This driver
420	  has only been tested with m25p80 type chips. The hardware has no
421	  support for other types of SPI peripherals.
422
423config SPI_FSI
424	tristate "FSI SPI driver"
425	depends on FSI
426	help
427	  This enables support for the driver for FSI bus attached SPI
428	  controllers.
429
430config SPI_FSL_LPSPI
431	tristate "Freescale i.MX LPSPI controller"
432	depends on ARCH_MXC || COMPILE_TEST
433	help
434	  This enables Freescale i.MX LPSPI controllers in master mode.
435
436config SPI_FSL_QUADSPI
437	tristate "Freescale QSPI controller"
438	depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || \
439		   ARCH_SPACEMIT || COMPILE_TEST
440	depends on HAS_IOMEM
441	help
442	  This enables support for the Quad SPI controller in master mode.
443	  Up to four flash chips can be connected on two buses with two
444	  chipselects each.
445	  This controller does not support generic SPI messages. It only
446	  supports the high-level SPI memory interface.
447
448config SPI_GXP
449	tristate "GXP SPI driver"
450	depends on ARCH_HPE || COMPILE_TEST
451	help
452	  This enables support for the driver for GXP bus attached SPI
453	  controllers.
454
455config SPI_HISI_KUNPENG
456	tristate "HiSilicon SPI Controller for Kunpeng SoCs"
457	depends on (ARM64 && ACPI) || COMPILE_TEST
458	help
459	  This enables support for HiSilicon SPI controller found on
460	  Kunpeng SoCs.
461
462	  This driver can also be built as a module. If so, the module
463	  will be called hisi-kunpeng-spi.
464
465config SPI_HISI_SFC_V3XX
466	tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
467	depends on (ARM64 && ACPI) || COMPILE_TEST
468	depends on HAS_IOMEM
469	help
470	  This enables support for HiSilicon v3xx SPI NOR flash controller
471	  found in hi16xx chipsets.
472
473config SPI_NXP_FLEXSPI
474	tristate "NXP Flex SPI controller"
475	depends on ARCH_LAYERSCAPE || ARCH_MXC || COMPILE_TEST
476	depends on HAS_IOMEM
477	help
478	  This enables support for the Flex SPI controller in master mode.
479	  Up to four slave devices can be connected on two buses with two
480	  chipselects each.
481	  This controller does not support generic SPI messages and only
482	  supports the high-level SPI memory interface.
483
484config SPI_GPIO
485	tristate "GPIO-based bitbanging SPI Master"
486	depends on GPIOLIB || COMPILE_TEST
487	select SPI_BITBANG
488	help
489	  This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
490	  interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
491	  slaves connected to a bus using this driver are configured as usual,
492	  except that the spi_board_info.controller_data holds the GPIO number
493	  for the chipselect used by this controller driver.
494
495	  Note that this driver often won't achieve even 1 Mbit/sec speeds,
496	  making it unusually slow for SPI.  If your platform can inline
497	  GPIO operations, you should be able to leverage that for better
498	  speed with a custom version of this driver; see the source code.
499
500config SPI_IMG_SPFI
501	tristate "IMG SPFI controller"
502	depends on MIPS || COMPILE_TEST
503	help
504	  This enables support for the SPFI master controller found on
505	  IMG SoCs.
506
507config SPI_IMX
508	tristate "Freescale i.MX SPI controllers"
509	depends on ARCH_MXC || COMPILE_TEST
510	help
511	  This enables support for the Freescale i.MX SPI controllers.
512
513config SPI_INGENIC
514	tristate "Ingenic SoCs SPI controller"
515	depends on MACH_INGENIC || COMPILE_TEST
516	help
517	  This enables support for the Ingenic SoCs SPI controller.
518
519	  To compile this driver as a module, choose M here: the module
520	  will be called spi-ingenic.
521
522config SPI_INTEL
523	tristate
524
525config SPI_INTEL_PCI
526	tristate "Intel PCH/PCU SPI flash PCI driver"
527	depends on PCI
528	depends on X86 || COMPILE_TEST
529	depends on SPI_MEM
530	select SPI_INTEL
531	help
532	  This enables PCI support for the Intel PCH/PCU SPI controller in
533	  master mode. This controller is used to hold BIOS and other
534	  persistent settings. Controllers present in modern Intel hardware
535	  only work in hardware sequencing mode, this means that the
536	  controller exposes a subset of operations that makes it safer to
537	  use. Using this driver it is possible to upgrade BIOS directly
538	  from Linux.
539
540	  To compile this driver as a module, choose M here: the module
541	  will be called spi-intel-pci.
542
543config SPI_INTEL_PLATFORM
544	tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
545	depends on X86 || COMPILE_TEST
546	depends on SPI_MEM
547	select SPI_INTEL
548	help
549	  This enables platform support for the Intel PCH/PCU SPI
550	  controller in master mode that is used to hold BIOS and other
551	  persistent settings. Most of these controllers work in
552	  software sequencing mode, which means that the controller
553	  exposes the low level SPI-NOR opcodes to the software. Using
554	  this driver it is possible to upgrade BIOS directly from Linux.
555
556	  Say N here unless you know what you are doing. Overwriting the
557	  SPI flash may render the system unbootable.
558
559	  To compile this driver as a module, choose M here: the module
560	  will be called spi-intel-platform.
561
562config SPI_JCORE
563	tristate "J-Core SPI Master"
564	depends on OF && (SUPERH || COMPILE_TEST)
565	help
566	  This enables support for the SPI master controller in the J-Core
567	  synthesizable, open source SoC.
568
569config SPI_KSPI2
570	tristate "Support for KEBA SPI master type 2 hardware"
571	depends on HAS_IOMEM
572	depends on KEBA_CP500 || COMPILE_TEST
573	select AUXILIARY_BUS
574	help
575	  This driver supports KEBA SPI master type 2 FPGA implementation,
576	  as found on CP500 devices for example.
577
578	  This driver can also be built as a module. If so, the module
579	  will be called spi-kspi2.
580
581config SPI_LM70_LLP
582	tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
583	depends on PARPORT
584	select SPI_BITBANG
585	help
586	  This driver supports the NS LM70 LLP Evaluation Board,
587	  which interfaces to an LM70 temperature sensor using
588	  a parallel port.
589
590config SPI_LOONGSON_CORE
591	tristate
592	depends on LOONGARCH || COMPILE_TEST
593
594config SPI_LOONGSON_PCI
595	tristate "Loongson SPI Controller PCI Driver Support"
596	select SPI_LOONGSON_CORE
597	depends on PCI && (LOONGARCH || COMPILE_TEST)
598	help
599	  This bus driver supports the Loongson SPI hardware controller in
600	  the Loongson platforms and supports to use PCI framework to
601	  register SPI device resources.
602	  Say Y or M here if you want to use the SPI controller on
603	  Loongson platform.
604
605config SPI_LOONGSON_PLATFORM
606	tristate "Loongson SPI Controller Platform Driver Support"
607	select SPI_LOONGSON_CORE
608	depends on OF && (LOONGARCH || COMPILE_TEST)
609	help
610	  This bus driver supports the Loongson SPI hardware controller in
611	  the Loongson platforms and supports to use DTS framework to
612	  register SPI device resources.
613	  Say Y or M here if you want to use the SPI controller on
614	  Loongson platform.
615
616config SPI_LP8841_RTC
617	tristate "ICP DAS LP-8841 SPI Controller for RTC"
618	depends on MACH_PXA27X_DT || COMPILE_TEST
619	help
620	  This driver provides an SPI master device to drive Maxim
621	  DS-1302 real time clock.
622
623	  Say N here unless you plan to run the kernel on an ICP DAS
624	  LP-8x4x industrial computer.
625
626config SPI_MPC52xx
627	tristate "Freescale MPC52xx SPI (non-PSC) controller support"
628	depends on PPC_MPC52xx
629	help
630	  This drivers supports the MPC52xx SPI controller in master SPI
631	  mode.
632
633config SPI_MPC52xx_PSC
634	tristate "Freescale MPC52xx PSC SPI controller"
635	depends on PPC_MPC52xx
636	help
637	  This enables using the Freescale MPC52xx Programmable Serial
638	  Controller in master SPI mode.
639
640config SPI_MPC512x_PSC
641	tristate "Freescale MPC512x PSC SPI controller"
642	depends on PPC_MPC512x
643	help
644	  This enables using the Freescale MPC5121 Programmable Serial
645	  Controller in SPI master mode.
646
647config SPI_FSL_LIB
648	tristate
649	depends on OF
650
651config SPI_FSL_CPM
652	tristate
653	depends on FSL_SOC
654
655config SPI_FSL_SPI
656	tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
657	depends on OF
658	select SPI_FSL_LIB
659	select SPI_FSL_CPM if FSL_SOC
660	help
661	  This enables using the Freescale SPI controllers in master mode.
662	  MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
663	  MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
664	  This also enables using the Aeroflex Gaisler GRLIB SPI controller in
665	  master mode.
666
667config SPI_FSL_DSPI
668	tristate "Freescale DSPI controller"
669	select REGMAP_MMIO
670	depends on ARCH_MXC || ARCH_NXP || M5441x || COMPILE_TEST
671	help
672	  This enables support for the Freescale DSPI controller in master
673	  mode. S32, VF610, LS1021A and ColdFire platforms uses the controller.
674
675config SPI_FSL_ESPI
676	tristate "Freescale eSPI controller"
677	depends on FSL_SOC
678	help
679	  This enables using the Freescale eSPI controllers in master mode.
680	  From MPC8536, 85xx platform uses the controller, and all P10xx,
681	  P20xx, P30xx,P40xx, P50xx uses this controller.
682
683config SPI_LJCA
684	tristate "Intel La Jolla Cove Adapter SPI support"
685	depends on USB_LJCA
686	default USB_LJCA
687	help
688	  Select this option to enable SPI driver for the Intel
689	  La Jolla Cove Adapter (LJCA) board.
690
691	  This driver can also be built as a module. If so, the module
692	  will be called spi-ljca.
693
694config SPI_MESON_SPICC
695	tristate "Amlogic Meson SPICC controller"
696	depends on COMMON_CLK
697	depends on ARCH_MESON || COMPILE_TEST
698	help
699	  This enables master mode support for the SPICC (SPI communication
700	  controller) available in Amlogic Meson SoCs.
701
702config SPI_MESON_SPIFC
703	tristate "Amlogic Meson SPIFC controller"
704	depends on ARCH_MESON || COMPILE_TEST
705	select REGMAP_MMIO
706	help
707	  This enables master mode support for the SPIFC (SPI flash
708	  controller) available in Amlogic Meson SoCs.
709
710config SPI_MICROCHIP_CORE_QSPI
711	tristate "Microchip FPGA QSPI controllers"
712	depends on SPI_MASTER
713	help
714	  This enables the QSPI driver for Microchip FPGA QSPI controllers.
715	  Say Y or M here if you want to use the QSPI controllers on
716	  PolarFire SoC.
717	  If built as a module, it will be called spi-microchip-core-qspi.
718
719config SPI_MICROCHIP_CORE_SPI
720	tristate "Microchip FPGA CoreSPI controller"
721	depends on SPI_MASTER
722	help
723	  This enables the SPI driver for Microchip FPGA CoreSPI controller.
724	  Say Y or M here if you want to use the "soft" controllers on
725	  PolarFire SoC.
726	  If built as a module, it will be called spi-microchip-core-spi.
727
728config SPI_MT65XX
729	tristate "MediaTek SPI controller"
730	depends on ARCH_MEDIATEK || COMPILE_TEST
731	help
732	  This selects the MediaTek(R) SPI bus driver.
733	  If you want to use MediaTek(R) SPI interface,
734	  say Y or M here.If you are not sure, say N.
735	  SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
736
737config SPI_MT7621
738	tristate "MediaTek MT7621 SPI Controller"
739	depends on RALINK || COMPILE_TEST
740	help
741	  This selects a driver for the MediaTek MT7621 SPI Controller.
742
743config SPI_MTK_NOR
744	tristate "MediaTek SPI NOR controller"
745	depends on ARCH_MEDIATEK || COMPILE_TEST
746	help
747	  This enables support for SPI NOR controller found on MediaTek
748	  ARM SoCs. This is a controller specifically for SPI NOR flash.
749	  It can perform generic SPI transfers up to 6 bytes via generic
750	  SPI interface as well as several SPI NOR specific instructions
751	  via SPI MEM interface.
752
753config SPI_MTK_SNFI
754	tristate "MediaTek SPI NAND Flash Interface"
755	depends on ARCH_MEDIATEK || COMPILE_TEST
756	depends on MTD_NAND_ECC_MEDIATEK
757	help
758	  This enables support for SPI-NAND mode on the MediaTek NAND
759	  Flash Interface found on MediaTek ARM SoCs. This controller
760	  is implemented as a SPI-MEM controller with pipelined ECC
761	  capability.
762
763config SPI_WPCM_FIU
764	tristate "Nuvoton WPCM450 Flash Interface Unit"
765	depends on ARCH_NPCM || COMPILE_TEST
766	select REGMAP
767	help
768	  This enables support got the Flash Interface Unit SPI controller
769	  present in the Nuvoton WPCM450 SoC.
770
771	  This driver does not support generic SPI. The implementation only
772	  supports the spi-mem interface.
773
774config SPI_NPCM_FIU
775	tristate "Nuvoton NPCM FLASH Interface Unit"
776	depends on ARCH_NPCM || COMPILE_TEST
777	depends on OF && HAS_IOMEM
778	help
779	  This enables support for the Flash Interface Unit SPI controller
780	  in master mode.
781	  This driver does not support generic SPI. The implementation only
782	  supports spi-mem interface.
783
784config SPI_NPCM_PSPI
785	tristate "Nuvoton NPCM PSPI Controller"
786	depends on ARCH_NPCM || COMPILE_TEST
787	help
788	  This driver provides support for Nuvoton NPCM BMC
789	  Peripheral SPI controller in master mode.
790
791config SPI_LANTIQ_SSC
792	tristate "Lantiq SSC SPI controller"
793	depends on LANTIQ || X86 || COMPILE_TEST
794	help
795	  This driver supports the Lantiq SSC SPI controller in master
796	  mode. This controller is found on Intel (former Lantiq) SoCs like
797	  the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
798
799config SPI_OC_TINY
800	tristate "OpenCores tiny SPI"
801	depends on GPIOLIB || COMPILE_TEST
802	select SPI_BITBANG
803	help
804	  This is the driver for OpenCores tiny SPI master controller.
805
806config SPI_OCTEON
807	tristate "Cavium OCTEON SPI controller"
808	depends on CAVIUM_OCTEON_SOC
809	help
810	  SPI host driver for the hardware found on some Cavium OCTEON
811	  SOCs.
812
813config SPI_OMAP_UWIRE
814	tristate "OMAP1 MicroWire"
815	depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
816	select SPI_BITBANG
817	help
818	  This hooks up to the MicroWire controller on OMAP1 chips.
819
820config SPI_OMAP24XX
821	tristate "McSPI driver for OMAP"
822	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
823	select SG_SPLIT
824	help
825	  SPI master controller for OMAP24XX and later Multichannel SPI
826	  (McSPI) modules.
827
828config SPI_TI_QSPI
829	tristate "DRA7xxx QSPI controller support"
830	depends on ARCH_OMAP2PLUS || COMPILE_TEST
831	help
832	  QSPI master controller for DRA7xxx used for flash devices.
833	  This device supports single, dual and quad read support, while
834	  it only supports single write mode.
835
836config SPI_ORION
837	tristate "Orion SPI master"
838	depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
839	help
840	  This enables using the SPI master controller on the Orion
841	  and MVEBU chips.
842
843config SPI_PCI1XXXX
844	tristate "PCI1XXXX SPI Bus support"
845	depends on PCI
846	help
847	  Say "yes" to Enable the SPI Bus support for the PCI1xxxx card
848	  This is a PCI to SPI Bus driver
849	  This driver can be built as module. If so, the module will be
850	  called as spi-pci1xxxx.
851
852config SPI_PIC32
853	tristate "Microchip PIC32 series SPI"
854	depends on MACH_PIC32 || COMPILE_TEST
855	help
856	  SPI driver for Microchip PIC32 SPI master controller.
857
858config SPI_PIC32_SQI
859	tristate "Microchip PIC32 Quad SPI driver"
860	depends on MACH_PIC32 || COMPILE_TEST
861	help
862	  SPI driver for PIC32 Quad SPI controller.
863
864config SPI_PL022
865	tristate "ARM AMBA PL022 SSP controller"
866	depends on ARM_AMBA
867	default y if ARCH_REALVIEW
868	default y if INTEGRATOR_IMPD1
869	default y if ARCH_VERSATILE
870	help
871	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
872	  controller. If you have an embedded system with an AMBA(R)
873	  bus and a PL022 controller, say Y or M here.
874
875config SPI_POLARFIRE_SOC
876	tristate "Microchip FPGA SPI controllers"
877	depends on SPI_MASTER
878	depends on ARCH_MICROCHIP || COMPILE_TEST
879	help
880	  This enables the SPI driver for Microchip FPGA SPI controllers.
881	  Say Y or M here if you want to use the "hard" controllers on
882	  PolarFire SoC.
883	  If built as a module, it will be called spi-mpfs.
884
885config SPI_PPC4xx
886	tristate "PPC4xx SPI Controller"
887	depends on PPC32 && 4xx
888	select SPI_BITBANG
889	help
890	  This selects a driver for the PPC4xx SPI Controller.
891
892config SPI_PXA2XX
893	tristate "PXA2xx SSP SPI master"
894	depends on ARCH_PXA || ARCH_MMP || (X86 && (PCI || ACPI)) || COMPILE_TEST
895	select PXA_SSP if ARCH_PXA || ARCH_MMP
896	help
897	  This enables using a PXA2xx or Sodaville SSP port as a SPI master
898	  controller. The driver can be configured to use any SSP port.
899
900config SPI_PXA2XX_PCI
901	def_tristate SPI_PXA2XX && PCI && COMMON_CLK
902
903config SPI_REALTEK_SNAND
904	tristate "Realtek SPI-NAND Flash Controller"
905	depends on MACH_REALTEK_RTL || COMPILE_TEST
906	select REGMAP
907	help
908	  This enables support for the SPI-NAND Flash controller on
909	  Realtek SoCs.
910
911	  This driver does not support generic SPI. The implementation
912	  only supports the spi-mem interface.
913
914config SPI_ROCKCHIP
915	tristate "Rockchip SPI controller driver"
916	depends on ARCH_ROCKCHIP || COMPILE_TEST
917	help
918	  This selects a driver for Rockchip SPI controller.
919
920	  If you say yes to this option, support will be included for
921	  RK3066, RK3188 and RK3288 families of SPI controller.
922	  Rockchip SPI controller support DMA transport and PIO mode.
923	  The main usecase of this controller is to use spi flash as boot
924	  device.
925
926config SPI_ROCKCHIP_SFC
927	tristate "Rockchip Serial Flash Controller (SFC)"
928	depends on ARCH_ROCKCHIP || COMPILE_TEST
929	depends on HAS_IOMEM && HAS_DMA
930	help
931	  This enables support for Rockchip serial flash controller. This
932	  is a specialized controller used to access SPI flash on some
933	  Rockchip SOCs.
934
935	  ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
936	  the driver automatically falls back to PIO mode.
937
938config SPI_RB4XX
939	tristate "Mikrotik RB4XX SPI master"
940	depends on SPI_MASTER && (ATH79 || COMPILE_TEST)
941	depends on OF
942	help
943	  SPI controller driver for the Mikrotik RB4xx series boards.
944
945config SPI_RPCIF
946	tristate "Renesas RPC-IF SPI driver"
947	depends on RENESAS_RPCIF
948	help
949	  SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
950
951config SPI_RSPI
952	tristate "Renesas RSPI/QSPI controller"
953	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
954	help
955	  SPI driver for Renesas RSPI and QSPI blocks.
956
957config SPI_RZV2H_RSPI
958	tristate "Renesas RZ/V2H RSPI controller"
959	depends on ARCH_RENESAS || COMPILE_TEST
960	help
961	  RSPI driver for the Renesas RZ/V2H Serial Peripheral Interface (RSPI).
962	  RSPI supports both SPI host and SPI target roles. This option only
963	  enables the SPI host role.
964
965config SPI_RZV2M_CSI
966	tristate "Renesas RZ/V2M CSI controller"
967	depends on ARCH_RENESAS || COMPILE_TEST
968	help
969	  SPI driver for Renesas RZ/V2M Clocked Serial Interface (CSI).
970	  CSI supports both SPI host and SPI target roles.
971
972config SPI_QCOM_QSPI
973	tristate "QTI QSPI controller"
974	depends on ARCH_QCOM || COMPILE_TEST
975	help
976	  QSPI(Quad SPI) driver for Qualcomm QSPI controller.
977
978config SPI_QPIC_SNAND
979	tristate "QPIC SNAND controller"
980	depends on ARCH_QCOM || COMPILE_TEST
981	depends on MTD
982	help
983	  QPIC_SNAND (QPIC SPI NAND) driver for Qualcomm QPIC controller.
984	  QPIC controller supports both parallel nand and serial nand.
985	  This config will enable serial nand driver for QPIC controller.
986
987config SPI_QUP
988	tristate "Qualcomm SPI controller with QUP interface"
989	depends on ARCH_QCOM || COMPILE_TEST
990	help
991	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
992	  provides a common data path (an output FIFO and an input FIFO)
993	  for serial peripheral interface (SPI) mini-core. SPI in master
994	  mode supports up to 50MHz, up to four chip selects, programmable
995	  data path from 4 bits to 32 bits and numerous protocol variants.
996
997	  This driver can also be built as a module.  If so, the module
998	  will be called spi_qup.
999
1000config SPI_QCOM_GENI
1001	tristate "Qualcomm GENI based SPI controller"
1002	depends on QCOM_GENI_SE
1003	help
1004	  This driver supports GENI serial engine based SPI controller in
1005	  master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
1006	  yes to this option, support will be included for the built-in SPI
1007	  interface on the Qualcomm Technologies Inc.'s SoCs.
1008
1009	  This driver can also be built as a module.  If so, the module
1010	  will be called spi-geni-qcom.
1011
1012config SPI_S3C64XX
1013	tristate "Samsung S3C64XX/Exynos SoC series type SPI"
1014	depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
1015	help
1016	  SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
1017	  Choose Y/M here only if you build for such Samsung SoC.
1018
1019config SPI_SC18IS602
1020	tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
1021	depends on I2C
1022	help
1023	  SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
1024
1025config SPI_SH_MSIOF
1026	tristate "SuperH MSIOF SPI controller"
1027	depends on HAVE_CLK
1028	depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
1029	help
1030	  SPI driver for SuperH and SH Mobile MSIOF blocks.
1031
1032config SPI_SH
1033	tristate "SuperH SPI controller"
1034	depends on SUPERH || COMPILE_TEST
1035	help
1036	  SPI driver for SuperH SPI blocks.
1037
1038config SPI_SH_SCI
1039	tristate "SuperH SCI SPI controller"
1040	depends on SUPERH
1041	select SPI_BITBANG
1042	help
1043	  SPI driver for SuperH SCI blocks.
1044
1045config SPI_SH_HSPI
1046	tristate "SuperH HSPI controller"
1047	depends on ARCH_RENESAS || COMPILE_TEST
1048	help
1049	  SPI driver for SuperH HSPI blocks.
1050
1051config SPI_SIFIVE
1052	tristate "SiFive SPI controller"
1053	depends on HAS_IOMEM
1054	help
1055	  This exposes the SPI controller IP from SiFive.
1056
1057config SPI_SLAVE_MT27XX
1058	tristate "MediaTek SPI slave device"
1059	depends on ARCH_MEDIATEK || COMPILE_TEST
1060	depends on SPI_SLAVE
1061	help
1062	  This selects the MediaTek(R) SPI slave device driver.
1063	  If you want to use MediaTek(R) SPI slave interface,
1064	  say Y or M here.If you are not sure, say N.
1065	  SPI slave drivers for Mediatek MT27XX series ARM SoCs.
1066
1067config SPI_SN_F_OSPI
1068	tristate "Socionext F_OSPI SPI flash controller"
1069	depends on OF && HAS_IOMEM
1070	depends on SPI_MEM
1071	help
1072	  This enables support for the Socionext F_OSPI controller
1073	  for connecting an SPI Flash memory over up to 8-bit wide bus.
1074	  It supports indirect access mode only.
1075
1076config SPI_SG2044_NOR
1077	tristate "SG2044 SPI NOR Controller"
1078	depends on ARCH_SOPHGO || COMPILE_TEST
1079	help
1080	  This enables support for the SG2044 SPI NOR controller,
1081	  which supports Dual/Quad read and write operations while
1082	  also supporting 3Byte address devices and 4Byte address
1083	  devices.
1084
1085config SPI_SPRD
1086	tristate "Spreadtrum SPI controller"
1087	depends on ARCH_SPRD || COMPILE_TEST
1088	help
1089	  SPI driver for Spreadtrum SoCs.
1090
1091config SPI_SPRD_ADI
1092	tristate "Spreadtrum ADI controller"
1093	depends on ARCH_SPRD || COMPILE_TEST
1094	depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
1095	help
1096	  ADI driver based on SPI for Spreadtrum SoCs.
1097
1098config SPI_STM32
1099	tristate "STMicroelectronics STM32 SPI controller"
1100	depends on ARCH_STM32 || COMPILE_TEST
1101	select SPI_SLAVE
1102	help
1103	  SPI driver for STMicroelectronics STM32 SoCs.
1104
1105	  STM32 SPI controller supports DMA and PIO modes. When DMA
1106	  is not available, the driver automatically falls back to
1107	  PIO mode.
1108
1109config SPI_STM32_OSPI
1110	tristate "STMicroelectronics STM32 OCTO SPI controller"
1111	depends on ARCH_STM32 || COMPILE_TEST
1112	depends on OF
1113	depends on SPI_MEM
1114	help
1115	  This enables support for the Octo SPI controller in master mode.
1116	  This driver does not support generic SPI. The implementation only
1117	  supports spi-mem interface.
1118
1119config SPI_STM32_QSPI
1120	tristate "STMicroelectronics STM32 QUAD SPI controller"
1121	depends on ARCH_STM32 || COMPILE_TEST
1122	depends on OF
1123	depends on SPI_MEM
1124	help
1125	  This enables support for the Quad SPI controller in master mode.
1126	  This driver does not support generic SPI. The implementation only
1127	  supports spi-mem interface.
1128
1129config SPI_ST_SSC4
1130	tristate "STMicroelectronics SPI SSC-based driver"
1131	depends on ARCH_STI || COMPILE_TEST
1132	help
1133	  STMicroelectronics SoCs support for SPI. If you say yes to
1134	  this option, support will be included for the SSC driven SPI.
1135
1136config SPI_SUN4I
1137	tristate "Allwinner A10 SoCs SPI controller"
1138	depends on ARCH_SUNXI || COMPILE_TEST
1139	help
1140	  SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
1141
1142config SPI_SUN6I
1143	tristate "Allwinner A31 SPI controller"
1144	depends on ARCH_SUNXI || COMPILE_TEST
1145	depends on RESET_CONTROLLER
1146	help
1147	  This enables using the SPI controller on the Allwinner A31 SoCs.
1148
1149config SPI_SUNPLUS_SP7021
1150	tristate "Sunplus SP7021 SPI controller"
1151	depends on SOC_SP7021 || COMPILE_TEST
1152	help
1153	  This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
1154	  This driver can also be built as a module. If so, the module will be
1155	  called as spi-sunplus-sp7021.
1156
1157	  If you have a  Sunplus SP7021 platform say Y here.
1158	  If unsure, say N.
1159
1160config SPI_SYNQUACER
1161	tristate "Socionext's SynQuacer HighSpeed SPI controller"
1162	depends on ARCH_SYNQUACER || COMPILE_TEST
1163	help
1164	  SPI driver for Socionext's High speed SPI controller which provides
1165	  various operating modes for interfacing to serial peripheral devices
1166	  that use the de-facto standard SPI protocol.
1167
1168	  It also supports the new dual-bit and quad-bit SPI protocol.
1169
1170config SPI_MXIC
1171	tristate "Macronix MX25F0A SPI controller"
1172	depends on SPI_MASTER
1173	imply MTD_NAND_ECC_MXIC
1174	help
1175	  This selects the Macronix MX25F0A SPI controller driver.
1176
1177config SPI_MXS
1178	tristate "Freescale MXS SPI controller"
1179	depends on ARCH_MXS
1180	select STMP_DEVICE
1181	help
1182	  SPI driver for Freescale MXS devices.
1183
1184config SPI_TEGRA210_QUAD
1185	tristate "NVIDIA Tegra QSPI Controller"
1186	depends on ARCH_TEGRA || COMPILE_TEST
1187	depends on RESET_CONTROLLER
1188	help
1189	  QSPI driver for NVIDIA Tegra QSPI Controller interface. This
1190	  controller is different from the SPI controller and is available
1191	  on Tegra SoCs starting from Tegra210.
1192
1193config SPI_TEGRA114
1194	tristate "NVIDIA Tegra114 SPI Controller"
1195	depends on ARCH_TEGRA || COMPILE_TEST
1196	depends on RESET_CONTROLLER
1197	help
1198	  SPI controller driver for NVIDIA Tegra114 and later SoCs. This controller
1199	  is different than the older SoCs SPI controller and also register interface
1200	  get changed with this controller.
1201
1202config SPI_TEGRA20_SFLASH
1203	tristate "Nvidia Tegra20 Serial flash Controller"
1204	depends on ARCH_TEGRA || COMPILE_TEST
1205	depends on RESET_CONTROLLER
1206	help
1207	  SPI driver for Nvidia Tegra20 Serial flash Controller interface.
1208	  The main usecase of this controller is to use spi flash as boot
1209	  device.
1210
1211config SPI_TEGRA20_SLINK
1212	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
1213	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
1214	depends on RESET_CONTROLLER
1215	help
1216	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
1217
1218config SPI_THUNDERX
1219	tristate "Cavium ThunderX SPI controller"
1220	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
1221	help
1222	  SPI host driver for the hardware found on Cavium ThunderX
1223	  SOCs.
1224
1225config SPI_TOPCLIFF_PCH
1226	tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
1227	depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
1228	help
1229	  SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
1230	  used in some x86 embedded processors.
1231
1232	  This driver also supports the ML7213/ML7223/ML7831, a companion chip
1233	  for the Atom E6xx series and compatible with the Intel EG20T PCH.
1234
1235config SPI_UNIPHIER
1236	tristate "Socionext UniPhier SPI Controller"
1237	depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
1238	depends on HAS_IOMEM
1239	help
1240	  This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
1241
1242	  UniPhier SoCs have SCSSI and MCSSI SPI controllers.
1243	  Every UniPhier SoC has SCSSI which supports single channel.
1244	  Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
1245	  This driver supports SCSSI only.
1246
1247	  If your SoC supports SCSSI, say Y here.
1248
1249config SPI_VIRTIO
1250	tristate "Virtio SPI Controller"
1251	depends on SPI_MASTER && VIRTIO
1252	help
1253	  If you say yes to this option, support will be included for the virtio
1254	  SPI controller driver. The hardware can be emulated by any device model
1255	  software according to the virtio protocol.
1256
1257	  This driver can also be built as a module. If so, the module
1258	  will be called spi-virtio.
1259
1260config SPI_XCOMM
1261	tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
1262	depends on I2C
1263	help
1264	  Support for the SPI-I2C bridge found on the Analog Devices
1265	  AD-FMCOMMS1-EBZ board.
1266
1267config SPI_XILINX
1268	tristate "Xilinx SPI controller common module"
1269	depends on HAS_IOMEM
1270	select SPI_BITBANG
1271	help
1272	  This exposes the SPI controller IP from the Xilinx EDK.
1273
1274	  See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
1275	  Product Specification document (DS464) for hardware details.
1276
1277	  Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
1278
1279config SPI_XLP
1280	tristate "Cavium ThunderX2 SPI controller driver"
1281	depends on ARCH_THUNDER2 || COMPILE_TEST
1282	help
1283	  Enable support for the SPI controller on the Cavium ThunderX2.
1284	  (Originally on Netlogic XLP SoCs.)
1285
1286	  If you have a Cavium ThunderX2 platform say Y here.
1287	  If unsure, say N.
1288
1289config SPI_XTENSA_XTFPGA
1290	tristate "Xtensa SPI controller for xtfpga"
1291	depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
1292	select SPI_BITBANG
1293	help
1294	  SPI driver for xtfpga SPI master controller.
1295
1296	  This simple SPI master controller is built into xtfpga bitstreams
1297	  and is used to control daughterboard audio codec. It always transfers
1298	  16 bit words in SPI mode 0, automatically asserting CS on transfer
1299	  start and deasserting on end.
1300
1301config SPI_ZYNQ_QSPI
1302	tristate "Xilinx Zynq QSPI controller"
1303	depends on ARCH_ZYNQ || COMPILE_TEST
1304	depends on SPI_MEM
1305	help
1306	  This enables support for the Zynq Quad SPI controller
1307	  in master mode.
1308	  This controller only supports SPI memory interface.
1309
1310config SPI_ZYNQMP_GQSPI
1311	tristate "Xilinx ZynqMP GQSPI controller"
1312	depends on (SPI_MEM && HAS_DMA) || COMPILE_TEST
1313	help
1314	  Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
1315	  This controller only supports SPI memory interface.
1316
1317config SPI_AMD
1318	tristate "AMD SPI controller"
1319	depends on PCI
1320	depends on SPI_MASTER || X86 || COMPILE_TEST
1321	depends on SPI_MEM
1322	help
1323	  Enables SPI controller driver for AMD SoC.
1324
1325#
1326# Add new SPI master controllers in alphabetical order above this line
1327#
1328
1329comment "SPI Multiplexer support"
1330
1331config SPI_MUX
1332	tristate "SPI multiplexer support"
1333	select MULTIPLEXER
1334	help
1335	  This adds support for SPI multiplexers. Each SPI mux will be
1336	  accessible as a SPI controller, the devices behind the mux will appear
1337	  to be chip selects on this controller. It is still necessary to
1338	  select one or more specific mux-controller drivers.
1339
1340#
1341# There are lots of SPI device types, with sensors and memory
1342# being probably the most widely used ones.
1343#
1344comment "SPI Protocol Masters"
1345
1346config SPI_SPIDEV
1347	tristate "User mode SPI device driver support"
1348	help
1349	  This supports user mode SPI protocol drivers.
1350
1351config SPI_LOOPBACK_TEST
1352	tristate "spi loopback test framework support"
1353	depends on m
1354	help
1355	  This enables the SPI loopback testing framework driver
1356
1357	  primarily used for development of spi_master drivers
1358	  and to detect regressions
1359
1360config SPI_TLE62X0
1361	tristate "Infineon TLE62X0 (for power switching)"
1362	depends on SYSFS
1363	help
1364	  SPI driver for Infineon TLE62X0 series line driver chips,
1365	  such as the TLE6220, TLE6230 and TLE6240.  This provides a
1366	  sysfs interface, with each line presented as a kind of GPIO
1367	  exposing both switch control and diagnostic feedback.
1368
1369#
1370# Add new SPI protocol masters in alphabetical order above this line
1371#
1372
1373endif # SPI_MASTER
1374
1375#
1376# SLAVE side ... listening to other SPI masters
1377#
1378
1379config SPI_SLAVE
1380	bool "SPI slave protocol handlers"
1381	help
1382	  If your system has a slave-capable SPI controller, you can enable
1383	  slave protocol handlers.
1384
1385if SPI_SLAVE
1386
1387config SPI_SLAVE_TIME
1388	tristate "SPI slave handler reporting boot up time"
1389	help
1390	  SPI slave handler responding with the time of reception of the last
1391	  SPI message.
1392
1393config SPI_SLAVE_SYSTEM_CONTROL
1394	tristate "SPI slave handler controlling system state"
1395	help
1396	  SPI slave handler to allow remote control of system reboot, power
1397	  off, halt, and suspend.
1398
1399endif # SPI_SLAVE
1400
1401config SPI_DYNAMIC
1402	def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
1403
1404if SPI_OFFLOAD
1405
1406comment "SPI Offload triggers"
1407
1408config SPI_OFFLOAD_TRIGGER_ADI_UTIL_SD
1409	tristate "SPI offload trigger using ADI sigma-delta utility"
1410	help
1411	  SPI offload trigger from ADI sigma-delta utility FPGA IP block.
1412
1413config SPI_OFFLOAD_TRIGGER_PWM
1414	tristate "SPI offload trigger using PWM"
1415	depends on PWM
1416	help
1417	  Generic SPI offload trigger implemented using PWM output.
1418
1419endif # SPI_OFFLOAD
1420
1421endif # SPI
1422