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