8ae12a0d85
This is the core of a small SPI framework, implementing the model of a queue of messages which complete asynchronously (with thin synchronous wrappers on top). - It's still less than 2KB of ".text" (ARM). If there's got to be a mid-layer for something so simple, that's the right size budget. :) - The guts use board-specific SPI device tables to build the driver model tree. (Hardware probing is rarely an option.) - This version of Kconfig includes no drivers. At this writing there are two known master controller drivers (PXA/SSP, OMAP MicroWire) and three protocol drivers (CS8415a, ADS7846, DataFlash) with LKML mentions of other drivers in development. - No userspace API. There are several implementations to compare. Implement them like any other driver, and bind them with sysfs. The changes from last version posted to LKML (on 11-Nov-2005) are minor, and include: - One bugfix (removes a FIXME), with the visible effect of making device names be "spiB.C" where B is the bus number and C is the chipselect. - The "caller provides DMA mappings" mechanism now has kerneldoc, for DMA drivers that want to be fancy. - Hey, the framework init can be subsys_init. Even though board init logic fires earlier, at arch_init ... since the framework init is for driver support, and the board init support uses static init. - Various additional spec/doc clarifications based on discussions with other folk. It adds a brief "thank you" at the end, for folk who've helped nudge this framework into existence. As I've said before, I think that "protocol tweaking" is the main support that this driver framework will need to evolve. From: Mark Underwood <basicmark@yahoo.com> Update the SPI framework to remove a potential priority inversion case by reverting to kmalloc if the pre-allocated DMA-safe buffer isn't available. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
77 lines
2.2 KiB
Plaintext
77 lines
2.2 KiB
Plaintext
#
|
|
# SPI driver configuration
|
|
#
|
|
# NOTE: the reason this doesn't show SPI slave support is mostly that
|
|
# nobody's needed a slave side API yet. The master-role API is not
|
|
# fully appropriate there, so it'd need some thought to do well.
|
|
#
|
|
menu "SPI support"
|
|
|
|
config SPI
|
|
bool "SPI support"
|
|
help
|
|
The "Serial Peripheral Interface" is a low level synchronous
|
|
protocol. Chips that support SPI can have data transfer rates
|
|
up to several tens of Mbit/sec. Chips are addressed with a
|
|
controller and a chipselect. Most SPI slaves don't support
|
|
dynamic device discovery; some are even write-only or read-only.
|
|
|
|
SPI is widely used by microcontollers to talk with sensors,
|
|
eeprom and flash memory, codecs and various other controller
|
|
chips, analog to digital (and d-to-a) converters, and more.
|
|
MMC and SD cards can be accessed using SPI protocol; and for
|
|
DataFlash cards used in MMC sockets, SPI must always be used.
|
|
|
|
SPI is one of a family of similar protocols using a four wire
|
|
interface (select, clock, data in, data out) including Microwire
|
|
(half duplex), SSP, SSI, and PSP. This driver framework should
|
|
work with most such devices and controllers.
|
|
|
|
config SPI_DEBUG
|
|
boolean "Debug support for SPI drivers"
|
|
depends on SPI && DEBUG_KERNEL
|
|
help
|
|
Say "yes" to enable debug messaging (like dev_dbg and pr_debug),
|
|
sysfs, and debugfs support in SPI controller and protocol drivers.
|
|
|
|
#
|
|
# MASTER side ... talking to discrete SPI slave chips including microcontrollers
|
|
#
|
|
|
|
config SPI_MASTER
|
|
# boolean "SPI Master Support"
|
|
boolean
|
|
default SPI
|
|
help
|
|
If your system has an master-capable SPI controller (which
|
|
provides the clock and chipselect), you can enable that
|
|
controller and the protocol drivers for the SPI slave chips
|
|
that are connected.
|
|
|
|
comment "SPI Master Controller Drivers"
|
|
depends on SPI_MASTER
|
|
|
|
|
|
#
|
|
# Add new SPI master controllers in alphabetical order above this line
|
|
#
|
|
|
|
|
|
#
|
|
# There are lots of SPI device types, with sensors and memory
|
|
# being probably the most widely used ones.
|
|
#
|
|
comment "SPI Protocol Masters"
|
|
depends on SPI_MASTER
|
|
|
|
|
|
#
|
|
# Add new SPI protocol masters in alphabetical order above this line
|
|
#
|
|
|
|
|
|
# (slave support would go here)
|
|
|
|
endmenu # "SPI support"
|
|
|