File tree Expand file tree Collapse file tree
drivers/firmware/arm_scmi Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -364,9 +364,4 @@ static int scmi_clock_protocol_init(struct scmi_handle *handle)
364364 return 0 ;
365365}
366366
367- static int __init scmi_clock_init (void )
368- {
369- return scmi_protocol_register (SCMI_PROTOCOL_CLOCK ,
370- & scmi_clock_protocol_init );
371- }
372- subsys_initcall (scmi_clock_init );
367+ DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (SCMI_PROTOCOL_CLOCK , clock )
Original file line number Diff line number Diff line change @@ -159,6 +159,27 @@ int scmi_base_protocol_init(struct scmi_handle *h);
159159int __init scmi_bus_init (void );
160160void __exit scmi_bus_exit (void );
161161
162+ #define DECLARE_SCMI_REGISTER_UNREGISTER (func ) \
163+ int __init scmi_##func##_register(void); \
164+ void __exit scmi_##func##_unregister(void)
165+ DECLARE_SCMI_REGISTER_UNREGISTER (clock );
166+ DECLARE_SCMI_REGISTER_UNREGISTER (perf );
167+ DECLARE_SCMI_REGISTER_UNREGISTER (power );
168+ DECLARE_SCMI_REGISTER_UNREGISTER (reset );
169+ DECLARE_SCMI_REGISTER_UNREGISTER (sensors );
170+ DECLARE_SCMI_REGISTER_UNREGISTER (system );
171+
172+ #define DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (id , name ) \
173+ int __init scmi_##name##_register(void) \
174+ { \
175+ return scmi_protocol_register((id), &scmi_##name##_protocol_init); \
176+ } \
177+ \
178+ void __exit scmi_##name##_unregister(void) \
179+ { \
180+ scmi_protocol_unregister((id)); \
181+ }
182+
162183/* SCMI Transport */
163184/**
164185 * struct scmi_chan_info - Structure representing a SCMI channel information
Original file line number Diff line number Diff line change @@ -933,14 +933,28 @@ static int __init scmi_driver_init(void)
933933{
934934 scmi_bus_init ();
935935
936+ scmi_clock_register ();
937+ scmi_perf_register ();
938+ scmi_power_register ();
939+ scmi_reset_register ();
940+ scmi_sensors_register ();
941+ scmi_system_register ();
942+
936943 return platform_driver_register (& scmi_driver );
937944}
938- module_init (scmi_driver_init );
945+ subsys_initcall (scmi_driver_init );
939946
940947static void __exit scmi_driver_exit (void )
941948{
942949 scmi_bus_exit ();
943950
951+ scmi_clock_unregister ();
952+ scmi_perf_unregister ();
953+ scmi_power_unregister ();
954+ scmi_reset_unregister ();
955+ scmi_sensors_unregister ();
956+ scmi_system_unregister ();
957+
944958 platform_driver_unregister (& scmi_driver );
945959}
946960module_exit (scmi_driver_exit );
Original file line number Diff line number Diff line change @@ -890,9 +890,4 @@ static int scmi_perf_protocol_init(struct scmi_handle *handle)
890890 return 0 ;
891891}
892892
893- static int __init scmi_perf_init (void )
894- {
895- return scmi_protocol_register (SCMI_PROTOCOL_PERF ,
896- & scmi_perf_protocol_init );
897- }
898- subsys_initcall (scmi_perf_init );
893+ DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (SCMI_PROTOCOL_PERF , perf )
Original file line number Diff line number Diff line change @@ -301,9 +301,4 @@ static int scmi_power_protocol_init(struct scmi_handle *handle)
301301 return 0 ;
302302}
303303
304- static int __init scmi_power_init (void )
305- {
306- return scmi_protocol_register (SCMI_PROTOCOL_POWER ,
307- & scmi_power_protocol_init );
308- }
309- subsys_initcall (scmi_power_init );
304+ DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (SCMI_PROTOCOL_POWER , power )
Original file line number Diff line number Diff line change @@ -313,9 +313,4 @@ static int scmi_reset_protocol_init(struct scmi_handle *handle)
313313 return 0 ;
314314}
315315
316- static int __init scmi_reset_init (void )
317- {
318- return scmi_protocol_register (SCMI_PROTOCOL_RESET ,
319- & scmi_reset_protocol_init );
320- }
321- subsys_initcall (scmi_reset_init );
316+ DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (SCMI_PROTOCOL_RESET , reset )
Original file line number Diff line number Diff line change @@ -365,9 +365,4 @@ static int scmi_sensors_protocol_init(struct scmi_handle *handle)
365365 return 0 ;
366366}
367367
368- static int __init scmi_sensors_init (void )
369- {
370- return scmi_protocol_register (SCMI_PROTOCOL_SENSOR ,
371- & scmi_sensors_protocol_init );
372- }
373- subsys_initcall (scmi_sensors_init );
368+ DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (SCMI_PROTOCOL_SENSOR , sensors )
Original file line number Diff line number Diff line change @@ -128,9 +128,4 @@ static int scmi_system_protocol_init(struct scmi_handle *handle)
128128 return 0 ;
129129}
130130
131- static int __init scmi_system_init (void )
132- {
133- return scmi_protocol_register (SCMI_PROTOCOL_SYSTEM ,
134- & scmi_system_protocol_init );
135- }
136- subsys_initcall (scmi_system_init );
131+ DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER (SCMI_PROTOCOL_SYSTEM , system )
You can’t perform that action at this time.
0 commit comments