diff options
author | David Brownell <david-b@pacbell.net> | 2007-07-17 07:04:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 13:23:04 -0400 |
commit | dccd573bb02aa011a4a7146c02c409ac0bd722a0 (patch) | |
tree | 743eeca4fbbea8272ca4f341b806d776e404d704 /drivers/spi/spi_bitbang.c | |
parent | ff294cba8a62fa8334b88692da6d48683900f015 (diff) |
SPI controller drivers: check for unsupported modes
Minor SPI controller driver updates: make the setup() methods reject
spi->mode bits they don't support, by masking aginst the inverse of bits
they *do* support. This insures against misbehavior later when new mode
bits get added.
Most controllers can't support SPI_LSB_FIRST; more handle SPI_CS_HIGH.
Support for all four SPI clock/transfer modes is routine.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/spi/spi_bitbang.c')
-rw-r--r-- | drivers/spi/spi_bitbang.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c index 88425e1af4d3..0c85c984ccb4 100644 --- a/drivers/spi/spi_bitbang.c +++ b/drivers/spi/spi_bitbang.c | |||
@@ -187,12 +187,10 @@ int spi_bitbang_setup(struct spi_device *spi) | |||
187 | 187 | ||
188 | bitbang = spi_master_get_devdata(spi->master); | 188 | bitbang = spi_master_get_devdata(spi->master); |
189 | 189 | ||
190 | /* REVISIT: some systems will want to support devices using lsb-first | 190 | /* Bitbangers can support SPI_CS_HIGH, SPI_3WIRE, and so on; |
191 | * bit encodings on the wire. In pure software that would be trivial, | 191 | * add those to master->flags, and provide the other support. |
192 | * just bitbang_txrx_le_cphaX() routines shifting the other way, and | ||
193 | * some hardware controllers also have this support. | ||
194 | */ | 192 | */ |
195 | if ((spi->mode & SPI_LSB_FIRST) != 0) | 193 | if ((spi->mode & ~(SPI_CPOL|SPI_CPHA|bitbang->flags)) != 0) |
196 | return -EINVAL; | 194 | return -EINVAL; |
197 | 195 | ||
198 | if (!cs) { | 196 | if (!cs) { |