mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00:00
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:
parent
053827b3c3
commit
dd6b68ed4f
3 changed files with 56 additions and 0 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue