linux/drivers/dma/dw
Andy Shevchenko e6b46f01d9 dmaengine: dw: Initialize channel before each transfer
[ Upstream commit 99ba8b9b0d ]

In some cases DMA can be used only with a consumer which does runtime power
management and on the platforms, that have DMA auto power gating logic
(see comments in the drivers/acpi/acpi_lpss.c), may result in DMA losing
its context. Simple mitigation of this issue is to initialize channel
each time the consumer initiates a transfer.

Fixes: cfdf5b6cc5 ("dw_dmac: add support for Lynxpoint DMA controllers")
Reported-by: Tsuchiya Yuto <kitakar@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206403
Link: https://lore.kernel.org/r/20200705115620.51929-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-07-22 09:33:02 +02:00
..
Kconfig dmaengine: dw: convert to SPDX identifiers 2019-01-07 17:57:13 +05:30
Makefile dmaengine: dw: platform: Split OF helpers to separate module 2019-08-21 09:41:28 +05:30
acpi.c dmaengine: dw: platform: Split ACPI helpers to separate module 2019-08-21 09:41:28 +05:30
core.c dmaengine: dw: Initialize channel before each transfer 2020-07-22 09:33:02 +02:00
dw.c dmaengine: dw: Don't pollute CTL_LO on iDMA 32-bit 2019-01-07 17:57:13 +05:30
idma32.c dmaengine: dw: Don't pollute CTL_LO on iDMA 32-bit 2019-01-07 17:57:13 +05:30
internal.h dmaengine: dw: platform: Split OF helpers to separate module 2019-08-21 09:41:28 +05:30
of.c dmaengine: dw: platform: Split OF helpers to separate module 2019-08-21 09:41:28 +05:30
pci.c dmaengine: dw: Export struct dw_dma_chip_pdata for wider use 2019-08-21 09:41:27 +05:30
platform.c dmaengine: dw: platform: Mark 'hclk' clock optional 2020-01-17 19:48:49 +01:00
regs.h dmaengine: dw: convert to SPDX identifiers 2019-01-07 17:57:13 +05:30