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>
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user