mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
iommu/omap: Register driver before setting IOMMU ops
[ Upstream commit abaa7e5b05 ]
Move the registration of the OMAP IOMMU platform driver before
setting the IOMMU callbacks on the platform bus. This causes
the IOMMU devices to be probed first before the .add_device()
callback is invoked for all registered devices, and allows
the iommu_group support to be added to the OMAP IOMMU driver.
While at this, also check for the return status from bus_set_iommu.
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
069f9177f1
commit
5fbe79a375
@@ -1295,6 +1295,7 @@ static int __init omap_iommu_init(void)
|
||||
const unsigned long flags = SLAB_HWCACHE_ALIGN;
|
||||
size_t align = 1 << 10; /* L2 pagetable alignement */
|
||||
struct device_node *np;
|
||||
int ret;
|
||||
|
||||
np = of_find_matching_node(NULL, omap_iommu_of_match);
|
||||
if (!np)
|
||||
@@ -1308,11 +1309,25 @@ static int __init omap_iommu_init(void)
|
||||
return -ENOMEM;
|
||||
iopte_cachep = p;
|
||||
|
||||
bus_set_iommu(&platform_bus_type, &omap_iommu_ops);
|
||||
|
||||
omap_iommu_debugfs_init();
|
||||
|
||||
return platform_driver_register(&omap_iommu_driver);
|
||||
ret = platform_driver_register(&omap_iommu_driver);
|
||||
if (ret) {
|
||||
pr_err("%s: failed to register driver\n", __func__);
|
||||
goto fail_driver;
|
||||
}
|
||||
|
||||
ret = bus_set_iommu(&platform_bus_type, &omap_iommu_ops);
|
||||
if (ret)
|
||||
goto fail_bus;
|
||||
|
||||
return 0;
|
||||
|
||||
fail_bus:
|
||||
platform_driver_unregister(&omap_iommu_driver);
|
||||
fail_driver:
|
||||
kmem_cache_destroy(iopte_cachep);
|
||||
return ret;
|
||||
}
|
||||
subsys_initcall(omap_iommu_init);
|
||||
/* must be ready before omap3isp is probed */
|
||||
|
||||
Reference in New Issue
Block a user