Skip to content

Commit

Permalink
iommu/exynos: Remove custom platform device registration code
Browse files Browse the repository at this point in the history
Commit 09515ef ("of/acpi: Configure dma operations at probe time for
platform/amba/pci bus devices") postponed the moment of attaching IOMMU
controller to its device, so there is no need to register IOMMU controllers
very early, before all other devices in the system. This change gives us an
opportunity to use standard platform device registration method also for
Exynos SYSMMU controllers.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
  • Loading branch information
Marek Szyprowski authored and Joerg Roedel committed Aug 4, 2017
1 parent db3a7fd commit 928055a
Showing 1 changed file with 9 additions and 27 deletions.
36 changes: 9 additions & 27 deletions drivers/iommu/exynos-iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,13 @@ static int __init exynos_sysmmu_probe(struct platform_device *pdev)
}
}

/*
* use the first registered sysmmu device for performing
* dma mapping operations on iommu page tables (cpu cache flush)
*/
if (!dma_dev)
dma_dev = &pdev->dev;

pm_runtime_enable(dev);

return 0;
Expand Down Expand Up @@ -1335,8 +1342,6 @@ static struct iommu_ops exynos_iommu_ops = {
.of_xlate = exynos_iommu_of_xlate,
};

static bool init_done;

static int __init exynos_iommu_init(void)
{
int ret;
Expand Down Expand Up @@ -1369,8 +1374,6 @@ static int __init exynos_iommu_init(void)
goto err_set_iommu;
}

init_done = true;

return 0;
err_set_iommu:
kmem_cache_free(lv2table_kmem_cache, zero_lv2_table);
Expand All @@ -1380,27 +1383,6 @@ static int __init exynos_iommu_init(void)
kmem_cache_destroy(lv2table_kmem_cache);
return ret;
}
core_initcall(exynos_iommu_init);

static int __init exynos_iommu_of_setup(struct device_node *np)
{
struct platform_device *pdev;

if (!init_done)
exynos_iommu_init();

pdev = of_platform_device_create(np, NULL, platform_bus_type.dev_root);
if (!pdev)
return -ENODEV;

/*
* use the first registered sysmmu device for performing
* dma mapping operations on iommu page tables (cpu cache flush)
*/
if (!dma_dev)
dma_dev = &pdev->dev;

return 0;
}

IOMMU_OF_DECLARE(exynos_iommu_of, "samsung,exynos-sysmmu",
exynos_iommu_of_setup);
IOMMU_OF_DECLARE(exynos_iommu_of, "samsung,exynos-sysmmu", NULL);

0 comments on commit 928055a

Please sign in to comment.