greybus: connection: fix connection initialisation

Make sure connection is fully initialised before registering the
connection device and adding it to the host-device and bundle lists.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index feb6e49..4663397 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -183,6 +183,10 @@
 	connection->bundle = bundle;
 	connection->state = GB_CONNECTION_STATE_DISABLED;
 
+	atomic_set(&connection->op_cycle, 0);
+	spin_lock_init(&connection->lock);
+	INIT_LIST_HEAD(&connection->operations);
+
 	connection->dev.parent = parent;
 	connection->dev.bus = &greybus_bus_type;
 	connection->dev.type = &greybus_connection_type;
@@ -215,10 +219,6 @@
 
 	spin_unlock_irq(&gb_connections_lock);
 
-	atomic_set(&connection->op_cycle, 0);
-	spin_lock_init(&connection->lock);
-	INIT_LIST_HEAD(&connection->operations);
-
 	/* XXX Will have to establish connections to get version */
 	gb_connection_bind_protocol(connection);
 	if (!connection->protocol)