]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
dmaengine: tegra186: Fix residual calculation
authorAkhil R <akhilrajeev@nvidia.com>
Fri, 15 Mar 2024 12:44:11 +0000 (18:14 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 May 2024 14:32:47 +0000 (16:32 +0200)
commit6e98921f6f2f1be03055bd7eb201c17761d40fc7
treef6a938bb110e61b0d0406faa6e06315a1b73a931
parent3053b681b6782969f92bdb6c2a4da32151f7f74c
dmaengine: tegra186: Fix residual calculation

[ Upstream commit 30f0ced9971b2d8c8c24ae75786f9079489a012d ]

The existing residual calculation returns an incorrect value when
bytes_xfer == bytes_req. This scenario occurs particularly with drivers
like UART where DMA is scheduled for maximum number of bytes and is
terminated when the bytes inflow stops. At higher baud rates, it could
request the tx_status while there is no bytes left to transfer. This will
lead to incorrect residual being set. Hence return residual as '0' when
bytes transferred equals to the bytes requested.

Fixes: ee17028009d4 ("dmaengine: tegra: Add tegra gpcdma driver")
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20240315124411.17582-1-akhilrajeev@nvidia.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/dma/tegra186-gpc-dma.c