summaryrefslogtreecommitdiff
path: root/include/dm/device.h
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@openbsd.org>2023-01-21 20:27:52 +0100
committerTom Rini <trini@konsulko.com>2023-01-27 14:47:57 -0500
commitdd6b68ed4f5bba78c0cd9765fa48b10cb1542dc7 (patch)
treebb7935c4b8651cdeba0e8915ca659894c085bbad /include/dm/device.h
parent053827b3c39e5a3318002f570679ec46294aa98b (diff)
iommu: Add DMA mapping operations
In order to support IOMMUs in non-bypass mode we need device ops to map and unmap DMA memory. The map operation enters a mapping for a region specified by CPU address and size into the translation table of the IOMMU and returns a DMA address suitable for programming the device to do DMA. The unmap operation removes this mapping from the translation table of the IOMMU. Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Diffstat (limited to 'include/dm/device.h')
-rw-r--r--include/dm/device.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/dm/device.h b/include/dm/device.h
index f3f953c9afc..e9460386ca9 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -165,6 +165,7 @@ enum {
* automatically when the device is removed / unbound
* @dma_offset: Offset between the physical address space (CPU's) and the
* device's bus address space
+ * @iommu: IOMMU device associated with this device
*/
struct udevice {
const struct driver *driver;
@@ -194,6 +195,9 @@ struct udevice {
#if CONFIG_IS_ENABLED(DM_DMA)
ulong dma_offset;
#endif
+#if CONFIG_IS_ENABLED(IOMMU)
+ struct udevice *iommu;
+#endif
};
static inline int dm_udevice_size(void)