]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/gspca/finepix.c
V4L/DVB (9853): gspca: Webcam 093a:2622 added in pac7311.
[linux-2.6-omap-h63xx.git] / drivers / media / video / gspca / finepix.c
index 65d3cbfe6b278e7446038696a2eaa8172d1695f5..03cb9446632376eaebb9081ec27291a1d0a41c04 100644 (file)
@@ -276,6 +276,12 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
        /* Stop the state machine */
        if (dev->state != FPIX_NOP)
                wait_for_completion(&dev->can_close);
+}
+
+/* called on streamoff with alt 0 and disconnect */
+static void sd_stop0(struct gspca_dev *gspca_dev)
+{
+       struct usb_fpix *dev = (struct usb_fpix *) gspca_dev;
 
        usb_free_urb(dev->control_urb);
        dev->control_urb = NULL;
@@ -308,9 +314,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
        int ret;
        int size_ret;
 
-       /* Reset bulk in endpoint */
-       usb_clear_halt(gspca_dev->dev, gspca_dev->cam.epaddr);
-
        /* Init the device */
        memset(gspca_dev->usb_buf, 0, 12);
        gspca_dev->usb_buf[0] = 0xc6;
@@ -385,6 +388,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
 error:
        /* Free the ressources */
        sd_stopN(gspca_dev);
+       sd_stop0(gspca_dev);
        return ret;
 }
 
@@ -425,6 +429,7 @@ static const struct sd_desc sd_desc = {
        .init = sd_init,
        .start = sd_start,
        .stopN = sd_stopN,
+       .stop0 = sd_stop0,
 };
 
 /* -- device connect -- */