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