diff options
Diffstat (limited to 'target/linux/mediatek/patches-5.10/000-spi-fix-fifo.patch')
-rw-r--r-- | target/linux/mediatek/patches-5.10/000-spi-fix-fifo.patch | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/target/linux/mediatek/patches-5.10/000-spi-fix-fifo.patch b/target/linux/mediatek/patches-5.10/000-spi-fix-fifo.patch deleted file mode 100644 index 7a1462fc92..0000000000 --- a/target/linux/mediatek/patches-5.10/000-spi-fix-fifo.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 3a70dd2d050331ee4cf5ad9d5c0a32d83ead9a43 Mon Sep 17 00:00:00 2001 -From: Peter Hess <peter.hess@ph-home.de> -Date: Tue, 6 Jul 2021 14:16:09 +0200 -Subject: spi: mediatek: fix fifo rx mode - -In FIFO mode were two problems: -- RX mode was never handled and -- in this case the tx_buf pointer was NULL and caused an exception - -fix this by handling RX mode in mtk_spi_fifo_transfer - -Fixes: a568231f4632 ("spi: mediatek: Add spi bus for Mediatek MT8173") -Signed-off-by: Peter Hess <peter.hess@ph-home.de> -Signed-off-by: Frank Wunderlich <frank-w@public-files.de> -Link: https://lore.kernel.org/r/20210706121609.680534-1-linux@fw-web.de -Signed-off-by: Mark Brown <broonie@kernel.org> ---- - drivers/spi/spi-mt65xx.c | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) - ---- a/drivers/spi/spi-mt65xx.c -+++ b/drivers/spi/spi-mt65xx.c -@@ -434,13 +434,23 @@ static int mtk_spi_fifo_transfer(struct - mtk_spi_setup_packet(master); - - cnt = xfer->len / 4; -- iowrite32_rep(mdata->base + SPI_TX_DATA_REG, xfer->tx_buf, cnt); -+ if (xfer->tx_buf) -+ iowrite32_rep(mdata->base + SPI_TX_DATA_REG, xfer->tx_buf, cnt); -+ -+ if (xfer->rx_buf) -+ ioread32_rep(mdata->base + SPI_RX_DATA_REG, xfer->rx_buf, cnt); - - remainder = xfer->len % 4; - if (remainder > 0) { - reg_val = 0; -- memcpy(®_val, xfer->tx_buf + (cnt * 4), remainder); -- writel(reg_val, mdata->base + SPI_TX_DATA_REG); -+ if (xfer->tx_buf) { -+ memcpy(®_val, xfer->tx_buf + (cnt * 4), remainder); -+ writel(reg_val, mdata->base + SPI_TX_DATA_REG); -+ } -+ if (xfer->rx_buf) { -+ reg_val = readl(mdata->base + SPI_RX_DATA_REG); -+ memcpy(xfer->rx_buf + (cnt * 4), ®_val, remainder); -+ } - } - - mtk_spi_enable_transfer(master); |