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" 9e25df120SMartin Schwidefsky depends on HAS_IOMEM 108ae12a0dSDavid Brownell 118ae12a0dSDavid Brownellconfig SPI 128ae12a0dSDavid Brownell bool "SPI support" 138ae12a0dSDavid Brownell help 148ae12a0dSDavid Brownell The "Serial Peripheral Interface" is a low level synchronous 158ae12a0dSDavid Brownell protocol. Chips that support SPI can have data transfer rates 168ae12a0dSDavid Brownell up to several tens of Mbit/sec. Chips are addressed with a 178ae12a0dSDavid Brownell controller and a chipselect. Most SPI slaves don't support 188ae12a0dSDavid Brownell dynamic device discovery; some are even write-only or read-only. 198ae12a0dSDavid Brownell 203cb2fcccSMatt LaPlante SPI is widely used by microcontrollers to talk with sensors, 218ae12a0dSDavid Brownell eeprom and flash memory, codecs and various other controller 228ae12a0dSDavid Brownell chips, analog to digital (and d-to-a) converters, and more. 238ae12a0dSDavid Brownell MMC and SD cards can be accessed using SPI protocol; and for 248ae12a0dSDavid Brownell DataFlash cards used in MMC sockets, SPI must always be used. 258ae12a0dSDavid Brownell 268ae12a0dSDavid Brownell SPI is one of a family of similar protocols using a four wire 278ae12a0dSDavid Brownell interface (select, clock, data in, data out) including Microwire 288ae12a0dSDavid Brownell (half duplex), SSP, SSI, and PSP. This driver framework should 298ae12a0dSDavid Brownell work with most such devices and controllers. 308ae12a0dSDavid Brownell 318ae12a0dSDavid Brownellconfig SPI_DEBUG 328ae12a0dSDavid Brownell boolean "Debug support for SPI drivers" 338ae12a0dSDavid Brownell depends on SPI && DEBUG_KERNEL 348ae12a0dSDavid Brownell help 358ae12a0dSDavid Brownell Say "yes" to enable debug messaging (like dev_dbg and pr_debug), 368ae12a0dSDavid Brownell sysfs, and debugfs support in SPI controller and protocol drivers. 378ae12a0dSDavid Brownell 388ae12a0dSDavid Brownell# 398ae12a0dSDavid Brownell# MASTER side ... talking to discrete SPI slave chips including microcontrollers 408ae12a0dSDavid Brownell# 418ae12a0dSDavid Brownell 428ae12a0dSDavid Brownellconfig SPI_MASTER 438ae12a0dSDavid Brownell# boolean "SPI Master Support" 448ae12a0dSDavid Brownell boolean 458ae12a0dSDavid Brownell default SPI 468ae12a0dSDavid Brownell help 478ae12a0dSDavid Brownell If your system has an master-capable SPI controller (which 488ae12a0dSDavid Brownell provides the clock and chipselect), you can enable that 498ae12a0dSDavid Brownell controller and the protocol drivers for the SPI slave chips 508ae12a0dSDavid Brownell that are connected. 518ae12a0dSDavid Brownell 528ae12a0dSDavid Brownellcomment "SPI Master Controller Drivers" 538ae12a0dSDavid Brownell depends on SPI_MASTER 548ae12a0dSDavid Brownell 55754ce4f2SHaavard Skinnemoenconfig SPI_ATMEL 56754ce4f2SHaavard Skinnemoen tristate "Atmel SPI Controller" 57754ce4f2SHaavard Skinnemoen depends on (ARCH_AT91 || AVR32) && SPI_MASTER 58754ce4f2SHaavard Skinnemoen help 59754ce4f2SHaavard Skinnemoen This selects a driver for the Atmel SPI Controller, present on 60754ce4f2SHaavard Skinnemoen many AT32 (AVR32) and AT91 (ARM) chips. 61754ce4f2SHaavard Skinnemoen 62a5f6abd4SWu, Bryanconfig SPI_BFIN 63a5f6abd4SWu, Bryan tristate "SPI controller driver for ADI Blackfin5xx" 64a5f6abd4SWu, Bryan depends on SPI_MASTER && BFIN 65a5f6abd4SWu, Bryan help 66a5f6abd4SWu, Bryan This is the SPI controller master driver for Blackfin 5xx processor. 67a5f6abd4SWu, Bryan 6863bd2359SJan Nikitenkoconfig SPI_AU1550 6963bd2359SJan Nikitenko tristate "Au1550/Au12x0 SPI Controller" 7063bd2359SJan Nikitenko depends on SPI_MASTER && (SOC_AU1550 || SOC_AU1200) && EXPERIMENTAL 7163bd2359SJan Nikitenko select SPI_BITBANG 7263bd2359SJan Nikitenko help 7363bd2359SJan Nikitenko If you say yes to this option, support will be included for the 7463bd2359SJan Nikitenko Au1550 SPI controller (may also work with Au1200,Au1210,Au1250). 7563bd2359SJan Nikitenko 7663bd2359SJan Nikitenko This driver can also be built as a module. If so, the module 7763bd2359SJan Nikitenko will be called au1550_spi. 7863bd2359SJan Nikitenko 799904f22aSDavid Brownellconfig SPI_BITBANG 809904f22aSDavid Brownell tristate "Bitbanging SPI master" 819904f22aSDavid Brownell depends on SPI_MASTER && EXPERIMENTAL 829904f22aSDavid Brownell help 839904f22aSDavid Brownell With a few GPIO pins, your system can bitbang the SPI protocol. 849904f22aSDavid Brownell Select this to get SPI support through I/O pins (GPIO, parallel 859904f22aSDavid Brownell port, etc). Or, some systems' SPI master controller drivers use 869904f22aSDavid Brownell this code to manage the per-word or per-transfer accesses to the 879904f22aSDavid Brownell hardware shift registers. 889904f22aSDavid Brownell 899904f22aSDavid Brownell This is library code, and is automatically selected by drivers that 909904f22aSDavid Brownell need it. You only need to select this explicitly to support driver 919904f22aSDavid Brownell modules that aren't part of this kernel tree. 928ae12a0dSDavid Brownell 937111763dSDavid Brownellconfig SPI_BUTTERFLY 947111763dSDavid Brownell tristate "Parallel port adapter for AVR Butterfly (DEVELOPMENT)" 957111763dSDavid Brownell depends on SPI_MASTER && PARPORT && EXPERIMENTAL 967111763dSDavid Brownell select SPI_BITBANG 977111763dSDavid Brownell help 987111763dSDavid Brownell This uses a custom parallel port cable to connect to an AVR 997111763dSDavid Brownell Butterfly <http://www.atmel.com/products/avr/butterfly>, an 1007111763dSDavid Brownell inexpensive battery powered microcontroller evaluation board. 1017111763dSDavid Brownell This same cable can be used to flash new firmware. 1027111763dSDavid Brownell 10369c202afSAndrea Paternianiconfig SPI_IMX 10469c202afSAndrea Paterniani tristate "Freescale iMX SPI controller" 10569c202afSAndrea Paterniani depends on SPI_MASTER && ARCH_IMX && EXPERIMENTAL 10669c202afSAndrea Paterniani help 10769c202afSAndrea Paterniani This enables using the Freescale iMX SPI controller in master 10869c202afSAndrea Paterniani mode. 10969c202afSAndrea Paterniani 11078961a57SKaiwan N Billimoriaconfig SPI_LM70_LLP 11178961a57SKaiwan N Billimoria tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)" 11278961a57SKaiwan N Billimoria depends on SPI_MASTER && PARPORT && EXPERIMENTAL 11378961a57SKaiwan N Billimoria select SPI_BITBANG 11478961a57SKaiwan N Billimoria help 11578961a57SKaiwan N Billimoria This driver supports the NS LM70 LLP Evaluation Board, 11678961a57SKaiwan N Billimoria which interfaces to an LM70 temperature sensor using 11778961a57SKaiwan N Billimoria a parallel port. 11878961a57SKaiwan N Billimoria 11900b8fd23SDragos Carpconfig SPI_MPC52xx_PSC 12000b8fd23SDragos Carp tristate "Freescale MPC52xx PSC SPI controller" 12100b8fd23SDragos Carp depends on SPI_MASTER && PPC_MPC52xx && EXPERIMENTAL 12200b8fd23SDragos Carp help 12300b8fd23SDragos Carp This enables using the Freescale MPC52xx Programmable Serial 12400b8fd23SDragos Carp Controller in master SPI mode. 12500b8fd23SDragos Carp 126ccf06998SKumar Galaconfig SPI_MPC83xx 127ccf06998SKumar Gala tristate "Freescale MPC83xx SPI controller" 128ccf06998SKumar Gala depends on SPI_MASTER && PPC_83xx && EXPERIMENTAL 129ccf06998SKumar Gala select SPI_BITBANG 130ccf06998SKumar Gala help 131ccf06998SKumar Gala This enables using the Freescale MPC83xx SPI controller in master 132ccf06998SKumar Gala mode. 133ccf06998SKumar Gala 134ccf06998SKumar Gala Note, this driver uniquely supports the SPI controller on the MPC83xx 135ccf06998SKumar Gala family of PowerPC processors. The MPC83xx uses a simple set of shift 136ccf06998SKumar Gala registers for data (opposed to the CPM based descriptor model). 137ccf06998SKumar Gala 138fdb3c18dSDavid Brownellconfig SPI_OMAP_UWIRE 139fdb3c18dSDavid Brownell tristate "OMAP1 MicroWire" 140fdb3c18dSDavid Brownell depends on SPI_MASTER && ARCH_OMAP1 141fdb3c18dSDavid Brownell select SPI_BITBANG 142fdb3c18dSDavid Brownell help 143fdb3c18dSDavid Brownell This hooks up to the MicroWire controller on OMAP1 chips. 144fdb3c18dSDavid Brownell 14569c202afSAndrea Paterniani 146e0c9905eSStephen Streetconfig SPI_PXA2XX 147e0c9905eSStephen Street tristate "PXA2xx SSP SPI master" 148e0c9905eSStephen Street depends on SPI_MASTER && ARCH_PXA && EXPERIMENTAL 149e0c9905eSStephen Street help 150e0c9905eSStephen Street This enables using a PXA2xx SSP port as a SPI master controller. 151e0c9905eSStephen Street The driver can be configured to use any SSP port and additional 152e0c9905eSStephen Street documentation can be found a Documentation/spi/pxa2xx. 153e0c9905eSStephen Street 15485abfaa7SDavid Brownellconfig SPI_S3C24XX 15585abfaa7SDavid Brownell tristate "Samsung S3C24XX series SPI" 15685abfaa7SDavid Brownell depends on SPI_MASTER && ARCH_S3C2410 && EXPERIMENTAL 157da0abc27SDavid Brownell select SPI_BITBANG 15885abfaa7SDavid Brownell help 15985abfaa7SDavid Brownell SPI driver for Samsung S3C24XX series ARM SoCs 16085abfaa7SDavid Brownell 1611fc7547dSBen Dooksconfig SPI_S3C24XX_GPIO 1621fc7547dSBen Dooks tristate "Samsung S3C24XX series SPI by GPIO" 163da0abc27SDavid Brownell depends on SPI_MASTER && ARCH_S3C2410 && EXPERIMENTAL 164da0abc27SDavid Brownell select SPI_BITBANG 1651fc7547dSBen Dooks help 1661fc7547dSBen Dooks SPI driver for Samsung S3C24XX series ARM SoCs using 1671fc7547dSBen Dooks GPIO lines to provide the SPI bus. This can be used where 1681fc7547dSBen Dooks the inbuilt hardware cannot provide the transfer mode, or 1691fc7547dSBen Dooks where the board is using non hardware connected pins. 170*ae918c02SAndrei Konovalov 171*ae918c02SAndrei Konovalovconfig SPI_XILINX 172*ae918c02SAndrei Konovalov tristate "Xilinx SPI controller" 173*ae918c02SAndrei Konovalov depends on SPI_MASTER && XILINX_VIRTEX && EXPERIMENTAL 174*ae918c02SAndrei Konovalov select SPI_BITBANG 175*ae918c02SAndrei Konovalov help 176*ae918c02SAndrei Konovalov This exposes the SPI controller IP from the Xilinx EDK. 177*ae918c02SAndrei Konovalov 178*ae918c02SAndrei Konovalov See the "OPB Serial Peripheral Interface (SPI) (v1.00e)" 179*ae918c02SAndrei Konovalov Product Specification document (DS464) for hardware details. 180*ae918c02SAndrei Konovalov 1818ae12a0dSDavid Brownell# 1828ae12a0dSDavid Brownell# Add new SPI master controllers in alphabetical order above this line 1838ae12a0dSDavid Brownell# 1848ae12a0dSDavid Brownell 1858ae12a0dSDavid Brownell# 1868ae12a0dSDavid Brownell# There are lots of SPI device types, with sensors and memory 1878ae12a0dSDavid Brownell# being probably the most widely used ones. 1888ae12a0dSDavid Brownell# 1898ae12a0dSDavid Brownellcomment "SPI Protocol Masters" 1908ae12a0dSDavid Brownell depends on SPI_MASTER 1918ae12a0dSDavid Brownell 192b587b13aSDavid Brownellconfig SPI_AT25 193b587b13aSDavid Brownell tristate "SPI EEPROMs from most vendors" 194b587b13aSDavid Brownell depends on SPI_MASTER && SYSFS 195b587b13aSDavid Brownell help 196b587b13aSDavid Brownell Enable this driver to get read/write support to most SPI EEPROMs, 197b587b13aSDavid Brownell after you configure the board init code to know about each eeprom 198b587b13aSDavid Brownell on your target board. 199b587b13aSDavid Brownell 200b587b13aSDavid Brownell This driver can also be built as a module. If so, the module 201b587b13aSDavid Brownell will be called at25. 2028ae12a0dSDavid Brownell 203814a8d50SAndrea Paternianiconfig SPI_SPIDEV 204814a8d50SAndrea Paterniani tristate "User mode SPI device driver support" 205814a8d50SAndrea Paterniani depends on SPI_MASTER && EXPERIMENTAL 206814a8d50SAndrea Paterniani help 207814a8d50SAndrea Paterniani This supports user mode SPI protocol drivers. 208814a8d50SAndrea Paterniani 209814a8d50SAndrea Paterniani Note that this application programming interface is EXPERIMENTAL 210814a8d50SAndrea Paterniani and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes. 211814a8d50SAndrea Paterniani 212447aef1aSBen Dooksconfig SPI_TLE62X0 213447aef1aSBen Dooks tristate "Infineon TLE62X0 (for power switching)" 214447aef1aSBen Dooks depends on SPI_MASTER && SYSFS 215447aef1aSBen Dooks help 216447aef1aSBen Dooks SPI driver for Infineon TLE62X0 series line driver chips, 217447aef1aSBen Dooks such as the TLE6220, TLE6230 and TLE6240. This provides a 218447aef1aSBen Dooks sysfs interface, with each line presented as a kind of GPIO 219447aef1aSBen Dooks exposing both switch control and diagnostic feedback. 220447aef1aSBen Dooks 2218ae12a0dSDavid Brownell# 2228ae12a0dSDavid Brownell# Add new SPI protocol masters in alphabetical order above this line 2238ae12a0dSDavid Brownell# 2248ae12a0dSDavid Brownell 2258ae12a0dSDavid Brownell# (slave support would go here) 2268ae12a0dSDavid Brownell 2278ae12a0dSDavid Brownellendmenu # "SPI support" 2288ae12a0dSDavid Brownell 229