mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
UPSTREAM: spi: rockchip: simplify use_dma logic
We only need to know if we're using dma when setting
up the transfer, so just use a local variable for
that.
Change-Id: Id5e755186278f8cf4aff6e0f175bd522aee324ae
Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
(cherry picked from commit eff0275e52)
This commit is contained in:
committed by
Tao Huang
parent
9378f64680
commit
5f8bf41df5
@@ -192,8 +192,6 @@ struct rockchip_spi {
|
||||
|
||||
bool cs_asserted[ROCKCHIP_SPI_MAX_CS_NUM];
|
||||
|
||||
bool use_dma;
|
||||
|
||||
struct pinctrl_state *high_speed_state;
|
||||
};
|
||||
|
||||
@@ -473,7 +471,8 @@ static int rockchip_spi_prepare_dma(struct rockchip_spi *rs,
|
||||
}
|
||||
|
||||
static void rockchip_spi_config(struct rockchip_spi *rs,
|
||||
struct spi_device *spi, struct spi_transfer *xfer)
|
||||
struct spi_device *spi, struct spi_transfer *xfer,
|
||||
bool use_dma)
|
||||
{
|
||||
u32 div = 0;
|
||||
u32 dmacr = 0;
|
||||
@@ -494,7 +493,7 @@ static void rockchip_spi_config(struct rockchip_spi *rs,
|
||||
else
|
||||
cr0 |= CR0_XFM_TO << CR0_XFM_OFFSET;
|
||||
|
||||
if (rs->use_dma) {
|
||||
if (use_dma) {
|
||||
if (xfer->tx_buf)
|
||||
dmacr |= TF_DMA_EN;
|
||||
if (xfer->rx_buf)
|
||||
@@ -574,6 +573,7 @@ static int rockchip_spi_transfer_one(
|
||||
struct spi_transfer *xfer)
|
||||
{
|
||||
struct rockchip_spi *rs = spi_master_get_devdata(master);
|
||||
bool use_dma;
|
||||
|
||||
WARN_ON(readl_relaxed(rs->regs + ROCKCHIP_SPI_SSIENR) &&
|
||||
(readl_relaxed(rs->regs + ROCKCHIP_SPI_SR) & SR_BUSY));
|
||||
@@ -596,15 +596,11 @@ static int rockchip_spi_transfer_one(
|
||||
rs->rx = xfer->rx_buf;
|
||||
rs->rx_end = rs->rx + xfer->len;
|
||||
|
||||
/* we need prepare dma before spi was enabled */
|
||||
if (master->can_dma && master->can_dma(master, spi, xfer))
|
||||
rs->use_dma = true;
|
||||
else
|
||||
rs->use_dma = false;
|
||||
use_dma = master->can_dma ? master->can_dma(master, spi, xfer) : false;
|
||||
|
||||
rockchip_spi_config(rs, spi, xfer);
|
||||
rockchip_spi_config(rs, spi, xfer, use_dma);
|
||||
|
||||
if (rs->use_dma)
|
||||
if (use_dma)
|
||||
return rockchip_spi_prepare_dma(rs, master, xfer);
|
||||
|
||||
return rockchip_spi_pio_transfer(rs);
|
||||
|
||||
Reference in New Issue
Block a user