Commit a62cafe1 authored by Jason Gunthorpe's avatar Jason Gunthorpe Committed by Joerg Roedel

iommu/sprd: Convert to generic_single_device_group()

Use the new helper.
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/4-v1-c869a95191f2+5e8-iommu_single_grp_jgg@nvidia.comSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 4f43b6b6
...@@ -70,7 +70,6 @@ struct sprd_iommu_device { ...@@ -70,7 +70,6 @@ struct sprd_iommu_device {
void __iomem *base; void __iomem *base;
struct device *dev; struct device *dev;
struct iommu_device iommu; struct iommu_device iommu;
struct iommu_group *group;
struct clk *eb; struct clk *eb;
}; };
...@@ -396,13 +395,6 @@ static struct iommu_device *sprd_iommu_probe_device(struct device *dev) ...@@ -396,13 +395,6 @@ static struct iommu_device *sprd_iommu_probe_device(struct device *dev)
return &sdev->iommu; 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) static int sprd_iommu_of_xlate(struct device *dev, struct of_phandle_args *args)
{ {
struct platform_device *pdev; struct platform_device *pdev;
...@@ -420,7 +412,7 @@ static int sprd_iommu_of_xlate(struct device *dev, struct of_phandle_args *args) ...@@ -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 = { static const struct iommu_ops sprd_iommu_ops = {
.domain_alloc_paging = sprd_iommu_domain_alloc_paging, .domain_alloc_paging = sprd_iommu_domain_alloc_paging,
.probe_device = sprd_iommu_probe_device, .probe_device = sprd_iommu_probe_device,
.device_group = sprd_iommu_device_group, .device_group = generic_single_device_group,
.of_xlate = sprd_iommu_of_xlate, .of_xlate = sprd_iommu_of_xlate,
.pgsize_bitmap = SPRD_IOMMU_PAGE_SIZE, .pgsize_bitmap = SPRD_IOMMU_PAGE_SIZE,
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -493,16 +485,9 @@ static int sprd_iommu_probe(struct platform_device *pdev) ...@@ -493,16 +485,9 @@ static int sprd_iommu_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, sdev); platform_set_drvdata(pdev, sdev);
sdev->dev = dev; 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)); ret = iommu_device_sysfs_add(&sdev->iommu, dev, NULL, dev_name(dev));
if (ret) if (ret)
goto put_group; goto free_page;
ret = iommu_device_register(&sdev->iommu, &sprd_iommu_ops, dev); ret = iommu_device_register(&sdev->iommu, &sprd_iommu_ops, dev);
if (ret) if (ret)
...@@ -527,8 +512,6 @@ static int sprd_iommu_probe(struct platform_device *pdev) ...@@ -527,8 +512,6 @@ static int sprd_iommu_probe(struct platform_device *pdev)
iommu_device_unregister(&sdev->iommu); iommu_device_unregister(&sdev->iommu);
remove_sysfs: remove_sysfs:
iommu_device_sysfs_remove(&sdev->iommu); iommu_device_sysfs_remove(&sdev->iommu);
put_group:
iommu_group_put(sdev->group);
free_page: free_page:
dma_free_coherent(sdev->dev, SPRD_IOMMU_PAGE_SIZE, sdev->prot_page_va, sdev->prot_page_pa); dma_free_coherent(sdev->dev, SPRD_IOMMU_PAGE_SIZE, sdev->prot_page_va, sdev->prot_page_pa);
return ret; return ret;
...@@ -540,9 +523,6 @@ static void sprd_iommu_remove(struct platform_device *pdev) ...@@ -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); 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); platform_set_drvdata(pdev, NULL);
iommu_device_sysfs_remove(&sdev->iommu); iommu_device_sysfs_remove(&sdev->iommu);
iommu_device_unregister(&sdev->iommu); iommu_device_unregister(&sdev->iommu);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment