summaryrefslogtreecommitdiffstats
path: root/drivers/dma/qcom
diff options
context:
space:
mode:
authorVijaya Krishna Nivarthi <quic_vnivarth@quicinc.com>2022-12-16 23:08:13 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-02-01 08:34:02 +0100
commit1ec70969100856544c88c111c93c64d56eedf469 (patch)
treee64cbd29d463dd6e6c317d1c66137c6100395173 /drivers/dma/qcom
parent7b91820fd753b92e55c41eb408a4be430327c553 (diff)
downloadlinux-stable-1ec70969100856544c88c111c93c64d56eedf469.tar.gz
linux-stable-1ec70969100856544c88c111c93c64d56eedf469.tar.bz2
linux-stable-1ec70969100856544c88c111c93c64d56eedf469.zip
dmaengine: qcom: gpi: Set link_rx bit on GO TRE for rx operation
[ Upstream commit 25e8ac233d24051e2c4ff64c34f60609b0988568 ] Rx operation on SPI GSI DMA is currently not working. As per GSI spec, link_rx bit is to be set on GO TRE on tx channel whenever there is going to be a DMA TRE on rx channel. This is currently set for duplex operation only. Set the bit for rx operation as well. This is part of changes required to bring up Rx. Fixes: 94b8f0e58fa1 ("dmaengine: qcom: gpi: set chain and link flag for duplex") Signed-off-by: Vijaya Krishna Nivarthi <quic_vnivarth@quicinc.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/1671212293-14767-1-git-send-email-quic_vnivarth@quicinc.com Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/dma/qcom')
-rw-r--r--drivers/dma/qcom/gpi.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/dma/qcom/gpi.c b/drivers/dma/qcom/gpi.c
index 3f56514bbef8..98d45ee4b4e3 100644
--- a/drivers/dma/qcom/gpi.c
+++ b/drivers/dma/qcom/gpi.c
@@ -1756,6 +1756,7 @@ static int gpi_create_spi_tre(struct gchan *chan, struct gpi_desc *desc,
tre->dword[3] = u32_encode_bits(TRE_TYPE_GO, TRE_FLAGS_TYPE);
if (spi->cmd == SPI_RX) {
tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_IEOB);
+ tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_LINK);
} else if (spi->cmd == SPI_TX) {
tre->dword[3] |= u32_encode_bits(1, TRE_FLAGS_CHAIN);
} else { /* SPI_DUPLEX */