xref: /linux/drivers/spi/Kconfig (revision 3cb2fccc5f48a4d6269dfd00b4db570fca2a04d5)
18ae12a0dSDavid Brownell#
28ae12a0dSDavid Brownell# SPI driver configuration
38ae12a0dSDavid Brownell#
48ae12a0dSDavid Brownell# NOTE:  the reason this doesn't show SPI slave support is mostly that
58ae12a0dSDavid Brownell# nobody's needed a slave side API yet.  The master-role API is not
68ae12a0dSDavid Brownell# fully appropriate there, so it'd need some thought to do well.
78ae12a0dSDavid Brownell#
88ae12a0dSDavid Brownellmenu "SPI support"
98ae12a0dSDavid Brownell
108ae12a0dSDavid Brownellconfig SPI
118ae12a0dSDavid Brownell	bool "SPI support"
128ae12a0dSDavid Brownell	help
138ae12a0dSDavid Brownell	  The "Serial Peripheral Interface" is a low level synchronous
148ae12a0dSDavid Brownell	  protocol.  Chips that support SPI can have data transfer rates
158ae12a0dSDavid Brownell	  up to several tens of Mbit/sec.  Chips are addressed with a
168ae12a0dSDavid Brownell	  controller and a chipselect.  Most SPI slaves don't support
178ae12a0dSDavid Brownell	  dynamic device discovery; some are even write-only or read-only.
188ae12a0dSDavid Brownell
19*3cb2fcccSMatt LaPlante	  SPI is widely used by microcontrollers to talk with sensors,
208ae12a0dSDavid Brownell	  eeprom and flash memory, codecs and various other controller
218ae12a0dSDavid Brownell	  chips, analog to digital (and d-to-a) converters, and more.
228ae12a0dSDavid Brownell	  MMC and SD cards can be accessed using SPI protocol; and for
238ae12a0dSDavid Brownell	  DataFlash cards used in MMC sockets, SPI must always be used.
248ae12a0dSDavid Brownell
258ae12a0dSDavid Brownell	  SPI is one of a family of similar protocols using a four wire
268ae12a0dSDavid Brownell	  interface (select, clock, data in, data out) including Microwire
278ae12a0dSDavid Brownell	  (half duplex), SSP, SSI, and PSP.  This driver framework should
288ae12a0dSDavid Brownell	  work with most such devices and controllers.
298ae12a0dSDavid Brownell
308ae12a0dSDavid Brownellconfig SPI_DEBUG
318ae12a0dSDavid Brownell	boolean "Debug support for SPI drivers"
328ae12a0dSDavid Brownell	depends on SPI && DEBUG_KERNEL
338ae12a0dSDavid Brownell	help
348ae12a0dSDavid Brownell	  Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
358ae12a0dSDavid Brownell	  sysfs, and debugfs support in SPI controller and protocol drivers.
368ae12a0dSDavid Brownell
378ae12a0dSDavid Brownell#
388ae12a0dSDavid Brownell# MASTER side ... talking to discrete SPI slave chips including microcontrollers
398ae12a0dSDavid Brownell#
408ae12a0dSDavid Brownell
418ae12a0dSDavid Brownellconfig SPI_MASTER
428ae12a0dSDavid Brownell#	boolean "SPI Master Support"
438ae12a0dSDavid Brownell	boolean
448ae12a0dSDavid Brownell	default SPI
458ae12a0dSDavid Brownell	help
468ae12a0dSDavid Brownell	  If your system has an master-capable SPI controller (which
478ae12a0dSDavid Brownell	  provides the clock and chipselect), you can enable that
488ae12a0dSDavid Brownell	  controller and the protocol drivers for the SPI slave chips
498ae12a0dSDavid Brownell	  that are connected.
508ae12a0dSDavid Brownell
518ae12a0dSDavid Brownellcomment "SPI Master Controller Drivers"
528ae12a0dSDavid Brownell	depends on SPI_MASTER
538ae12a0dSDavid Brownell
549904f22aSDavid Brownellconfig SPI_BITBANG
559904f22aSDavid Brownell	tristate "Bitbanging SPI master"
569904f22aSDavid Brownell	depends on SPI_MASTER && EXPERIMENTAL
579904f22aSDavid Brownell	help
589904f22aSDavid Brownell	  With a few GPIO pins, your system can bitbang the SPI protocol.
599904f22aSDavid Brownell	  Select this to get SPI support through I/O pins (GPIO, parallel
609904f22aSDavid Brownell	  port, etc).  Or, some systems' SPI master controller drivers use
619904f22aSDavid Brownell	  this code to manage the per-word or per-transfer accesses to the
629904f22aSDavid Brownell	  hardware shift registers.
639904f22aSDavid Brownell
649904f22aSDavid Brownell	  This is library code, and is automatically selected by drivers that
659904f22aSDavid Brownell	  need it.  You only need to select this explicitly to support driver
669904f22aSDavid Brownell	  modules that aren't part of this kernel tree.
678ae12a0dSDavid Brownell
687111763dSDavid Brownellconfig SPI_BUTTERFLY
697111763dSDavid Brownell	tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)"
707111763dSDavid Brownell	depends on SPI_MASTER && PARPORT && EXPERIMENTAL
717111763dSDavid Brownell	select SPI_BITBANG
727111763dSDavid Brownell	help
737111763dSDavid Brownell	  This uses a custom parallel port cable to connect to an AVR
747111763dSDavid Brownell	  Butterfly <http://www.atmel.com/products/avr/butterfly>, an
757111763dSDavid Brownell	  inexpensive battery powered microcontroller evaluation board.
767111763dSDavid Brownell	  This same cable can be used to flash new firmware.
777111763dSDavid Brownell
78ccf06998SKumar Galaconfig SPI_MPC83xx
79ccf06998SKumar Gala	tristate "Freescale MPC83xx SPI controller"
80ccf06998SKumar Gala	depends on SPI_MASTER && PPC_83xx && EXPERIMENTAL
81ccf06998SKumar Gala	select SPI_BITBANG
82ccf06998SKumar Gala	help
83ccf06998SKumar Gala	  This enables using the Freescale MPC83xx SPI controller in master
84ccf06998SKumar Gala	  mode.
85ccf06998SKumar Gala
86ccf06998SKumar Gala	  Note, this driver uniquely supports the SPI controller on the MPC83xx
87ccf06998SKumar Gala	  family of PowerPC processors.  The MPC83xx uses a simple set of shift
88ccf06998SKumar Gala	  registers for data (opposed to the CPM based descriptor model).
89ccf06998SKumar Gala
90e0c9905eSStephen Streetconfig SPI_PXA2XX
91e0c9905eSStephen Street	tristate "PXA2xx SSP SPI master"
92e0c9905eSStephen Street	depends on SPI_MASTER && ARCH_PXA && EXPERIMENTAL
93e0c9905eSStephen Street	help
94e0c9905eSStephen Street	  This enables using a PXA2xx SSP port as a SPI master controller.
95e0c9905eSStephen Street	  The driver can be configured to use any SSP port and additional
96e0c9905eSStephen Street	  documentation can be found a Documentation/spi/pxa2xx.
97e0c9905eSStephen Street
981fc7547dSBen Dooksconfig SPI_S3C24XX_GPIO
991fc7547dSBen Dooks	tristate "Samsung S3C24XX series SPI by GPIO"
1001fc7547dSBen Dooks	depends on SPI_MASTER && ARCH_S3C2410 && SPI_BITBANG && EXPERIMENTAL
1011fc7547dSBen Dooks	help
1021fc7547dSBen Dooks	  SPI driver for Samsung S3C24XX series ARM SoCs using
1031fc7547dSBen Dooks	  GPIO lines to provide the SPI bus. This can be used where
1041fc7547dSBen Dooks	  the inbuilt hardware cannot provide the transfer mode, or
1051fc7547dSBen Dooks	  where the board is using non hardware connected pins.
1068ae12a0dSDavid Brownell#
1078ae12a0dSDavid Brownell# Add new SPI master controllers in alphabetical order above this line
1088ae12a0dSDavid Brownell#
1098ae12a0dSDavid Brownell
1108ae12a0dSDavid Brownell
1117fba5340SBen Dooksconfig SPI_S3C24XX
1127fba5340SBen Dooks	tristate "Samsung S3C24XX series SPI"
1137fba5340SBen Dooks	depends on SPI_MASTER && ARCH_S3C2410 && EXPERIMENTAL
1147fba5340SBen Dooks	help
1157fba5340SBen Dooks	  SPI driver for Samsung S3C24XX series ARM SoCs
1167fba5340SBen Dooks
1178ae12a0dSDavid Brownell#
1188ae12a0dSDavid Brownell# There are lots of SPI device types, with sensors and memory
1198ae12a0dSDavid Brownell# being probably the most widely used ones.
1208ae12a0dSDavid Brownell#
1218ae12a0dSDavid Brownellcomment "SPI Protocol Masters"
1228ae12a0dSDavid Brownell	depends on SPI_MASTER
1238ae12a0dSDavid Brownell
1248ae12a0dSDavid Brownell
1258ae12a0dSDavid Brownell#
1268ae12a0dSDavid Brownell# Add new SPI protocol masters in alphabetical order above this line
1278ae12a0dSDavid Brownell#
1288ae12a0dSDavid Brownell
1298ae12a0dSDavid Brownell
1308ae12a0dSDavid Brownell# (slave support would go here)
1318ae12a0dSDavid Brownell
1328ae12a0dSDavid Brownellendmenu # "SPI support"
1338ae12a0dSDavid Brownell
134