greybus: es2: disable cport-in after remove greybus host device
authorViresh Kumar <viresh.kumar@linaro.org>
Thu, 21 Apr 2016 06:01:14 +0000 (11:31 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 21 Apr 2016 07:11:15 +0000 (16:11 +0900)
This allows greybus to do operations before being removed.

Tested by removing the gb-es2.ko module on both EVT1.5 and qemu with
gbsim. The driver removes the greybus host device successfully before
disabling the urbs. The errors are still coming ("urb cport in error -2
(dropped)"), but with an error value -2 (ENOENT) instead of -108. And
that happens while the urbs are disabled, not while doing greybus
operations.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: David Lin <dtwlin@google.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/es2.c

index 0cc9fe6..8138bc2 100644 (file)
@@ -695,11 +695,11 @@ static void ap_disconnect(struct usb_interface *interface)
        struct es2_ap_dev *es2 = usb_get_intfdata(interface);
        int i;
 
+       gb_hd_del(es2->hd);
+
        for (i = 0; i < NUM_BULKS; ++i)
                es2_cport_in_disable(es2, &es2->cport_in[i]);
 
-       gb_hd_del(es2->hd);
-
        es2_destroy(es2);
 }