diff options
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_iommu.h')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_iommu.h | 47 |
1 files changed, 13 insertions, 34 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_iommu.h b/drivers/gpu/drm/exynos/exynos_drm_iommu.h index aa267ba..35d923d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_iommu.h +++ b/drivers/gpu/drm/exynos/exynos_drm_iommu.h @@ -26,54 +26,33 @@ #ifndef _EXYNOS_DRM_IOMMU_H_ #define _EXYNOS_DRM_IOMMU_H_ -enum iommu_types { - IOMMU_FIMD = 0, - IOMMU_HDMI, - IOMMU_G2D, - IOMMU_FIMC, - IOMMU_G3D, - IOMMU_ROTATOR, - IOMMU_MASK = 0x3f +struct exynos_iommu_gem_data { + unsigned int gem_handle_in; + void *gem_obj_out; }; -struct iommu_gem_map_params { - struct device *dev; - struct drm_device *drm_dev; - struct drm_file *file; - void *gem_obj; -}; - -#define is_iommu_type_valid(t) (((1 << (t)) & ~(IOMMU_MASK)) ? false : true) - -void exynos_drm_remove_iommu_list(struct list_head *iommu_list, - void *gem_obj); - /* get all pages to gem object and map them to iommu table. */ -dma_addr_t exynos_drm_iommu_map_gem(struct iommu_gem_map_params *params, - struct list_head *iommu_list, - unsigned int gem_handle, - enum iommu_types type); +dma_addr_t exynos_drm_iommu_map_gem(struct drm_device *drm_dev, + struct drm_gem_object *obj); /* unmap device address space to gem object from iommu table. */ -void exynos_drm_iommu_unmap_gem(struct iommu_gem_map_params *params, - dma_addr_t dma_addr, - enum iommu_types type); +void exynos_drm_iommu_unmap_gem(struct drm_gem_object *obj); /* map physical memory region pointed by paddr to iommu table. */ -dma_addr_t exynos_drm_iommu_map(struct device *dev, dma_addr_t paddr, +dma_addr_t exynos_drm_iommu_map(void *in_vmm, dma_addr_t paddr, size_t size); -/* unmap device address space pointed by dma_addr from iommu table. */ -void exynos_drm_iommu_unmap(struct device *dev, dma_addr_t dma_addr); +/* unmap device address space pointed by dev_addr from iommu table. */ +void exynos_drm_iommu_unmap(void *in_vmm, dma_addr_t dev_addr); /* setup device address space for device iommu. */ -int exynos_drm_iommu_setup(struct device *dev); +void *exynos_drm_iommu_setup(unsigned long s_iova, unsigned long size); -int exynos_drm_iommu_activate(struct device *dev); +int exynos_drm_iommu_activate(void *in_vmm, struct device *dev); -void exynos_drm_iommu_deactivate(struct device *dev); +void exynos_drm_iommu_deactivate(void *in_vmm, struct device *dev); /* clean up allocated device address space for device iommu. */ -void exynos_drm_iommu_cleanup(struct device *dev); +void exynos_drm_iommu_cleanup(void *in_vmm); #endif |