d29389de0b
Generalize the old at91rm9200 "bootstrap" bitbanging SPI master driver as "spi_gpio", so it works with arbitrary GPIOs and can be configured through platform_data. Such SPI masters support: - any number of bus instances (bus_num is the platform_device.id) - any number of chipselects (one GPIO per spi_device) - all four SPI_MODE values, and SPI_CS_HIGH - i/o word sizes from 1 to 32 bits; - devices configured as with any other spi_master controller When configured using platform_data, this provides relatively low clock rates. On platforms that support inlined GPIO calls, significantly improved transfer speeds are also possible with a semi-custom driver. (It's still painful when accessing flash memory, but less so.) Sanity checked by using this version to replace both native controllers on a board with six different SPI slaves, relying on three different SPI_MODE_* values and both SPI_CS_HIGH settings for correct operation. [akpm@linux-foundation.org: cleanups] Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Acked-by: Magnus Damm <damm@igel.co.jp> Tested-by: Magnus Damm <damm@igel.co.jp> Cc: Torgil Svensson <torgil.svensson@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
at25.c | ||
atmel_spi.c | ||
atmel_spi.h | ||
au1550_spi.c | ||
Kconfig | ||
Makefile | ||
mpc52xx_psc_spi.c | ||
omap2_mcspi.c | ||
omap_uwire.c | ||
orion_spi.c | ||
pxa2xx_spi.c | ||
spi_bfin5xx.c | ||
spi_bitbang.c | ||
spi_butterfly.c | ||
spi_gpio.c | ||
spi_imx.c | ||
spi_lm70llp.c | ||
spi_mpc83xx.c | ||
spi_s3c24xx_gpio.c | ||
spi_s3c24xx.c | ||
spi_sh_sci.c | ||
spi_txx9.c | ||
spi.c | ||
spidev.c | ||
tle62x0.c | ||
xilinx_spi.c |