Lines Matching refs:iova

257 static u32 rk_iova_dte_index(dma_addr_t iova)  in rk_iova_dte_index()  argument
259 return (u32)(iova & RK_IOVA_DTE_MASK) >> RK_IOVA_DTE_SHIFT; in rk_iova_dte_index()
262 static u32 rk_iova_pte_index(dma_addr_t iova) in rk_iova_pte_index() argument
264 return (u32)(iova & RK_IOVA_PTE_MASK) >> RK_IOVA_PTE_SHIFT; in rk_iova_pte_index()
267 static u32 rk_iova_page_offset(dma_addr_t iova) in rk_iova_page_offset() argument
269 return (u32)(iova & RK_IOVA_PAGE_MASK) >> RK_IOVA_PAGE_SHIFT; in rk_iova_page_offset()
304 dma_addr_t iova; in rk_iommu_zap_lines() local
306 for (iova = iova_start; iova < iova_end; iova += SPAGE_SIZE) in rk_iommu_zap_lines()
307 rk_iommu_write(iommu->bases[i], RK_MMU_ZAP_ONE_LINE, iova); in rk_iommu_zap_lines()
470 static void log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova) in log_iova() argument
484 dte_index = rk_iova_dte_index(iova); in log_iova()
485 pte_index = rk_iova_pte_index(iova); in log_iova()
486 page_offset = rk_iova_page_offset(iova); in log_iova()
510 &iova, dte_index, pte_index, page_offset); in log_iova()
522 dma_addr_t iova; in rk_iommu_irq() local
539 iova = rk_iommu_read(iommu->bases[i], RK_MMU_PAGE_FAULT_ADDR); in rk_iommu_irq()
549 &iova, in rk_iommu_irq()
552 log_iova(iommu, i, iova); in rk_iommu_irq()
560 report_iommu_fault(iommu->domain, iommu->dev, iova, in rk_iommu_irq()
570 dev_err(iommu->dev, "BUS_ERROR occurred at %pad\n", &iova); in rk_iommu_irq()
587 dma_addr_t iova) in rk_iommu_iova_to_phys() argument
597 dte = rk_domain->dt[rk_iova_dte_index(iova)]; in rk_iommu_iova_to_phys()
603 pte = page_table[rk_iova_pte_index(iova)]; in rk_iommu_iova_to_phys()
607 phys = rk_pte_page_address(pte) + rk_iova_page_offset(iova); in rk_iommu_iova_to_phys()
615 dma_addr_t iova, size_t size) in rk_iommu_zap_iova() argument
635 rk_iommu_zap_lines(iommu, iova, size); in rk_iommu_zap_iova()
644 dma_addr_t iova, size_t size) in rk_iommu_zap_iova_first_last() argument
646 rk_iommu_zap_iova(rk_domain, iova, SPAGE_SIZE); in rk_iommu_zap_iova_first_last()
648 rk_iommu_zap_iova(rk_domain, iova + size - SPAGE_SIZE, in rk_iommu_zap_iova_first_last()
653 dma_addr_t iova) in rk_dte_get_page_table() argument
662 dte_index = rk_iova_dte_index(iova); in rk_dte_get_page_table()
713 dma_addr_t pte_dma, dma_addr_t iova, in rk_iommu_map_iova() argument
741 rk_iommu_zap_iova_first_last(rk_domain, iova, size); in rk_iommu_map_iova()
749 iova += pte_count * SPAGE_SIZE; in rk_iommu_map_iova()
752 &iova, &page_phys, &paddr, prot); in rk_iommu_map_iova()
762 dma_addr_t pte_dma, iova = (dma_addr_t)_iova; in rk_iommu_map() local
776 page_table = rk_dte_get_page_table(rk_domain, iova); in rk_iommu_map()
782 dte_index = rk_domain->dt[rk_iova_dte_index(iova)]; in rk_iommu_map()
783 pte_index = rk_iova_pte_index(iova); in rk_iommu_map()
786 ret = rk_iommu_map_iova(rk_domain, pte_addr, pte_dma, iova, in rk_iommu_map()
799 dma_addr_t pte_dma, iova = (dma_addr_t)_iova; in rk_iommu_unmap() local
814 dte = rk_domain->dt[rk_iova_dte_index(iova)]; in rk_iommu_unmap()
822 pte_addr = (u32 *)phys_to_virt(pt_phys) + rk_iova_pte_index(iova); in rk_iommu_unmap()
823 pte_dma = pt_phys + rk_iova_pte_index(iova) * sizeof(u32); in rk_iommu_unmap()
829 rk_iommu_zap_iova(rk_domain, iova, unmap_size); in rk_iommu_unmap()