• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_BCMBCA || 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	help
299	  Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
300	  controllers. Two of them are pretty much normal: with IRQ, DMA,
301	  FIFOs of 64 words depth, 4x CSs, but the third one as being a
302	  part of the Baikal-T1 System Boot Controller has got a very
303	  limited resources: no IRQ, no DMA, only a single native
304	  chip-select and Tx/Rx FIFO with just 8 words depth available.
305	  The later one is normally connected to an external SPI-nor flash
306	  of 128Mb (in general can be of bigger size).
307
308config SPI_DW_BT1_DIRMAP
309	bool "Directly mapped Baikal-T1 Boot SPI flash support"
310	depends on SPI_DW_BT1
311	help
312	  Directly mapped SPI flash memory is an interface specific to the
313	  Baikal-T1 System Boot Controller. It is a 16MB MMIO region, which
314	  can be used to access a peripheral memory device just by
315	  reading/writing data from/to it. Note that the system APB bus
316	  will stall during each IO from/to the dirmap region until the
317	  operation is finished. So try not to use it concurrently with
318	  time-critical tasks (like the SPI memory operations implemented
319	  in this driver).
320
321endif
322
323config SPI_DLN2
324       tristate "Diolan DLN-2 USB SPI adapter"
325       depends on MFD_DLN2
326       help
327	 If you say yes to this option, support will be included for Diolan
328	 DLN2, a USB to SPI interface.
329
330	 This driver can also be built as a module.  If so, the module
331	 will be called spi-dln2.
332
333config SPI_EP93XX
334	tristate "Cirrus Logic EP93xx SPI controller"
335	depends on ARCH_EP93XX || COMPILE_TEST
336	help
337	  This enables using the Cirrus EP93xx SPI controller in master
338	  mode.
339
340config SPI_FALCON
341	bool "Falcon SPI controller support"
342	depends on SOC_FALCON
343	help
344	  The external bus unit (EBU) found on the FALC-ON SoC has SPI
345	  emulation that is designed for serial flash access. This driver
346	  has only been tested with m25p80 type chips. The hardware has no
347	  support for other types of SPI peripherals.
348
349config SPI_FSI
350	tristate "FSI SPI driver"
351	depends on FSI
352	help
353	  This enables support for the driver for FSI bus attached SPI
354	  controllers.
355
356config SPI_FSL_LPSPI
357	tristate "Freescale i.MX LPSPI controller"
358	depends on ARCH_MXC || COMPILE_TEST
359	help
360	  This enables Freescale i.MX LPSPI controllers in master mode.
361
362config SPI_FSL_QUADSPI
363	tristate "Freescale QSPI controller"
364	depends on ARCH_MXC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
365	depends on HAS_IOMEM
366	help
367	  This enables support for the Quad SPI controller in master mode.
368	  Up to four flash chips can be connected on two buses with two
369	  chipselects each.
370	  This controller does not support generic SPI messages. It only
371	  supports the high-level SPI memory interface.
372
373config SPI_GXP
374	tristate "GXP SPI driver"
375	depends on ARCH_HPE || COMPILE_TEST
376	help
377	  This enables support for the driver for GXP bus attached SPI
378	  controllers.
379
380config SPI_HISI_KUNPENG
381	tristate "HiSilicon SPI Controller for Kunpeng SoCs"
382	depends on (ARM64 && ACPI) || COMPILE_TEST
383	help
384	  This enables support for HiSilicon SPI controller found on
385	  Kunpeng SoCs.
386
387	  This driver can also be built as a module. If so, the module
388	  will be called hisi-kunpeng-spi.
389
390config SPI_HISI_SFC_V3XX
391	tristate "HiSilicon SPI NOR Flash Controller for Hi16XX chipsets"
392	depends on (ARM64 && ACPI) || COMPILE_TEST
393	depends on HAS_IOMEM
394	help
395	  This enables support for HiSilicon v3xx SPI NOR flash controller
396	  found in hi16xx chipsets.
397
398config SPI_NXP_FLEXSPI
399	tristate "NXP Flex SPI controller"
400	depends on ARCH_LAYERSCAPE || HAS_IOMEM
401	help
402	  This enables support for the Flex SPI controller in master mode.
403	  Up to four slave devices can be connected on two buses with two
404	  chipselects each.
405	  This controller does not support generic SPI messages and only
406	  supports the high-level SPI memory interface.
407
408config SPI_GPIO
409	tristate "GPIO-based bitbanging SPI Master"
410	depends on GPIOLIB || COMPILE_TEST
411	select SPI_BITBANG
412	help
413	  This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
414	  interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
415	  slaves connected to a bus using this driver are configured as usual,
416	  except that the spi_board_info.controller_data holds the GPIO number
417	  for the chipselect used by this controller driver.
418
419	  Note that this driver often won't achieve even 1 Mbit/sec speeds,
420	  making it unusually slow for SPI.  If your platform can inline
421	  GPIO operations, you should be able to leverage that for better
422	  speed with a custom version of this driver; see the source code.
423
424config SPI_IMG_SPFI
425	tristate "IMG SPFI controller"
426	depends on MIPS || COMPILE_TEST
427	help
428	  This enables support for the SPFI master controller found on
429	  IMG SoCs.
430
431config SPI_IMX
432	tristate "Freescale i.MX SPI controllers"
433	depends on ARCH_MXC || COMPILE_TEST
434	help
435	  This enables support for the Freescale i.MX SPI controllers.
436
437config SPI_INGENIC
438	tristate "Ingenic SoCs SPI controller"
439	depends on MACH_INGENIC || COMPILE_TEST
440	help
441	  This enables support for the Ingenic SoCs SPI controller.
442
443	  To compile this driver as a module, choose M here: the module
444	  will be called spi-ingenic.
445
446config SPI_INTEL
447	tristate
448
449config SPI_INTEL_PCI
450	tristate "Intel PCH/PCU SPI flash PCI driver (DANGEROUS)"
451	depends on PCI
452	depends on X86 || COMPILE_TEST
453	depends on SPI_MEM
454	select SPI_INTEL
455	help
456	  This enables PCI support for the Intel PCH/PCU SPI controller in
457	  master mode. This controller is present in modern Intel hardware
458	  and is used to hold BIOS and other persistent settings. Using
459	  this driver it is possible to upgrade BIOS directly from Linux.
460
461	  Say N here unless you know what you are doing. Overwriting the
462	  SPI flash may render the system unbootable.
463
464	  To compile this driver as a module, choose M here: the module
465	  will be called spi-intel-pci.
466
467config SPI_INTEL_PLATFORM
468	tristate "Intel PCH/PCU SPI flash platform driver (DANGEROUS)"
469	depends on X86 || COMPILE_TEST
470	depends on SPI_MEM
471	select SPI_INTEL
472	help
473	  This enables platform support for the Intel PCH/PCU SPI
474	  controller in master mode. This controller is present in modern
475	  Intel hardware and is used to hold BIOS and other persistent
476	  settings. Using this driver it is possible to upgrade BIOS
477	  directly from Linux.
478
479	  Say N here unless you know what you are doing. Overwriting the
480	  SPI flash may render the system unbootable.
481
482	  To compile this driver as a module, choose M here: the module
483	  will be called spi-intel-platform.
484
485config SPI_JCORE
486	tristate "J-Core SPI Master"
487	depends on OF && (SUPERH || COMPILE_TEST)
488	help
489	  This enables support for the SPI master controller in the J-Core
490	  synthesizable, open source SoC.
491
492config SPI_LM70_LLP
493	tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
494	depends on PARPORT
495	select SPI_BITBANG
496	help
497	  This driver supports the NS LM70 LLP Evaluation Board,
498	  which interfaces to an LM70 temperature sensor using
499	  a parallel port.
500
501config SPI_LP8841_RTC
502	tristate "ICP DAS LP-8841 SPI Controller for RTC"
503	depends on MACH_PXA27X_DT || COMPILE_TEST
504	help
505	  This driver provides an SPI master device to drive Maxim
506	  DS-1302 real time clock.
507
508	  Say N here unless you plan to run the kernel on an ICP DAS
509	  LP-8x4x industrial computer.
510
511config SPI_MPC52xx
512	tristate "Freescale MPC52xx SPI (non-PSC) controller support"
513	depends on PPC_MPC52xx
514	help
515	  This drivers supports the MPC52xx SPI controller in master SPI
516	  mode.
517
518config SPI_MPC52xx_PSC
519	tristate "Freescale MPC52xx PSC SPI controller"
520	depends on PPC_MPC52xx
521	help
522	  This enables using the Freescale MPC52xx Programmable Serial
523	  Controller in master SPI mode.
524
525config SPI_MPC512x_PSC
526	tristate "Freescale MPC512x PSC SPI controller"
527	depends on PPC_MPC512x
528	help
529	  This enables using the Freescale MPC5121 Programmable Serial
530	  Controller in SPI master mode.
531
532config SPI_FSL_LIB
533	tristate
534	depends on OF
535
536config SPI_FSL_CPM
537	tristate
538	depends on FSL_SOC
539
540config SPI_FSL_SPI
541	tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
542	depends on OF
543	select SPI_FSL_LIB
544	select SPI_FSL_CPM if FSL_SOC
545	help
546	  This enables using the Freescale SPI controllers in master mode.
547	  MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
548	  MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
549	  This also enables using the Aeroflex Gaisler GRLIB SPI controller in
550	  master mode.
551
552config SPI_FSL_DSPI
553	tristate "Freescale DSPI controller"
554	select REGMAP_MMIO
555	depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || M5441x || COMPILE_TEST
556	help
557	  This enables support for the Freescale DSPI controller in master
558	  mode. VF610, LS1021A and ColdFire platforms uses the controller.
559
560config SPI_FSL_ESPI
561	tristate "Freescale eSPI controller"
562	depends on FSL_SOC
563	help
564	  This enables using the Freescale eSPI controllers in master mode.
565	  From MPC8536, 85xx platform uses the controller, and all P10xx,
566	  P20xx, P30xx,P40xx, P50xx uses this controller.
567
568config SPI_MESON_SPICC
569	tristate "Amlogic Meson SPICC controller"
570	depends on COMMON_CLK
571	depends on ARCH_MESON || COMPILE_TEST
572	help
573	  This enables master mode support for the SPICC (SPI communication
574	  controller) available in Amlogic Meson SoCs.
575
576config SPI_MESON_SPIFC
577	tristate "Amlogic Meson SPIFC controller"
578	depends on ARCH_MESON || COMPILE_TEST
579	select REGMAP_MMIO
580	help
581	  This enables master mode support for the SPIFC (SPI flash
582	  controller) available in Amlogic Meson SoCs.
583
584config SPI_MICROCHIP_CORE
585	tristate "Microchip FPGA SPI controllers"
586	depends on SPI_MASTER
587	help
588	  This enables the SPI driver for Microchip FPGA SPI controllers.
589	  Say Y or M here if you want to use the "hard" controllers on
590	  PolarFire SoC.
591	  If built as a module, it will be called spi-microchip-core.
592
593config SPI_MICROCHIP_CORE_QSPI
594	tristate "Microchip FPGA QSPI controllers"
595	depends on SPI_MASTER
596	help
597	  This enables the QSPI driver for Microchip FPGA QSPI controllers.
598	  Say Y or M here if you want to use the QSPI controllers on
599	  PolarFire SoC.
600	  If built as a module, it will be called spi-microchip-core-qspi.
601
602config SPI_MT65XX
603	tristate "MediaTek SPI controller"
604	depends on ARCH_MEDIATEK || COMPILE_TEST
605	help
606	  This selects the MediaTek(R) SPI bus driver.
607	  If you want to use MediaTek(R) SPI interface,
608	  say Y or M here.If you are not sure, say N.
609	  SPI drivers for Mediatek MT65XX and MT81XX series ARM SoCs.
610
611config SPI_MT7621
612	tristate "MediaTek MT7621 SPI Controller"
613	depends on RALINK || COMPILE_TEST
614	help
615	  This selects a driver for the MediaTek MT7621 SPI Controller.
616
617config SPI_MTK_NOR
618	tristate "MediaTek SPI NOR controller"
619	depends on ARCH_MEDIATEK || COMPILE_TEST
620	help
621	  This enables support for SPI NOR controller found on MediaTek
622	  ARM SoCs. This is a controller specifically for SPI NOR flash.
623	  It can perform generic SPI transfers up to 6 bytes via generic
624	  SPI interface as well as several SPI NOR specific instructions
625	  via SPI MEM interface.
626
627config SPI_MTK_SNFI
628	tristate "MediaTek SPI NAND Flash Interface"
629	depends on ARCH_MEDIATEK || COMPILE_TEST
630	depends on MTD_NAND_ECC_MEDIATEK
631	help
632	  This enables support for SPI-NAND mode on the MediaTek NAND
633	  Flash Interface found on MediaTek ARM SoCs. This controller
634	  is implemented as a SPI-MEM controller with pipelined ECC
635	  capcability.
636
637config SPI_NPCM_FIU
638	tristate "Nuvoton NPCM FLASH Interface Unit"
639	depends on ARCH_NPCM || COMPILE_TEST
640	depends on OF && HAS_IOMEM
641	help
642	  This enables support for the Flash Interface Unit SPI controller
643	  in master mode.
644	  This driver does not support generic SPI. The implementation only
645	  supports spi-mem interface.
646
647config SPI_NPCM_PSPI
648	tristate "Nuvoton NPCM PSPI Controller"
649	depends on ARCH_NPCM || COMPILE_TEST
650	help
651	  This driver provides support for Nuvoton NPCM BMC
652	  Peripheral SPI controller in master mode.
653
654config SPI_LANTIQ_SSC
655	tristate "Lantiq SSC SPI controller"
656	depends on LANTIQ || X86 || COMPILE_TEST
657	help
658	  This driver supports the Lantiq SSC SPI controller in master
659	  mode. This controller is found on Intel (former Lantiq) SoCs like
660	  the Danube, Falcon, xRX200, xRX300, Lightning Mountain.
661
662config SPI_OC_TINY
663	tristate "OpenCores tiny SPI"
664	depends on GPIOLIB || COMPILE_TEST
665	select SPI_BITBANG
666	help
667	  This is the driver for OpenCores tiny SPI master controller.
668
669config SPI_OCTEON
670	tristate "Cavium OCTEON SPI controller"
671	depends on CAVIUM_OCTEON_SOC
672	help
673	  SPI host driver for the hardware found on some Cavium OCTEON
674	  SOCs.
675
676config SPI_OMAP_UWIRE
677	tristate "OMAP1 MicroWire"
678	depends on ARCH_OMAP1 || (ARM && COMPILE_TEST)
679	select SPI_BITBANG
680	help
681	  This hooks up to the MicroWire controller on OMAP1 chips.
682
683config SPI_OMAP24XX
684	tristate "McSPI driver for OMAP"
685	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
686	select SG_SPLIT
687	help
688	  SPI master controller for OMAP24XX and later Multichannel SPI
689	  (McSPI) modules.
690
691config SPI_TI_QSPI
692	tristate "DRA7xxx QSPI controller support"
693	depends on ARCH_OMAP2PLUS || COMPILE_TEST
694	help
695	  QSPI master controller for DRA7xxx used for flash devices.
696	  This device supports single, dual and quad read support, while
697	  it only supports single write mode.
698
699config SPI_OMAP_100K
700	tristate "OMAP SPI 100K"
701	depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
702	help
703	  OMAP SPI 100K master controller for omap7xx boards.
704
705config SPI_ORION
706	tristate "Orion SPI master"
707	depends on PLAT_ORION || ARCH_MVEBU || COMPILE_TEST
708	help
709	  This enables using the SPI master controller on the Orion
710	  and MVEBU chips.
711
712config SPI_PIC32
713	tristate "Microchip PIC32 series SPI"
714	depends on MACH_PIC32 || COMPILE_TEST
715	help
716	  SPI driver for Microchip PIC32 SPI master controller.
717
718config SPI_PIC32_SQI
719	tristate "Microchip PIC32 Quad SPI driver"
720	depends on MACH_PIC32 || COMPILE_TEST
721	help
722	  SPI driver for PIC32 Quad SPI controller.
723
724config SPI_PL022
725	tristate "ARM AMBA PL022 SSP controller"
726	depends on ARM_AMBA
727	default y if ARCH_REALVIEW
728	default y if INTEGRATOR_IMPD1
729	default y if ARCH_VERSATILE
730	help
731	  This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
732	  controller. If you have an embedded system with an AMBA(R)
733	  bus and a PL022 controller, say Y or M here.
734
735config SPI_PPC4xx
736	tristate "PPC4xx SPI Controller"
737	depends on PPC32 && 4xx
738	select SPI_BITBANG
739	help
740	  This selects a driver for the PPC4xx SPI Controller.
741
742config SPI_PXA2XX
743	tristate "PXA2xx SSP SPI master"
744	depends on ARCH_PXA || ARCH_MMP || PCI || ACPI || COMPILE_TEST
745	select PXA_SSP if ARCH_PXA || ARCH_MMP
746	help
747	  This enables using a PXA2xx or Sodaville SSP port as a SPI master
748	  controller. The driver can be configured to use any SSP port and
749	  additional documentation can be found a Documentation/spi/pxa2xx.rst.
750
751config SPI_PXA2XX_PCI
752	def_tristate SPI_PXA2XX && PCI && COMMON_CLK
753
754config SPI_ROCKCHIP
755	tristate "Rockchip SPI controller driver"
756	help
757	  This selects a driver for Rockchip SPI controller.
758
759	  If you say yes to this option, support will be included for
760	  RK3066, RK3188 and RK3288 families of SPI controller.
761	  Rockchip SPI controller support DMA transport and PIO mode.
762	  The main usecase of this controller is to use spi flash as boot
763	  device.
764
765config SPI_ROCKCHIP_SFC
766	tristate "Rockchip Serial Flash Controller (SFC)"
767	depends on ARCH_ROCKCHIP || COMPILE_TEST
768	depends on HAS_IOMEM && HAS_DMA
769	help
770	  This enables support for Rockchip serial flash controller. This
771	  is a specialized controller used to access SPI flash on some
772	  Rockchip SOCs.
773
774	  ROCKCHIP SFC supports DMA and PIO modes. When DMA is not available,
775	  the driver automatically falls back to PIO mode.
776
777config SPI_RB4XX
778	tristate "Mikrotik RB4XX SPI master"
779	depends on SPI_MASTER && ATH79
780	help
781	  SPI controller driver for the Mikrotik RB4xx series boards.
782
783config SPI_RPCIF
784	tristate "Renesas RPC-IF SPI driver"
785	depends on RENESAS_RPCIF
786	help
787	  SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
788
789config SPI_RSPI
790	tristate "Renesas RSPI/QSPI controller"
791	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
792	help
793	  SPI driver for Renesas RSPI and QSPI blocks.
794
795config SPI_QCOM_QSPI
796	tristate "QTI QSPI controller"
797	depends on ARCH_QCOM
798	help
799	  QSPI(Quad SPI) driver for Qualcomm QSPI controller.
800
801config SPI_QUP
802	tristate "Qualcomm SPI controller with QUP interface"
803	depends on ARCH_QCOM || COMPILE_TEST
804	help
805	  Qualcomm Universal Peripheral (QUP) core is an AHB slave that
806	  provides a common data path (an output FIFO and an input FIFO)
807	  for serial peripheral interface (SPI) mini-core. SPI in master
808	  mode supports up to 50MHz, up to four chip selects, programmable
809	  data path from 4 bits to 32 bits and numerous protocol variants.
810
811	  This driver can also be built as a module.  If so, the module
812	  will be called spi_qup.
813
814config SPI_QCOM_GENI
815	tristate "Qualcomm GENI based SPI controller"
816	depends on QCOM_GENI_SE
817	help
818	  This driver supports GENI serial engine based SPI controller in
819	  master mode on the Qualcomm Technologies Inc.'s SoCs. If you say
820	  yes to this option, support will be included for the built-in SPI
821	  interface on the Qualcomm Technologies Inc.'s SoCs.
822
823	  This driver can also be built as a module.  If so, the module
824	  will be called spi-geni-qcom.
825
826config SPI_S3C24XX
827	tristate "Samsung S3C24XX series SPI"
828	depends on ARCH_S3C24XX
829	select SPI_BITBANG
830	help
831	  SPI driver for Samsung S3C24XX series ARM SoCs
832
833config SPI_S3C24XX_FIQ
834	bool "S3C24XX driver with FIQ pseudo-DMA"
835	depends on SPI_S3C24XX
836	select FIQ
837	help
838	  Enable FIQ support for the S3C24XX SPI driver to provide pseudo
839	  DMA by using the fast-interrupt request framework, This allows
840	  the driver to get DMA-like performance when there are either
841	  no free DMA channels, or when doing transfers that required both
842	  TX and RX data paths.
843
844config SPI_S3C64XX
845	tristate "Samsung S3C64XX/Exynos SoC series type SPI"
846	depends on (PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST)
847	help
848	  SPI driver for Samsung S3C64XX, S5Pv210 and Exynos SoCs.
849	  Choose Y/M here only if you build for such Samsung SoC.
850
851config SPI_SC18IS602
852	tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
853	depends on I2C
854	help
855	  SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
856
857config SPI_SH_MSIOF
858	tristate "SuperH MSIOF SPI controller"
859	depends on HAVE_CLK
860	depends on ARCH_SHMOBILE || ARCH_RENESAS || COMPILE_TEST
861	help
862	  SPI driver for SuperH and SH Mobile MSIOF blocks.
863
864config SPI_SH
865	tristate "SuperH SPI controller"
866	depends on SUPERH || COMPILE_TEST
867	help
868	  SPI driver for SuperH SPI blocks.
869
870config SPI_SH_SCI
871	tristate "SuperH SCI SPI controller"
872	depends on SUPERH
873	select SPI_BITBANG
874	help
875	  SPI driver for SuperH SCI blocks.
876
877config SPI_SH_HSPI
878	tristate "SuperH HSPI controller"
879	depends on ARCH_RENESAS || COMPILE_TEST
880	help
881	  SPI driver for SuperH HSPI blocks.
882
883config SPI_SIFIVE
884	tristate "SiFive SPI controller"
885	depends on HAS_IOMEM
886	help
887	  This exposes the SPI controller IP from SiFive.
888
889config SPI_SLAVE_MT27XX
890	tristate "MediaTek SPI slave device"
891	depends on ARCH_MEDIATEK || COMPILE_TEST
892	depends on SPI_SLAVE
893	help
894	  This selects the MediaTek(R) SPI slave device driver.
895	  If you want to use MediaTek(R) SPI slave interface,
896	  say Y or M here.If you are not sure, say N.
897	  SPI slave drivers for Mediatek MT27XX series ARM SoCs.
898
899config SPI_SPRD
900	tristate "Spreadtrum SPI controller"
901	depends on ARCH_SPRD || COMPILE_TEST
902	help
903	  SPI driver for Spreadtrum SoCs.
904
905config SPI_SPRD_ADI
906	tristate "Spreadtrum ADI controller"
907	depends on ARCH_SPRD || COMPILE_TEST
908	depends on HWSPINLOCK || (COMPILE_TEST && !HWSPINLOCK)
909	help
910	  ADI driver based on SPI for Spreadtrum SoCs.
911
912config SPI_STM32
913	tristate "STMicroelectronics STM32 SPI controller"
914	depends on ARCH_STM32 || COMPILE_TEST
915	help
916	  SPI driver for STMicroelectronics STM32 SoCs.
917
918	  STM32 SPI controller supports DMA and PIO modes. When DMA
919	  is not available, the driver automatically falls back to
920	  PIO mode.
921
922config SPI_STM32_QSPI
923	tristate "STMicroelectronics STM32 QUAD SPI controller"
924	depends on ARCH_STM32 || COMPILE_TEST
925	depends on OF
926	depends on SPI_MEM
927	help
928	  This enables support for the Quad SPI controller in master mode.
929	  This driver does not support generic SPI. The implementation only
930	  supports spi-mem interface.
931
932config SPI_ST_SSC4
933	tristate "STMicroelectronics SPI SSC-based driver"
934	depends on ARCH_STI || COMPILE_TEST
935	help
936	  STMicroelectronics SoCs support for SPI. If you say yes to
937	  this option, support will be included for the SSC driven SPI.
938
939config SPI_SUN4I
940	tristate "Allwinner A10 SoCs SPI controller"
941	depends on ARCH_SUNXI || COMPILE_TEST
942	help
943	  SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
944
945config SPI_SUN6I
946	tristate "Allwinner A31 SPI controller"
947	depends on ARCH_SUNXI || COMPILE_TEST
948	depends on RESET_CONTROLLER
949	help
950	  This enables using the SPI controller on the Allwinner A31 SoCs.
951
952config SPI_SUNPLUS_SP7021
953	tristate "Sunplus SP7021 SPI controller"
954	depends on SOC_SP7021 || COMPILE_TEST
955	help
956	  This enables Sunplus SP7021 SPI controller driver on the SP7021 SoCs.
957	  This driver can also be built as a module. If so, the module will be
958	  called as spi-sunplus-sp7021.
959
960	  If you have a  Sunplus SP7021 platform say Y here.
961	  If unsure, say N.
962
963config SPI_SYNQUACER
964	tristate "Socionext's SynQuacer HighSpeed SPI controller"
965	depends on ARCH_SYNQUACER || COMPILE_TEST
966	help
967	  SPI driver for Socionext's High speed SPI controller which provides
968	  various operating modes for interfacing to serial peripheral devices
969	  that use the de-facto standard SPI protocol.
970
971	  It also supports the new dual-bit and quad-bit SPI protocol.
972
973config SPI_MXIC
974	tristate "Macronix MX25F0A SPI controller"
975	depends on SPI_MASTER
976	imply MTD_NAND_ECC_MXIC
977	help
978	  This selects the Macronix MX25F0A SPI controller driver.
979
980config SPI_MXS
981	tristate "Freescale MXS SPI controller"
982	depends on ARCH_MXS
983	select STMP_DEVICE
984	help
985	  SPI driver for Freescale MXS devices.
986
987config SPI_TEGRA210_QUAD
988	tristate "NVIDIA Tegra QSPI Controller"
989	depends on ARCH_TEGRA || COMPILE_TEST
990	depends on RESET_CONTROLLER
991	help
992	  QSPI driver for NVIDIA Tegra QSPI Controller interface. This
993	  controller is different from the SPI controller and is available
994	  on Tegra SoCs starting from Tegra210.
995
996config SPI_TEGRA114
997	tristate "NVIDIA Tegra114 SPI Controller"
998	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
999	depends on RESET_CONTROLLER
1000	help
1001	  SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
1002	  is different than the older SoCs SPI controller and also register interface
1003	  get changed with this controller.
1004
1005config SPI_TEGRA20_SFLASH
1006	tristate "Nvidia Tegra20 Serial flash Controller"
1007	depends on ARCH_TEGRA || COMPILE_TEST
1008	depends on RESET_CONTROLLER
1009	help
1010	  SPI driver for Nvidia Tegra20 Serial flash Controller interface.
1011	  The main usecase of this controller is to use spi flash as boot
1012	  device.
1013
1014config SPI_TEGRA20_SLINK
1015	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
1016	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
1017	depends on RESET_CONTROLLER
1018	help
1019	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
1020
1021config SPI_THUNDERX
1022	tristate "Cavium ThunderX SPI controller"
1023	depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
1024	help
1025	  SPI host driver for the hardware found on Cavium ThunderX
1026	  SOCs.
1027
1028config SPI_TOPCLIFF_PCH
1029	tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
1030	depends on PCI && (X86_32 || MIPS || COMPILE_TEST)
1031	help
1032	  SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
1033	  used in some x86 embedded processors.
1034
1035	  This driver also supports the ML7213/ML7223/ML7831, a companion chip
1036	  for the Atom E6xx series and compatible with the Intel EG20T PCH.
1037
1038config SPI_UNIPHIER
1039	tristate "Socionext UniPhier SPI Controller"
1040	depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF
1041	depends on HAS_IOMEM
1042	help
1043	  This enables a driver for the Socionext UniPhier SoC SCSSI SPI controller.
1044
1045	  UniPhier SoCs have SCSSI and MCSSI SPI controllers.
1046	  Every UniPhier SoC has SCSSI which supports single channel.
1047	  Older UniPhier Pro4/Pro5 also has MCSSI which support multiple channels.
1048	  This driver supports SCSSI only.
1049
1050	  If your SoC supports SCSSI, say Y here.
1051
1052config SPI_XCOMM
1053	tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
1054	depends on I2C
1055	help
1056	  Support for the SPI-I2C bridge found on the Analog Devices
1057	  AD-FMCOMMS1-EBZ board.
1058
1059config SPI_XILINX
1060	tristate "Xilinx SPI controller common module"
1061	depends on HAS_IOMEM
1062	select SPI_BITBANG
1063	help
1064	  This exposes the SPI controller IP from the Xilinx EDK.
1065
1066	  See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
1067	  Product Specification document (DS464) for hardware details.
1068
1069	  Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
1070
1071config SPI_XLP
1072	tristate "Cavium ThunderX2 SPI controller driver"
1073	depends on ARCH_THUNDER2 || COMPILE_TEST
1074	help
1075	  Enable support for the SPI controller on the Cavium ThunderX2.
1076	  (Originally on Netlogic XLP SoCs.)
1077
1078	  If you have a Cavium ThunderX2 platform say Y here.
1079	  If unsure, say N.
1080
1081config SPI_XTENSA_XTFPGA
1082	tristate "Xtensa SPI controller for xtfpga"
1083	depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
1084	select SPI_BITBANG
1085	help
1086	  SPI driver for xtfpga SPI master controller.
1087
1088	  This simple SPI master controller is built into xtfpga bitstreams
1089	  and is used to control daughterboard audio codec. It always transfers
1090	  16 bit words in SPI mode 0, automatically asserting CS on transfer
1091	  start and deasserting on end.
1092
1093config SPI_ZYNQ_QSPI
1094	tristate "Xilinx Zynq QSPI controller"
1095	depends on ARCH_ZYNQ || COMPILE_TEST
1096	depends on SPI_MEM
1097	help
1098	  This enables support for the Zynq Quad SPI controller
1099	  in master mode.
1100	  This controller only supports SPI memory interface.
1101
1102config SPI_ZYNQMP_GQSPI
1103	tristate "Xilinx ZynqMP GQSPI controller"
1104	depends on (SPI_MEM && HAS_DMA) || COMPILE_TEST
1105	help
1106	  Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
1107	  This controller only supports SPI memory interface.
1108
1109config SPI_AMD
1110	tristate "AMD SPI controller"
1111	depends on SPI_MASTER || COMPILE_TEST
1112	help
1113	  Enables SPI controller driver for AMD SoC.
1114
1115#
1116# Add new SPI master controllers in alphabetical order above this line
1117#
1118
1119comment "SPI Multiplexer support"
1120
1121config SPI_MUX
1122	tristate "SPI multiplexer support"
1123	select MULTIPLEXER
1124	help
1125	  This adds support for SPI multiplexers. Each SPI mux will be
1126	  accessible as a SPI controller, the devices behind the mux will appear
1127	  to be chip selects on this controller. It is still necessary to
1128	  select one or more specific mux-controller drivers.
1129
1130#
1131# There are lots of SPI device types, with sensors and memory
1132# being probably the most widely used ones.
1133#
1134comment "SPI Protocol Masters"
1135
1136config SPI_SPIDEV
1137	tristate "User mode SPI device driver support"
1138	help
1139	  This supports user mode SPI protocol drivers.
1140
1141	  Note that this application programming interface is EXPERIMENTAL
1142	  and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
1143
1144config SPI_LOOPBACK_TEST
1145	tristate "spi loopback test framework support"
1146	depends on m
1147	help
1148	  This enables the SPI loopback testing framework driver
1149
1150	  primarily used for development of spi_master drivers
1151	  and to detect regressions
1152
1153config SPI_TLE62X0
1154	tristate "Infineon TLE62X0 (for power switching)"
1155	depends on SYSFS
1156	help
1157	  SPI driver for Infineon TLE62X0 series line driver chips,
1158	  such as the TLE6220, TLE6230 and TLE6240.  This provides a
1159	  sysfs interface, with each line presented as a kind of GPIO
1160	  exposing both switch control and diagnostic feedback.
1161
1162#
1163# Add new SPI protocol masters in alphabetical order above this line
1164#
1165
1166endif # SPI_MASTER
1167
1168#
1169# SLAVE side ... listening to other SPI masters
1170#
1171
1172config SPI_SLAVE
1173	bool "SPI slave protocol handlers"
1174	help
1175	  If your system has a slave-capable SPI controller, you can enable
1176	  slave protocol handlers.
1177
1178if SPI_SLAVE
1179
1180config SPI_SLAVE_TIME
1181	tristate "SPI slave handler reporting boot up time"
1182	help
1183	  SPI slave handler responding with the time of reception of the last
1184	  SPI message.
1185
1186config SPI_SLAVE_SYSTEM_CONTROL
1187	tristate "SPI slave handler controlling system state"
1188	help
1189	  SPI slave handler to allow remote control of system reboot, power
1190	  off, halt, and suspend.
1191
1192endif # SPI_SLAVE
1193
1194config SPI_DYNAMIC
1195	def_bool ACPI || OF_DYNAMIC || SPI_SLAVE
1196
1197endif # SPI
1198