Lines Matching refs:iova
60 #define for_each_gart_pte(gart, iova) \ argument
61 for (iova = gart->iovmm_base; \
62 iova < gart->iovmm_end; \
63 iova += GART_PAGE_SIZE)
66 unsigned long iova, unsigned long pte) in gart_set_pte() argument
68 writel_relaxed(iova, gart->regs + GART_ENTRY_ADDR); in gart_set_pte()
73 unsigned long iova) in gart_read_pte() argument
77 writel_relaxed(iova, gart->regs + GART_ENTRY_ADDR); in gart_read_pte()
85 unsigned long iova; in do_gart_setup() local
87 for_each_gart_pte(gart, iova) in do_gart_setup()
88 gart_set_pte(gart, iova, data ? *(data++) : 0); in do_gart_setup()
95 unsigned long iova, size_t bytes) in gart_iova_range_invalid() argument
97 return unlikely(iova < gart->iovmm_base || bytes != GART_PAGE_SIZE || in gart_iova_range_invalid()
98 iova + bytes > gart->iovmm_end); in gart_iova_range_invalid()
101 static inline bool gart_pte_valid(struct gart_device *gart, unsigned long iova) in gart_pte_valid() argument
103 return !!(gart_read_pte(gart, iova) & GART_ENTRY_PHYS_ADDR_VALID); in gart_pte_valid()
167 static inline int __gart_iommu_map(struct gart_device *gart, unsigned long iova, in __gart_iommu_map() argument
170 if (unlikely(gart_debug && gart_pte_valid(gart, iova))) { in __gart_iommu_map()
175 gart_set_pte(gart, iova, GART_ENTRY_PHYS_ADDR_VALID | pa); in __gart_iommu_map()
180 static int gart_iommu_map(struct iommu_domain *domain, unsigned long iova, in gart_iommu_map() argument
186 if (gart_iova_range_invalid(gart, iova, bytes)) in gart_iommu_map()
190 ret = __gart_iommu_map(gart, iova, (unsigned long)pa); in gart_iommu_map()
197 unsigned long iova) in __gart_iommu_unmap() argument
199 if (unlikely(gart_debug && !gart_pte_valid(gart, iova))) { in __gart_iommu_unmap()
204 gart_set_pte(gart, iova, 0); in __gart_iommu_unmap()
209 static size_t gart_iommu_unmap(struct iommu_domain *domain, unsigned long iova, in gart_iommu_unmap() argument
215 if (gart_iova_range_invalid(gart, iova, bytes)) in gart_iommu_unmap()
219 err = __gart_iommu_unmap(gart, iova); in gart_iommu_unmap()
226 dma_addr_t iova) in gart_iommu_iova_to_phys() argument
231 if (gart_iova_range_invalid(gart, iova, GART_PAGE_SIZE)) in gart_iommu_iova_to_phys()
235 pte = gart_read_pte(gart, iova); in gart_iommu_iova_to_phys()
255 static void gart_iommu_sync_map(struct iommu_domain *domain, unsigned long iova, in gart_iommu_sync_map() argument
290 unsigned long iova; in tegra_gart_suspend() local
300 for_each_gart_pte(gart, iova) in tegra_gart_suspend()
301 *(data++) = gart_read_pte(gart, iova); in tegra_gart_suspend()