dom->cfg = (struct io_pgtable_cfg) {
                .quirks = IO_PGTABLE_QUIRK_ARM_NS |
                        IO_PGTABLE_QUIRK_NO_PERMS |
-                       IO_PGTABLE_QUIRK_TLBI_ON_MAP |
                        IO_PGTABLE_QUIRK_ARM_MTK_EXT,
                .pgsize_bitmap = mtk_iommu_ops.pgsize_bitmap,
                .ias = 32,
                                       data);
 }
 
+static void mtk_iommu_sync_map(struct iommu_domain *domain, unsigned long iova,
+                              size_t size)
+{
+       struct mtk_iommu_data *data = mtk_iommu_get_m4u_data();
+
+       mtk_iommu_tlb_flush_range_sync(iova, size, size, data);
+}
+
 static phys_addr_t mtk_iommu_iova_to_phys(struct iommu_domain *domain,
                                          dma_addr_t iova)
 {
        .unmap          = mtk_iommu_unmap,
        .flush_iotlb_all = mtk_iommu_flush_iotlb_all,
        .iotlb_sync     = mtk_iommu_iotlb_sync,
+       .iotlb_sync_map = mtk_iommu_sync_map,
        .iova_to_phys   = mtk_iommu_iova_to_phys,
        .probe_device   = mtk_iommu_probe_device,
        .release_device = mtk_iommu_release_device,