gb_connection_get() and gb_connection_put() are currently private to the core. Drivers that hold a connection reference obtained from a lookup helper need to be able to drop it, and drivers that cache a connection pointer need to be able to take one.
Make both functions non-static, declare them in the greybus connection header, and export them so modular drivers can manage connection references. The first user is Rust greybus abstractions, added later in this series.
No functional change.
Signed-off-by: Ayush Singh ayush@beagleboard.org --- drivers/greybus/connection.c | 6 ++++-- include/linux/greybus/connection.h | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/greybus/connection.c b/drivers/greybus/connection.c index bd04485decb3..f8fda22bc466 100644 --- a/drivers/greybus/connection.c +++ b/drivers/greybus/connection.c @@ -33,19 +33,21 @@ static bool gb_connection_cport_in_use(struct gb_interface *intf, u16 cport_id) return false; }
-static void gb_connection_get(struct gb_connection *connection) +void gb_connection_get(struct gb_connection *connection) { kref_get(&connection->kref);
trace_gb_connection_get(connection); } +EXPORT_SYMBOL_GPL(gb_connection_get);
-static void gb_connection_put(struct gb_connection *connection) +void gb_connection_put(struct gb_connection *connection) { trace_gb_connection_put(connection);
kref_put(&connection->kref, gb_connection_kref_release); } +EXPORT_SYMBOL_GPL(gb_connection_put);
/* * Returns a reference-counted pointer to the connection if found. diff --git a/include/linux/greybus/connection.h b/include/linux/greybus/connection.h index d59b7fc1de3e..b53aad2270d6 100644 --- a/include/linux/greybus/connection.h +++ b/include/linux/greybus/connection.h @@ -128,4 +128,7 @@ static inline void gb_connection_set_data(struct gb_connection *connection, connection->private = data; }
+void gb_connection_get(struct gb_connection *connection); +void gb_connection_put(struct gb_connection *connection); + #endif /* __CONNECTION_H */