diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 11:51:05 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 11:51:05 -0700 |
commit | 750b2d7b93f2ba19f4f238cc641bda22fe07c155 (patch) | |
tree | bfef33ef5444ac2ac78c61e47baa7a5d19916214 /drivers/spi/spi-topcliff-pch.c | |
parent | 3dbde57ad941c55345fd7fac0ee3f70f204b02d8 (diff) | |
parent | ed893559c9799df3b32051871c22017151394d82 (diff) |
Merge tag 'spi-v3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi updates from Mark Brown:
"A fairly quiet release for the SPI subsystem, the standout changes
being:
- Core support for implementing bits per word constraints implemented
by Stephen Warren, factoring some code out of drivers.
- Addition of polling mode support for the s3c64xx driver as some
newer Exynos systems have taken the unusual step of removing
interrupt support.
- Use of the in-IP FIFO and generic dmaengine support for the OMAP2
driver, providing improved performance.
- Conversion of the mpc512x driver to use the core message queue
infrastructure.
The nicest thing being that all the factoring out into common code
leads to a negative diffstat overall."
* tag 'spi-v3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (42 commits)
spi/s3c64xx: Rely on the compiler eliminating the OF ID table
spi: s3c64xx: Added support for exynos5440 spi
spi: s3c64xx: Added provision for dedicated cs pin
spi: omap2-mcspi: add generic DMA request support to the DT binding
spi: omap2-mcspi: convert to dma_request_slave_channel_compat()
spi/s3c64xx: Make wait_for_timeout() function name less generic
spi: s3c64xx: added support for polling mode
spi: omap2-mcspi: Add FIFO buffer support
spi: omap2-mcspi: Move bytes per word calculation to the function
spi: spi-xilinx: cleanup a check in xilinx_spi_txrx_bufs()
spi: spi-nuc900: Remove redundant platform_set_drvdata()
spi: spi-fsl-lib: Make mpc8xxx_spi_work static
spi: spi-topcliff-pch: Fix sparse warnings
spi: spi-xilinx: Remove redundant platform_set_drvdata()
spi: spi-xilinx: Add run run-time endian detection
spi: mpc512x: use the SPI subsystem's message queue
spi: mpc512x: improve throughput in the RX/TX func
spi: mpc512x: minor prep before feature change
spi: atmel: convert to dma_request_slave_channel_compat()
spi: sirf: avoid uninitialized-use warning
...
Diffstat (limited to 'drivers/spi/spi-topcliff-pch.c')
-rw-r--r-- | drivers/spi/spi-topcliff-pch.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c index 637d728fbeb..dd55707a6aa 100644 --- a/drivers/spi/spi-topcliff-pch.c +++ b/drivers/spi/spi-topcliff-pch.c @@ -367,7 +367,7 @@ static irqreturn_t pch_spi_handler(int irq, void *dev_id) if (reg_spsr_val & SPSR_ORF_BIT) { dev_err(&board_dat->pdev->dev, "%s Over run error\n", __func__); - if (data->current_msg->complete != 0) { + if (data->current_msg->complete) { data->transfer_complete = true; data->current_msg->status = -EIO; data->current_msg->complete(data->current_msg->context); @@ -472,11 +472,6 @@ static int pch_spi_setup(struct spi_device *pspi) dev_dbg(&pspi->dev, "%s 8 bits per word\n", __func__); } - if ((pspi->bits_per_word != 8) && (pspi->bits_per_word != 16)) { - dev_err(&pspi->dev, "%s Invalid bits per word\n", __func__); - return -EINVAL; - } - /* Check baud rate setting */ /* if baud rate of chip is greater than max we can support,return error */ @@ -537,17 +532,6 @@ static int pch_spi_transfer(struct spi_device *pspi, struct spi_message *pmsg) /* if baud rate has been specified validate the same */ if (transfer->speed_hz > PCH_MAX_BAUDRATE) transfer->speed_hz = PCH_MAX_BAUDRATE; - - /* if bits per word has been specified validate the same */ - if (transfer->bits_per_word) { - if ((transfer->bits_per_word != 8) - && (transfer->bits_per_word != 16)) { - retval = -EINVAL; - dev_err(&pspi->dev, - "%s Invalid bits per word\n", __func__); - goto err_return_spinlock; - } - } } spin_unlock_irqrestore(&data->lock, flags); @@ -659,7 +643,7 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw) list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) { pmsg->status = -ENOMEM; - if (pmsg->complete != 0) + if (pmsg->complete) pmsg->complete(pmsg->context); /* delete from queue */ @@ -709,7 +693,7 @@ static void pch_spi_nomore_transfer(struct pch_spi_data *data) * [To the spi core..indicating end of transfer] */ data->current_msg->status = 0; - if (data->current_msg->complete != 0) { + if (data->current_msg->complete) { dev_dbg(&data->master->dev, "%s:Invoking callback of SPI core\n", __func__); data->current_msg->complete(data->current_msg->context); @@ -1202,7 +1186,7 @@ static void pch_spi_process_messages(struct work_struct *pwork) list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) { pmsg->status = -EIO; - if (pmsg->complete != 0) { + if (pmsg->complete) { spin_unlock(&data->lock); pmsg->complete(pmsg->context); spin_lock(&data->lock); @@ -1442,6 +1426,7 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev) master->setup = pch_spi_setup; master->transfer = pch_spi_transfer; master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; + master->bits_per_word_mask = SPI_BPW_MASK(8) | SPI_BPW_MASK(16); data->board_dat = board_dat; data->plat_dev = plat_dev; |