diff --git a/drivers/staging/greybus/es1.c b/drivers/staging/greybus/es1.c index 2ec5d7b403a3..bbf1bd1048be 100644 --- a/drivers/staging/greybus/es1.c +++ b/drivers/staging/greybus/es1.c @@ -559,9 +559,6 @@ static int ap_probe(struct usb_interface *interface, usb_rcvintpipe(udev, es1->svc_endpoint), es1->svc_buffer, ES1_SVC_MSG_SIZE, svc_in_callback, 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 */ for (i = 0; i < NUM_CPORT_IN_URB; ++i) { @@ -598,6 +595,11 @@ static int ap_probe(struct usb_interface *interface, 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; error: ap_disconnect(interface);