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