|
|
@@ -655,6 +655,12 @@ static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|
|
if (!rxdesc)
|
|
|
goto err_desc;
|
|
|
|
|
|
+ if (!t->tx_buf) {
|
|
|
+ /* use rx buffer as dummy tx buffer */
|
|
|
+ t->tx_sg.sgl = t->rx_sg.sgl;
|
|
|
+ t->tx_sg.nents = t->rx_sg.nents;
|
|
|
+ }
|
|
|
+
|
|
|
txdesc = dmaengine_prep_slave_sg(dspi->dma_tx,
|
|
|
t->tx_sg.sgl, t->tx_sg.nents, DMA_MEM_TO_DEV,
|
|
|
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
|
|
@@ -957,7 +963,7 @@ static int davinci_spi_probe(struct platform_device *pdev)
|
|
|
master->bus_num = pdev->id;
|
|
|
master->num_chipselect = pdata->num_chipselect;
|
|
|
master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 16);
|
|
|
- master->flags = (SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX);
|
|
|
+ master->flags = SPI_MASTER_MUST_RX;
|
|
|
master->setup = davinci_spi_setup;
|
|
|
master->cleanup = davinci_spi_cleanup;
|
|
|
master->can_dma = davinci_spi_can_dma;
|