Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62d02e41 authored by Mark Brown's avatar Mark Brown
Browse files

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

parents fe82dcec a24e70c0
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -415,7 +415,7 @@ static void rockchip_spi_dma_txcb(void *data)
	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;
	struct dma_slave_config rxconf, txconf;
@@ -474,8 +474,6 @@ static int rockchip_spi_dma_transfer(struct rockchip_spi *rs)
		dmaengine_submit(txdesc);
		dma_async_issue_pending(rs->dma_tx.ch);
	}

	return 1;
}

static void rockchip_spi_config(struct rockchip_spi *rs)
@@ -557,16 +555,17 @@ static int rockchip_spi_transfer_one(
	else if (rs->rx)
		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;
	else
		rockchip_spi_prepare_dma(rs);
	} else {
		rs->use_dma = 0;
	}

	rockchip_spi_config(rs);

	if (rs->use_dma)
		ret = rockchip_spi_dma_transfer(rs);
	else
	if (!rs->use_dma)
		ret = rockchip_spi_pio_transfer(rs);

	return ret;