From f35ab903ef6dad781a3de25ab37850499d2a39d4 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Tue, 9 Jun 2015 17:42:51 -0500 Subject: [PATCH] greybus: endo: define endo_init() and endo_exit() 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 Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/core.c | 16 ++++++++++++---- drivers/staging/greybus/endo.c | 8 ++++++++ drivers/staging/greybus/endo.h | 3 +++ drivers/staging/greybus/operation.c | 2 +- drivers/staging/greybus/operation.h | 2 +- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/staging/greybus/core.c b/drivers/staging/greybus/core.c index e7a280c..8da120b 100644 --- a/drivers/staging/greybus/core.c +++ b/drivers/staging/greybus/core.c @@ -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 "); diff --git a/drivers/staging/greybus/endo.c b/drivers/staging/greybus/endo.c index b89b14f..37bd8ae 100644 --- a/drivers/staging/greybus/endo.c +++ b/drivers/staging/greybus/endo.c @@ -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) +{ +} diff --git a/drivers/staging/greybus/endo.h b/drivers/staging/greybus/endo.h index 63dbadf..0ff40e9 100644 --- a/drivers/staging/greybus/endo.h +++ b/drivers/staging/greybus/endo.h @@ -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); diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c index 49bc628..a713daf 100644 --- a/drivers/staging/greybus/operation.c +++ b/drivers/staging/greybus/operation.c @@ -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; diff --git a/drivers/staging/greybus/operation.h b/drivers/staging/greybus/operation.h index fcd6566..6eed6bc 100644 --- a/drivers/staging/greybus/operation.h +++ b/drivers/staging/greybus/operation.h @@ -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 */ -- 2.7.4