@@ -1261,6 +1261,11 @@ static int exynos_iommu_add_device(struct device *dev)
}
iommu_group_put(group);
+ /* There is always at least one entry, see exynos_iommu_of_xlate() */
+ data = list_first_entry(&owner->controllers,
+ struct sysmmu_drvdata, owner_node);
+ iommu_device_link(&data->iommu, dev);
+
return 0;
}
@@ -1286,6 +1291,11 @@ static void exynos_iommu_remove_device(struct device *dev)
list_for_each_entry(data, &owner->controllers, owner_node)
device_link_del(data->link);
+
+ /* There is always at least one entry, see exynos_iommu_of_xlate() */
+ data = list_first_entry(&owner->controllers,
+ struct sysmmu_drvdata, owner_node);
+ iommu_device_unlink(&data->iommu, dev);
}
static int exynos_iommu_of_xlate(struct device *dev,