提交 072ac04d 编写于 作者: M Mark Brown

Merge remote-tracking branches 'spi/fix/dw', 'spi/fix/queue' and 'spi/fix/qup' into spi-linus

...@@ -108,7 +108,8 @@ static void dw_spi_dma_tx_done(void *arg) ...@@ -108,7 +108,8 @@ static void dw_spi_dma_tx_done(void *arg)
{ {
struct dw_spi *dws = arg; struct dw_spi *dws = arg;
if (test_and_clear_bit(TX_BUSY, &dws->dma_chan_busy) & BIT(RX_BUSY)) clear_bit(TX_BUSY, &dws->dma_chan_busy);
if (test_bit(RX_BUSY, &dws->dma_chan_busy))
return; return;
dw_spi_xfer_done(dws); dw_spi_xfer_done(dws);
} }
...@@ -156,7 +157,8 @@ static void dw_spi_dma_rx_done(void *arg) ...@@ -156,7 +157,8 @@ static void dw_spi_dma_rx_done(void *arg)
{ {
struct dw_spi *dws = arg; struct dw_spi *dws = arg;
if (test_and_clear_bit(RX_BUSY, &dws->dma_chan_busy) & BIT(TX_BUSY)) clear_bit(RX_BUSY, &dws->dma_chan_busy);
if (test_bit(TX_BUSY, &dws->dma_chan_busy))
return; return;
dw_spi_xfer_done(dws); dw_spi_xfer_done(dws);
} }
......
...@@ -498,7 +498,7 @@ static int spi_qup_probe(struct platform_device *pdev) ...@@ -498,7 +498,7 @@ static int spi_qup_probe(struct platform_device *pdev)
struct resource *res; struct resource *res;
struct device *dev; struct device *dev;
void __iomem *base; void __iomem *base;
u32 max_freq, iomode; u32 max_freq, iomode, num_cs;
int ret, irq, size; int ret, irq, size;
dev = &pdev->dev; dev = &pdev->dev;
...@@ -550,10 +550,11 @@ static int spi_qup_probe(struct platform_device *pdev) ...@@ -550,10 +550,11 @@ static int spi_qup_probe(struct platform_device *pdev)
} }
/* use num-cs unless not present or out of range */ /* use num-cs unless not present or out of range */
if (of_property_read_u16(dev->of_node, "num-cs", if (of_property_read_u32(dev->of_node, "num-cs", &num_cs) ||
&master->num_chipselect) || num_cs > SPI_NUM_CHIPSELECTS)
(master->num_chipselect > SPI_NUM_CHIPSELECTS))
master->num_chipselect = SPI_NUM_CHIPSELECTS; master->num_chipselect = SPI_NUM_CHIPSELECTS;
else
master->num_chipselect = num_cs;
master->bus_num = pdev->id; master->bus_num = pdev->id;
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LOOP; master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LOOP;
......
...@@ -1105,13 +1105,14 @@ void spi_finalize_current_message(struct spi_master *master) ...@@ -1105,13 +1105,14 @@ void spi_finalize_current_message(struct spi_master *master)
"failed to unprepare message: %d\n", ret); "failed to unprepare message: %d\n", ret);
} }
} }
trace_spi_message_done(mesg);
master->cur_msg_prepared = false; master->cur_msg_prepared = false;
mesg->state = NULL; mesg->state = NULL;
if (mesg->complete) if (mesg->complete)
mesg->complete(mesg->context); mesg->complete(mesg->context);
trace_spi_message_done(mesg);
} }
EXPORT_SYMBOL_GPL(spi_finalize_current_message); EXPORT_SYMBOL_GPL(spi_finalize_current_message);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册