Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1b39b23 authored by Liam Mark's avatar Liam Mark Committed by Patrick Daly
Browse files

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: default avatarLiam Mark <lmark@codeaurora.org>
Signed-off-by: default avatarPatrick Daly <pdaly@codeaurora.org>
parent 3ba41cfc
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -176,3 +176,22 @@ DMA_ATTR_IOMMU_USE_UPSTREAM_HINT
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.
+11 −0
Original line number Diff line number Diff line
@@ -87,6 +87,17 @@
 * may be designed to use the original attributes instead.
 */
#define DMA_ATTR_IOMMU_USE_UPSTREAM_HINT	(1UL << 13)
/*
 * 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.
 */
#define DMA_ATTR_FORCE_COHERENT			(1UL << 14)
/*
 * 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.
 */
#define DMA_ATTR_FORCE_NON_COHERENT		(1UL << 15)

/*
 * A dma_addr_t can hold any valid DMA or bus address for the platform.