We already have global mtk_iommu_pgtable structure to describe
page table and create it in group_device, "mtk_iommu_domain_finalise"
is as the same as that, so so we will remove mtk_iommu_domain_finalise.

Signed-off-by: Chao Hao <chao....@mediatek.com>
---
 drivers/iommu/mtk_iommu.c | 48 ++++++++-------------------------------
 1 file changed, 10 insertions(+), 38 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 50c6a01eb517..cfefdd638f1a 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -323,40 +323,6 @@ static void mtk_iommu_config(struct mtk_iommu_data *data,
        }
 }
 
-static int mtk_iommu_domain_finalise(struct mtk_iommu_domain *dom)
-{
-       struct mtk_iommu_data *data = mtk_iommu_get_m4u_data();
-
-       if (data->pgtable) {
-               dom->cfg = data->pgtable->cfg;
-               dom->iop = data->pgtable->iop;
-               dom->domain.pgsize_bitmap = data->pgtable->cfg.pgsize_bitmap;
-               return 0;
-       }
-
-       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,
-               .oas = 34,
-               .tlb = &mtk_iommu_flush_ops,
-               .iommu_dev = data->dev,
-       };
-
-       dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data);
-       if (!dom->iop) {
-               dev_err(data->dev, "Failed to alloc io pgtable\n");
-               return -EINVAL;
-       }
-
-       /* Update our support page sizes bitmap */
-       dom->domain.pgsize_bitmap = dom->cfg.pgsize_bitmap;
-       return 0;
-}
-
 static struct mtk_iommu_pgtable *create_pgtable(struct mtk_iommu_data *data)
 {
        struct mtk_iommu_pgtable *pgtable;
@@ -414,11 +380,17 @@ static int mtk_iommu_attach_pgtable(struct mtk_iommu_data 
*data,
 
 static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type)
 {
+       struct mtk_iommu_pgtable *pgtable = mtk_iommu_get_pgtable();
        struct mtk_iommu_domain *dom;
 
        if (type != IOMMU_DOMAIN_DMA)
                return NULL;
 
+       if (!pgtable) {
+               pr_err("%s, pgtable is not ready\n", __func__);
+               return NULL;
+       }
+
        dom = kzalloc(sizeof(*dom), GFP_KERNEL);
        if (!dom)
                return NULL;
@@ -426,8 +398,10 @@ static struct iommu_domain 
*mtk_iommu_domain_alloc(unsigned type)
        if (iommu_get_dma_cookie(&dom->domain))
                goto  free_dom;
 
-       if (mtk_iommu_domain_finalise(dom))
-               goto  put_dma_cookie;
+       dom->cfg = pgtable->cfg;
+       dom->iop = pgtable->iop;
+       /* Update our support page sizes bitmap */
+       dom->domain.pgsize_bitmap = pgtable->cfg.pgsize_bitmap;
 
        dom->domain.geometry.aperture_start = 0;
        dom->domain.geometry.aperture_end = DMA_BIT_MASK(32);
@@ -435,8 +409,6 @@ static struct iommu_domain *mtk_iommu_domain_alloc(unsigned 
type)
 
        return &dom->domain;
 
-put_dma_cookie:
-       iommu_put_dma_cookie(&dom->domain);
 free_dom:
        kfree(dom);
        return NULL;
-- 
2.18.0
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to