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