[PATCH] spi: add spi_bitbang driver
authorDavid Brownell <david-b@pacbell.net>
Sun, 8 Jan 2006 21:34:26 +0000 (13:34 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 14 Jan 2006 00:29:55 +0000 (16:29 -0800)
commit9904f22a7202c6b54e96b0cc9870817013c350a1
tree02d526b1bf54b1c64e58a9f903269f9cdc6ec83c
parent2e5a7bd978bf4118a0c8edf2e6ff81d0a72fee47
[PATCH] spi: add spi_bitbang driver

This adds a bitbanging spi master, hooking up to board/adapter-specific glue
code which knows how to set and read the signals (gpios etc).

This code kicks in after the glue code creates a platform_device with the
right platform_data.  That data includes I/O loops, which will usually
come from expanding an inline function (provided in the header).  One goal
is that the I/O loops should be easily optimized down to a few GPIO register
accesses, in common cases, for speed and minimized overhead.

This understands all the currently defined protocol tweaking options in the
SPI framework, and might eventually serve as as reference implementation.

  - different word sizes (1..32 bits)
  - differing clock rates
  - SPI modes differing by CPOL (affecting chip select and I/O loops)
  - SPI modes differing by CPHA (affecting I/O loops)
  - delays (usecs) after transfers
  - temporarily deselecting chips in mid-transfer

A lot of hardware could work with this framework, though common types of
controller can't reach peak performance without switching to a driver
structure that supports pipelining of transfers (e.g.  DMA queues) and maybe
controllers (e.g.  IRQ driven).

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>
drivers/spi/Kconfig
drivers/spi/Makefile
drivers/spi/spi_bitbang.c [new file with mode: 0644]
include/linux/spi/spi_bitbang.h [new file with mode: 0644]