Lines Matching defs:iova

166 static u32 sun50i_iova_get_dte_index(dma_addr_t iova)
168 return FIELD_GET(SUN50I_IOVA_DTE_MASK, iova);
171 static u32 sun50i_iova_get_pte_index(dma_addr_t iova)
173 return FIELD_GET(SUN50I_IOVA_PTE_MASK, iova);
176 static u32 sun50i_iova_get_page_offset(dma_addr_t iova)
178 return FIELD_GET(SUN50I_IOVA_PAGE_MASK, iova);
302 unsigned long iova)
307 iommu_write(iommu, IOMMU_TLB_IVLD_ADDR_REG, iova);
319 unsigned long iova)
324 iommu_write(iommu, IOMMU_PC_IVLD_ADDR_REG, iova);
335 unsigned long iova, size_t size)
341 sun50i_iommu_zap_iova(iommu, iova);
342 sun50i_iommu_zap_iova(iommu, iova + SPAGE_SIZE);
344 sun50i_iommu_zap_iova(iommu, iova + size);
345 sun50i_iommu_zap_iova(iommu, iova + size + SPAGE_SIZE);
347 sun50i_iommu_zap_ptw_cache(iommu, iova);
348 sun50i_iommu_zap_ptw_cache(iommu, iova + SZ_1M);
350 sun50i_iommu_zap_ptw_cache(iommu, iova + size);
351 sun50i_iommu_zap_ptw_cache(iommu, iova + size + SZ_1M);
407 unsigned long iova, size_t size)
414 sun50i_iommu_zap_range(iommu, iova, size);
556 dma_addr_t iova, gfp_t gfp)
564 dte_addr = &sun50i_domain->dt[sun50i_iova_get_dte_index(iova)];
594 static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova,
604 page_table = sun50i_dte_get_page_table(sun50i_domain, iova, gfp);
610 pte_index = sun50i_iova_get_pte_index(iova);
615 "iova %pad already mapped to %pa cannot remap to %pa prot: %#x\n",
616 &iova, &page_phys, &paddr, prot);
629 static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova,
637 dte = sun50i_domain->dt[sun50i_iova_get_dte_index(iova)];
642 pte_addr = (u32 *)phys_to_virt(pt_phys) + sun50i_iova_get_pte_index(iova);
654 dma_addr_t iova)
661 dte = sun50i_domain->dt[sun50i_iova_get_dte_index(iova)];
667 pte = page_table[sun50i_iova_get_pte_index(iova)];
672 sun50i_iova_get_page_offset(iova);
853 unsigned master, phys_addr_t iova,
857 &iova, master, (prot == IOMMU_FAULT_WRITE) ? "wr" : "rd");
860 report_iommu_fault(iommu->domain, iommu->dev, iova, prot);
864 sun50i_iommu_zap_range(iommu, iova, SPAGE_SIZE);
871 phys_addr_t iova;
877 iova = iommu_read(iommu, addr_reg);
886 sun50i_iommu_report_fault(iommu, master, iova, IOMMU_FAULT_READ);
888 return iova;
894 phys_addr_t iova;
903 iova = iommu_read(iommu, IOMMU_INT_ERR_ADDR_REG(master));
941 sun50i_iommu_report_fault(iommu, master, iova, dir);
943 return iova;