Lines Matching defs:iova

158 static unsigned int iova_pd_index(unsigned long iova)
160 return (iova >> SMMU_PDE_SHIFT) & (SMMU_NUM_PDE - 1);
163 static unsigned int iova_pt_index(unsigned long iova)
165 return (iova >> SMMU_PTE_SHIFT) & (SMMU_NUM_PTE - 1);
225 unsigned long iova)
234 value |= SMMU_TLB_FLUSH_ASID_MATCH | SMMU_TLB_FLUSH_VA_SECTION(iova);
240 unsigned long iova)
249 value |= SMMU_TLB_FLUSH_ASID_MATCH | SMMU_TLB_FLUSH_VA_GROUP(iova);
546 static void tegra_smmu_set_pde(struct tegra_smmu_as *as, unsigned long iova,
549 unsigned int pd_index = iova_pd_index(iova);
563 smmu_flush_tlb_section(smmu, as->id, iova);
567 static u32 *tegra_smmu_pte_offset(struct page *pt_page, unsigned long iova)
571 return pt + iova_pt_index(iova);
574 static u32 *tegra_smmu_pte_lookup(struct tegra_smmu_as *as, unsigned long iova,
577 unsigned int pd_index = iova_pd_index(iova);
589 return tegra_smmu_pte_offset(pt_page, iova);
592 static u32 *as_get_pte(struct tegra_smmu_as *as, dma_addr_t iova,
595 unsigned int pde = iova_pd_index(iova);
617 tegra_smmu_set_pde(as, iova, SMMU_MK_PDE(dma, SMMU_PDE_ATTR |
627 return tegra_smmu_pte_offset(as->pts[pde], iova);
630 static void tegra_smmu_pte_get_use(struct tegra_smmu_as *as, unsigned long iova)
632 unsigned int pd_index = iova_pd_index(iova);
637 static void tegra_smmu_pte_put_use(struct tegra_smmu_as *as, unsigned long iova)
639 unsigned int pde = iova_pd_index(iova);
651 tegra_smmu_set_pde(as, iova, 0);
659 static void tegra_smmu_set_pte(struct tegra_smmu_as *as, unsigned long iova,
670 smmu_flush_tlb_group(smmu, as->id, iova);
675 unsigned long iova, gfp_t gfp,
678 unsigned int pde = iova_pd_index(iova);
714 __tegra_smmu_map(struct iommu_domain *domain, unsigned long iova,
724 page = as_get_pde_page(as, iova, gfp, flags);
728 pte = as_get_pte(as, iova, &pte_dma, page);
734 tegra_smmu_pte_get_use(as, iova);
744 tegra_smmu_set_pte(as, iova, pte, pte_dma,
751 __tegra_smmu_unmap(struct iommu_domain *domain, unsigned long iova,
758 pte = tegra_smmu_pte_lookup(as, iova, &pte_dma);
762 tegra_smmu_set_pte(as, iova, pte, pte_dma, 0);
763 tegra_smmu_pte_put_use(as, iova);
768 static int tegra_smmu_map(struct iommu_domain *domain, unsigned long iova,
777 ret = __tegra_smmu_map(domain, iova, paddr, size, prot, gfp, &flags);
786 static size_t tegra_smmu_unmap(struct iommu_domain *domain, unsigned long iova,
793 size = __tegra_smmu_unmap(domain, iova, size, gather);
800 dma_addr_t iova)
807 pte = tegra_smmu_pte_lookup(as, iova, &pte_dma);
813 return SMMU_PFN_PHYS(pfn) + SMMU_OFFSET_IN_PAGE(iova);