struct iommu_iotlb_gather *gather)
 {
        struct mtk_iommu_domain *dom = to_mtk_domain(domain);
-       unsigned long end = iova + size - 1;
 
-       if (gather->start > iova)
-               gather->start = iova;
-       if (gather->end < end)
-               gather->end = end;
+       iommu_iotlb_gather_add_range(gather, iova, size);
        return dom->iop->unmap(dom->iop, iova, size, gather);
 }
 
 
        iommu_iotlb_gather_init(iotlb_gather);
 }
 
+/**
+ * iommu_iotlb_gather_add_range - Gather for address-based TLB invalidation
+ * @gather: TLB gather data
+ * @iova: start of page to invalidate
+ * @size: size of page to invalidate
+ *
+ * Helper for IOMMU drivers to build arbitrarily-sized invalidation commands
+ * where only the address range matters, and simply minimising intermediate
+ * syncs is preferred.
+ */
+static inline void iommu_iotlb_gather_add_range(struct iommu_iotlb_gather *gather,
+                                               unsigned long iova, size_t size)
+{
+       unsigned long end = iova + size - 1;
+
+       if (gather->start > iova)
+               gather->start = iova;
+       if (gather->end < end)
+               gather->end = end;
+}
+
+/**
+ * iommu_iotlb_gather_add_page - Gather for page-based TLB invalidation
+ * @domain: IOMMU domain to be invalidated
+ * @gather: TLB gather data
+ * @iova: start of page to invalidate
+ * @size: size of page to invalidate
+ *
+ * Helper for IOMMU drivers to build invalidation commands based on individual
+ * pages, or with page size/table level hints which cannot be gathered if they
+ * differ.
+ */
 static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain,
                                               struct iommu_iotlb_gather *gather,
                                               unsigned long iova, size_t size)
                gather->pgsize = size;
        }
 
-       if (gather->end < end)
-               gather->end = end;
-
-       if (gather->start > start)
-               gather->start = start;
+       iommu_iotlb_gather_add_range(gather, iova, size);
 }
 
 /* PCI device grouping function */