mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 22:51:42 +00:00
iommu/mediatek: Allow building as module
The IOMMU in many SoC depends on the MM clocks and power-domain which are device_initcall normally, thus the subsys_init here is not helpful. This patch switches it to module_platform_driver which also allow the driver built as module. Correspondingly switch the config to tristate, and update the iommu_ops's owner. Signed-off-by: Yong Wu <yong.wu@mediatek.com> Link: https://lore.kernel.org/r/20210326032337.24578-2-yong.wu@mediatek.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
8de000cf02
commit
18d8c74ec5
@ -349,7 +349,7 @@ config S390_AP_IOMMU
|
||||
is not implemented as it is not necessary for VFIO.
|
||||
|
||||
config MTK_IOMMU
|
||||
bool "MTK IOMMU Support"
|
||||
tristate "MediaTek IOMMU Support"
|
||||
depends on ARCH_MEDIATEK || COMPILE_TEST
|
||||
select ARM_DMA_USE_IOMMU
|
||||
select IOMMU_API
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_iommu.h>
|
||||
#include <linux/of_irq.h>
|
||||
@ -683,6 +684,7 @@ static const struct iommu_ops mtk_iommu_ops = {
|
||||
.get_resv_regions = mtk_iommu_get_resv_regions,
|
||||
.put_resv_regions = generic_iommu_put_resv_regions,
|
||||
.pgsize_bitmap = SZ_4K | SZ_64K | SZ_1M | SZ_16M,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int mtk_iommu_hw_init(const struct mtk_iommu_data *data)
|
||||
@ -1079,16 +1081,7 @@ static struct platform_driver mtk_iommu_driver = {
|
||||
.pm = &mtk_iommu_pm_ops,
|
||||
}
|
||||
};
|
||||
module_platform_driver(mtk_iommu_driver);
|
||||
|
||||
static int __init mtk_iommu_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = platform_driver_register(&mtk_iommu_driver);
|
||||
if (ret != 0)
|
||||
pr_err("Failed to register MTK IOMMU driver\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
subsys_initcall(mtk_iommu_init)
|
||||
MODULE_DESCRIPTION("IOMMU API for MediaTek M4U implementations");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
Loading…
Reference in New Issue
Block a user