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