提交 62d02e41 编写于 作者: M Mark Brown

Merge remote-tracking branch 'spi/fix/rockchip' into spi-linus

...@@ -415,7 +415,7 @@ static void rockchip_spi_dma_txcb(void *data) ...@@ -415,7 +415,7 @@ static void rockchip_spi_dma_txcb(void *data)
spin_unlock_irqrestore(&rs->lock, flags); spin_unlock_irqrestore(&rs->lock, flags);
} }
static int rockchip_spi_dma_transfer(struct rockchip_spi *rs) static void rockchip_spi_prepare_dma(struct rockchip_spi *rs)
{ {
unsigned long flags; unsigned long flags;
struct dma_slave_config rxconf, txconf; struct dma_slave_config rxconf, txconf;
...@@ -474,8 +474,6 @@ static int rockchip_spi_dma_transfer(struct rockchip_spi *rs) ...@@ -474,8 +474,6 @@ static int rockchip_spi_dma_transfer(struct rockchip_spi *rs)
dmaengine_submit(txdesc); dmaengine_submit(txdesc);
dma_async_issue_pending(rs->dma_tx.ch); dma_async_issue_pending(rs->dma_tx.ch);
} }
return 1;
} }
static void rockchip_spi_config(struct rockchip_spi *rs) static void rockchip_spi_config(struct rockchip_spi *rs)
...@@ -557,16 +555,17 @@ static int rockchip_spi_transfer_one( ...@@ -557,16 +555,17 @@ static int rockchip_spi_transfer_one(
else if (rs->rx) else if (rs->rx)
rs->tmode = CR0_XFM_RO; rs->tmode = CR0_XFM_RO;
if (master->can_dma && master->can_dma(master, spi, xfer)) /* we need prepare dma before spi was enabled */
if (master->can_dma && master->can_dma(master, spi, xfer)) {
rs->use_dma = 1; rs->use_dma = 1;
else rockchip_spi_prepare_dma(rs);
} else {
rs->use_dma = 0; rs->use_dma = 0;
}
rockchip_spi_config(rs); rockchip_spi_config(rs);
if (rs->use_dma) if (!rs->use_dma)
ret = rockchip_spi_dma_transfer(rs);
else
ret = rockchip_spi_pio_transfer(rs); ret = rockchip_spi_pio_transfer(rs);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册