Lines Matching refs:iopgd
151 if (!obj->iopgd || !IS_ALIGNED((u32)obj->iopgd, SZ_16K)) in omap2_iommu_enable()
154 pa = virt_to_phys(obj->iopgd); in omap2_iommu_enable()
498 static u32 *iopte_alloc(struct omap_iommu *obj, u32 *iopgd, u32 da) in iopte_alloc() argument
503 if (*iopgd) in iopte_alloc()
513 if (!*iopgd) { in iopte_alloc()
517 *iopgd = virt_to_phys(iopte) | IOPGD_TABLE; in iopte_alloc()
518 flush_iopgd_range(iopgd, iopgd); in iopte_alloc()
527 iopte = iopte_offset(iopgd, da); in iopte_alloc()
531 __func__, da, iopgd, *iopgd, iopte, *iopte); in iopte_alloc()
538 u32 *iopgd = iopgd_offset(obj, da); in iopgd_alloc_section() local
546 *iopgd = (pa & IOSECTION_MASK) | prot | IOPGD_SECTION; in iopgd_alloc_section()
547 flush_iopgd_range(iopgd, iopgd); in iopgd_alloc_section()
553 u32 *iopgd = iopgd_offset(obj, da); in iopgd_alloc_super() local
563 *(iopgd + i) = (pa & IOSUPER_MASK) | prot | IOPGD_SUPER; in iopgd_alloc_super()
564 flush_iopgd_range(iopgd, iopgd + 15); in iopgd_alloc_super()
570 u32 *iopgd = iopgd_offset(obj, da); in iopte_alloc_page() local
571 u32 *iopte = iopte_alloc(obj, iopgd, da); in iopte_alloc_page()
587 u32 *iopgd = iopgd_offset(obj, da); in iopte_alloc_large() local
588 u32 *iopte = iopte_alloc(obj, iopgd, da); in iopte_alloc_large()
671 u32 *iopgd, *iopte = NULL; in iopgtable_lookup_entry() local
673 iopgd = iopgd_offset(obj, da); in iopgtable_lookup_entry()
674 if (!*iopgd) in iopgtable_lookup_entry()
677 if (iopgd_is_table(*iopgd)) in iopgtable_lookup_entry()
678 iopte = iopte_offset(iopgd, da); in iopgtable_lookup_entry()
680 *ppgd = iopgd; in iopgtable_lookup_entry()
687 u32 *iopgd = iopgd_offset(obj, da); in iopgtable_clear_entry_core() local
690 if (!*iopgd) in iopgtable_clear_entry_core()
693 if (iopgd_is_table(*iopgd)) { in iopgtable_clear_entry_core()
695 u32 *iopte = iopte_offset(iopgd, da); in iopgtable_clear_entry_core()
701 iopte = iopte_offset(iopgd, (da & IOLARGE_MASK)); in iopgtable_clear_entry_core()
710 iopte = iopte_offset(iopgd, 0); in iopgtable_clear_entry_core()
719 if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) { in iopgtable_clear_entry_core()
722 iopgd = iopgd_offset(obj, (da & IOSUPER_MASK)); in iopgtable_clear_entry_core()
726 memset(iopgd, 0, nent * sizeof(*iopgd)); in iopgtable_clear_entry_core()
727 flush_iopgd_range(iopgd, iopgd + (nent - 1) * sizeof(*iopgd)); in iopgtable_clear_entry_core()
759 u32 *iopgd; in iopgtable_clear_entry_all() local
762 iopgd = iopgd_offset(obj, da); in iopgtable_clear_entry_all()
764 if (!*iopgd) in iopgtable_clear_entry_all()
767 if (iopgd_is_table(*iopgd)) in iopgtable_clear_entry_all()
768 iopte_free(iopte_offset(iopgd, 0)); in iopgtable_clear_entry_all()
770 *iopgd = 0; in iopgtable_clear_entry_all()
771 flush_iopgd_range(iopgd, iopgd); in iopgtable_clear_entry_all()
785 u32 *iopgd, *iopte; in iommu_fault_handler() local
803 iopgd = iopgd_offset(obj, da); in iommu_fault_handler()
805 if (!iopgd_is_table(*iopgd)) { in iommu_fault_handler()
807 obj->name, errs, da, iopgd, *iopgd); in iommu_fault_handler()
811 iopte = iopte_offset(iopgd, da); in iommu_fault_handler()
814 obj->name, errs, da, iopgd, *iopgd, iopte, *iopte); in iommu_fault_handler()
834 static struct omap_iommu *omap_iommu_attach(const char *name, u32 *iopgd) in omap_iommu_attach() argument
849 obj->iopgd = iopgd; in omap_iommu_attach()
877 obj->iopgd = NULL; in omap_iommu_detach()