void __iomem            *base;
        struct device           *dev;
        struct iommu_device     iommu;
-       struct iommu_group      *group;
        struct clk              *eb;
 };
 
        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;
 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,
        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)
        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;
 
        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);