]> git.baikalelectronics.ru Git - kernel.git/commit
dmaengine: tegra: Add terminate() for Tegra234
authorAkhil R <akhilrajeev@nvidia.com>
Wed, 20 Jul 2022 10:40:44 +0000 (16:10 +0530)
committerVinod Koul <vkoul@kernel.org>
Tue, 26 Jul 2022 12:42:21 +0000 (18:12 +0530)
commit74eb1e326289fd90d8c9921011921751367a933e
tree789e003fff27c00dd24c8d847d1189431aedbb98
parentb6100a363340547e45e32b9c4fc80311ce46fd3d
dmaengine: tegra: Add terminate() for Tegra234

In certain cases where the DMA client bus gets corrupted or if the
end device ceases to send/receive data, DMA can wait indefinitely
for the data to be received/sent. Attempting to terminate the transfer
will put the DMA in pause flush mode and it remains there.

The channel is irrecoverable once this pause times out in Tegra194 and
earlier chips. Whereas, from Tegra234, it can be recovered by disabling
the channel and reprograming it.

Hence add a new terminate() function that ignores the outcome of
dma_pause() so that terminate_all() can proceed to disable the channel.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20220720104045.16099-3-akhilrajeev@nvidia.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/tegra186-gpc-dma.c