Lines Matching refs:iova

61 static u32 sysmmu_page_offset(sysmmu_iova_t iova, u32 size)  in sysmmu_page_offset()  argument
63 return iova & (size - 1); in sysmmu_page_offset()
67 #define section_offs(iova) sysmmu_page_offset((iova), SECT_SIZE) argument
69 #define lpage_offs(iova) sysmmu_page_offset((iova), LPAGE_SIZE) argument
71 #define spage_offs(iova) sysmmu_page_offset((iova), SPAGE_SIZE) argument
76 static u32 lv1ent_offset(sysmmu_iova_t iova) in lv1ent_offset() argument
78 return iova >> SECT_ORDER; in lv1ent_offset()
81 static u32 lv2ent_offset(sysmmu_iova_t iova) in lv2ent_offset() argument
83 return (iova >> SPAGE_ORDER) & (NUM_LV2ENTRIES - 1); in lv2ent_offset()
141 static sysmmu_pte_t *section_entry(sysmmu_pte_t *pgtable, sysmmu_iova_t iova) in section_entry() argument
143 return pgtable + lv1ent_offset(iova); in section_entry()
146 static sysmmu_pte_t *page_entry(sysmmu_pte_t *sent, sysmmu_iova_t iova) in page_entry() argument
149 lv2table_base(sent)) + lv2ent_offset(iova); in page_entry()
285 sysmmu_iova_t iova, unsigned int num_inv) in __sysmmu_tlb_invalidate_entry() argument
290 __raw_writel((iova & SPAGE_MASK) | 1, in __sysmmu_tlb_invalidate_entry()
292 iova += SPAGE_SIZE; in __sysmmu_tlb_invalidate_entry()
486 sysmmu_iova_t iova) in __sysmmu_tlb_invalidate_flpdcache() argument
489 __raw_writel(iova | 0x1, data->sfrbase + REG_MMU_FLUSH_ENTRY); in __sysmmu_tlb_invalidate_flpdcache()
493 sysmmu_iova_t iova) in sysmmu_tlb_invalidate_flpdcache() argument
502 __sysmmu_tlb_invalidate_flpdcache(data, iova); in sysmmu_tlb_invalidate_flpdcache()
510 sysmmu_iova_t iova, size_t size) in sysmmu_tlb_invalidate_entry() argument
536 data->sfrbase, iova, num_inv); in sysmmu_tlb_invalidate_entry()
543 "disabled. Skipping TLB invalidation @ %#x\n", iova); in sysmmu_tlb_invalidate_entry()
810 sysmmu_pte_t *sent, sysmmu_iova_t iova, short *pgcounter) in alloc_lv2entry() argument
813 WARN(1, "Trying mapping on %#08x mapped with 1MiB page", iova); in alloc_lv2entry()
854 sysmmu_tlb_invalidate_flpdcache(data, iova); in alloc_lv2entry()
859 return page_entry(sent, iova); in alloc_lv2entry()
863 sysmmu_pte_t *sent, sysmmu_iova_t iova, in lv1set_section() argument
868 iova); in lv1set_section()
875 iova); in lv1set_section()
895 sysmmu_tlb_invalidate_flpdcache(data, iova); in lv1set_section()
963 sysmmu_iova_t iova = (sysmmu_iova_t)l_iova; in exynos_iommu_map() local
971 entry = section_entry(domain->pgtable, iova); in exynos_iommu_map()
974 ret = lv1set_section(domain, entry, iova, paddr, in exynos_iommu_map()
975 &domain->lv2entcnt[lv1ent_offset(iova)]); in exynos_iommu_map()
979 pent = alloc_lv2entry(domain, entry, iova, in exynos_iommu_map()
980 &domain->lv2entcnt[lv1ent_offset(iova)]); in exynos_iommu_map()
986 &domain->lv2entcnt[lv1ent_offset(iova)]); in exynos_iommu_map()
991 __func__, ret, size, iova); in exynos_iommu_map()
999 sysmmu_iova_t iova, size_t size) in exynos_iommu_tlb_invalidate_entry() argument
1007 sysmmu_tlb_invalidate_entry(data, iova, size); in exynos_iommu_tlb_invalidate_entry()
1016 sysmmu_iova_t iova = (sysmmu_iova_t)l_iova; in exynos_iommu_unmap() local
1025 ent = section_entry(domain->pgtable, iova); in exynos_iommu_unmap()
1048 ent = page_entry(ent, iova); in exynos_iommu_unmap()
1059 domain->lv2entcnt[lv1ent_offset(iova)] += 1; in exynos_iommu_unmap()
1073 domain->lv2entcnt[lv1ent_offset(iova)] += SPAGES_PER_LPAGE; in exynos_iommu_unmap()
1077 exynos_iommu_tlb_invalidate_entry(domain, iova, size); in exynos_iommu_unmap()
1084 __func__, size, iova, err_pgsize); in exynos_iommu_unmap()
1090 dma_addr_t iova) in exynos_iommu_iova_to_phys() argument
1099 entry = section_entry(domain->pgtable, iova); in exynos_iommu_iova_to_phys()
1102 phys = section_phys(entry) + section_offs(iova); in exynos_iommu_iova_to_phys()
1104 entry = page_entry(entry, iova); in exynos_iommu_iova_to_phys()
1107 phys = lpage_phys(entry) + lpage_offs(iova); in exynos_iommu_iova_to_phys()
1109 phys = spage_phys(entry) + spage_offs(iova); in exynos_iommu_iova_to_phys()