• Home
  • Raw
  • Download

Lines Matching refs:iova

164 static u32 sun50i_iova_get_dte_index(dma_addr_t iova)  in sun50i_iova_get_dte_index()  argument
166 return FIELD_GET(SUN50I_IOVA_DTE_MASK, iova); in sun50i_iova_get_dte_index()
169 static u32 sun50i_iova_get_pte_index(dma_addr_t iova) in sun50i_iova_get_pte_index() argument
171 return FIELD_GET(SUN50I_IOVA_PTE_MASK, iova); in sun50i_iova_get_pte_index()
174 static u32 sun50i_iova_get_page_offset(dma_addr_t iova) in sun50i_iova_get_page_offset() argument
176 return FIELD_GET(SUN50I_IOVA_PAGE_MASK, iova); in sun50i_iova_get_page_offset()
484 dma_addr_t iova, gfp_t gfp) in sun50i_dte_get_page_table() argument
492 dte_addr = &sun50i_domain->dt[sun50i_iova_get_dte_index(iova)]; in sun50i_dte_get_page_table()
522 static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, in sun50i_iommu_map() argument
531 page_table = sun50i_dte_get_page_table(sun50i_domain, iova, gfp); in sun50i_iommu_map()
537 pte_index = sun50i_iova_get_pte_index(iova); in sun50i_iommu_map()
543 &iova, &page_phys, &paddr, prot); in sun50i_iommu_map()
555 static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova, in sun50i_iommu_unmap() argument
563 dte = sun50i_domain->dt[sun50i_iova_get_dte_index(iova)]; in sun50i_iommu_unmap()
568 pte_addr = (u32 *)phys_to_virt(pt_phys) + sun50i_iova_get_pte_index(iova); in sun50i_iommu_unmap()
580 dma_addr_t iova) in sun50i_iommu_iova_to_phys() argument
587 dte = sun50i_domain->dt[sun50i_iova_get_dte_index(iova)]; in sun50i_iommu_iova_to_phys()
593 pte = page_table[sun50i_iova_get_pte_index(iova)]; in sun50i_iommu_iova_to_phys()
598 sun50i_iova_get_page_offset(iova); in sun50i_iommu_iova_to_phys()
790 unsigned master, phys_addr_t iova, in sun50i_iommu_report_fault() argument
794 &iova, master, (prot == IOMMU_FAULT_WRITE) ? "wr" : "rd"); in sun50i_iommu_report_fault()
797 report_iommu_fault(iommu->domain, iommu->dev, iova, prot); in sun50i_iommu_report_fault()
806 phys_addr_t iova; in sun50i_iommu_handle_pt_irq() local
812 iova = iommu_read(iommu, addr_reg); in sun50i_iommu_handle_pt_irq()
821 sun50i_iommu_report_fault(iommu, master, iova, IOMMU_FAULT_READ); in sun50i_iommu_handle_pt_irq()
823 return iova; in sun50i_iommu_handle_pt_irq()
829 phys_addr_t iova; in sun50i_iommu_handle_perm_irq() local
838 iova = iommu_read(iommu, IOMMU_INT_ERR_ADDR_REG(master)); in sun50i_iommu_handle_perm_irq()
876 sun50i_iommu_report_fault(iommu, master, iova, dir); in sun50i_iommu_handle_perm_irq()
878 return iova; in sun50i_iommu_handle_perm_irq()