On Thu, Mar 10, 2016 at 8:05 AM, Niklas S??derlund
<niklas.soderlund@xxxxxxxxxxxx> wrote:
Hi Christoph,
On 2016-03-07 23:38:47 -0800, Christoph Hellwig wrote:
Please add some documentation on where/how this should be used. It's
not a very obvious interface.
Good idea, I have added the following to Documentation/DMA-API.txt and
folded it in to this patch. Do you feel it's adequate and do you know
anywhere else I should add documentation?
diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt
index 45ef3f2..248556a 100644
--- a/Documentation/DMA-API.txt
+++ b/Documentation/DMA-API.txt
@@ -277,14 +277,29 @@ and <size> parameters are provided to do partial page mapping, it is
recommended that you never use these unless you really know what the
cache width is.
+dma_addr_t
+dma_map_resource(struct device *dev, phys_addr_t phys_addr, size_t size,
+ enum dma_data_direction dir, struct dma_attrs *attrs)
+
+Maps a MMIO region so it can be accessed by the device and returns the
+DMA address of the memory. API should only be used to map device MMIO,
+mapping of RAM is not permitted.
+
I think it is confusing to use the dma_ prefix for this peer-to-peer
mmio functionality. dma_addr_t is a device's view of host memory.
Something like bus_addr_t bus_map_resource(). Doesn't this routine
also need the source device in addition to the target device? The
resource address is from the perspective of the host cpu, it may be a
different address space in the view of two devices relative to each
other.