Commit 58960172 authored by Joerg Roedel's avatar Joerg Roedel
Browse files

iommu/mediatek: Do no use dev->archdata.iommu



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: default avatarJoerg Roedel <jroedel@suse.de>
Reviewed-by: default avatarJerry Snitselaar <jsnitsel@redhat.com>
Link: https://lore.kernel.org/r/20200625130836.1916-9-joro@8bytes.org
parent 2263d818
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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];
};
+4 −6
Original line number Diff line number Diff line
@@ -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)