Lines Matching full:dte
102 phys_addr_t (*pt_address)(u32 dte);
175 * | DTE | -> +-----+
189 * Each DTE has a PT address and a valid bit:
200 static inline phys_addr_t rk_dte_pt_address(u32 dte) in rk_dte_pt_address() argument
202 return (phys_addr_t)dte & RK_DTE_PT_ADDRESS_MASK; in rk_dte_pt_address()
221 static inline phys_addr_t rk_dte_pt_address_v2(u32 dte) in rk_dte_pt_address_v2() argument
223 u64 dte_v2 = dte; in rk_dte_pt_address_v2()
232 static inline bool rk_dte_is_pt_valid(u32 dte) in rk_dte_is_pt_valid() argument
234 return dte & RK_DTE_PT_VALID; in rk_dte_is_pt_valid()
325 * | DTE index | PTE index | Page offset |
327 * 31:22 - DTE index - index of DTE in DT
328 * 21:12 - PTE index - index of PTE in PT @ DTE.pt_address
648 u32 dte; in log_iova() local
664 dte = *dte_addr; in log_iova()
666 if (!rk_dte_is_pt_valid(dte)) in log_iova()
669 pte_addr_phys = rk_ops->pt_address(dte) + (pte_index * 4); in log_iova()
682 …dev_err(iommu->dev, "mmu_dte_addr: %pa dte@%pa: %#08x valid: %u pte@%pa: %#08x valid: %u page@%pa … in log_iova()
683 &mmu_dte_addr_phys, &dte_addr_phys, dte, in log_iova()
684 rk_dte_is_pt_valid(dte), &pte_addr_phys, pte, in log_iova()
806 u32 dte, pte; in rk_iommu_iova_to_phys() local
811 dte = rk_domain->dt[rk_iova_dte_index(iova)]; in rk_iommu_iova_to_phys()
812 if (!rk_dte_is_pt_valid(dte)) in rk_iommu_iova_to_phys()
815 pt_phys = rk_ops->pt_address(dte); in rk_iommu_iova_to_phys()
874 u32 dte_index, dte; in rk_dte_get_page_table() local
882 dte = *dte_addr; in rk_dte_get_page_table()
883 if (rk_dte_is_pt_valid(dte)) in rk_dte_get_page_table()
897 dte = rk_ops->mk_dtentries(pt_dma); in rk_dte_get_page_table()
898 *dte_addr = dte; in rk_dte_get_page_table()
903 pt_phys = rk_ops->pt_address(dte); in rk_dte_get_page_table()
980 * mapped cachelines holding stale values for its dte and pte. in rk_iommu_map_iova()
982 * dte or pte shared with an existing mapping. in rk_iommu_map_iova()
1007 u32 dte, pte_index; in rk_iommu_map() local
1017 * aligned, we will always only be mapping from a single dte here. in rk_iommu_map()
1025 dte = rk_domain->dt[rk_iova_dte_index(iova)]; in rk_iommu_map()
1028 pte_dma = rk_ops->pt_address(dte) + pte_index * sizeof(u32); in rk_iommu_map()
1044 u32 dte; in rk_iommu_unmap() local
1056 * aligned, we will always only be unmapping from a single dte here. in rk_iommu_unmap()
1058 dte = rk_domain->dt[rk_iova_dte_index(iova)]; in rk_iommu_unmap()
1060 if (!rk_dte_is_pt_valid(dte)) { in rk_iommu_unmap()
1065 pt_phys = rk_ops->pt_address(dte); in rk_iommu_unmap()
1379 u32 dte = rk_domain->dt[i]; in rk_iommu_domain_free() local
1380 if (rk_dte_is_pt_valid(dte)) { in rk_iommu_domain_free()
1381 phys_addr_t pt_phys = rk_ops->pt_address(dte); in rk_iommu_domain_free()