From 7d36ee1a68267bdfb090cbc273c9efa6b33f05a7 Mon Sep 17 00:00:00 2001 From: Youngjae Cho Date: Fri, 1 Oct 2021 15:43:00 +0900 Subject: [PATCH] extcon: defer init until booting done Change-Id: I1a4556d7c5e6e42aa7de8e0eef57f8d107dafce1 Signed-off-by: Youngjae Cho --- src/extcon/extcon.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/extcon/extcon.c b/src/extcon/extcon.c index 0925f28..74dae19 100644 --- a/src/extcon/extcon.c +++ b/src/extcon/extcon.c @@ -466,15 +466,22 @@ static int event_handler_state_changed(void *data) return 0; } -static void extcon_init(void *data) +static int booting_done(void *data) { + static int done; int ret_dbus; GList *l; struct extcon_ops *dev; device_notifier_state_e state = DEVICE_NOTIFIER_STATE_START; + if (!data) + return done; + done = *(int *) data; + if (!done) + return done; + if (!extcon_list) - return; + return done; /* initialize extcon devices */ SYS_G_LIST_FOREACH(extcon_list, l, dev) { @@ -490,8 +497,14 @@ static void extcon_init(void *data) if (ret_dbus < 0) _E("Failed to init dbus method: %d", ret_dbus); - register_notifier(DEVICE_NOTIFIER_EVENT_HANDLER, event_handler_state_changed); + + return done; +} + +static void extcon_init(void *data) +{ + register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); } static void extcon_exit(void *data) -- 2.7.4