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;
}
示例#2
0
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;
}
示例#3
0
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;
}