dmaengine: axi-dmac: Sanity check memory mapped interface support
authorLars-Peter Clausen <lars@metafoo.de>
Thu, 16 May 2019 08:31:34 +0000 (11:31 +0300)
committerVinod Koul <vkoul@kernel.org>
Tue, 21 May 2019 05:08:18 +0000 (10:38 +0530)
commitb5d89905d0391de2f0e04b709ab60eee6cf76a6e
tree6d5e7063efb48ea795beb94780719c17b42ccd2f
parenta3ee0bf23eaec2ae46fc6b1266bdaa5995b55c1e
dmaengine: axi-dmac: Sanity check memory mapped interface support

The AXI-DMAC supports different types of interface for the data source and
destination ports. Typically one of those ports is a memory-mapped
interface while the other is some kind of streaming interface.

The information about which kind of interface is used for each port is
encoded in the devicetree.

It is also possible in the driver to detect whether a port supports
memory-mapped transfers or not. For streaming interfaces the address
register is read-only and will always return 0. So in order to check if a
port supports memory-mapped transfers write a non-zero value to the
corresponding address register and check that the value read-back is still
non zero.

This allows to detect mismatches between the devicetree description and the
actual hardware configuration.

Unfortunately it is not possible to autodetect the interface types since
there is no method to distinguish between the different streaming ports. So
the best thing that can be done is to error out when a memory mapped port
is described in the devicetree but none is detected in the hardware.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dma-axi-dmac.c