|
@@ -2311,7 +2311,14 @@ int arm_iommu_attach_device(struct device *dev,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(arm_iommu_attach_device);
|
|
|
|
|
|
-static void __arm_iommu_detach_device(struct device *dev)
|
|
|
+/**
|
|
|
+ * arm_iommu_detach_device
|
|
|
+ * @dev: valid struct device pointer
|
|
|
+ *
|
|
|
+ * Detaches the provided device from a previously attached map.
|
|
|
+ * This voids the dma operations (dma_map_ops pointer)
|
|
|
+ */
|
|
|
+void arm_iommu_detach_device(struct device *dev)
|
|
|
{
|
|
|
struct dma_iommu_mapping *mapping;
|
|
|
|
|
@@ -2324,22 +2331,10 @@ static void __arm_iommu_detach_device(struct device *dev)
|
|
|
iommu_detach_device(mapping->domain, dev);
|
|
|
kref_put(&mapping->kref, release_iommu_mapping);
|
|
|
to_dma_iommu_mapping(dev) = NULL;
|
|
|
+ set_dma_ops(dev, NULL);
|
|
|
|
|
|
pr_debug("Detached IOMMU controller from %s device.\n", dev_name(dev));
|
|
|
}
|
|
|
-
|
|
|
-/**
|
|
|
- * arm_iommu_detach_device
|
|
|
- * @dev: valid struct device pointer
|
|
|
- *
|
|
|
- * Detaches the provided device from a previously attached map.
|
|
|
- * This voids the dma operations (dma_map_ops pointer)
|
|
|
- */
|
|
|
-void arm_iommu_detach_device(struct device *dev)
|
|
|
-{
|
|
|
- __arm_iommu_detach_device(dev);
|
|
|
- set_dma_ops(dev, NULL);
|
|
|
-}
|
|
|
EXPORT_SYMBOL_GPL(arm_iommu_detach_device);
|
|
|
|
|
|
static const struct dma_map_ops *arm_get_iommu_dma_map_ops(bool coherent)
|
|
@@ -2379,7 +2374,7 @@ static void arm_teardown_iommu_dma_ops(struct device *dev)
|
|
|
if (!mapping)
|
|
|
return;
|
|
|
|
|
|
- __arm_iommu_detach_device(dev);
|
|
|
+ arm_iommu_detach_device(dev);
|
|
|
arm_iommu_release_mapping(mapping);
|
|
|
}
|
|
|
|