Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e75b82bf authored by Viresh Kumar's avatar Viresh Kumar Committed by Greg Kroah-Hartman
Browse files

greybus: initialize svc connection while creating hd



Its really part of initializing the host device and is required for
every 'hd' that is created. Lets move the call to do basic
initialization of svc connection to greybus_create_hd().

Also add a comment to specify why we need to do it that early.

Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent ca539a67
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -208,6 +208,21 @@ struct greybus_host_device *greybus_create_hd(struct greybus_host_driver *driver
	ida_init(&hd->cport_id_map);
	hd->buffer_size_max = buffer_size_max;

	/*
	 * Initialize AP's SVC protocol connection:
	 *
	 * This is required as part of early initialization of the host device
	 * as we need this connection in order to start any kind of message
	 * exchange between the AP and the SVC. SVC will start with a
	 * 'get-version' request followed by a 'svc-hello' message and at that
	 * time we will create a fully initialized svc-connection, as we need
	 * endo-id and AP's interface id for that.
	 */
	if (!gb_ap_svc_connection_create(hd)) {
		kref_put_mutex(&hd->kref, free_hd, &hd_mutex);
		return ERR_PTR(-ENOMEM);
	}

	return hd;
}
EXPORT_SYMBOL_GPL(greybus_create_hd);
+0 −6
Original line number Diff line number Diff line
@@ -563,12 +563,6 @@ static int ap_probe(struct usb_interface *interface,
		return PTR_ERR(hd);
	}

	/* Initialize AP's greybus interface */
	if (!gb_ap_svc_connection_create(hd)) {
		retval = -EINVAL;
		goto error;
	}

	es1 = hd_to_es1(hd);
	es1->hd = hd;
	es1->usb_intf = interface;
+0 −6
Original line number Diff line number Diff line
@@ -663,12 +663,6 @@ static int ap_probe(struct usb_interface *interface,
		return PTR_ERR(hd);
	}

	/* Initialize AP's greybus interface */
	if (!gb_ap_svc_connection_create(hd)) {
		retval = -EINVAL;
		goto error;
	}

	es1 = hd_to_es1(hd);
	es1->hd = hd;
	es1->usb_intf = interface;
+0 −1
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ gb_ap_svc_connection_create(struct greybus_host_device *hd)

	return connection;
}
EXPORT_SYMBOL_GPL(gb_ap_svc_connection_create);

/*
 * We know endo-type and AP's interface id now, lets create a proper svc