int sprd_iommu_mm_iova_unmap(struct sprd_iommu_dev *dev, unsigned long iova, size_t iova_length, struct ion_buffer *handle) { int err=-1; sprd_iommu_mm_enable(dev); err = sprd_iommu_iova_unmap(dev,iova,iova_length,handle); sprd_iommu_mm_disable(dev); return err; }
int sprd_iommu_mm_iova_unmap(struct sprd_iommu_dev *dev, unsigned long iova, size_t iova_length, struct ion_buffer *handle) { int err=-1; err = sprd_iommu_iova_unmap(dev,iova,iova_length,handle); mutex_lock(&dev->mutex_clk_op); dev->map_count--; if (0 == dev->map_count) sprd_iommu_mm_disable(dev); mutex_unlock(&dev->mutex_clk_op); return err; }
int sprd_iommu_gsp0_iova_unmap(struct sprd_iommu_dev *dev, unsigned long iova, size_t iova_length) { int err = -1; mutex_lock(&dev->mutex_map); err = sprd_iommu_iova_unmap(dev, iova, iova_length); dev->map_count--; if (0 == dev->map_count) sprd_iommu_disable(dev); mutex_unlock(&dev->mutex_map); return err; }