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# 8*79d8c7a8SAlessandro Guidomenuconfig SPI 98ae12a0dSDavid Brownell bool "SPI support" 10*79d8c7a8SAlessandro Guido depends on HAS_IOMEM 118ae12a0dSDavid Brownell help 128ae12a0dSDavid Brownell The "Serial Peripheral Interface" is a low level synchronous 138ae12a0dSDavid Brownell protocol. Chips that support SPI can have data transfer rates 148ae12a0dSDavid Brownell up to several tens of Mbit/sec. Chips are addressed with a 158ae12a0dSDavid Brownell controller and a chipselect. Most SPI slaves don't support 168ae12a0dSDavid Brownell dynamic device discovery; some are even write-only or read-only. 178ae12a0dSDavid Brownell 183cb2fcccSMatt LaPlante SPI is widely used by microcontrollers to talk with sensors, 198ae12a0dSDavid Brownell eeprom and flash memory, codecs and various other controller 208ae12a0dSDavid Brownell chips, analog to digital (and d-to-a) converters, and more. 218ae12a0dSDavid Brownell MMC and SD cards can be accessed using SPI protocol; and for 228ae12a0dSDavid Brownell DataFlash cards used in MMC sockets, SPI must always be used. 238ae12a0dSDavid Brownell 248ae12a0dSDavid Brownell SPI is one of a family of similar protocols using a four wire 258ae12a0dSDavid Brownell interface (select, clock, data in, data out) including Microwire 268ae12a0dSDavid Brownell (half duplex), SSP, SSI, and PSP. This driver framework should 278ae12a0dSDavid Brownell work with most such devices and controllers. 288ae12a0dSDavid Brownell 29*79d8c7a8SAlessandro Guidoif SPI 30*79d8c7a8SAlessandro Guido 318ae12a0dSDavid Brownellconfig SPI_DEBUG 328ae12a0dSDavid Brownell boolean "Debug support for SPI drivers" 33*79d8c7a8SAlessandro Guido depends on 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" 64529a73fbSMike Frysinger depends on SPI_MASTER && BLACKFIN 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 127328329a7SAnton Vorontsov tristate "Freescale MPC83xx/QUICC Engine SPI controller" 128328329a7SAnton Vorontsov depends on SPI_MASTER && (PPC_83xx || QUICC_ENGINE) && EXPERIMENTAL 129ccf06998SKumar Gala select SPI_BITBANG 130ccf06998SKumar Gala help 131328329a7SAnton Vorontsov This enables using the Freescale MPC83xx and QUICC Engine SPI 132328329a7SAnton Vorontsov controllers in master mode. 133ccf06998SKumar Gala 134ccf06998SKumar Gala Note, this driver uniquely supports the SPI controller on the MPC83xx 135328329a7SAnton Vorontsov family of PowerPC processors, plus processors with QUICC Engine 136328329a7SAnton Vorontsov technology. This driver uses a simple set of shift registers for data 137328329a7SAnton Vorontsov (opposed to the CPM based descriptor model). 138ccf06998SKumar Gala 139fdb3c18dSDavid Brownellconfig SPI_OMAP_UWIRE 140fdb3c18dSDavid Brownell tristate "OMAP1 MicroWire" 141fdb3c18dSDavid Brownell depends on SPI_MASTER && ARCH_OMAP1 142fdb3c18dSDavid Brownell select SPI_BITBANG 143fdb3c18dSDavid Brownell help 144fdb3c18dSDavid Brownell This hooks up to the MicroWire controller on OMAP1 chips. 145fdb3c18dSDavid Brownell 146ccdc7bf9SSamuel Ortizconfig SPI_OMAP24XX 147ccc7baedSGirish tristate "McSPI driver for OMAP24xx/OMAP34xx" 148ccc7baedSGirish depends on SPI_MASTER && (ARCH_OMAP24XX || ARCH_OMAP34XX) 149ccdc7bf9SSamuel Ortiz help 150ccc7baedSGirish SPI master controller for OMAP24xx/OMAP34xx Multichannel SPI 151ccdc7bf9SSamuel Ortiz (McSPI) modules. 15269c202afSAndrea Paterniani 153e0c9905eSStephen Streetconfig SPI_PXA2XX 154e0c9905eSStephen Street tristate "PXA2xx SSP SPI master" 155e0c9905eSStephen Street depends on SPI_MASTER && ARCH_PXA && EXPERIMENTAL 1562f1a74e5Seric miao select PXA_SSP 157e0c9905eSStephen Street help 158e0c9905eSStephen Street This enables using a PXA2xx SSP port as a SPI master controller. 159e0c9905eSStephen Street The driver can be configured to use any SSP port and additional 160e0c9905eSStephen Street documentation can be found a Documentation/spi/pxa2xx. 161e0c9905eSStephen Street 16285abfaa7SDavid Brownellconfig SPI_S3C24XX 16385abfaa7SDavid Brownell tristate "Samsung S3C24XX series SPI" 16485abfaa7SDavid Brownell depends on SPI_MASTER && ARCH_S3C2410 && EXPERIMENTAL 165da0abc27SDavid Brownell select SPI_BITBANG 16685abfaa7SDavid Brownell help 16785abfaa7SDavid Brownell SPI driver for Samsung S3C24XX series ARM SoCs 16885abfaa7SDavid Brownell 1691fc7547dSBen Dooksconfig SPI_S3C24XX_GPIO 1701fc7547dSBen Dooks tristate "Samsung S3C24XX series SPI by GPIO" 171da0abc27SDavid Brownell depends on SPI_MASTER && ARCH_S3C2410 && EXPERIMENTAL 172da0abc27SDavid Brownell select SPI_BITBANG 1731fc7547dSBen Dooks help 1741fc7547dSBen Dooks SPI driver for Samsung S3C24XX series ARM SoCs using 1751fc7547dSBen Dooks GPIO lines to provide the SPI bus. This can be used where 1761fc7547dSBen Dooks the inbuilt hardware cannot provide the transfer mode, or 1771fc7547dSBen Dooks where the board is using non hardware connected pins. 178ae918c02SAndrei Konovalov 17937e46640SMagnus Dammconfig SPI_SH_SCI 18037e46640SMagnus Damm tristate "SuperH SCI SPI controller" 18137e46640SMagnus Damm depends on SPI_MASTER && SUPERH 18237e46640SMagnus Damm select SPI_BITBANG 18337e46640SMagnus Damm help 18437e46640SMagnus Damm SPI driver for SuperH SCI blocks. 18537e46640SMagnus Damm 186f2cac67dSAtsushi Nemotoconfig SPI_TXX9 187f2cac67dSAtsushi Nemoto tristate "Toshiba TXx9 SPI controller" 188f2cac67dSAtsushi Nemoto depends on SPI_MASTER && GENERIC_GPIO && CPU_TX49XX 189f2cac67dSAtsushi Nemoto help 190f2cac67dSAtsushi Nemoto SPI driver for Toshiba TXx9 MIPS SoCs 191f2cac67dSAtsushi Nemoto 192ae918c02SAndrei Konovalovconfig SPI_XILINX 193ae918c02SAndrei Konovalov tristate "Xilinx SPI controller" 194ae918c02SAndrei Konovalov depends on SPI_MASTER && XILINX_VIRTEX && EXPERIMENTAL 195ae918c02SAndrei Konovalov select SPI_BITBANG 196ae918c02SAndrei Konovalov help 197ae918c02SAndrei Konovalov This exposes the SPI controller IP from the Xilinx EDK. 198ae918c02SAndrei Konovalov 199ae918c02SAndrei Konovalov See the "OPB Serial Peripheral Interface (SPI) (v1.00e)" 200ae918c02SAndrei Konovalov Product Specification document (DS464) for hardware details. 201ae918c02SAndrei Konovalov 2028ae12a0dSDavid Brownell# 2038ae12a0dSDavid Brownell# Add new SPI master controllers in alphabetical order above this line 2048ae12a0dSDavid Brownell# 2058ae12a0dSDavid Brownell 2068ae12a0dSDavid Brownell# 2078ae12a0dSDavid Brownell# There are lots of SPI device types, with sensors and memory 2088ae12a0dSDavid Brownell# being probably the most widely used ones. 2098ae12a0dSDavid Brownell# 2108ae12a0dSDavid Brownellcomment "SPI Protocol Masters" 2118ae12a0dSDavid Brownell depends on SPI_MASTER 2128ae12a0dSDavid Brownell 213b587b13aSDavid Brownellconfig SPI_AT25 214b587b13aSDavid Brownell tristate "SPI EEPROMs from most vendors" 215b587b13aSDavid Brownell depends on SPI_MASTER && SYSFS 216b587b13aSDavid Brownell help 217b587b13aSDavid Brownell Enable this driver to get read/write support to most SPI EEPROMs, 218b587b13aSDavid Brownell after you configure the board init code to know about each eeprom 219b587b13aSDavid Brownell on your target board. 220b587b13aSDavid Brownell 221b587b13aSDavid Brownell This driver can also be built as a module. If so, the module 222b587b13aSDavid Brownell will be called at25. 2238ae12a0dSDavid Brownell 224814a8d50SAndrea Paternianiconfig SPI_SPIDEV 225814a8d50SAndrea Paterniani tristate "User mode SPI device driver support" 226814a8d50SAndrea Paterniani depends on SPI_MASTER && EXPERIMENTAL 227814a8d50SAndrea Paterniani help 228814a8d50SAndrea Paterniani This supports user mode SPI protocol drivers. 229814a8d50SAndrea Paterniani 230814a8d50SAndrea Paterniani Note that this application programming interface is EXPERIMENTAL 231814a8d50SAndrea Paterniani and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes. 232814a8d50SAndrea Paterniani 233447aef1aSBen Dooksconfig SPI_TLE62X0 234447aef1aSBen Dooks tristate "Infineon TLE62X0 (for power switching)" 235447aef1aSBen Dooks depends on SPI_MASTER && SYSFS 236447aef1aSBen Dooks help 237447aef1aSBen Dooks SPI driver for Infineon TLE62X0 series line driver chips, 238447aef1aSBen Dooks such as the TLE6220, TLE6230 and TLE6240. This provides a 239447aef1aSBen Dooks sysfs interface, with each line presented as a kind of GPIO 240447aef1aSBen Dooks exposing both switch control and diagnostic feedback. 241447aef1aSBen Dooks 2428ae12a0dSDavid Brownell# 2438ae12a0dSDavid Brownell# Add new SPI protocol masters in alphabetical order above this line 2448ae12a0dSDavid Brownell# 2458ae12a0dSDavid Brownell 2468ae12a0dSDavid Brownell# (slave support would go here) 2478ae12a0dSDavid Brownell 248*79d8c7a8SAlessandro Guidoendif # SPI 249