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