struct dma_iommu_mapping *map;
struct device *dev = _dev;
+ map = tegra_smmu_get_map(dev, tegra_smmu_of_get_swgids(dev));
+ if (!map)
+ return NOTIFY_DONE;
+
switch (event) {
case BUS_NOTIFY_BIND_DRIVER:
if (get_dma_ops(dev) != &arm_dma_ops)
break;
}
- map = tegra_smmu_get_map(dev, tegra_smmu_of_get_swgids(dev));
- if (!map)
- break;
+ WARN_ON(to_dma_iommu_mapping(dev) == map);
if (arm_iommu_attach_device(dev, map)) {
dev_err(dev, "Failed to attach %s\n", dev_name(dev));
break;
/* FALLTHROUGH */
case BUS_NOTIFY_UNBOUND_DRIVER:
+ WARN_ON(!to_dma_iommu_mapping(dev));
+
dev_dbg(dev, "Detaching %s from map %p\n", dev_name(dev),
to_dma_iommu_mapping(dev));
arm_iommu_detach_device(dev);