|
@@ -660,7 +660,11 @@ static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|
goto err_desc;
|
|
goto err_desc;
|
|
|
|
|
|
if (!t->tx_buf) {
|
|
if (!t->tx_buf) {
|
|
- /* use rx buffer as dummy tx buffer */
|
|
|
|
|
|
+ /* To avoid errors when doing rx-only transfers with
|
|
|
|
+ * many SG entries (> 20), use the rx buffer as the
|
|
|
|
+ * dummy tx buffer so that dma reloads are done at the
|
|
|
|
+ * same time for rx and tx.
|
|
|
|
+ */
|
|
t->tx_sg.sgl = t->rx_sg.sgl;
|
|
t->tx_sg.sgl = t->rx_sg.sgl;
|
|
t->tx_sg.nents = t->rx_sg.nents;
|
|
t->tx_sg.nents = t->rx_sg.nents;
|
|
}
|
|
}
|