Merge tag 'xtensa-for-next-20141021-1' of git://github.com/jcmvbkbc/linux-xtensa...
[pandora-kernel.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         boolean "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 #       boolean "SPI Master Support"
44         boolean
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_ATMEL
71         tristate "Atmel SPI Controller"
72         depends on HAS_DMA
73         depends on (ARCH_AT91 || AVR32 || COMPILE_TEST)
74         help
75           This selects a driver for the Atmel SPI Controller, present on
76           many AT32 (AVR32) and AT91 (ARM) chips.
77
78 config SPI_BCM2835
79         tristate "BCM2835 SPI controller"
80         depends on ARCH_BCM2835 || COMPILE_TEST
81         help
82           This selects a driver for the Broadcom BCM2835 SPI master.
83
84           The BCM2835 contains two types of SPI master controller; the
85           "universal SPI master", and the regular SPI controller. This driver
86           is for the regular SPI controller. Slave mode operation is not also
87           not supported.
88
89 config SPI_BFIN5XX
90         tristate "SPI controller driver for ADI Blackfin5xx"
91         depends on BLACKFIN && !BF60x
92         help
93           This is the SPI controller master driver for Blackfin 5xx processor.
94
95 config SPI_ADI_V3
96         tristate "SPI controller v3 for ADI"
97         depends on BF60x
98         help
99           This is the SPI controller v3 master driver
100           found on Blackfin 60x processor.
101
102 config SPI_BFIN_SPORT
103         tristate "SPI bus via Blackfin SPORT"
104         depends on BLACKFIN
105         help
106           Enable support for a SPI bus via the Blackfin SPORT peripheral.
107
108 config SPI_AU1550
109         tristate "Au1550/Au1200/Au1300 SPI Controller"
110         depends on MIPS_ALCHEMY
111         select SPI_BITBANG
112         help
113           If you say yes to this option, support will be included for the
114           PSC SPI controller found on Au1550, Au1200 and Au1300 series.
115
116 config SPI_BCM53XX
117         tristate "Broadcom BCM53xx SPI controller"
118         depends on ARCH_BCM_5301X
119         depends on BCMA_POSSIBLE
120         select BCMA
121         help
122           Enable support for the SPI controller on Broadcom BCM53xx ARM SoCs.
123
124 config SPI_BCM63XX
125         tristate "Broadcom BCM63xx SPI controller"
126         depends on BCM63XX
127         help
128           Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
129
130 config SPI_BCM63XX_HSSPI
131         tristate "Broadcom BCM63XX HS SPI controller driver"
132         depends on BCM63XX || COMPILE_TEST
133         help
134           This enables support for the High Speed SPI controller present on
135           newer Broadcom BCM63XX SoCs.
136
137 config SPI_BITBANG
138         tristate "Utilities for Bitbanging SPI masters"
139         help
140           With a few GPIO pins, your system can bitbang the SPI protocol.
141           Select this to get SPI support through I/O pins (GPIO, parallel
142           port, etc).  Or, some systems' SPI master controller drivers use
143           this code to manage the per-word or per-transfer accesses to the
144           hardware shift registers.
145
146           This is library code, and is automatically selected by drivers that
147           need it.  You only need to select this explicitly to support driver
148           modules that aren't part of this kernel tree.
149
150 config SPI_BUTTERFLY
151         tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
152         depends on PARPORT
153         select SPI_BITBANG
154         help
155           This uses a custom parallel port cable to connect to an AVR
156           Butterfly <http://www.atmel.com/products/avr/butterfly>, an
157           inexpensive battery powered microcontroller evaluation board.
158           This same cable can be used to flash new firmware.
159
160 config SPI_CADENCE
161         tristate "Cadence SPI controller"
162         depends on ARM
163         help
164           This selects the Cadence SPI controller master driver
165           used by Xilinx Zynq.
166
167 config SPI_CLPS711X
168         tristate "CLPS711X host SPI controller"
169         depends on ARCH_CLPS711X || COMPILE_TEST
170         help
171           This enables dedicated general purpose SPI/Microwire1-compatible
172           master mode interface (SSI1) for CLPS711X-based CPUs.
173
174 config SPI_COLDFIRE_QSPI
175         tristate "Freescale Coldfire QSPI controller"
176         depends on (M520x || M523x || M5249 || M525x || M527x || M528x || M532x)
177         help
178           This enables support for the Coldfire QSPI controller in master
179           mode.
180
181 config SPI_DAVINCI
182         tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
183         depends on ARCH_DAVINCI || ARCH_KEYSTONE
184         select SPI_BITBANG
185         help
186           SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
187
188 config SPI_EFM32
189         tristate "EFM32 SPI controller"
190         depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
191         select SPI_BITBANG
192         help
193           Driver for the spi controller found on Energy Micro's EFM32 SoCs.
194
195 config SPI_EP93XX
196         tristate "Cirrus Logic EP93xx SPI controller"
197         depends on HAS_DMA
198         depends on ARCH_EP93XX || COMPILE_TEST
199         help
200           This enables using the Cirrus EP93xx SPI controller in master
201           mode.
202
203 config SPI_FALCON
204         tristate "Falcon SPI controller support"
205         depends on SOC_FALCON
206         help
207           The external bus unit (EBU) found on the FALC-ON SoC has SPI
208           emulation that is designed for serial flash access. This driver
209           has only been tested with m25p80 type chips. The hardware has no
210           support for other types of SPI peripherals.
211
212 config SPI_GPIO
213         tristate "GPIO-based bitbanging SPI Master"
214         depends on GPIOLIB
215         select SPI_BITBANG
216         help
217           This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
218           interface to manage MOSI, MISO, SCK, and chipselect signals.  SPI
219           slaves connected to a bus using this driver are configured as usual,
220           except that the spi_board_info.controller_data holds the GPIO number
221           for the chipselect used by this controller driver.
222
223           Note that this driver often won't achieve even 1 Mbit/sec speeds,
224           making it unusually slow for SPI.  If your platform can inline
225           GPIO operations, you should be able to leverage that for better
226           speed with a custom version of this driver; see the source code.
227
228 config SPI_IMX
229         tristate "Freescale i.MX SPI controllers"
230         depends on ARCH_MXC || COMPILE_TEST
231         select SPI_BITBANG
232         help
233           This enables using the Freescale i.MX SPI controllers in master
234           mode.
235
236 config SPI_LM70_LLP
237         tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
238         depends on PARPORT
239         select SPI_BITBANG
240         help
241           This driver supports the NS LM70 LLP Evaluation Board,
242           which interfaces to an LM70 temperature sensor using
243           a parallel port.
244
245 config SPI_MPC52xx
246         tristate "Freescale MPC52xx SPI (non-PSC) controller support"
247         depends on PPC_MPC52xx
248         help
249           This drivers supports the MPC52xx SPI controller in master SPI
250           mode.
251
252 config SPI_MPC52xx_PSC
253         tristate "Freescale MPC52xx PSC SPI controller"
254         depends on PPC_MPC52xx
255         help
256           This enables using the Freescale MPC52xx Programmable Serial
257           Controller in master SPI mode.
258
259 config SPI_MPC512x_PSC
260         tristate "Freescale MPC512x PSC SPI controller"
261         depends on PPC_MPC512x
262         help
263           This enables using the Freescale MPC5121 Programmable Serial
264           Controller in SPI master mode.
265
266 config SPI_FSL_LIB
267         tristate
268         depends on OF
269
270 config SPI_FSL_CPM
271         tristate
272         depends on FSL_SOC
273
274 config SPI_FSL_SPI
275         bool "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller"
276         depends on OF
277         select SPI_FSL_LIB
278         select SPI_FSL_CPM if FSL_SOC
279         help
280           This enables using the Freescale SPI controllers in master mode.
281           MPC83xx platform uses the controller in cpu mode or CPM/QE mode.
282           MPC8569 uses the controller in QE mode, MPC8610 in cpu mode.
283           This also enables using the Aeroflex Gaisler GRLIB SPI controller in
284           master mode.
285
286 config SPI_FSL_DSPI
287         tristate "Freescale DSPI controller"
288         select SPI_BITBANG
289         select REGMAP_MMIO
290         depends on SOC_VF610 || COMPILE_TEST
291         help
292           This enables support for the Freescale DSPI controller in master
293           mode. VF610 platform uses the controller.
294
295 config SPI_FSL_ESPI
296         bool "Freescale eSPI controller"
297         depends on FSL_SOC
298         select SPI_FSL_LIB
299         help
300           This enables using the Freescale eSPI controllers in master mode.
301           From MPC8536, 85xx platform uses the controller, and all P10xx,
302           P20xx, P30xx,P40xx, P50xx uses this controller.
303
304 config SPI_OC_TINY
305         tristate "OpenCores tiny SPI"
306         depends on GPIOLIB
307         select SPI_BITBANG
308         help
309           This is the driver for OpenCores tiny SPI master controller.
310
311 config SPI_OCTEON
312         tristate "Cavium OCTEON SPI controller"
313         depends on CAVIUM_OCTEON_SOC
314         help
315           SPI host driver for the hardware found on some Cavium OCTEON
316           SOCs.
317
318 config SPI_OMAP_UWIRE
319         tristate "OMAP1 MicroWire"
320         depends on ARCH_OMAP1
321         select SPI_BITBANG
322         help
323           This hooks up to the MicroWire controller on OMAP1 chips.
324
325 config SPI_OMAP24XX
326         tristate "McSPI driver for OMAP"
327         depends on HAS_DMA
328         depends on ARM || ARM64 || AVR32 || HEXAGON || MIPS || SUPERH
329         depends on ARCH_OMAP2PLUS || COMPILE_TEST
330         help
331           SPI master controller for OMAP24XX and later Multichannel SPI
332           (McSPI) modules.
333
334 config SPI_TI_QSPI
335         tristate "DRA7xxx QSPI controller support"
336         depends on ARCH_OMAP2PLUS || COMPILE_TEST
337         help
338           QSPI master controller for DRA7xxx used for flash devices.
339           This device supports single, dual and quad read support, while
340           it only supports single write mode.
341
342 config SPI_OMAP_100K
343         tristate "OMAP SPI 100K"
344         depends on ARCH_OMAP850 || ARCH_OMAP730 || COMPILE_TEST
345         help
346           OMAP SPI 100K master controller for omap7xx boards.
347
348 config SPI_ORION
349         tristate "Orion SPI master"
350         depends on PLAT_ORION || COMPILE_TEST
351         help
352           This enables using the SPI master controller on the Orion chips.
353
354 config SPI_PL022
355         tristate "ARM AMBA PL022 SSP controller"
356         depends on ARM_AMBA
357         default y if MACH_U300
358         default y if ARCH_REALVIEW
359         default y if INTEGRATOR_IMPD1
360         default y if ARCH_VERSATILE
361         help
362           This selects the ARM(R) AMBA(R) PrimeCell PL022 SSP
363           controller. If you have an embedded system with an AMBA(R)
364           bus and a PL022 controller, say Y or M here.
365
366 config SPI_PPC4xx
367         tristate "PPC4xx SPI Controller"
368         depends on PPC32 && 4xx
369         select SPI_BITBANG
370         help
371           This selects a driver for the PPC4xx SPI Controller.
372
373 config SPI_PXA2XX_PXADMA
374         bool "PXA2xx SSP legacy PXA DMA API support"
375         depends on SPI_PXA2XX && ARCH_PXA
376         help
377           Enable PXA private legacy DMA API support. Note that this is
378           deprecated in favor of generic DMA engine API.
379
380 config SPI_PXA2XX_DMA
381         def_bool y
382         depends on SPI_PXA2XX && !SPI_PXA2XX_PXADMA
383
384 config SPI_PXA2XX
385         tristate "PXA2xx SSP SPI master"
386         depends on (ARCH_PXA || PCI || ACPI)
387         select PXA_SSP if ARCH_PXA
388         help
389           This enables using a PXA2xx or Sodaville SSP port as a SPI master
390           controller. The driver can be configured to use any SSP port and
391           additional documentation can be found a Documentation/spi/pxa2xx.
392
393 config SPI_PXA2XX_PCI
394         def_tristate SPI_PXA2XX && PCI && COMMON_CLK
395
396 config SPI_ROCKCHIP
397         tristate "Rockchip SPI controller driver"
398         depends on ARM || ARM64 || AVR32 || HEXAGON || MIPS || SUPERH
399         help
400           This selects a driver for Rockchip SPI controller.
401
402           If you say yes to this option, support will be included for
403           RK3066, RK3188 and RK3288 families of SPI controller.
404           Rockchip SPI controller support DMA transport and PIO mode.
405           The main usecase of this controller is to use spi flash as boot
406           device.
407
408 config SPI_RSPI
409         tristate "Renesas RSPI/QSPI controller"
410         depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST
411         help
412           SPI driver for Renesas RSPI and QSPI blocks.
413
414 config SPI_QUP
415         tristate "Qualcomm SPI controller with QUP interface"
416         depends on ARCH_QCOM || (ARM && COMPILE_TEST)
417         help
418           Qualcomm Universal Peripheral (QUP) core is an AHB slave that
419           provides a common data path (an output FIFO and an input FIFO)
420           for serial peripheral interface (SPI) mini-core. SPI in master
421           mode supports up to 50MHz, up to four chip selects, programmable
422           data path from 4 bits to 32 bits and numerous protocol variants.
423
424           This driver can also be built as a module.  If so, the module
425           will be called spi_qup.
426
427 config SPI_S3C24XX
428         tristate "Samsung S3C24XX series SPI"
429         depends on ARCH_S3C24XX
430         select SPI_BITBANG
431         help
432           SPI driver for Samsung S3C24XX series ARM SoCs
433
434 config SPI_S3C24XX_FIQ
435         bool "S3C24XX driver with FIQ pseudo-DMA"
436         depends on SPI_S3C24XX
437         select FIQ
438         help
439           Enable FIQ support for the S3C24XX SPI driver to provide pseudo
440           DMA by using the fast-interrupt request framework, This allows
441           the driver to get DMA-like performance when there are either
442           no free DMA channels, or when doing transfers that required both
443           TX and RX data paths.
444
445 config SPI_S3C64XX
446         tristate "Samsung S3C64XX series type SPI"
447         depends on PLAT_SAMSUNG
448         select S3C64XX_PL080 if ARCH_S3C64XX
449         help
450           SPI driver for Samsung S3C64XX and newer SoCs.
451
452 config SPI_SC18IS602
453         tristate "NXP SC18IS602/602B/603 I2C to SPI bridge"
454         depends on I2C
455         help
456           SPI driver for NXP SC18IS602/602B/603 I2C to SPI bridge.
457
458 config SPI_SH_MSIOF
459         tristate "SuperH MSIOF SPI controller"
460         depends on HAVE_CLK && HAS_DMA
461         depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST
462         help
463           SPI driver for SuperH and SH Mobile MSIOF blocks.
464
465 config SPI_SH
466         tristate "SuperH SPI controller"
467         depends on SUPERH || COMPILE_TEST
468         help
469           SPI driver for SuperH SPI blocks.
470
471 config SPI_SH_SCI
472         tristate "SuperH SCI SPI controller"
473         depends on SUPERH
474         select SPI_BITBANG
475         help
476           SPI driver for SuperH SCI blocks.
477
478 config SPI_SH_HSPI
479         tristate "SuperH HSPI controller"
480         depends on ARCH_SHMOBILE || COMPILE_TEST
481         help
482           SPI driver for SuperH HSPI blocks.
483
484 config SPI_SIRF
485         tristate "CSR SiRFprimaII SPI controller"
486         depends on SIRF_DMA
487         select SPI_BITBANG
488         help
489           SPI driver for CSR SiRFprimaII SoCs
490
491 config SPI_SUN4I
492         tristate "Allwinner A10 SoCs SPI controller"
493         depends on ARCH_SUNXI || COMPILE_TEST
494         help
495           SPI driver for Allwinner sun4i, sun5i and sun7i SoCs
496
497 config SPI_SUN6I
498         tristate "Allwinner A31 SPI controller"
499         depends on ARCH_SUNXI || COMPILE_TEST
500         depends on RESET_CONTROLLER
501         help
502           This enables using the SPI controller on the Allwinner A31 SoCs.
503
504 config SPI_MXS
505         tristate "Freescale MXS SPI controller"
506         depends on ARCH_MXS
507         select STMP_DEVICE
508         help
509           SPI driver for Freescale MXS devices.
510
511 config SPI_TEGRA114
512         tristate "NVIDIA Tegra114 SPI Controller"
513         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
514         depends on RESET_CONTROLLER && HAS_DMA
515         help
516           SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
517           is different than the older SoCs SPI controller and also register interface
518           get changed with this controller.
519
520 config SPI_TEGRA20_SFLASH
521         tristate "Nvidia Tegra20 Serial flash Controller"
522         depends on ARCH_TEGRA || COMPILE_TEST
523         depends on RESET_CONTROLLER
524         help
525           SPI driver for Nvidia Tegra20 Serial flash Controller interface.
526           The main usecase of this controller is to use spi flash as boot
527           device.
528
529 config SPI_TEGRA20_SLINK
530         tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
531         depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
532         depends on RESET_CONTROLLER && HAS_DMA
533         help
534           SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
535
536 config SPI_TOPCLIFF_PCH
537         tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) SPI"
538         depends on PCI && (X86_32 || COMPILE_TEST)
539         help
540           SPI driver for the Topcliff PCH (Platform Controller Hub) SPI bus
541           used in some x86 embedded processors.
542
543           This driver also supports the ML7213/ML7223/ML7831, a companion chip
544           for the Atom E6xx series and compatible with the Intel EG20T PCH.
545
546 config SPI_TXX9
547         tristate "Toshiba TXx9 SPI controller"
548         depends on GPIOLIB && (CPU_TX49XX || COMPILE_TEST)
549         help
550           SPI driver for Toshiba TXx9 MIPS SoCs
551
552 config SPI_XCOMM
553         tristate "Analog Devices AD-FMCOMMS1-EBZ SPI-I2C-bridge driver"
554         depends on I2C
555         help
556           Support for the SPI-I2C bridge found on the Analog Devices
557           AD-FMCOMMS1-EBZ board.
558
559 config SPI_XILINX
560         tristate "Xilinx SPI controller common module"
561         depends on HAS_IOMEM
562         select SPI_BITBANG
563         help
564           This exposes the SPI controller IP from the Xilinx EDK.
565
566           See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
567           Product Specification document (DS464) for hardware details.
568
569           Or for the DS570, see "XPS Serial Peripheral Interface (SPI) (v2.00b)"
570
571 config SPI_XTENSA_XTFPGA
572         tristate "Xtensa SPI controller for xtfpga"
573         depends on (XTENSA && XTENSA_PLATFORM_XTFPGA) || COMPILE_TEST
574         select SPI_BITBANG
575         help
576           SPI driver for xtfpga SPI master controller.
577
578           This simple SPI master controller is built into xtfpga bitstreams
579           and is used to control daughterboard audio codec. It always transfers
580           16 bit words in SPI mode 0, automatically asserting CS on transfer
581           start and deasserting on end.
582
583
584 config SPI_NUC900
585         tristate "Nuvoton NUC900 series SPI"
586         depends on ARCH_W90X900
587         select SPI_BITBANG
588         help
589           SPI driver for Nuvoton NUC900 series ARM SoCs
590
591 #
592 # Add new SPI master controllers in alphabetical order above this line
593 #
594
595 config SPI_DESIGNWARE
596         tristate "DesignWare SPI controller core support"
597         help
598           general driver for SPI controller core from DesignWare
599
600 config SPI_DW_PCI
601         tristate "PCI interface driver for DW SPI core"
602         depends on SPI_DESIGNWARE && PCI
603
604 config SPI_DW_MID_DMA
605         bool "DMA support for DW SPI controller on Intel MID platform"
606         depends on SPI_DW_PCI && INTEL_MID_DMAC
607
608 config SPI_DW_MMIO
609         tristate "Memory-mapped io interface driver for DW SPI core"
610         depends on SPI_DESIGNWARE
611
612 #
613 # There are lots of SPI device types, with sensors and memory
614 # being probably the most widely used ones.
615 #
616 comment "SPI Protocol Masters"
617
618 config SPI_SPIDEV
619         tristate "User mode SPI device driver support"
620         help
621           This supports user mode SPI protocol drivers.
622
623           Note that this application programming interface is EXPERIMENTAL
624           and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes.
625
626 config SPI_TLE62X0
627         tristate "Infineon TLE62X0 (for power switching)"
628         depends on SYSFS
629         help
630           SPI driver for Infineon TLE62X0 series line driver chips,
631           such as the TLE6220, TLE6230 and TLE6240.  This provides a
632           sysfs interface, with each line presented as a kind of GPIO
633           exposing both switch control and diagnostic feedback.
634
635 #
636 # Add new SPI protocol masters in alphabetical order above this line
637 #
638
639 endif # SPI_MASTER
640
641 # (slave support would go here)
642
643 endif # SPI