[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 00:34:19 +03:00
#
# Makefile for kernel SPI drivers.
#
2010-09-24 23:17:32 +04:00
ccflags-$(CONFIG_SPI_DEBUG) := -DDEBUG
[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 00:34:19 +03:00
# small core, mostly translating board-specific
# config declarations into driver model code
obj-$(CONFIG_SPI_MASTER) += spi.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_SPIDEV) += spidev.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 00:34:19 +03:00
# SPI master controller drivers (bus)
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_ALTERA) += spi-altera.o
obj-$(CONFIG_SPI_ATMEL) += spi-atmel.o
obj-$(CONFIG_SPI_ATH79) += spi-ath79.o
obj-$(CONFIG_SPI_AU1550) += spi-au1550.o
2013-03-12 07:38:24 +04:00
obj-$(CONFIG_SPI_BCM2835) += spi-bcm2835.o
2014-08-17 20:33:38 +04:00
obj-$(CONFIG_SPI_BCM53XX) += spi-bcm53xx.o
2012-02-01 14:14:09 +04:00
obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63xx.o
2013-11-30 15:42:06 +04:00
obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o
2012-04-24 02:18:08 +04:00
obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o
2014-04-04 12:27:17 +04:00
obj-$(CONFIG_SPI_ADI_V3) += spi-adi-v3.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_BFIN_SPORT) += spi-bfin-sport.o
obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o
obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o
2014-04-14 13:06:53 +04:00
obj-$(CONFIG_SPI_CADENCE) += spi-cadence.o
2012-11-07 21:30:29 +04:00
obj-$(CONFIG_SPI_CLPS711X) += spi-clps711x.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_COLDFIRE_QSPI) += spi-coldfire-qspi.o
obj-$(CONFIG_SPI_DAVINCI) += spi-davinci.o
obj-$(CONFIG_SPI_DESIGNWARE) += spi-dw.o
obj-$(CONFIG_SPI_DW_MMIO) += spi-dw-mmio.o
obj-$(CONFIG_SPI_DW_PCI) += spi-dw-midpci.o
spi-dw-midpci-objs := spi-dw-pci.o spi-dw-mid.o
2013-08-08 18:09:50 +04:00
obj-$(CONFIG_SPI_EFM32) += spi-efm32.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_EP93XX) += spi-ep93xx.o
2012-05-20 17:46:19 +04:00
obj-$(CONFIG_SPI_FALCON) += spi-falcon.o
2013-02-15 19:52:21 +04:00
obj-$(CONFIG_SPI_FSL_CPM) += spi-fsl-cpm.o
2013-08-16 07:08:55 +04:00
obj-$(CONFIG_SPI_FSL_DSPI) += spi-fsl-dspi.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_FSL_LIB) += spi-fsl-lib.o
obj-$(CONFIG_SPI_FSL_ESPI) += spi-fsl-espi.o
obj-$(CONFIG_SPI_FSL_SPI) += spi-fsl-spi.o
obj-$(CONFIG_SPI_GPIO) += spi-gpio.o
2014-11-14 21:48:32 +03:00
obj-$(CONFIG_SPI_IMG_SPFI) += spi-img-spfi.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_IMX) += spi-imx.o
obj-$(CONFIG_SPI_LM70_LLP) += spi-lm70llp.o
2014-11-22 18:21:41 +03:00
obj-$(CONFIG_SPI_MESON_SPIFC) += spi-meson-spifc.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_MPC512x_PSC) += spi-mpc512x-psc.o
obj-$(CONFIG_SPI_MPC52xx_PSC) += spi-mpc52xx-psc.o
obj-$(CONFIG_SPI_MPC52xx) += spi-mpc52xx.o
2012-08-03 19:26:11 +04:00
obj-$(CONFIG_SPI_MXS) += spi-mxs.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_NUC900) += spi-nuc900.o
obj-$(CONFIG_SPI_OC_TINY) += spi-oc-tiny.o
2012-08-22 23:25:07 +04:00
obj-$(CONFIG_SPI_OCTEON) += spi-octeon.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_OMAP_UWIRE) += spi-omap-uwire.o
obj-$(CONFIG_SPI_OMAP_100K) += spi-omap-100k.o
obj-$(CONFIG_SPI_OMAP24XX) += spi-omap2-mcspi.o
2013-08-20 17:25:48 +04:00
obj-$(CONFIG_SPI_TI_QSPI) += spi-ti-qspi.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_ORION) += spi-orion.o
obj-$(CONFIG_SPI_PL022) += spi-pl022.o
obj-$(CONFIG_SPI_PPC4xx) += spi-ppc4xx.o
2013-01-22 14:26:28 +04:00
spi-pxa2xx-platform-objs := spi-pxa2xx.o
spi-pxa2xx-platform-$(CONFIG_SPI_PXA2XX_PXADMA) += spi-pxa2xx-pxadma.o
2013-01-22 14:26:29 +04:00
spi-pxa2xx-platform-$(CONFIG_SPI_PXA2XX_DMA) += spi-pxa2xx-dma.o
2013-01-22 14:26:28 +04:00
obj-$(CONFIG_SPI_PXA2XX) += spi-pxa2xx-platform.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_PXA2XX_PCI) += spi-pxa2xx-pci.o
2014-02-13 20:21:38 +04:00
obj-$(CONFIG_SPI_QUP) += spi-qup.o
2014-07-01 05:03:59 +04:00
obj-$(CONFIG_SPI_ROCKCHIP) += spi-rockchip.o
2012-03-07 09:46:25 +04:00
obj-$(CONFIG_SPI_RSPI) += spi-rspi.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o
spi-s3c24xx-hw-y := spi-s3c24xx.o
spi-s3c24xx-hw-$(CONFIG_SPI_S3C24XX_FIQ) += spi-s3c24xx-fiq.o
obj-$(CONFIG_SPI_S3C64XX) += spi-s3c64xx.o
2012-08-18 20:06:27 +04:00
obj-$(CONFIG_SPI_SC18IS602) += spi-sc18is602.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_SH) += spi-sh.o
2012-03-02 05:10:17 +04:00
obj-$(CONFIG_SPI_SH_HSPI) += spi-sh-hspi.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_SH_MSIOF) += spi-sh-msiof.o
obj-$(CONFIG_SPI_SH_SCI) += spi-sh-sci.o
2012-02-13 13:45:38 +04:00
obj-$(CONFIG_SPI_SIRF) += spi-sirf.o
spi: sunxi: Add Allwinner A10 SPI controller driver
The older Allwinner SoCs (A10, A13, A10s and A20) all have the same SPI
controller.
Unfortunately, this SPI controller, even though quite similar, is significantly
different from the recently supported A31 SPI controller (different registers
offset, split/merged registers, etc.). Supporting both controllers in a single
driver would be unreasonable, hence the addition of a new driver.
Like its more recent counterpart, it supports DMA, but the driver only does PIO
until we have a dmaengine driver for this platform.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-02-23 01:35:53 +04:00
obj-$(CONFIG_SPI_SUN4I) += spi-sun4i.o
2014-02-05 17:05:05 +04:00
obj-$(CONFIG_SPI_SUN6I) += spi-sun6i.o
2013-02-22 16:37:39 +04:00
obj-$(CONFIG_SPI_TEGRA114) += spi-tegra114.o
2012-11-14 04:24:47 +04:00
obj-$(CONFIG_SPI_TEGRA20_SFLASH) += spi-tegra20-sflash.o
2012-10-30 11:04:05 +04:00
obj-$(CONFIG_SPI_TEGRA20_SLINK) += spi-tegra20-slink.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_TLE62X0) += spi-tle62x0.o
obj-$(CONFIG_SPI_TOPCLIFF_PCH) += spi-topcliff-pch.o
obj-$(CONFIG_SPI_TXX9) += spi-txx9.o
2012-07-19 20:44:07 +04:00
obj-$(CONFIG_SPI_XCOMM) += spi-xcomm.o
2011-06-06 11:16:30 +04:00
obj-$(CONFIG_SPI_XILINX) += spi-xilinx.o
2014-03-12 21:55:24 +04:00
obj-$(CONFIG_SPI_XTENSA_XTFPGA) += spi-xtensa-xtfpga.o