Commit 5a2f0a0b authored by Sudeep Holla's avatar Sudeep Holla

firmware: arm_scmi: Move scmi bus init and exit calls into the driver

In preparation to enable building scmi as a single module, let us move
the scmi bus {de-,}initialisation call into the driver.

The main reason for this is to keep it simple instead of maintaining
it as separate modules and dealing with all possible initcall races
and deferred probe handling. We can move it as separate modules if
needed in future.

Link: https://lore.kernel.org/r/20200907195046.56615-3-sudeep.holla@arm.comTested-by: default avatarCristian Marussi <cristian.marussi@arm.com>
Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent 6825f17c
...@@ -230,7 +230,7 @@ static void scmi_devices_unregister(void) ...@@ -230,7 +230,7 @@ static void scmi_devices_unregister(void)
bus_for_each_dev(&scmi_bus_type, NULL, NULL, __scmi_devices_unregister); bus_for_each_dev(&scmi_bus_type, NULL, NULL, __scmi_devices_unregister);
} }
static int __init scmi_bus_init(void) int __init scmi_bus_init(void)
{ {
int retval; int retval;
...@@ -240,12 +240,10 @@ static int __init scmi_bus_init(void) ...@@ -240,12 +240,10 @@ static int __init scmi_bus_init(void)
return retval; return retval;
} }
subsys_initcall(scmi_bus_init);
static void __exit scmi_bus_exit(void) void __exit scmi_bus_exit(void)
{ {
scmi_devices_unregister(); scmi_devices_unregister();
bus_unregister(&scmi_bus_type); bus_unregister(&scmi_bus_type);
ida_destroy(&scmi_bus_id); ida_destroy(&scmi_bus_id);
} }
module_exit(scmi_bus_exit);
...@@ -156,6 +156,9 @@ void scmi_setup_protocol_implemented(const struct scmi_handle *handle, ...@@ -156,6 +156,9 @@ void scmi_setup_protocol_implemented(const struct scmi_handle *handle,
int scmi_base_protocol_init(struct scmi_handle *h); int scmi_base_protocol_init(struct scmi_handle *h);
int __init scmi_bus_init(void);
void __exit scmi_bus_exit(void);
/* SCMI Transport */ /* SCMI Transport */
/** /**
* struct scmi_chan_info - Structure representing a SCMI channel information * struct scmi_chan_info - Structure representing a SCMI channel information
......
...@@ -929,7 +929,21 @@ static struct platform_driver scmi_driver = { ...@@ -929,7 +929,21 @@ static struct platform_driver scmi_driver = {
.remove = scmi_remove, .remove = scmi_remove,
}; };
module_platform_driver(scmi_driver); static int __init scmi_driver_init(void)
{
scmi_bus_init();
return platform_driver_register(&scmi_driver);
}
module_init(scmi_driver_init);
static void __exit scmi_driver_exit(void)
{
scmi_bus_exit();
platform_driver_unregister(&scmi_driver);
}
module_exit(scmi_driver_exit);
MODULE_ALIAS("platform: arm-scmi"); MODULE_ALIAS("platform: arm-scmi");
MODULE_AUTHOR("Sudeep Holla <sudeep.holla@arm.com>"); MODULE_AUTHOR("Sudeep Holla <sudeep.holla@arm.com>");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment