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# 879d8c7a8SAlessandro Guidomenuconfig SPI 98ae12a0dSDavid Brownell bool "SPI support" 1079d8c7a8SAlessandro 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 2979d8c7a8SAlessandro Guidoif SPI 3079d8c7a8SAlessandro Guido 318ae12a0dSDavid Brownellconfig SPI_DEBUG 328ae12a0dSDavid Brownell boolean "Debug support for SPI drivers" 3379d8c7a8SAlessandro 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 52*6291fe2aSRobert P. J. Dayif SPI_MASTER 53*6291fe2aSRobert P. J. Day 548ae12a0dSDavid Brownellcomment "SPI Master Controller Drivers" 558ae12a0dSDavid Brownell 56754ce4f2SHaavard Skinnemoenconfig SPI_ATMEL 57754ce4f2SHaavard Skinnemoen tristate "Atmel SPI Controller" 58*6291fe2aSRobert P. J. Day depends on (ARCH_AT91 || AVR32) 59754ce4f2SHaavard Skinnemoen help 60754ce4f2SHaavard Skinnemoen This selects a driver for the Atmel SPI Controller, present on 61754ce4f2SHaavard Skinnemoen many AT32 (AVR32) and AT91 (ARM) chips. 62754ce4f2SHaavard Skinnemoen 63a5f6abd4SWu, Bryanconfig SPI_BFIN 64a5f6abd4SWu, Bryan tristate "SPI controller driver for ADI Blackfin5xx" 65*6291fe2aSRobert P. J. Day depends on BLACKFIN 66a5f6abd4SWu, Bryan help 67a5f6abd4SWu, Bryan This is the SPI controller master driver for Blackfin 5xx processor. 68a5f6abd4SWu, Bryan 6963bd2359SJan Nikitenkoconfig SPI_AU1550 7063bd2359SJan Nikitenko tristate "Au1550/Au12x0 SPI Controller" 71*6291fe2aSRobert P. J. Day depends on (SOC_AU1550 || SOC_AU1200) && EXPERIMENTAL 7263bd2359SJan Nikitenko select SPI_BITBANG 7363bd2359SJan Nikitenko help 7463bd2359SJan Nikitenko If you say yes to this option, support will be included for the 7563bd2359SJan Nikitenko Au1550 SPI controller (may also work with Au1200,Au1210,Au1250). 7663bd2359SJan Nikitenko 7763bd2359SJan Nikitenko This driver can also be built as a module. If so, the module 7863bd2359SJan Nikitenko will be called au1550_spi. 7963bd2359SJan Nikitenko 809904f22aSDavid Brownellconfig SPI_BITBANG 819904f22aSDavid Brownell tristate "Bitbanging SPI master" 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)" 95*6291fe2aSRobert P. J. Day depends on PARPORT 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" 105*6291fe2aSRobert P. J. Day depends on 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)" 112*6291fe2aSRobert P. J. Day depends on 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" 121*6291fe2aSRobert P. J. Day depends on 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" 128*6291fe2aSRobert P. J. Day depends on (PPC_83xx || QUICC_ENGINE) && EXPERIMENTAL 129ccf06998SKumar Gala help 130328329a7SAnton Vorontsov This enables using the Freescale MPC83xx and QUICC Engine SPI 131328329a7SAnton Vorontsov controllers in master mode. 132ccf06998SKumar Gala 133ccf06998SKumar Gala Note, this driver uniquely supports the SPI controller on the MPC83xx 134328329a7SAnton Vorontsov family of PowerPC processors, plus processors with QUICC Engine 135328329a7SAnton Vorontsov technology. This driver uses a simple set of shift registers for data 136328329a7SAnton Vorontsov (opposed to the CPM based descriptor model). 137ccf06998SKumar Gala 138fdb3c18dSDavid Brownellconfig SPI_OMAP_UWIRE 139fdb3c18dSDavid Brownell tristate "OMAP1 MicroWire" 140*6291fe2aSRobert P. J. Day depends on ARCH_OMAP1 141fdb3c18dSDavid Brownell select SPI_BITBANG 142fdb3c18dSDavid Brownell help 143fdb3c18dSDavid Brownell This hooks up to the MicroWire controller on OMAP1 chips. 144fdb3c18dSDavid Brownell 145ccdc7bf9SSamuel Ortizconfig SPI_OMAP24XX 146ccc7baedSGirish tristate "McSPI driver for OMAP24xx/OMAP34xx" 147*6291fe2aSRobert P. J. Day depends on ARCH_OMAP24XX || ARCH_OMAP34XX 148ccdc7bf9SSamuel Ortiz help 149ccc7baedSGirish SPI master controller for OMAP24xx/OMAP34xx Multichannel SPI 150ccdc7bf9SSamuel Ortiz (McSPI) modules. 15169c202afSAndrea Paterniani 152e0c9905eSStephen Streetconfig SPI_PXA2XX 153e0c9905eSStephen Street tristate "PXA2xx SSP SPI master" 154*6291fe2aSRobert P. J. Day depends on ARCH_PXA && EXPERIMENTAL 1552f1a74e5Seric miao select PXA_SSP 156e0c9905eSStephen Street help 157e0c9905eSStephen Street This enables using a PXA2xx SSP port as a SPI master controller. 158e0c9905eSStephen Street The driver can be configured to use any SSP port and additional 159e0c9905eSStephen Street documentation can be found a Documentation/spi/pxa2xx. 160e0c9905eSStephen Street 16185abfaa7SDavid Brownellconfig SPI_S3C24XX 16285abfaa7SDavid Brownell tristate "Samsung S3C24XX series SPI" 163*6291fe2aSRobert P. J. Day depends on ARCH_S3C2410 && EXPERIMENTAL 164da0abc27SDavid Brownell select SPI_BITBANG 16585abfaa7SDavid Brownell help 16685abfaa7SDavid Brownell SPI driver for Samsung S3C24XX series ARM SoCs 16785abfaa7SDavid Brownell 1681fc7547dSBen Dooksconfig SPI_S3C24XX_GPIO 1691fc7547dSBen Dooks tristate "Samsung S3C24XX series SPI by GPIO" 170*6291fe2aSRobert P. J. Day depends on ARCH_S3C2410 && EXPERIMENTAL 171da0abc27SDavid Brownell select SPI_BITBANG 1721fc7547dSBen Dooks help 1731fc7547dSBen Dooks SPI driver for Samsung S3C24XX series ARM SoCs using 1741fc7547dSBen Dooks GPIO lines to provide the SPI bus. This can be used where 1751fc7547dSBen Dooks the inbuilt hardware cannot provide the transfer mode, or 1761fc7547dSBen Dooks where the board is using non hardware connected pins. 177ae918c02SAndrei Konovalov 17837e46640SMagnus Dammconfig SPI_SH_SCI 17937e46640SMagnus Damm tristate "SuperH SCI SPI controller" 180*6291fe2aSRobert P. J. Day depends on SUPERH 18137e46640SMagnus Damm select SPI_BITBANG 18237e46640SMagnus Damm help 18337e46640SMagnus Damm SPI driver for SuperH SCI blocks. 18437e46640SMagnus Damm 185f2cac67dSAtsushi Nemotoconfig SPI_TXX9 186f2cac67dSAtsushi Nemoto tristate "Toshiba TXx9 SPI controller" 187*6291fe2aSRobert P. J. Day depends on GENERIC_GPIO && CPU_TX49XX 188f2cac67dSAtsushi Nemoto help 189f2cac67dSAtsushi Nemoto SPI driver for Toshiba TXx9 MIPS SoCs 190f2cac67dSAtsushi Nemoto 191ae918c02SAndrei Konovalovconfig SPI_XILINX 192ae918c02SAndrei Konovalov tristate "Xilinx SPI controller" 193*6291fe2aSRobert P. J. Day depends on XILINX_VIRTEX && EXPERIMENTAL 194ae918c02SAndrei Konovalov select SPI_BITBANG 195ae918c02SAndrei Konovalov help 196ae918c02SAndrei Konovalov This exposes the SPI controller IP from the Xilinx EDK. 197ae918c02SAndrei Konovalov 198ae918c02SAndrei Konovalov See the "OPB Serial Peripheral Interface (SPI) (v1.00e)" 199ae918c02SAndrei Konovalov Product Specification document (DS464) for hardware details. 200ae918c02SAndrei Konovalov 2018ae12a0dSDavid Brownell# 2028ae12a0dSDavid Brownell# Add new SPI master controllers in alphabetical order above this line 2038ae12a0dSDavid Brownell# 2048ae12a0dSDavid Brownell 2058ae12a0dSDavid Brownell# 2068ae12a0dSDavid Brownell# There are lots of SPI device types, with sensors and memory 2078ae12a0dSDavid Brownell# being probably the most widely used ones. 2088ae12a0dSDavid Brownell# 2098ae12a0dSDavid Brownellcomment "SPI Protocol Masters" 2108ae12a0dSDavid Brownell 211b587b13aSDavid Brownellconfig SPI_AT25 212b587b13aSDavid Brownell tristate "SPI EEPROMs from most vendors" 213*6291fe2aSRobert P. J. Day depends on SYSFS 214b587b13aSDavid Brownell help 215b587b13aSDavid Brownell Enable this driver to get read/write support to most SPI EEPROMs, 216b587b13aSDavid Brownell after you configure the board init code to know about each eeprom 217b587b13aSDavid Brownell on your target board. 218b587b13aSDavid Brownell 219b587b13aSDavid Brownell This driver can also be built as a module. If so, the module 220b587b13aSDavid Brownell will be called at25. 2218ae12a0dSDavid Brownell 222814a8d50SAndrea Paternianiconfig SPI_SPIDEV 223814a8d50SAndrea Paterniani tristate "User mode SPI device driver support" 224*6291fe2aSRobert P. J. Day depends on EXPERIMENTAL 225814a8d50SAndrea Paterniani help 226814a8d50SAndrea Paterniani This supports user mode SPI protocol drivers. 227814a8d50SAndrea Paterniani 228814a8d50SAndrea Paterniani Note that this application programming interface is EXPERIMENTAL 229814a8d50SAndrea Paterniani and hence SUBJECT TO CHANGE WITHOUT NOTICE while it stabilizes. 230814a8d50SAndrea Paterniani 231447aef1aSBen Dooksconfig SPI_TLE62X0 232447aef1aSBen Dooks tristate "Infineon TLE62X0 (for power switching)" 233*6291fe2aSRobert P. J. Day depends on SYSFS 234447aef1aSBen Dooks help 235447aef1aSBen Dooks SPI driver for Infineon TLE62X0 series line driver chips, 236447aef1aSBen Dooks such as the TLE6220, TLE6230 and TLE6240. This provides a 237447aef1aSBen Dooks sysfs interface, with each line presented as a kind of GPIO 238447aef1aSBen Dooks exposing both switch control and diagnostic feedback. 239447aef1aSBen Dooks 2408ae12a0dSDavid Brownell# 2418ae12a0dSDavid Brownell# Add new SPI protocol masters in alphabetical order above this line 2428ae12a0dSDavid Brownell# 2438ae12a0dSDavid Brownell 244*6291fe2aSRobert P. J. Dayendif # SPI_MASTER 245*6291fe2aSRobert P. J. Day 2468ae12a0dSDavid Brownell# (slave support would go here) 2478ae12a0dSDavid Brownell 24879d8c7a8SAlessandro Guidoendif # SPI 249