dmaengine: add support for reporting pause and resume separately
authorMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 2 Jul 2018 13:08:10 +0000 (15:08 +0200)
committerVinod Koul <vkoul@kernel.org>
Mon, 9 Jul 2018 17:29:04 +0000 (22:59 +0530)
commitd8095f94e19581057bcad35b8a725aa739e77595
tree5926a5a47750d50d9498b8126ccd5db0735856f5
parentce397d215ccd07b8ae3f71db689aedb85d56ab40
dmaengine: add support for reporting pause and resume separately

'cmd_pause' DMA channel capability means that respective DMA engine
supports both pausing and resuming given DMA channel. However, in some
cases it is important to know if DMA channel can be paused without the
need to resume it. This is a typical requirement for proper residue
reading on transfer timeout in UART drivers. There are also some DMA
engines with limited hardware, which doesn't really support resuming.

Reporting pause and resume capabilities separately allows UART drivers to
properly check for the really required capabilities and operate in DMA
mode also in systems with limited DMA hardware. On the other hand drivers,
which rely on full channel suspend/resume support, should now check for
both 'pause' and 'resume' features.

Existing clients of dma_get_slave_caps() have been checked and the only
driver which rely on proper channel resuming is soc-generic-dmaengine-pcm
driver, which has been updated to check the newly added capability.
Existing 'cmd_pause' now only indicates that DMA engine support pausing
given DMA channel.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dmaengine.c
include/linux/dmaengine.h
sound/soc/soc-generic-dmaengine-pcm.c