mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
pmdomain: imx: scu-pd: allow building as a module
Convert CONFIG_IMX_SCU_PD from bool to tristate to allow building as a loadable module. This is needed on Android devices using the Generic Kernel Image (GKI), where SoC-specific drivers must be built as modules rather than built into the core kernel image. For i.MX8Q devices running Android with a GKI kernel, the SCU power domain driver must be loadable. Without tristate support, power domains cannot be properly initialized, preventing these systems from functioning under GKI. Use subsys_initcall() so that when built-in the power domain provider probes before its consumers (e.g. the SCU clock driver at device_initcall level), fixing "failed to attached the power domain" warnings at boot. When built as a module, subsys_initcall() is equivalent to module_init(). No module_exit() is provided because the SCU power domain provider is a system-level resource that cannot be safely removed at runtime. Add MODULE_DEVICE_TABLE() for OF-based module autoloading. Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
This commit is contained in:
parent
fad41cdd09
commit
daa5fba89c
|
|
@ -24,7 +24,7 @@ config IMX9_BLK_CTRL
|
|||
default y
|
||||
|
||||
config IMX_SCU_PD
|
||||
bool "IMX SCU Power Domain driver"
|
||||
tristate "IMX SCU Power Domain driver"
|
||||
depends on IMX_SCU
|
||||
help
|
||||
The System Controller Firmware (SCFW) based power domain driver.
|
||||
|
|
|
|||
|
|
@ -531,6 +531,7 @@ static const struct of_device_id imx_sc_pd_match[] = {
|
|||
{ .compatible = "fsl,scu-pd", &imx8qxp_scu_pd},
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, imx_sc_pd_match);
|
||||
|
||||
static struct platform_driver imx_sc_pd_driver = {
|
||||
.driver = {
|
||||
|
|
@ -540,7 +541,12 @@ static struct platform_driver imx_sc_pd_driver = {
|
|||
},
|
||||
.probe = imx_sc_pd_probe,
|
||||
};
|
||||
builtin_platform_driver(imx_sc_pd_driver);
|
||||
|
||||
static int __init imx_sc_pd_driver_init(void)
|
||||
{
|
||||
return platform_driver_register(&imx_sc_pd_driver);
|
||||
}
|
||||
subsys_initcall(imx_sc_pd_driver_init);
|
||||
|
||||
MODULE_AUTHOR("Dong Aisheng <aisheng.dong@nxp.com>");
|
||||
MODULE_DESCRIPTION("IMX SCU Power Domain driver");
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user