Commit 9e8a6860 authored by Alex Elder's avatar Alex Elder Committed by Greg Kroah-Hartman

greybus: allocate connection host cport id

Allocate a cport id from the host device whenever creating a
connection.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent 1bb3c724
......@@ -23,7 +23,7 @@
* pointer otherwise.
*/
struct gb_connection *gb_connection_create(struct greybus_host_device *hd,
u16 cport_id, struct gb_function *function)
struct gb_function *function)
{
struct gb_connection *connection;
......@@ -31,8 +31,13 @@ struct gb_connection *gb_connection_create(struct greybus_host_device *hd,
if (!connection)
return NULL;
connection->cport_id = greybus_hd_cport_id_alloc(hd);
if (connection->cport_id == CPORT_ID_BAD) {
kfree(connection);
return NULL;
}
connection->hd = hd; /* XXX refcount? */
connection->cport_id = cport_id;
connection->function = function; /* XXX refcount? */
INIT_LIST_HEAD(&connection->operations);
atomic_set(&connection->op_cycle, 0);
......@@ -51,6 +56,7 @@ void gb_connection_destroy(struct gb_connection *connection)
/* XXX Need to wait for any outstanding requests to complete */
WARN_ON(!list_empty(&connection->operations));
greybus_hd_cport_id_free(connection->hd, connection->cport_id);
/* kref_put(function); */
/* kref_put(hd); */
kfree(connection);
......
......@@ -25,7 +25,7 @@ struct gb_connection {
};
struct gb_connection *gb_connection_create(struct greybus_host_device *hd,
u16 cport_id, struct gb_function *function);
struct gb_function *function);
void gb_connection_destroy(struct gb_connection *connection);
u16 gb_connection_op_id(struct gb_connection *connection);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment