-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
David Brownell
authored and
Greg Kroah-Hartman
committed
Jan 14, 2006
1 parent
67daf5f
commit 8ae12a0
Showing
8 changed files
with
1,630 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# | ||
# 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" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# | ||
# Makefile for kernel SPI drivers. | ||
# | ||
|
||
ifeq ($(CONFIG_SPI_DEBUG),y) | ||
EXTRA_CFLAGS += -DDEBUG | ||
endif | ||
|
||
# small core, mostly translating board-specific | ||
# config declarations into driver model code | ||
obj-$(CONFIG_SPI_MASTER) += spi.o | ||
|
||
# SPI master controller drivers (bus) | ||
# ... add above this line ... | ||
|
||
# SPI protocol drivers (device/link on bus) | ||
# ... add above this line ... | ||
|
||
# SPI slave controller drivers (upstream link) | ||
# ... add above this line ... | ||
|
||
# SPI slave drivers (protocol for that link) | ||
# ... add above this line ... |
Oops, something went wrong.