iommu/mediatek: Do no use dev->archdata.iommu
authorJoerg Roedel <jroedel@suse.de>
Thu, 25 Jun 2020 13:08:31 +0000 (15:08 +0200)
committerJoerg Roedel <jroedel@suse.de>
Tue, 30 Jun 2020 09:59:48 +0000 (11:59 +0200)
The iommu private pointer is already used in the Mediatek IOMMU v1
driver, so move the dma_iommu_mapping pointer into 'struct
mtk_iommu_data' and do not use dev->archdata.iommu anymore.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Link: https://lore.kernel.org/r/20200625130836.1916-9-joro@8bytes.org
drivers/iommu/mtk_iommu.h
drivers/iommu/mtk_iommu_v1.c

index ea949a3..1682406 100644 (file)
@@ -62,6 +62,8 @@ struct mtk_iommu_data {
        struct iommu_device             iommu;
        const struct mtk_iommu_plat_data *plat_data;
 
+       struct dma_iommu_mapping        *mapping; /* For mtk_iommu_v1.c */
+
        struct list_head                list;
        struct mtk_smi_larb_iommu       larb_imu[MTK_LARB_NR_MAX];
 };
index c9d79cf..82ddfe9 100644 (file)
@@ -269,7 +269,7 @@ static int mtk_iommu_attach_device(struct iommu_domain *domain,
        int ret;
 
        /* Only allow the domain created internally. */
-       mtk_mapping = data->dev->archdata.iommu;
+       mtk_mapping = data->mapping;
        if (mtk_mapping->domain != domain)
                return 0;
 
@@ -369,7 +369,6 @@ static int mtk_iommu_create_mapping(struct device *dev,
        struct mtk_iommu_data *data;
        struct platform_device *m4updev;
        struct dma_iommu_mapping *mtk_mapping;
-       struct device *m4udev;
        int ret;
 
        if (args->args_count != 1) {
@@ -401,8 +400,7 @@ static int mtk_iommu_create_mapping(struct device *dev,
                return ret;
 
        data = dev_iommu_priv_get(dev);
-       m4udev = data->dev;
-       mtk_mapping = m4udev->archdata.iommu;
+       mtk_mapping = data->mapping;
        if (!mtk_mapping) {
                /* MTK iommu support 4GB iova address space. */
                mtk_mapping = arm_iommu_create_mapping(&platform_bus_type,
@@ -410,7 +408,7 @@ static int mtk_iommu_create_mapping(struct device *dev,
                if (IS_ERR(mtk_mapping))
                        return PTR_ERR(mtk_mapping);
 
-               m4udev->archdata.iommu = mtk_mapping;
+               data->mapping = mtk_mapping;
        }
 
        return 0;
@@ -459,7 +457,7 @@ static void mtk_iommu_probe_finalize(struct device *dev)
        int err;
 
        data        = dev_iommu_priv_get(dev);
-       mtk_mapping = data->dev->archdata.iommu;
+       mtk_mapping = data->mapping;
 
        err = arm_iommu_attach_device(dev, mtk_mapping);
        if (err)