[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>
2006-01-09 05:34:19 +08:00
|
|
|
#
|
|
|
|
# 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)
|
2007-02-14 16:33:09 +08:00
|
|
|
obj-$(CONFIG_SPI_ATMEL) += atmel_spi.o
|
2007-05-07 05:50:34 +08:00
|
|
|
obj-$(CONFIG_SPI_BFIN) += spi_bfin5xx.o
|
|
|
|
obj-$(CONFIG_SPI_BITBANG) += spi_bitbang.o
|
2007-05-08 15:32:25 +08:00
|
|
|
obj-$(CONFIG_SPI_AU1550) += au1550_spi.o
|
2006-01-09 05:34:29 +08:00
|
|
|
obj-$(CONFIG_SPI_BUTTERFLY) += spi_butterfly.o
|
2010-01-21 04:49:44 +08:00
|
|
|
obj-$(CONFIG_SPI_COLDFIRE_QSPI) += coldfire_qspi.o
|
2009-12-17 06:02:18 +08:00
|
|
|
obj-$(CONFIG_SPI_DAVINCI) += davinci_spi.o
|
2009-12-15 06:20:22 +08:00
|
|
|
obj-$(CONFIG_SPI_DESIGNWARE) += dw_spi.o
|
|
|
|
obj-$(CONFIG_SPI_DW_PCI) += dw_spi_pci.o
|
2010-01-21 22:46:42 +08:00
|
|
|
obj-$(CONFIG_SPI_DW_MMIO) += dw_spi_mmio.o
|
2010-05-06 12:47:04 +08:00
|
|
|
obj-$(CONFIG_SPI_EP93XX) += ep93xx_spi.o
|
2009-01-07 06:41:41 +08:00
|
|
|
obj-$(CONFIG_SPI_GPIO) += spi_gpio.o
|
2009-10-02 06:44:28 +08:00
|
|
|
obj-$(CONFIG_SPI_IMX) += spi_imx.o
|
2007-07-17 19:04:05 +08:00
|
|
|
obj-$(CONFIG_SPI_LM70_LLP) += spi_lm70llp.o
|
2006-03-08 15:53:24 +08:00
|
|
|
obj-$(CONFIG_SPI_PXA2XX) += pxa2xx_spi.o
|
2007-02-12 16:52:37 +08:00
|
|
|
obj-$(CONFIG_SPI_OMAP_UWIRE) += omap_uwire.o
|
2007-07-17 19:04:13 +08:00
|
|
|
obj-$(CONFIG_SPI_OMAP24XX) += omap2_mcspi.o
|
2009-12-13 16:02:11 +08:00
|
|
|
obj-$(CONFIG_SPI_OMAP_100K) += omap_spi_100k.o
|
2008-08-06 04:01:09 +08:00
|
|
|
obj-$(CONFIG_SPI_ORION) += orion_spi.o
|
2009-06-09 15:11:42 +08:00
|
|
|
obj-$(CONFIG_SPI_PL022) += amba-pl022.o
|
2010-04-30 21:21:27 +08:00
|
|
|
obj-$(CONFIG_SPI_MPC512x_PSC) += mpc512x_psc_spi.o
|
2007-05-11 13:22:52 +08:00
|
|
|
obj-$(CONFIG_SPI_MPC52xx_PSC) += mpc52xx_psc_spi.o
|
2009-11-05 06:34:18 +08:00
|
|
|
obj-$(CONFIG_SPI_MPC52xx) += mpc52xx_spi.o
|
2009-06-19 07:49:08 +08:00
|
|
|
obj-$(CONFIG_SPI_MPC8xxx) += spi_mpc8xxx.o
|
2009-09-23 07:45:58 +08:00
|
|
|
obj-$(CONFIG_SPI_PPC4xx) += spi_ppc4xx.o
|
2006-05-21 06:00:17 +08:00
|
|
|
obj-$(CONFIG_SPI_S3C24XX_GPIO) += spi_s3c24xx_gpio.o
|
2009-12-15 14:20:24 +08:00
|
|
|
obj-$(CONFIG_SPI_S3C24XX) += spi_s3c24xx_hw.o
|
2009-11-30 15:39:42 +08:00
|
|
|
obj-$(CONFIG_SPI_S3C64XX) += spi_s3c64xx.o
|
2010-10-09 02:44:49 +08:00
|
|
|
obj-$(CONFIG_SPI_TOPCLIFF_PCH) += spi_topcliff_pch.o
|
2007-07-17 19:04:15 +08:00
|
|
|
obj-$(CONFIG_SPI_TXX9) += spi_txx9.o
|
2007-07-17 19:04:11 +08:00
|
|
|
obj-$(CONFIG_SPI_XILINX) += xilinx_spi.o
|
2009-11-13 19:28:39 +08:00
|
|
|
obj-$(CONFIG_SPI_XILINX_OF) += xilinx_spi_of.o
|
2009-11-13 19:29:00 +08:00
|
|
|
obj-$(CONFIG_SPI_XILINX_PLTFM) += xilinx_spi_pltfm.o
|
2008-02-06 17:38:15 +08:00
|
|
|
obj-$(CONFIG_SPI_SH_SCI) += spi_sh_sci.o
|
2009-11-26 19:10:05 +08:00
|
|
|
obj-$(CONFIG_SPI_SH_MSIOF) += spi_sh_msiof.o
|
2009-09-23 07:46:15 +08:00
|
|
|
obj-$(CONFIG_SPI_STMP3XXX) += spi_stmp.o
|
2009-12-01 22:29:20 +08:00
|
|
|
obj-$(CONFIG_SPI_NUC900) += spi_nuc900.o
|
2009-12-15 14:20:24 +08:00
|
|
|
|
|
|
|
# special build for s3c24xx spi driver with fiq support
|
|
|
|
spi_s3c24xx_hw-y := spi_s3c24xx.o
|
|
|
|
spi_s3c24xx_hw-$(CONFIG_SPI_S3C24XX_FIQ) += spi_s3c24xx_fiq.o
|
|
|
|
|
[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>
2006-01-09 05:34:19 +08:00
|
|
|
# ... add above this line ...
|
|
|
|
|
|
|
|
# SPI protocol drivers (device/link on bus)
|
2007-05-08 15:32:15 +08:00
|
|
|
obj-$(CONFIG_SPI_SPIDEV) += spidev.o
|
2007-07-17 19:04:10 +08:00
|
|
|
obj-$(CONFIG_SPI_TLE62X0) += tle62x0.o
|
[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>
2006-01-09 05:34:19 +08:00
|
|
|
# ... 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 ...
|