extcon: check condition variable for extcon init and deinit 20/266120/3
authorINSUN PYO <insun.pyo@samsung.com>
Mon, 8 Nov 2021 05:53:42 +0000 (14:53 +0900)
committerINSUN PYO <insun.pyo@samsung.com>
Mon, 8 Nov 2021 07:10:59 +0000 (07:10 +0000)
Change-Id: Ib7956980d1d82991d866666c82ac5fb39a9885ed

src/extcon/extcon.c

index 564fe88..5e163de 100644 (file)
@@ -497,7 +497,12 @@ static void extcon_deferred_init(void)
 
        /* initialize extcon devices */
        SYS_G_LIST_FOREACH(extcon_list, l, dev) {
-               _I("Extcon(%s) init.", dev->name);
+               if (dev->initialized) {
+                       _I("Extcon(%s) is already initialized.", dev->name);
+                       continue;
+               } else
+                       _I("Extcon(%s) init.", dev->name);
+
                if (dev->init)
                        dev->init(NULL);
                dev->initialized = true;
@@ -550,7 +555,12 @@ static void extcon_exit(void *data)
 
        /* deinitialize extcon devices */
        SYS_G_LIST_FOREACH(extcon_list, l, dev) {
-               _I("Extcon(%s) deinit.", dev->name);
+               if (!dev->initialized) {
+                       _I("Extcon(%s) is already deinitialized.", dev->name);
+                       continue;
+               } else
+                       _I("Extcon(%s) deinit.", dev->name);
+
                if (dev->exit)
                        dev->exit(data);
                dev->initialized = false;