From febcd380ef3d81e75eff1b0ff64cf8b129d7c424 Mon Sep 17 00:00:00 2001 From: Sudeep Holla Date: Mon, 7 Sep 2020 12:06:01 +0100 Subject: [PATCH] UPSTREAM: firmware: arm_scmi: Move scmi protocols registration into the driver In preparation to enable building SCMI as a single module, let us move the SCMI protocol registration call into the driver. This enables us to also add unregistration of the SCMI protocols. 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-4-sudeep.holla@arm.com Tested-by: Cristian Marussi Signed-off-by: Sudeep Holla (cherry picked from commit 1eaf18e35a783a007ef03e09f1dfc3de81eace7c) Conflicts: drivers/firmware/arm_scmi/driver.c drivers/firmware/arm_scmi/system.c Fixes: 5730f8b50f67 ("UPSTREAM: firmware: arm_scmi: Move scmi protocols registration into the driver") Change-Id: I0509be2a8614d3f98bad8d19e57d75e6371008a4 Signed-off-by: Tao Huang --- drivers/firmware/arm_scmi/driver.c | 2 ++ drivers/firmware/arm_scmi/reset.c | 7 +------ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 1f7fba03aaac..bb91d2de702b 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -805,6 +805,7 @@ static int __init scmi_driver_init(void) scmi_clock_register(); scmi_perf_register(); scmi_power_register(); + scmi_reset_register(); scmi_sensors_register(); return platform_driver_register(&scmi_driver); @@ -818,6 +819,7 @@ static void __exit scmi_driver_exit(void) scmi_clock_unregister(); scmi_perf_unregister(); scmi_power_unregister(); + scmi_reset_unregister(); scmi_sensors_unregister(); platform_driver_unregister(&scmi_driver); diff --git a/drivers/firmware/arm_scmi/reset.c b/drivers/firmware/arm_scmi/reset.c index f3c25e847b2b..fea07363b2c4 100644 --- a/drivers/firmware/arm_scmi/reset.c +++ b/drivers/firmware/arm_scmi/reset.c @@ -223,9 +223,4 @@ static int scmi_reset_protocol_init(struct scmi_handle *handle) return 0; } -static int __init scmi_reset_init(void) -{ - return scmi_protocol_register(SCMI_PROTOCOL_RESET, - &scmi_reset_protocol_init); -} -subsys_initcall(scmi_reset_init); +DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(SCMI_PROTOCOL_RESET, reset)