Loading drivers/iommu/Makefile +1 −1 Original line number Diff line number Diff line obj-$(CONFIG_IOMMU_API) += iommu.o obj-$(CONFIG_OF_IOMMU) += of_iommu.o obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o msm_iommu_domains.o obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o msm_iommu_domains.o msm_iommu_mapping.o obj-$(CONFIG_MSM_IOMMU_V0) += msm_iommu-v0.o msm_iommu_dev-v0.o obj-$(CONFIG_MSM_IOMMU_V1) += msm_iommu-v1.o msm_iommu_dev-v1.o msm_iommu_sec.o obj-$(CONFIG_MSM_IOMMU_PMON) += msm_iommu_perfmon.o Loading drivers/staging/android/ion/msm/ion_iommu_map.c→drivers/iommu/msm_iommu_mapping.c +0 −0 File moved. View file drivers/staging/android/ion/msm/Makefile +1 −1 Original line number Diff line number Diff line obj-y += msm_ion.o ion_iommu_map.o secure_buffer.o obj-y += msm_ion.o secure_buffer.o ifdef CONFIG_COMPAT obj-y += compat_msm_ion.o endif drivers/staging/android/ion/msm/msm_ion.h +0 −59 Original line number Diff line number Diff line Loading @@ -116,32 +116,6 @@ int ion_handle_get_flags(struct ion_client *client, struct ion_handle *handle, unsigned long *flags); /** * ion_map_iommu - map the given handle into an iommu * * @client - client who allocated the handle * @handle - handle to map * @domain_num - domain number to map to * @partition_num - partition number to allocate iova from * @align - alignment for the iova * @iova_length - length of iova to map. If the iova length is * greater than the handle length, the remaining * address space will be mapped to a dummy buffer. * @iova - pointer to store the iova address * @buffer_size - pointer to store the size of the buffer * @flags - flags for options to map * @iommu_flags - flags specific to the iommu. * * Maps the handle into the iova space specified via domain number. Iova * will be allocated from the partition specified via partition_num. * Returns 0 on success, negative value on error. */ int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags); /** * ion_handle_get_size - get the allocated size of a given handle Loading @@ -159,21 +133,6 @@ int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int ion_handle_get_size(struct ion_client *client, struct ion_handle *handle, unsigned long *size); /** * ion_unmap_iommu - unmap the handle from an iommu * * @client - client who allocated the handle * @handle - handle to unmap * @domain_num - domain to unmap from * @partition_num - partition to unmap from * * Decrement the reference count on the iommu mapping. If the count is * 0, the mapping will be removed from the iommu. */ void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num); /** * msm_ion_do_cache_op - do cache operations. * Loading Loading @@ -216,30 +175,12 @@ static inline struct ion_client *msm_ion_client_create(const char *name) return ERR_PTR(-ENODEV); } static inline int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags) { return -ENODEV; } static inline int ion_handle_get_size(struct ion_client *client, struct ion_handle *handle, unsigned long *size) { return -ENODEV; } static inline void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num) { return; } static inline int msm_ion_do_cache_op(struct ion_client *client, struct ion_handle *handle, void *vaddr, unsigned long len, unsigned int cmd) Loading include/linux/msm_iommu_domains.h +58 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include <linux/mutex.h> #include <linux/genalloc.h> #include <linux/rbtree.h> #include <linux/msm_ion.h> #define MSM_IOMMU_DOMAIN_SECURE 0x1 Loading Loading @@ -87,6 +88,45 @@ struct msm_iova_layout { }; #if defined(CONFIG_MSM_IOMMU) /** * ion_map_iommu - map the given handle into an iommu * * @client - client who allocated the handle * @handle - handle to map * @domain_num - domain number to map to * @partition_num - partition number to allocate iova from * @align - alignment for the iova * @iova_length - length of iova to map. If the iova length is * greater than the handle length, the remaining * address space will be mapped to a dummy buffer. * @iova - pointer to store the iova address * @buffer_size - pointer to store the size of the buffer * @flags - flags for options to map * @iommu_flags - flags specific to the iommu. * * Maps the handle into the iova space specified via domain number. Iova * will be allocated from the partition specified via partition_num. * Returns 0 on success, negative value on error. */ int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags); /** * ion_unmap_iommu - unmap the handle from an iommu * * @client - client who allocated the handle * @handle - handle to unmap * @domain_num - domain to unmap from * @partition_num - partition to unmap from * * Decrement the reference count on the iommu mapping. If the count is * 0, the mapping will be removed from the iommu. */ void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num); extern void msm_iommu_set_client_name(struct iommu_domain *domain, char const *name); Loading Loading @@ -139,6 +179,24 @@ extern int msm_register_domain(struct msm_iova_layout *layout); extern int msm_unregister_domain(struct iommu_domain *domain); #else static inline int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags) { return -ENODEV; } static inline void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num) { return; } static inline void msm_iommu_set_client_name(struct iommu_domain *domain, char const *name) { Loading Loading
drivers/iommu/Makefile +1 −1 Original line number Diff line number Diff line obj-$(CONFIG_IOMMU_API) += iommu.o obj-$(CONFIG_OF_IOMMU) += of_iommu.o obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o msm_iommu_domains.o obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o msm_iommu_domains.o msm_iommu_mapping.o obj-$(CONFIG_MSM_IOMMU_V0) += msm_iommu-v0.o msm_iommu_dev-v0.o obj-$(CONFIG_MSM_IOMMU_V1) += msm_iommu-v1.o msm_iommu_dev-v1.o msm_iommu_sec.o obj-$(CONFIG_MSM_IOMMU_PMON) += msm_iommu_perfmon.o Loading
drivers/staging/android/ion/msm/ion_iommu_map.c→drivers/iommu/msm_iommu_mapping.c +0 −0 File moved. View file
drivers/staging/android/ion/msm/Makefile +1 −1 Original line number Diff line number Diff line obj-y += msm_ion.o ion_iommu_map.o secure_buffer.o obj-y += msm_ion.o secure_buffer.o ifdef CONFIG_COMPAT obj-y += compat_msm_ion.o endif
drivers/staging/android/ion/msm/msm_ion.h +0 −59 Original line number Diff line number Diff line Loading @@ -116,32 +116,6 @@ int ion_handle_get_flags(struct ion_client *client, struct ion_handle *handle, unsigned long *flags); /** * ion_map_iommu - map the given handle into an iommu * * @client - client who allocated the handle * @handle - handle to map * @domain_num - domain number to map to * @partition_num - partition number to allocate iova from * @align - alignment for the iova * @iova_length - length of iova to map. If the iova length is * greater than the handle length, the remaining * address space will be mapped to a dummy buffer. * @iova - pointer to store the iova address * @buffer_size - pointer to store the size of the buffer * @flags - flags for options to map * @iommu_flags - flags specific to the iommu. * * Maps the handle into the iova space specified via domain number. Iova * will be allocated from the partition specified via partition_num. * Returns 0 on success, negative value on error. */ int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags); /** * ion_handle_get_size - get the allocated size of a given handle Loading @@ -159,21 +133,6 @@ int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int ion_handle_get_size(struct ion_client *client, struct ion_handle *handle, unsigned long *size); /** * ion_unmap_iommu - unmap the handle from an iommu * * @client - client who allocated the handle * @handle - handle to unmap * @domain_num - domain to unmap from * @partition_num - partition to unmap from * * Decrement the reference count on the iommu mapping. If the count is * 0, the mapping will be removed from the iommu. */ void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num); /** * msm_ion_do_cache_op - do cache operations. * Loading Loading @@ -216,30 +175,12 @@ static inline struct ion_client *msm_ion_client_create(const char *name) return ERR_PTR(-ENODEV); } static inline int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags) { return -ENODEV; } static inline int ion_handle_get_size(struct ion_client *client, struct ion_handle *handle, unsigned long *size) { return -ENODEV; } static inline void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num) { return; } static inline int msm_ion_do_cache_op(struct ion_client *client, struct ion_handle *handle, void *vaddr, unsigned long len, unsigned int cmd) Loading
include/linux/msm_iommu_domains.h +58 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include <linux/mutex.h> #include <linux/genalloc.h> #include <linux/rbtree.h> #include <linux/msm_ion.h> #define MSM_IOMMU_DOMAIN_SECURE 0x1 Loading Loading @@ -87,6 +88,45 @@ struct msm_iova_layout { }; #if defined(CONFIG_MSM_IOMMU) /** * ion_map_iommu - map the given handle into an iommu * * @client - client who allocated the handle * @handle - handle to map * @domain_num - domain number to map to * @partition_num - partition number to allocate iova from * @align - alignment for the iova * @iova_length - length of iova to map. If the iova length is * greater than the handle length, the remaining * address space will be mapped to a dummy buffer. * @iova - pointer to store the iova address * @buffer_size - pointer to store the size of the buffer * @flags - flags for options to map * @iommu_flags - flags specific to the iommu. * * Maps the handle into the iova space specified via domain number. Iova * will be allocated from the partition specified via partition_num. * Returns 0 on success, negative value on error. */ int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags); /** * ion_unmap_iommu - unmap the handle from an iommu * * @client - client who allocated the handle * @handle - handle to unmap * @domain_num - domain to unmap from * @partition_num - partition to unmap from * * Decrement the reference count on the iommu mapping. If the count is * 0, the mapping will be removed from the iommu. */ void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num); extern void msm_iommu_set_client_name(struct iommu_domain *domain, char const *name); Loading Loading @@ -139,6 +179,24 @@ extern int msm_register_domain(struct msm_iova_layout *layout); extern int msm_unregister_domain(struct iommu_domain *domain); #else static inline int ion_map_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num, unsigned long align, unsigned long iova_length, ion_phys_addr_t *iova, unsigned long *buffer_size, unsigned long flags, unsigned long iommu_flags) { return -ENODEV; } static inline void ion_unmap_iommu(struct ion_client *client, struct ion_handle *handle, int domain_num, int partition_num) { return; } static inline void msm_iommu_set_client_name(struct iommu_domain *domain, char const *name) { Loading