common: DMA-mapping: add per-buffer coherent mappings attributes

The DMA_ATTR_FORCE_COHERENT DMA attribute can be used to force a buffer
to be mapped as IO coherent.

The DMA_ATTR_FORCE_NON_COHERENT DMA attribute can be used to force a
buffer to not be mapped as IO coherent.

Change-Id: Id80d77a5ccd797eec36b45b320423fb46c9f5861
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
diff --git a/Documentation/DMA-attributes.txt b/Documentation/DMA-attributes.txt
index 9fa070c..d534246 100644
--- a/Documentation/DMA-attributes.txt
+++ b/Documentation/DMA-attributes.txt
@@ -176,3 +176,22 @@
 DMA_ATTR_IOMMU_USE_UPSTREAM_HINT: Normally an smmu will override any bus
 attributes (i.e cacheablilty) provided by the client device. Some hardware
 may be designed to use the original attributes instead.
+
+DMA_ATTR_FORCE_COHERENT
+-----------------------
+
+When passed to a DMA map call the DMA_ATTR_FORCE_COHERENT DMA
+attribute can be used to force a buffer to be mapped as IO coherent.
+This DMA attribute is only currently supported for arm64 stage 1 IOMMU
+mappings.
+
+DMA_ATTR_FORCE_NON_COHERENT
+---------------------------
+
+When passed to a DMA map call the DMA_ATTR_FORCE_NON_COHERENT DMA
+attribute can be used to force a buffer to not be mapped as IO
+coherent.
+The DMA_ATTR_FORCE_NON_COHERENT DMA attribute overrides the buffer IO
+coherency configuration set by making the device IO coherent.
+This DMA attribute is only currently supported for arm64 stage 1 IOMMU
+mappings.