Commit 45a70636 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

greybus: es1.c: wait until the last possible minute to start the svc messages

When initializing the USB device, we were starting up the svc message
queue before the cport urbs were allocated.  This might not be an issue
for "slower" machines, but not having any allocated urbs for a cport
might be an issue if we were to handle svc messages.

So wait until everything is properly initialized and allocated before
starting the svc urb.
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent e0b179ee
...@@ -559,9 +559,6 @@ static int ap_probe(struct usb_interface *interface, ...@@ -559,9 +559,6 @@ static int ap_probe(struct usb_interface *interface,
usb_rcvintpipe(udev, es1->svc_endpoint), usb_rcvintpipe(udev, es1->svc_endpoint),
es1->svc_buffer, ES1_SVC_MSG_SIZE, svc_in_callback, es1->svc_buffer, ES1_SVC_MSG_SIZE, svc_in_callback,
hd, svc_interval); hd, svc_interval);
retval = usb_submit_urb(es1->svc_urb, GFP_KERNEL);
if (retval)
goto error;
/* Allocate buffers for our cport in messages and start them up */ /* Allocate buffers for our cport in messages and start them up */
for (i = 0; i < NUM_CPORT_IN_URB; ++i) { for (i = 0; i < NUM_CPORT_IN_URB; ++i) {
...@@ -598,6 +595,11 @@ static int ap_probe(struct usb_interface *interface, ...@@ -598,6 +595,11 @@ static int ap_probe(struct usb_interface *interface,
es1->cport_out_urb_busy[i] = false; /* just to be anal */ es1->cport_out_urb_busy[i] = false; /* just to be anal */
} }
/* Start up our svc urb, which allows events to start flowing */
retval = usb_submit_urb(es1->svc_urb, GFP_KERNEL);
if (retval)
goto error;
return 0; return 0;
error: error:
ap_disconnect(interface); ap_disconnect(interface);
......
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