iommu/sprd: Convert to generic_single_device_group()
authorJason Gunthorpe <jgg@nvidia.com>
Tue, 22 Aug 2023 16:15:59 +0000 (13:15 -0300)
committerJoerg Roedel <jroedel@suse.de>
Mon, 25 Sep 2023 09:48:23 +0000 (11:48 +0200)
Use the new helper.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/4-v1-c869a95191f2+5e8-iommu_single_grp_jgg@nvidia.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/sprd-iommu.c

index 0642f0a3a32ab5580a9e86f655296ef865d2a668..9c33ea6903f6c8b8564d0b6d96f7158052a543c0 100644 (file)
@@ -70,7 +70,6 @@ struct sprd_iommu_device {
        void __iomem            *base;
        struct device           *dev;
        struct iommu_device     iommu;
-       struct iommu_group      *group;
        struct clk              *eb;
 };
 
@@ -396,13 +395,6 @@ static struct iommu_device *sprd_iommu_probe_device(struct device *dev)
        return &sdev->iommu;
 }
 
-static struct iommu_group *sprd_iommu_device_group(struct device *dev)
-{
-       struct sprd_iommu_device *sdev = dev_iommu_priv_get(dev);
-
-       return iommu_group_ref_get(sdev->group);
-}
-
 static int sprd_iommu_of_xlate(struct device *dev, struct of_phandle_args *args)
 {
        struct platform_device *pdev;
@@ -420,7 +412,7 @@ static int sprd_iommu_of_xlate(struct device *dev, struct of_phandle_args *args)
 static const struct iommu_ops sprd_iommu_ops = {
        .domain_alloc_paging = sprd_iommu_domain_alloc_paging,
        .probe_device   = sprd_iommu_probe_device,
-       .device_group   = sprd_iommu_device_group,
+       .device_group   = generic_single_device_group,
        .of_xlate       = sprd_iommu_of_xlate,
        .pgsize_bitmap  = SPRD_IOMMU_PAGE_SIZE,
        .owner          = THIS_MODULE,
@@ -493,16 +485,9 @@ static int sprd_iommu_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, sdev);
        sdev->dev = dev;
 
-       /* All the client devices are in the same iommu-group */
-       sdev->group = iommu_group_alloc();
-       if (IS_ERR(sdev->group)) {
-               ret = PTR_ERR(sdev->group);
-               goto free_page;
-       }
-
        ret = iommu_device_sysfs_add(&sdev->iommu, dev, NULL, dev_name(dev));
        if (ret)
-               goto put_group;
+               goto free_page;
 
        ret = iommu_device_register(&sdev->iommu, &sprd_iommu_ops, dev);
        if (ret)
@@ -527,8 +512,6 @@ unregister_iommu:
        iommu_device_unregister(&sdev->iommu);
 remove_sysfs:
        iommu_device_sysfs_remove(&sdev->iommu);
-put_group:
-       iommu_group_put(sdev->group);
 free_page:
        dma_free_coherent(sdev->dev, SPRD_IOMMU_PAGE_SIZE, sdev->prot_page_va, sdev->prot_page_pa);
        return ret;
@@ -540,9 +523,6 @@ static void sprd_iommu_remove(struct platform_device *pdev)
 
        dma_free_coherent(sdev->dev, SPRD_IOMMU_PAGE_SIZE, sdev->prot_page_va, sdev->prot_page_pa);
 
-       iommu_group_put(sdev->group);
-       sdev->group = NULL;
-
        platform_set_drvdata(pdev, NULL);
        iommu_device_sysfs_remove(&sdev->iommu);
        iommu_device_unregister(&sdev->iommu);