Merge tag 'drm-next-2020-06-08' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / include / linux / iommu.h
index 7ef8b0b..b1bfbe6 100644 (file)
@@ -466,6 +466,22 @@ extern phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t io
 extern void iommu_set_fault_handler(struct iommu_domain *domain,
                        iommu_fault_handler_t handler, void *token);
 
+/**
+ * iommu_map_sgtable - Map the given buffer to the IOMMU domain
+ * @domain:    The IOMMU domain to perform the mapping
+ * @iova:      The start address to map the buffer
+ * @sgt:       The sg_table object describing the buffer
+ * @prot:      IOMMU protection bits
+ *
+ * Creates a mapping at @iova for the buffer described by a scatterlist
+ * stored in the given sg_table object in the provided IOMMU domain.
+ */
+static inline size_t iommu_map_sgtable(struct iommu_domain *domain,
+                       unsigned long iova, struct sg_table *sgt, int prot)
+{
+       return iommu_map_sg(domain, iova, sgt->sgl, sgt->orig_nents, prot);
+}
+
 extern void iommu_get_resv_regions(struct device *dev, struct list_head *list);
 extern void iommu_put_resv_regions(struct device *dev, struct list_head *list);
 extern void generic_iommu_put_resv_regions(struct device *dev,