diff options
author | David Brownell <david-b@pacbell.net> | 2006-01-08 16:34:19 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-13 19:29:54 -0500 |
commit | 8ae12a0d85987dc138f8c944cb78a92bf466cea0 (patch) | |
tree | ca032f25bb26f88cc35d68c6f8065143ce64a6a8 /drivers/spi/Kconfig | |
parent | 67daf5f11f06b9b15f8320de1d237ccc2e74fe43 (diff) |
[PATCH] spi: simple SPI framework
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>
Diffstat (limited to 'drivers/spi/Kconfig')
-rw-r--r-- | drivers/spi/Kconfig | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig new file mode 100644 index 000000000000..d3105104a297 --- /dev/null +++ b/drivers/spi/Kconfig | |||
@@ -0,0 +1,76 @@ | |||
1 | # | ||
2 | # SPI driver configuration | ||
3 | # | ||
4 | # NOTE: the reason this doesn't show SPI slave support is mostly that | ||
5 | # nobody's needed a slave side API yet. The master-role API is not | ||
6 | # fully appropriate there, so it'd need some thought to do well. | ||
7 | # | ||
8 | menu "SPI support" | ||
9 | |||
10 | config SPI | ||
11 | bool "SPI support" | ||
12 | help | ||
13 | The "Serial Peripheral Interface" is a low level synchronous | ||
14 | protocol. Chips that support SPI can have data transfer rates | ||
15 | up to several tens of Mbit/sec. Chips are addressed with a | ||
16 | controller and a chipselect. Most SPI slaves don't support | ||
17 | dynamic device discovery; some are even write-only or read-only. | ||
18 | |||
19 | SPI is widely used by microcontollers to talk with sensors, | ||
20 | eeprom and flash memory, codecs and various other controller | ||
21 | chips, analog to digital (and d-to-a) converters, and more. | ||
22 | MMC and SD cards can be accessed using SPI protocol; and for | ||
23 | DataFlash cards used in MMC sockets, SPI must always be used. | ||
24 | |||
25 | SPI is one of a family of similar protocols using a four wire | ||
26 | interface (select, clock, data in, data out) including Microwire | ||
27 | (half duplex), SSP, SSI, and PSP. This driver framework should | ||
28 | work with most such devices and controllers. | ||
29 | |||
30 | config SPI_DEBUG | ||
31 | boolean "Debug support for SPI drivers" | ||
32 | depends on SPI && DEBUG_KERNEL | ||
33 | help | ||
34 | Say "yes" to enable debug messaging (like dev_dbg and pr_debug), | ||
35 | sysfs, and debugfs support in SPI controller and protocol drivers. | ||
36 | |||
37 | # | ||
38 | # MASTER side ... talking to discrete SPI slave chips including microcontrollers | ||
39 | # | ||
40 | |||
41 | config SPI_MASTER | ||
42 | # boolean "SPI Master Support" | ||
43 | boolean | ||
44 | default SPI | ||
45 | help | ||
46 | If your system has an master-capable SPI controller (which | ||
47 | provides the clock and chipselect), you can enable that | ||
48 | controller and the protocol drivers for the SPI slave chips | ||
49 | that are connected. | ||
50 | |||
51 | comment "SPI Master Controller Drivers" | ||
52 | depends on SPI_MASTER | ||
53 | |||
54 | |||
55 | # | ||
56 | # Add new SPI master controllers in alphabetical order above this line | ||
57 | # | ||
58 | |||
59 | |||
60 | # | ||
61 | # There are lots of SPI device types, with sensors and memory | ||
62 | # being probably the most widely used ones. | ||
63 | # | ||
64 | comment "SPI Protocol Masters" | ||
65 | depends on SPI_MASTER | ||
66 | |||
67 | |||
68 | # | ||
69 | # Add new SPI protocol masters in alphabetical order above this line | ||
70 | # | ||
71 | |||
72 | |||
73 | # (slave support would go here) | ||
74 | |||
75 | endmenu # "SPI support" | ||
76 | |||