X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fspi%2Fomap_uwire.c;h=d275c615a73ecb7a516689595c9c9c8dca322062;hb=e4f3b1e74b67fdcdd3034b84997fad7912f182f6;hp=366af4959a0f27a70c4066d7d72a53da0269e7e7;hpb=463020ce428e2f00d4f33a383d6f39c7453a6854;p=linux-2.6 diff --git a/drivers/spi/omap_uwire.c b/drivers/spi/omap_uwire.c index 366af4959a..d275c615a7 100644 --- a/drivers/spi/omap_uwire.c +++ b/drivers/spi/omap_uwire.c @@ -358,11 +358,11 @@ static int uwire_setup_transfer(struct spi_device *spi, struct spi_transfer *t) switch (spi->mode & (SPI_CPOL | SPI_CPHA)) { case SPI_MODE_0: case SPI_MODE_3: - flags |= UWIRE_WRITE_RISING_EDGE | UWIRE_READ_FALLING_EDGE; + flags |= UWIRE_WRITE_FALLING_EDGE | UWIRE_READ_RISING_EDGE; break; case SPI_MODE_1: case SPI_MODE_2: - flags |= UWIRE_WRITE_FALLING_EDGE | UWIRE_READ_RISING_EDGE; + flags |= UWIRE_WRITE_RISING_EDGE | UWIRE_READ_FALLING_EDGE; break; } @@ -445,10 +445,19 @@ done: return status; } +/* the spi->mode bits understood by this driver: */ +#define MODEBITS (SPI_CPOL | SPI_CPHA | SPI_CS_HIGH) + static int uwire_setup(struct spi_device *spi) { struct uwire_state *ust = spi->controller_state; + if (spi->mode & ~MODEBITS) { + dev_dbg(&spi->dev, "setup: unsupported mode bits %x\n", + spi->mode & ~MODEBITS); + return -EINVAL; + } + if (ust == NULL) { ust = kzalloc(sizeof(*ust), GFP_KERNEL); if (ust == NULL) @@ -459,7 +468,7 @@ static int uwire_setup(struct spi_device *spi) return uwire_setup_transfer(spi, NULL); } -static void uwire_cleanup(const struct spi_device *spi) +static void uwire_cleanup(struct spi_device *spi) { kfree(spi->controller_state); }