OSDN Git Service

greybus: endo: define endo_init() and endo_exit()
authorAlex Elder <elder@linaro.org>
Tue, 9 Jun 2015 22:42:51 +0000 (17:42 -0500)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 10 Jun 2015 17:38:23 +0000 (10:38 -0700)
Define init and exit functions to do one-time setup and teardown
of endo-related functionality.  Currently they're place holders;
the next patch will populate them.

Note that we now call gb_operation_exit() from gb_init(), so
we can no longer mark that function with __exit.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/core.c
drivers/staging/greybus/endo.c
drivers/staging/greybus/endo.h
drivers/staging/greybus/operation.c
drivers/staging/greybus/operation.h

index e7a280c..8da120b 100644 (file)
@@ -252,7 +252,7 @@ static int __init gb_init(void)
 
        retval = bus_register(&greybus_bus_type);
        if (retval) {
-               pr_err("bus_register failed\n");
+               pr_err("bus_register failed (%d)\n", retval);
                goto error_bus;
        }
 
@@ -260,18 +260,26 @@ static int __init gb_init(void)
 
        retval = gb_ap_init();
        if (retval) {
-               pr_err("gb_ap_init failed\n");
+               pr_err("gb_ap_init failed (%d)\n", retval);
                goto error_ap;
        }
 
        retval = gb_operation_init();
        if (retval) {
-               pr_err("gb_operation_init failed\n");
+               pr_err("gb_operation_init failed (%d)\n", retval);
                goto error_operation;
        }
 
+       retval = gb_endo_init();
+       if (retval) {
+               pr_err("gb_endo_init failed (%d)\n", retval);
+               goto error_endo;
+       }
+
        return 0;       /* Success */
 
+error_endo:
+       gb_operation_exit();
 error_operation:
        gb_ap_exit();
 error_ap:
@@ -285,12 +293,12 @@ module_init(gb_init);
 
 static void __exit gb_exit(void)
 {
+       gb_endo_exit();
        gb_operation_exit();
        gb_ap_exit();
        bus_unregister(&greybus_bus_type);
        gb_debugfs_cleanup();
 }
 module_exit(gb_exit);
-
 MODULE_LICENSE("GPL v2");
 MODULE_AUTHOR("Greg Kroah-Hartman <gregkh@linuxfoundation.org>");
index b89b14f..37bd8ae 100644 (file)
@@ -551,3 +551,11 @@ void gb_endo_remove(struct gb_endo *endo)
        device_unregister(&endo->dev);
 }
 
+int __init gb_endo_init(void)
+{
+       return 0;
+}
+
+void __exit gb_endo_exit(void)
+{
+}
index 63dbadf..0ff40e9 100644 (file)
@@ -51,6 +51,9 @@ extern struct ida greybus_endo_id_map;
 /* Greybus "private" definitions */
 struct greybus_host_device;
 
+int gb_endo_init(void) __init;
+void gb_endo_exit(void) __exit;
+
 struct gb_endo *gb_endo_create(struct greybus_host_device *hd,
                                u16 endo_id, u8 ap_intf_id);
 void gb_endo_remove(struct gb_endo *endo);
index 49bc628..a713daf 100644 (file)
@@ -959,7 +959,7 @@ err_destroy_message_cache:
        return -ENOMEM;
 }
 
-void __exit gb_operation_exit(void)
+void gb_operation_exit(void)
 {
        destroy_workqueue(gb_operation_workqueue);
        gb_operation_workqueue = NULL;
index fcd6566..6eed6bc 100644 (file)
@@ -159,6 +159,6 @@ int gb_operation_sync(struct gb_connection *connection, int type,
                      void *response, int response_size);
 
 int gb_operation_init(void) __init;
-void gb_operation_exit(void) __exit;
+void gb_operation_exit(void);
 
 #endif /* !__OPERATION_H */