You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
spi_gpio driver
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>
This commit is contained in:
committed by
Linus Torvalds
parent
c2bacfc44f
commit
d29389de0b
+17
-1
@@ -78,7 +78,7 @@ config SPI_AU1550
|
||||
will be called au1550_spi.
|
||||
|
||||
config SPI_BITBANG
|
||||
tristate "Bitbanging SPI master"
|
||||
tristate "Utilities for Bitbanging SPI masters"
|
||||
help
|
||||
With a few GPIO pins, your system can bitbang the SPI protocol.
|
||||
Select this to get SPI support through I/O pins (GPIO, parallel
|
||||
@@ -100,6 +100,22 @@ config SPI_BUTTERFLY
|
||||
inexpensive battery powered microcontroller evaluation board.
|
||||
This same cable can be used to flash new firmware.
|
||||
|
||||
config SPI_GPIO
|
||||
tristate "GPIO-based bitbanging SPI Master"
|
||||
depends on GENERIC_GPIO
|
||||
select SPI_BITBANG
|
||||
help
|
||||
This simple GPIO bitbanging SPI master uses the arch-neutral GPIO
|
||||
interface to manage MOSI, MISO, SCK, and chipselect signals. SPI
|
||||
slaves connected to a bus using this driver are configured as usual,
|
||||
except that the spi_board_info.controller_data holds the GPIO number
|
||||
for the chipselect used by this controller driver.
|
||||
|
||||
Note that this driver often won't achieve even 1 Mbit/sec speeds,
|
||||
making it unusually slow for SPI. If your platform can inline
|
||||
GPIO operations, you should be able to leverage that for better
|
||||
speed with a custom version of this driver; see the source code.
|
||||
|
||||
config SPI_IMX
|
||||
tristate "Freescale iMX SPI controller"
|
||||
depends on ARCH_IMX && EXPERIMENTAL
|
||||
|
||||
Reference in New Issue
Block a user