iommu: Remove iommu_register_instance interface
authorJoerg Roedel <jroedel@suse.de>
Thu, 2 Feb 2017 11:19:12 +0000 (12:19 +0100)
committerJoerg Roedel <jroedel@suse.de>
Fri, 10 Feb 2017 13:54:37 +0000 (14:54 +0100)
And also move its remaining functionality to
iommu_device_register() and 'struct iommu_device'.

Cc: Rob Herring <robh+dt@kernel.org>
Cc: Frank Rowand <frowand.list@gmail.com>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/arm-smmu-v3.c
drivers/iommu/arm-smmu.c
drivers/iommu/exynos-iommu.c
drivers/iommu/iommu.c
drivers/iommu/msm_iommu.c
drivers/iommu/mtk_iommu.c
include/linux/iommu.h
include/linux/of_iommu.h

index 32133e289ff67b7ea4ec38b92ad83c2c5f27109f..53751379dee396b46c287927186e385365670ce2 100644 (file)
@@ -2702,8 +2702,6 @@ static int arm_smmu_device_probe(struct platform_device *pdev)
 
        ret = iommu_device_register(&smmu->iommu);
 
-       iommu_register_instance(dev->fwnode, &arm_smmu_ops);
-
 #ifdef CONFIG_PCI
        if (pci_bus_type.iommu_ops != &arm_smmu_ops) {
                pci_request_acs();
index f4ce1e77344eda5fb7939add9b43ef1f61223f7f..8fb4af2dfbfa1043314bee3c5b7dd46380b46fb1 100644 (file)
@@ -2121,7 +2121,6 @@ static int arm_smmu_device_probe(struct platform_device *pdev)
                return err;
        }
 
-       iommu_register_instance(dev->fwnode, &arm_smmu_ops);
        platform_set_drvdata(pdev, smmu);
        arm_smmu_device_reset(smmu);
 
index 64325d8ddd4018496763a6a7d457e7daab41d7e2..778ecccd7a29332e8fb3332337475115d108bed3 100644 (file)
@@ -642,8 +642,6 @@ static int __init exynos_sysmmu_probe(struct platform_device *pdev)
 
        pm_runtime_enable(dev);
 
-       of_iommu_set_ops(dev->of_node, &exynos_iommu_ops);
-
        return 0;
 }
 
index 1dfd70ea27e4f90a0174e5472035416ae5000b61..162d865e2e29c987623f135067411377b992adda 100644 (file)
@@ -1658,43 +1658,18 @@ out:
        return ret;
 }
 
-struct iommu_instance {
-       struct list_head list;
-       struct fwnode_handle *fwnode;
-       const struct iommu_ops *ops;
-};
-static LIST_HEAD(iommu_instance_list);
-static DEFINE_SPINLOCK(iommu_instance_lock);
-
-void iommu_register_instance(struct fwnode_handle *fwnode,
-                            const struct iommu_ops *ops)
-{
-       struct iommu_instance *iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
-
-       if (WARN_ON(!iommu))
-               return;
-
-       of_node_get(to_of_node(fwnode));
-       INIT_LIST_HEAD(&iommu->list);
-       iommu->fwnode = fwnode;
-       iommu->ops = ops;
-       spin_lock(&iommu_instance_lock);
-       list_add_tail(&iommu->list, &iommu_instance_list);
-       spin_unlock(&iommu_instance_lock);
-}
-
 const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode)
 {
-       struct iommu_instance *instance;
        const struct iommu_ops *ops = NULL;
+       struct iommu_device *iommu;
 
-       spin_lock(&iommu_instance_lock);
-       list_for_each_entry(instance, &iommu_instance_list, list)
-               if (instance->fwnode == fwnode) {
-                       ops = instance->ops;
+       spin_lock(&iommu_device_lock);
+       list_for_each_entry(iommu, &iommu_device_list, list)
+               if (iommu->fwnode == fwnode) {
+                       ops = iommu->ops;
                        break;
                }
-       spin_unlock(&iommu_instance_lock);
+       spin_unlock(&iommu_device_lock);
        return ops;
 }
 
index 30795cbab5efe2ed756fb68a3b94e6886dc6ae59..d0448353d5011dae8376f43569e169c8051001db 100644 (file)
@@ -810,8 +810,6 @@ static int msm_iommu_probe(struct platform_device *pdev)
                goto fail;
        }
 
-       of_iommu_set_ops(pdev->dev.of_node, &msm_iommu_ops);
-
        pr_info("device mapped at %p, irq %d with %d ctx banks\n",
                iommu->base, iommu->irq, iommu->ncb);
 
index d484fa608db8fd346a90cb96c3f2f4394b7e2af1..5d14cd15198db5cb6361d060abf208260c086ebe 100644 (file)
@@ -681,7 +681,6 @@ static int mtk_iommu_init_fn(struct device_node *np)
                return ret;
        }
 
-       of_iommu_set_ops(np, &mtk_iommu_ops);
        return 0;
 }
 
index 626c935edee142d985333f21d96ea0c248df5494..9e82fc83765eedbcba8dce11e7a2334a5c227ec2 100644 (file)
@@ -382,8 +382,6 @@ int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
                      const struct iommu_ops *ops);
 void iommu_fwspec_free(struct device *dev);
 int iommu_fwspec_add_ids(struct device *dev, u32 *ids, int num_ids);
-void iommu_register_instance(struct fwnode_handle *fwnode,
-                            const struct iommu_ops *ops);
 const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode);
 
 #else /* CONFIG_IOMMU_API */
@@ -634,11 +632,6 @@ static inline int iommu_fwspec_add_ids(struct device *dev, u32 *ids,
        return -ENODEV;
 }
 
-static inline void iommu_register_instance(struct fwnode_handle *fwnode,
-                                          const struct iommu_ops *ops)
-{
-}
-
 static inline
 const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode)
 {
index 66fcbc949899cb62a3afabec79cc0872bd2d5cad..fc4add39361a6096f41a63b5ea5eed51464ded0e 100644 (file)
@@ -31,12 +31,6 @@ static inline const struct iommu_ops *of_iommu_configure(struct device *dev,
 
 #endif /* CONFIG_OF_IOMMU */
 
-static inline void of_iommu_set_ops(struct device_node *np,
-                                   const struct iommu_ops *ops)
-{
-       iommu_register_instance(&np->fwnode, ops);
-}
-
 static inline const struct iommu_ops *of_iommu_get_ops(struct device_node *np)
 {
        return iommu_ops_from_fwnode(&np->fwnode);