mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
Merge remote-tracking branch 'spi/fix/rockchip' into spi-linus
This commit is contained in:
commit
62d02e41ea
@ -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)
|
|||||||
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(
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user