X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fspi%2Fpxa2xx_spi.c;h=e51311b2da0b05855d45f4beb076dda923610859;hb=2e85622042cb5fd56a606e884651ffde52f21028;hp=dccdc50b02962c160be3e56352e6c04be93c31e6;hpb=c96e2c92072d3e78954c961f53d8c7352f7abbd7;p=linux-2.6-omap-h63xx.git diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c index dccdc50b029..e51311b2da0 100644 --- a/drivers/spi/pxa2xx_spi.c +++ b/drivers/spi/pxa2xx_spi.c @@ -1067,6 +1067,9 @@ static int transfer(struct spi_device *spi, struct spi_message *msg) return 0; } +/* the spi->mode bits understood by this driver: */ +#define MODEBITS (SPI_CPOL | SPI_CPHA) + static int setup(struct spi_device *spi) { struct pxa2xx_spi_chip *chip_info = NULL; @@ -1093,6 +1096,12 @@ static int setup(struct spi_device *spi) return -EINVAL; } + if (spi->mode & ~MODEBITS) { + dev_dbg(&spi->dev, "setup: unsupported mode bits %x\n", + spi->mode & ~MODEBITS); + return -EINVAL; + } + /* Only alloc on first setup */ chip = spi_get_ctldata(spi); if (!chip) { @@ -1214,9 +1223,9 @@ static int setup(struct spi_device *spi) return 0; } -static void cleanup(const struct spi_device *spi) +static void cleanup(struct spi_device *spi) { - struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi); + struct chip_data *chip = spi_get_ctldata(spi); kfree(chip); } @@ -1234,7 +1243,7 @@ static int init_queue(struct driver_data *drv_data) INIT_WORK(&drv_data->pump_messages, pump_messages); drv_data->workqueue = create_singlethread_workqueue( - drv_data->master->dev.parent->bus_id); + drv_data->master->cdev.dev->bus_id); if (drv_data->workqueue == NULL) return -EBUSY;