Skip to content

Commit 5a2f0a0

Browse files
committed
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.com Tested-by: Cristian Marussi <cristian.marussi@arm.com> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
1 parent 6825f17 commit 5a2f0a0

3 files changed

Lines changed: 20 additions & 5 deletions

File tree

drivers/firmware/arm_scmi/bus.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ static void scmi_devices_unregister(void)
230230
bus_for_each_dev(&scmi_bus_type, NULL, NULL, __scmi_devices_unregister);
231231
}
232232

233-
static int __init scmi_bus_init(void)
233+
int __init scmi_bus_init(void)
234234
{
235235
int retval;
236236

@@ -240,12 +240,10 @@ static int __init scmi_bus_init(void)
240240

241241
return retval;
242242
}
243-
subsys_initcall(scmi_bus_init);
244243

245-
static void __exit scmi_bus_exit(void)
244+
void __exit scmi_bus_exit(void)
246245
{
247246
scmi_devices_unregister();
248247
bus_unregister(&scmi_bus_type);
249248
ida_destroy(&scmi_bus_id);
250249
}
251-
module_exit(scmi_bus_exit);

drivers/firmware/arm_scmi/common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ void scmi_setup_protocol_implemented(const struct scmi_handle *handle,
156156

157157
int scmi_base_protocol_init(struct scmi_handle *h);
158158

159+
int __init scmi_bus_init(void);
160+
void __exit scmi_bus_exit(void);
161+
159162
/* SCMI Transport */
160163
/**
161164
* struct scmi_chan_info - Structure representing a SCMI channel information

drivers/firmware/arm_scmi/driver.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,21 @@ static struct platform_driver scmi_driver = {
929929
.remove = scmi_remove,
930930
};
931931

932-
module_platform_driver(scmi_driver);
932+
static int __init scmi_driver_init(void)
933+
{
934+
scmi_bus_init();
935+
936+
return platform_driver_register(&scmi_driver);
937+
}
938+
module_init(scmi_driver_init);
939+
940+
static void __exit scmi_driver_exit(void)
941+
{
942+
scmi_bus_exit();
943+
944+
platform_driver_unregister(&scmi_driver);
945+
}
946+
module_exit(scmi_driver_exit);
933947

934948
MODULE_ALIAS("platform: arm-scmi");
935949
MODULE_AUTHOR("Sudeep Holla <sudeep.holla@arm.com>");

0 commit comments

Comments
 (0)