xref: /linux/drivers/spi/Kconfig (revision 8a3eb50d579c852d3502334e7afa6da6efe0e578)
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_NXP_XSPI
485        tristate "NXP xSPI controller"
486	depends on ARCH_MXC || COMPILE_TEST
487	depends on HAS_IOMEM
488	help
489	  This enables support for the xSPI controller. Up to two devices
490	  can be connected to one host.
491	  This controller does not support generic SPI messages and only
492	  supports the high-level SPI memory interface.
493
494config SPI_GPIO
495	tristate "GPIO-based bitbanging SPI Master"
496	depends on GPIOLIB || COMPILE_TEST
497	select SPI_BITBANG
498	help
499	  This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
500	  interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
501	  slaves connected to a bus using this driver are configured as usual,
502	  except that the spi_board_info.controller_data holds the GPIO number
503	  for the chipselect used by this controller driver.
504
505	  Note that this driver often won't achieve even 1 Mbit/sec speeds,
506	  making it unusually slow for SPI.  If your platform can inline
507	  GPIO operations, you should be able to leverage that for better
508	  speed with a custom version of this driver; see the source code.
509
510config SPI_IMG_SPFI
511	tristate "IMG SPFI controller"
512	depends on MIPS || COMPILE_TEST
513	help
514	  This enables support for the SPFI master controller found on
515	  IMG SoCs.
516
517config SPI_IMX
518	tristate "Freescale i.MX SPI controllers"
519	depends on ARCH_MXC || COMPILE_TEST
520	help
521	  This enables support for the Freescale i.MX SPI controllers.
522
523config SPI_INGENIC
524	tristate "Ingenic SoCs SPI controller"
525	depends on MACH_INGENIC || COMPILE_TEST
526	help
527	  This enables support for the Ingenic SoCs SPI controller.
528
529	  To compile this driver as a module, choose M here: the module
530	  will be called spi-ingenic.
531
532config SPI_INTEL
533	tristate
534
535config SPI_INTEL_PCI
536	tristate "Intel PCH/PCU SPI flash PCI driver"
537	depends on PCI
538	depends on X86 || COMPILE_TEST
539	depends on SPI_MEM
540	select SPI_INTEL
541	help
542	  This enables PCI support for the Intel PCH/PCU SPI controller in
543	  master mode. This controller is used to hold BIOS and other
544	  persistent settings. Controllers present in modern Intel hardware
545	  only work in hardware sequencing mode, this means that the
546	  controller exposes a subset of operations that makes it safer to
547	  use. Using this driver it is possible to upgrade BIOS directly
548	  from Linux.
549
550	  To compile this driver as a module, choose M here: the module
551	  will be called spi-intel-pci.
552
553config SPI_INTEL_PLATFORM
554	tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
555	depends on X86 || COMPILE_TEST
556	depends on SPI_MEM
557	select SPI_INTEL
558	help
559	  This enables platform support for the Intel PCH/PCU SPI
560	  controller in master mode that is used to hold BIOS and other
561	  persistent settings. Most of these controllers work in
562	  software sequencing mode, which means that the controller
563	  exposes the low level SPI-NOR opcodes to the software. Using
564	  this driver it is possible to upgrade BIOS directly from Linux.
565
566	  Say N here unless you know what you are doing. Overwriting the
567	  SPI flash may render the system unbootable.
568
569	  To compile this driver as a module, choose M here: the module
570	  will be called spi-intel-platform.
571
572config SPI_JCORE
573	tristate "J-Core SPI Master"
574	depends on OF && (SUPERH || COMPILE_TEST)
575	help
576	  This enables support for the SPI master controller in the J-Core
577	  synthesizable, open source SoC.
578
579config SPI_KSPI2
580	tristate "Support for KEBA SPI master type 2 hardware"
581	depends on HAS_IOMEM
582	depends on KEBA_CP500 || COMPILE_TEST
583	select AUXILIARY_BUS
584	help
585	  This driver supports KEBA SPI master type 2 FPGA implementation,
586	  as found on CP500 devices for example.
587
588	  This driver can also be built as a module. If so, the module
589	  will be called spi-kspi2.
590
591config SPI_LM70_LLP
592	tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
593	depends on PARPORT
594	select SPI_BITBANG
595	help
596	  This driver supports the NS LM70 LLP Evaluation Board,
597	  which interfaces to an LM70 temperature sensor using
598	  a parallel port.
599
600config SPI_LOONGSON_CORE
601	tristate
602	depends on LOONGARCH || COMPILE_TEST
603
604config SPI_LOONGSON_PCI
605	tristate "Loongson SPI Controller PCI Driver Support"
606	select SPI_LOONGSON_CORE
607	depends on PCI && (LOONGARCH || COMPILE_TEST)
608	help
609	  This bus driver supports the Loongson SPI hardware controller in
610	  the Loongson platforms and supports to use PCI framework to
611	  register SPI device resources.
612	  Say Y or M here if you want to use the SPI controller on
613	  Loongson platform.
614
615config SPI_LOONGSON_PLATFORM
616	tristate "Loongson SPI Controller Platform Driver Support"
617	select SPI_LOONGSON_CORE
618	depends on OF && (LOONGARCH || COMPILE_TEST)
619	help
620	  This bus driver supports the Loongson SPI hardware controller in
621	  the Loongson platforms and supports to use DTS framework to
622	  register SPI device resources.
623	  Say Y or M here if you want to use the SPI controller on
624	  Loongson platform.
625
626config SPI_LP8841_RTC
627	tristate "ICP DAS LP-8841 SPI Controller for RTC"
628	depends on MACH_PXA27X_DT || COMPILE_TEST
629	help
630	  This driver provides an SPI master device to drive Maxim
631	  DS-1302 real time clock.
632
633	  Say N here unless you plan to run the kernel on an ICP DAS
634	  LP-8x4x industrial computer.
635
636config SPI_MPC52xx
637	tristate "Freescale MPC52xx SPI (non-PSC) controller support"
638	depends on PPC_MPC52xx
639	help
640	  This drivers supports the MPC52xx SPI controller in master SPI
641	  mode.
642
643config SPI_MPC52xx_PSC
644	tristate "Freescale MPC52xx PSC SPI controller"
645	depends on PPC_MPC52xx
646	help
647	  This enables using the Freescale MPC52xx Programmable Serial
648	  Controller in master SPI mode.
649
650config SPI_MPC512x_PSC
651	tristate "Freescale MPC512x PSC SPI controller"
652	depends on PPC_MPC512x
653	help
654	  This enables using the Freescale MPC5121 Programmable Serial
655	  Controller in SPI master mode.
656
657config SPI_FSL_LIB
658	tristate
659	depends on OF
660
661config SPI_FSL_CPM
662	tristate
663	depends on FSL_SOC
664
665config SPI_FSL_SPI
666	tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
667	depends on OF
668	select SPI_FSL_LIB
669	select SPI_FSL_CPM if FSL_SOC
670	help
671	  This enables using the Freescale SPI controllers in master mode.
672	  MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
673	  MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
674	  This also enables using the Aeroflex Gaisler GRLIB SPI controller in
675	  master mode.
676
677config SPI_FSL_DSPI
678	tristate "Freescale DSPI controller"
679	select REGMAP_MMIO
680	depends on ARCH_MXC || ARCH_NXP || M5441x || COMPILE_TEST
681	help
682	  This enables support for the Freescale DSPI controller in master
683	  mode. S32, VF610, LS1021A and ColdFire platforms uses the controller.
684
685config SPI_FSL_ESPI
686	tristate "Freescale eSPI controller"
687	depends on FSL_SOC
688	help
689	  This enables using the Freescale eSPI controllers in master mode.
690	  From MPC8536, 85xx platform uses the controller, and all P10xx,
691	  P20xx, P30xx,P40xx, P50xx uses this controller.
692
693config SPI_LJCA
694	tristate "Intel La Jolla Cove Adapter SPI support"
695	depends on USB_LJCA
696	default USB_LJCA
697	help
698	  Select this option to enable SPI driver for the Intel
699	  La Jolla Cove Adapter (LJCA) board.
700
701	  This driver can also be built as a module. If so, the module
702	  will be called spi-ljca.
703
704config SPI_MESON_SPICC
705	tristate "Amlogic Meson SPICC controller"
706	depends on COMMON_CLK
707	depends on ARCH_MESON || COMPILE_TEST
708	help
709	  This enables master mode support for the SPICC (SPI communication
710	  controller) available in Amlogic Meson SoCs.
711
712config SPI_MESON_SPIFC
713	tristate "Amlogic Meson SPIFC controller"
714	depends on ARCH_MESON || COMPILE_TEST
715	select REGMAP_MMIO
716	help
717	  This enables master mode support for the SPIFC (SPI flash
718	  controller) available in Amlogic Meson SoCs.
719
720config SPI_MICROCHIP_CORE_QSPI
721	tristate "Microchip FPGA QSPI controllers"
722	depends on SPI_MASTER
723	help
724	  This enables the QSPI driver for Microchip FPGA QSPI controllers.
725	  Say Y or M here if you want to use the QSPI controllers on
726	  PolarFire SoC.
727	  If built as a module, it will be called spi-microchip-core-qspi.
728
729config SPI_MICROCHIP_CORE_SPI
730	tristate "Microchip FPGA CoreSPI controller"
731	depends on SPI_MASTER
732	help
733	  This enables the SPI driver for Microchip FPGA CoreSPI controller.
734	  Say Y or M here if you want to use the "soft" controllers on
735	  PolarFire SoC.
736	  If built as a module, it will be called spi-microchip-core-spi.
737
738config SPI_MT65XX
739	tristate "MediaTek SPI controller"
740	depends on ARCH_MEDIATEK || COMPILE_TEST
741	help
742	  This selects the MediaTek(R) SPI bus driver.
743	  If you want to use MediaTek(R) SPI interface,
744	  say Y or M here.If you are not sure, say N.
745	  SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
746
747config SPI_MT7621
748	tristate "MediaTek MT7621 SPI Controller"
749	depends on RALINK || COMPILE_TEST
750	help
751	  This selects a driver for the MediaTek MT7621 SPI Controller.
752
753config SPI_MTK_NOR
754	tristate "MediaTek SPI NOR controller"
755	depends on ARCH_MEDIATEK || COMPILE_TEST
756	help
757	  This enables support for SPI NOR controller found on MediaTek
758	  ARM SoCs. This is a controller specifically for SPI NOR flash.
759	  It can perform generic SPI transfers up to 6 bytes via generic
760	  SPI interface as well as several SPI NOR specific instructions
761	  via SPI MEM interface.
762
763config SPI_MTK_SNFI
764	tristate "MediaTek SPI NAND Flash Interface"
765	depends on ARCH_MEDIATEK || COMPILE_TEST
766	depends on MTD_NAND_ECC_MEDIATEK
767	help
768	  This enables support for SPI-NAND mode on the MediaTek NAND
769	  Flash Interface found on MediaTek ARM SoCs. This controller
770	  is implemented as a SPI-MEM controller with pipelined ECC
771	  capability.
772
773config SPI_WPCM_FIU
774	tristate "Nuvoton WPCM450 Flash Interface Unit"
775	depends on ARCH_NPCM || COMPILE_TEST
776	select REGMAP
777	help
778	  This enables support got the Flash Interface Unit SPI controller
779	  present in the Nuvoton WPCM450 SoC.
780
781	  This driver does not support generic SPI. The implementation only
782	  supports the spi-mem interface.
783
784config SPI_NPCM_FIU
785	tristate "Nuvoton NPCM FLASH Interface Unit"
786	depends on ARCH_NPCM || COMPILE_TEST
787	depends on OF && HAS_IOMEM
788	help
789	  This enables support for the Flash Interface Unit SPI controller
790	  in master mode.
791	  This driver does not support generic SPI. The implementation only
792	  supports spi-mem interface.
793
794config SPI_NPCM_PSPI
795	tristate "Nuvoton NPCM PSPI Controller"
796	depends on ARCH_NPCM || COMPILE_TEST
797	help
798	  This driver provides support for Nuvoton NPCM BMC
799	  Peripheral SPI controller in master mode.
800
801config SPI_LANTIQ_SSC
802	tristate "Lantiq SSC SPI controller"
803	depends on LANTIQ || X86 || COMPILE_TEST
804	help
805	  This driver supports the Lantiq SSC SPI controller in master
806	  mode. This controller is found on Intel (former Lantiq) SoCs like
807	  the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
808
809config SPI_OC_TINY
810	tristate "OpenCores tiny SPI"
811	depends on GPIOLIB || COMPILE_TEST
812	select SPI_BITBANG
813	help
814	  This is the driver for OpenCores tiny SPI master controller.
815
816config SPI_OCTEON
817	tristate "Cavium OCTEON SPI controller"
818	depends on CAVIUM_OCTEON_SOC
819	help
820	  SPI host driver for the hardware found on some Cavium OCTEON
821	  SOCs.
822
823config SPI_OMAP_UWIRE
824	tristate "OMAP1 MicroWire"
825	depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
826	select SPI_BITBANG
827	help
828	  This hooks up to the MicroWire controller on OMAP1 chips.
829
830config SPI_OMAP24XX
831	tristate "McSPI driver for OMAP"
832	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
833	select SG_SPLIT
834	help
835	  SPI master controller for OMAP24XX and later Multichannel SPI
836	  (McSPI) modules.
837
838config SPI_TI_QSPI
839	tristate "DRA7xxx QSPI controller support"
840	depends on ARCH_OMAP2PLUS || COMPILE_TEST
841	help
842	  QSPI master controller for DRA7xxx used for flash devices.
843	  This device supports single, dual and quad read support, while
844	  it only supports single write mode.
845
846config SPI_ORION
847	tristate "Orion SPI master"
848	depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
849	help
850	  This enables using the SPI master controller on the Orion
851	  and MVEBU chips.
852
853config SPI_PCI1XXXX
854	tristate "PCI1XXXX SPI Bus support"
855	depends on PCI
856	help
857	  Say "yes" to Enable the SPI Bus support for the PCI1xxxx card
858	  This is a PCI to SPI Bus driver
859	  This driver can be built as module. If so, the module will be
860	  called as spi-pci1xxxx.
861
862config SPI_PIC32
863	tristate "Microchip PIC32 series SPI"
864	depends on MACH_PIC32 || COMPILE_TEST
865	help
866	  SPI driver for Microchip PIC32 SPI master controller.
867
868config SPI_PIC32_SQI
869	tristate "Microchip PIC32 Quad SPI driver"
870	depends on MACH_PIC32 || COMPILE_TEST
871	help
872	  SPI driver for PIC32 Quad SPI controller.
873
874config SPI_PL022
875	tristate "ARM AMBA PL022 SSP controller"
876	depends on ARM_AMBA
877	default y if ARCH_REALVIEW
878	default y if INTEGRATOR_IMPD1
879	default y if ARCH_VERSATILE
880	help
881	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
882	  controller. If you have an embedded system with an AMBA(R)
883	  bus and a PL022 controller, say Y or M here.
884
885config SPI_POLARFIRE_SOC
886	tristate "Microchip FPGA SPI controllers"
887	depends on SPI_MASTER
888	depends on ARCH_MICROCHIP || COMPILE_TEST
889	help
890	  This enables the SPI driver for Microchip FPGA SPI controllers.
891	  Say Y or M here if you want to use the "hard" controllers on
892	  PolarFire SoC.
893	  If built as a module, it will be called spi-mpfs.
894
895config SPI_PPC4xx
896	tristate "PPC4xx SPI Controller"
897	depends on PPC32 && 4xx
898	select SPI_BITBANG
899	help
900	  This selects a driver for the PPC4xx SPI Controller.
901
902config SPI_PXA2XX
903	tristate "PXA2xx SSP SPI master"
904	depends on ARCH_PXA || ARCH_MMP || (X86 && (PCI || ACPI)) || COMPILE_TEST
905	select PXA_SSP if ARCH_PXA || ARCH_MMP
906	help
907	  This enables using a PXA2xx or Sodaville SSP port as a SPI master
908	  controller. The driver can be configured to use any SSP port.
909
910config SPI_PXA2XX_PCI
911	def_tristate SPI_PXA2XX && PCI && COMMON_CLK
912
913config SPI_REALTEK_SNAND
914	tristate "Realtek SPI-NAND Flash Controller"
915	depends on MACH_REALTEK_RTL || COMPILE_TEST
916	select REGMAP
917	help
918	  This enables support for the SPI-NAND Flash controller on
919	  Realtek SoCs.
920
921	  This driver does not support generic SPI. The implementation
922	  only supports the spi-mem interface.
923
924config SPI_ROCKCHIP
925	tristate "Rockchip SPI controller driver"
926	depends on ARCH_ROCKCHIP || COMPILE_TEST
927	help
928	  This selects a driver for Rockchip SPI controller.
929
930	  If you say yes to this option, support will be included for
931	  RK3066, RK3188 and RK3288 families of SPI controller.
932	  Rockchip SPI controller support DMA transport and PIO mode.
933	  The main usecase of this controller is to use spi flash as boot
934	  device.
935
936config SPI_ROCKCHIP_SFC
937	tristate "Rockchip Serial Flash Controller (SFC)"
938	depends on ARCH_ROCKCHIP || COMPILE_TEST
939	depends on HAS_IOMEM && HAS_DMA
940	help
941	  This enables support for Rockchip serial flash controller. This
942	  is a specialized controller used to access SPI flash on some
943	  Rockchip SOCs.
944
945	  ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
946	  the driver automatically falls back to PIO mode.
947
948config SPI_RB4XX
949	tristate "Mikrotik RB4XX SPI master"
950	depends on SPI_MASTER && (ATH79 || COMPILE_TEST)
951	depends on OF
952	help
953	  SPI controller driver for the Mikrotik RB4xx series boards.
954
955config SPI_RPCIF
956	tristate "Renesas RPC-IF SPI driver"
957	depends on RENESAS_RPCIF
958	help
959	  SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
960
961config SPI_RSPI
962	tristate "Renesas RSPI/QSPI controller"
963	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
964	help
965	  SPI driver for Renesas RSPI and QSPI blocks.
966
967config SPI_RZV2H_RSPI
968	tristate "Renesas RZ/V2H RSPI controller"
969	depends on ARCH_RENESAS || COMPILE_TEST
970	help
971	  RSPI driver for the Renesas RZ/V2H Serial Peripheral Interface (RSPI).
972	  RSPI supports both SPI host and SPI target roles. This option only
973	  enables the SPI host role.
974
975config SPI_RZV2M_CSI
976	tristate "Renesas RZ/V2M CSI controller"
977	depends on ARCH_RENESAS || COMPILE_TEST
978	help
979	  SPI driver for Renesas RZ/V2M Clocked Serial Interface (CSI).
980	  CSI supports both SPI host and SPI target roles.
981
982config SPI_QCOM_QSPI
983	tristate "QTI QSPI controller"
984	depends on ARCH_QCOM || COMPILE_TEST
985	help
986	  QSPI(Quad SPI) driver for Qualcomm QSPI controller.
987
988config SPI_QPIC_SNAND
989	tristate "QPIC SNAND controller"
990	depends on ARCH_QCOM || COMPILE_TEST
991	depends on MTD
992	help
993	  QPIC_SNAND (QPIC SPI NAND) driver for Qualcomm QPIC controller.
994	  QPIC controller supports both parallel nand and serial nand.
995	  This config will enable serial nand driver for QPIC controller.
996
997config SPI_QUP
998	tristate "Qualcomm SPI controller with QUP interface"
999	depends on ARCH_QCOM || COMPILE_TEST
1000	help
1001	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
1002	  provides a common data path (an output FIFO and an input FIFO)
1003	  for serial peripheral interface (SPI) mini-core. SPI in master
1004	  mode supports up to 50MHz, up to four chip selects, programmable
1005	  data path from 4 bits to 32 bits and numerous protocol variants.
1006
1007	  This driver can also be built as a module.  If so, the module
1008	  will be called spi_qup.
1009
1010config SPI_QCOM_GENI
1011	tristate "Qualcomm GENI based SPI controller"
1012	depends on QCOM_GENI_SE
1013	help
1014	  This driver supports GENI serial engine based SPI controller in
1015	  master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
1016	  yes to this option, support will be included for the built-in SPI
1017	  interface on the Qualcomm Technologies Inc.'s SoCs.
1018
1019	  This driver can also be built as a module.  If so, the module
1020	  will be called spi-geni-qcom.
1021
1022config SPI_S3C64XX
1023	tristate "Samsung S3C64XX/Exynos SoC series type SPI"
1024	depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
1025	help
1026	  SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
1027	  Choose Y/M here only if you build for such Samsung SoC.
1028
1029config SPI_SC18IS602
1030	tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
1031	depends on I2C
1032	help
1033	  SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
1034
1035config SPI_SH_MSIOF
1036	tristate "SuperH MSIOF SPI controller"
1037	depends on HAVE_CLK
1038	depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
1039	help
1040	  SPI driver for SuperH and SH Mobile MSIOF blocks.
1041
1042config SPI_SH
1043	tristate "SuperH SPI controller"
1044	depends on SUPERH || COMPILE_TEST
1045	help
1046	  SPI driver for SuperH SPI blocks.
1047
1048config SPI_SH_SCI
1049	tristate "SuperH SCI SPI controller"
1050	depends on SUPERH
1051	select SPI_BITBANG
1052	help
1053	  SPI driver for SuperH SCI blocks.
1054
1055config SPI_SH_HSPI
1056	tristate "SuperH HSPI controller"
1057	depends on ARCH_RENESAS || COMPILE_TEST
1058	help
1059	  SPI driver for SuperH HSPI blocks.
1060
1061config SPI_SIFIVE
1062	tristate "SiFive SPI controller"
1063	depends on HAS_IOMEM
1064	help
1065	  This exposes the SPI controller IP from SiFive.
1066
1067config SPI_SLAVE_MT27XX
1068	tristate "MediaTek SPI slave device"
1069	depends on ARCH_MEDIATEK || COMPILE_TEST
1070	depends on SPI_SLAVE
1071	help
1072	  This selects the MediaTek(R) SPI slave device driver.
1073	  If you want to use MediaTek(R) SPI slave interface,
1074	  say Y or M here.If you are not sure, say N.
1075	  SPI slave drivers for Mediatek MT27XX series ARM SoCs.
1076
1077config SPI_SN_F_OSPI
1078	tristate "Socionext F_OSPI SPI flash controller"
1079	depends on OF && HAS_IOMEM
1080	depends on SPI_MEM
1081	help
1082	  This enables support for the Socionext F_OSPI controller
1083	  for connecting an SPI Flash memory over up to 8-bit wide bus.
1084	  It supports indirect access mode only.
1085
1086config SPI_SG2044_NOR
1087	tristate "SG2044 SPI NOR Controller"
1088	depends on ARCH_SOPHGO || COMPILE_TEST
1089	help
1090	  This enables support for the SG2044 SPI NOR controller,
1091	  which supports Dual/Quad read and write operations while
1092	  also supporting 3Byte address devices and 4Byte address
1093	  devices.
1094
1095config SPI_SPRD
1096	tristate "Spreadtrum SPI controller"
1097	depends on ARCH_SPRD || COMPILE_TEST
1098	help
1099	  SPI driver for Spreadtrum SoCs.
1100
1101config SPI_SPRD_ADI
1102	tristate "Spreadtrum ADI controller"
1103	depends on ARCH_SPRD || COMPILE_TEST
1104	depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
1105	help
1106	  ADI driver based on SPI for Spreadtrum SoCs.
1107
1108config SPI_STM32
1109	tristate "STMicroelectronics STM32 SPI controller"
1110	depends on ARCH_STM32 || COMPILE_TEST
1111	select SPI_SLAVE
1112	help
1113	  SPI driver for STMicroelectronics STM32 SoCs.
1114
1115	  STM32 SPI controller supports DMA and PIO modes. When DMA
1116	  is not available, the driver automatically falls back to
1117	  PIO mode.
1118
1119config SPI_STM32_OSPI
1120	tristate "STMicroelectronics STM32 OCTO 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 Octo SPI controller in master mode.
1126	  This driver does not support generic SPI. The implementation only
1127	  supports spi-mem interface.
1128
1129config SPI_STM32_QSPI
1130	tristate "STMicroelectronics STM32 QUAD SPI controller"
1131	depends on ARCH_STM32 || COMPILE_TEST
1132	depends on OF
1133	depends on SPI_MEM
1134	help
1135	  This enables support for the Quad SPI controller in master mode.
1136	  This driver does not support generic SPI. The implementation only
1137	  supports spi-mem interface.
1138
1139config SPI_ST_SSC4
1140	tristate "STMicroelectronics SPI SSC-based driver"
1141	depends on ARCH_STI || COMPILE_TEST
1142	help
1143	  STMicroelectronics SoCs support for SPI. If you say yes to
1144	  this option, support will be included for the SSC driven SPI.
1145
1146config SPI_SUN4I
1147	tristate "Allwinner A10 SoCs SPI controller"
1148	depends on ARCH_SUNXI || COMPILE_TEST
1149	help
1150	  SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
1151
1152config SPI_SUN6I
1153	tristate "Allwinner A31 SPI controller"
1154	depends on ARCH_SUNXI || COMPILE_TEST
1155	depends on RESET_CONTROLLER
1156	help
1157	  This enables using the SPI controller on the Allwinner A31 SoCs.
1158
1159config SPI_SUNPLUS_SP7021
1160	tristate "Sunplus SP7021 SPI controller"
1161	depends on SOC_SP7021 || COMPILE_TEST
1162	help
1163	  This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
1164	  This driver can also be built as a module. If so, the module will be
1165	  called as spi-sunplus-sp7021.
1166
1167	  If you have a  Sunplus SP7021 platform say Y here.
1168	  If unsure, say N.
1169
1170config SPI_SYNQUACER
1171	tristate "Socionext's SynQuacer HighSpeed SPI controller"
1172	depends on ARCH_SYNQUACER || COMPILE_TEST
1173	help
1174	  SPI driver for Socionext's High speed SPI controller which provides
1175	  various operating modes for interfacing to serial peripheral devices
1176	  that use the de-facto standard SPI protocol.
1177
1178	  It also supports the new dual-bit and quad-bit SPI protocol.
1179
1180config SPI_MXIC
1181	tristate "Macronix MX25F0A SPI controller"
1182	depends on SPI_MASTER
1183	imply MTD_NAND_ECC_MXIC
1184	help
1185	  This selects the Macronix MX25F0A SPI controller driver.
1186
1187config SPI_MXS
1188	tristate "Freescale MXS SPI controller"
1189	depends on ARCH_MXS
1190	select STMP_DEVICE
1191	help
1192	  SPI driver for Freescale MXS devices.
1193
1194config SPI_TEGRA210_QUAD
1195	tristate "NVIDIA Tegra QSPI Controller"
1196	depends on ARCH_TEGRA || COMPILE_TEST
1197	depends on RESET_CONTROLLER
1198	help
1199	  QSPI driver for NVIDIA Tegra QSPI Controller interface. This
1200	  controller is different from the SPI controller and is available
1201	  on Tegra SoCs starting from Tegra210.
1202
1203config SPI_TEGRA114
1204	tristate "NVIDIA Tegra114 SPI Controller"
1205	depends on ARCH_TEGRA || COMPILE_TEST
1206	depends on RESET_CONTROLLER
1207	help
1208	  SPI controller driver for NVIDIA Tegra114 and later SoCs. This controller
1209	  is different than the older SoCs SPI controller and also register interface
1210	  get changed with this controller.
1211
1212config SPI_TEGRA20_SFLASH
1213	tristate "Nvidia Tegra20 Serial flash Controller"
1214	depends on ARCH_TEGRA || COMPILE_TEST
1215	depends on RESET_CONTROLLER
1216	help
1217	  SPI driver for Nvidia Tegra20 Serial flash Controller interface.
1218	  The main usecase of this controller is to use spi flash as boot
1219	  device.
1220
1221config SPI_TEGRA20_SLINK
1222	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
1223	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
1224	depends on RESET_CONTROLLER
1225	help
1226	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
1227
1228config SPI_THUNDERX
1229	tristate "Cavium ThunderX SPI controller"
1230	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
1231	help
1232	  SPI host driver for the hardware found on Cavium ThunderX
1233	  SOCs.
1234
1235config SPI_TOPCLIFF_PCH
1236	tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
1237	depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
1238	help
1239	  SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
1240	  used in some x86 embedded processors.
1241
1242	  This driver also supports the ML7213/ML7223/ML7831, a companion chip
1243	  for the Atom E6xx series and compatible with the Intel EG20T PCH.
1244
1245config SPI_UNIPHIER
1246	tristate "Socionext UniPhier SPI Controller"
1247	depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
1248	depends on HAS_IOMEM
1249	help
1250	  This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
1251
1252	  UniPhier SoCs have SCSSI and MCSSI SPI controllers.
1253	  Every UniPhier SoC has SCSSI which supports single channel.
1254	  Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
1255	  This driver supports SCSSI only.
1256
1257	  If your SoC supports SCSSI, say Y here.
1258
1259config SPI_VIRTIO
1260	tristate "Virtio SPI Controller"
1261	depends on SPI_MASTER && VIRTIO
1262	help
1263	  If you say yes to this option, support will be included for the virtio
1264	  SPI controller driver. The hardware can be emulated by any device model
1265	  software according to the virtio protocol.
1266
1267	  This driver can also be built as a module. If so, the module
1268	  will be called spi-virtio.
1269
1270config SPI_XCOMM
1271	tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
1272	depends on I2C
1273	help
1274	  Support for the SPI-I2C bridge found on the Analog Devices
1275	  AD-FMCOMMS1-EBZ board.
1276
1277config SPI_XILINX
1278	tristate "Xilinx SPI controller common module"
1279	depends on HAS_IOMEM
1280	select SPI_BITBANG
1281	help
1282	  This exposes the SPI controller IP from the Xilinx EDK.
1283
1284	  See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
1285	  Product Specification document (DS464) for hardware details.
1286
1287	  Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
1288
1289config SPI_XLP
1290	tristate "Cavium ThunderX2 SPI controller driver"
1291	depends on ARCH_THUNDER2 || COMPILE_TEST
1292	help
1293	  Enable support for the SPI controller on the Cavium ThunderX2.
1294	  (Originally on Netlogic XLP SoCs.)
1295
1296	  If you have a Cavium ThunderX2 platform say Y here.
1297	  If unsure, say N.
1298
1299config SPI_XTENSA_XTFPGA
1300	tristate "Xtensa SPI controller for xtfpga"
1301	depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
1302	select SPI_BITBANG
1303	help
1304	  SPI driver for xtfpga SPI master controller.
1305
1306	  This simple SPI master controller is built into xtfpga bitstreams
1307	  and is used to control daughterboard audio codec. It always transfers
1308	  16 bit words in SPI mode 0, automatically asserting CS on transfer
1309	  start and deasserting on end.
1310
1311config SPI_ZYNQ_QSPI
1312	tristate "Xilinx Zynq QSPI controller"
1313	depends on ARCH_ZYNQ || COMPILE_TEST
1314	depends on SPI_MEM
1315	help
1316	  This enables support for the Zynq Quad SPI controller
1317	  in master mode.
1318	  This controller only supports SPI memory interface.
1319
1320config SPI_ZYNQMP_GQSPI
1321	tristate "Xilinx ZynqMP GQSPI controller"
1322	depends on (SPI_MEM && HAS_DMA) || COMPILE_TEST
1323	help
1324	  Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
1325	  This controller only supports SPI memory interface.
1326
1327config SPI_AMD
1328	tristate "AMD SPI controller"
1329	depends on PCI
1330	depends on SPI_MASTER || X86 || COMPILE_TEST
1331	depends on SPI_MEM
1332	help
1333	  Enables SPI controller driver for AMD SoC.
1334
1335#
1336# Add new SPI master controllers in alphabetical order above this line
1337#
1338
1339comment "SPI Multiplexer support"
1340
1341config SPI_MUX
1342	tristate "SPI multiplexer support"
1343	select MULTIPLEXER
1344	help
1345	  This adds support for SPI multiplexers. Each SPI mux will be
1346	  accessible as a SPI controller, the devices behind the mux will appear
1347	  to be chip selects on this controller. It is still necessary to
1348	  select one or more specific mux-controller drivers.
1349
1350#
1351# There are lots of SPI device types, with sensors and memory
1352# being probably the most widely used ones.
1353#
1354comment "SPI Protocol Masters"
1355
1356config SPI_SPIDEV
1357	tristate "User mode SPI device driver support"
1358	help
1359	  This supports user mode SPI protocol drivers.
1360
1361config SPI_LOOPBACK_TEST
1362	tristate "spi loopback test framework support"
1363	depends on m
1364	help
1365	  This enables the SPI loopback testing framework driver
1366
1367	  primarily used for development of spi_master drivers
1368	  and to detect regressions
1369
1370config SPI_TLE62X0
1371	tristate "Infineon TLE62X0 (for power switching)"
1372	depends on SYSFS
1373	help
1374	  SPI driver for Infineon TLE62X0 series line driver chips,
1375	  such as the TLE6220, TLE6230 and TLE6240.  This provides a
1376	  sysfs interface, with each line presented as a kind of GPIO
1377	  exposing both switch control and diagnostic feedback.
1378
1379#
1380# Add new SPI protocol masters in alphabetical order above this line
1381#
1382
1383endif # SPI_MASTER
1384
1385#
1386# SLAVE side ... listening to other SPI masters
1387#
1388
1389config SPI_SLAVE
1390	bool "SPI slave protocol handlers"
1391	help
1392	  If your system has a slave-capable SPI controller, you can enable
1393	  slave protocol handlers.
1394
1395if SPI_SLAVE
1396
1397config SPI_SLAVE_TIME
1398	tristate "SPI slave handler reporting boot up time"
1399	help
1400	  SPI slave handler responding with the time of reception of the last
1401	  SPI message.
1402
1403config SPI_SLAVE_SYSTEM_CONTROL
1404	tristate "SPI slave handler controlling system state"
1405	help
1406	  SPI slave handler to allow remote control of system reboot, power
1407	  off, halt, and suspend.
1408
1409endif # SPI_SLAVE
1410
1411config SPI_DYNAMIC
1412	def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
1413
1414if SPI_OFFLOAD
1415
1416comment "SPI Offload triggers"
1417
1418config SPI_OFFLOAD_TRIGGER_ADI_UTIL_SD
1419	tristate "SPI offload trigger using ADI sigma-delta utility"
1420	help
1421	  SPI offload trigger from ADI sigma-delta utility FPGA IP block.
1422
1423config SPI_OFFLOAD_TRIGGER_PWM
1424	tristate "SPI offload trigger using PWM"
1425	depends on PWM
1426	help
1427	  Generic SPI offload trigger implemented using PWM output.
1428
1429endif # SPI_OFFLOAD
1430
1431endif # SPI
1432