mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 15:55:28 -04:00
iommu/sprd: Convert to generic_single_device_group()
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>
This commit is contained in:
committed by
Joerg Roedel
parent
4f43b6b6d1
commit
a62cafe124
@@ -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 @@ static int sprd_iommu_probe(struct platform_device *pdev)
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user