struct list_head client; /* entry of exynos_iommu_domain.clients */
struct device *dev;
struct device *sysmmu;
- struct iommu_domain *domain;
- void *vmm_data; /* IO virtual memory manager's data */
- spinlock_t lock; /* Lock to preserve consistency of System MMU */
};
struct exynos_iommu_domain {
BUG_ON(!has_sysmmu(dev));
- spin_lock_irqsave(&owner->lock, flags);
-
data = dev_get_drvdata(owner->sysmmu);
ret = __sysmmu_enable(data, pgtable, domain);
if (ret >= 0)
data->master = dev;
- spin_unlock_irqrestore(&owner->lock, flags);
-
return ret;
}
BUG_ON(!has_sysmmu(dev));
- spin_lock_irqsave(&owner->lock, flags);
-
data = dev_get_drvdata(owner->sysmmu);
disabled = __sysmmu_disable(data);
if (disabled)
data->master = NULL;
- spin_unlock_irqrestore(&owner->lock, flags);
-
return disabled;
}