Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 138230
b: refs/heads/master
c: 0dc641d
h: refs/heads/master
v: v3
  • Loading branch information
Jean-Francois Moine authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent 7be41ee commit a2852b2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 235f0e4348cc57d5a5fe36d07530ecf6541eeae5
refs/heads/master: 0dc641dc9f7f168fc45f3032b22dcf7d5b57c47c
12 changes: 7 additions & 5 deletions trunk/drivers/media/video/gspca/gspca.c
Original file line number Diff line number Diff line change
Expand Up @@ -474,21 +474,23 @@ static struct usb_host_endpoint *get_ep(struct gspca_dev *gspca_dev)
i = gspca_dev->alt; /* previous alt setting */

/* try isoc */
while (--i > 0) { /* alt 0 is unusable */
while (--i >= 0) {
ep = alt_xfer(&intf->altsetting[i],
USB_ENDPOINT_XFER_ISOC);
if (ep)
break;
}

/* if no isoc, try bulk */
/* if no isoc, try bulk (alt 0 only) */
if (ep == NULL) {
ep = alt_xfer(&intf->altsetting[0],
USB_ENDPOINT_XFER_BULK);
if (ep == NULL) {
err("no transfer endpoint found");
return NULL;
}
i = 0;
gspca_dev->bulk = 1;
}
PDEBUG(D_STREAM, "use alt %d ep 0x%02x",
i, ep->desc.bEndpointAddress);
Expand All @@ -515,7 +517,7 @@ static int create_urbs(struct gspca_dev *gspca_dev,
/* calculate the packet size and the number of packets */
psize = le16_to_cpu(ep->desc.wMaxPacketSize);

if (gspca_dev->alt != 0) { /* isoc */
if (!gspca_dev->bulk) { /* isoc */

/* See paragraph 5.9 / table 5-11 of the usb 2.0 spec. */
psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
Expand Down Expand Up @@ -615,7 +617,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
goto out;

/* clear the bulk endpoint */
if (gspca_dev->alt == 0) /* if bulk transfer */
if (gspca_dev->bulk)
usb_clear_halt(gspca_dev->dev,
gspca_dev->urb[0]->pipe);

Expand All @@ -628,7 +630,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
gspca_dev->streaming = 1;

/* some bulk transfers are started by the subdriver */
if (gspca_dev->alt == 0 && gspca_dev->cam.bulk_nurbs == 0)
if (gspca_dev->bulk && gspca_dev->cam.bulk_nurbs == 0)
break;

/* submit the URBs */
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/video/gspca/gspca.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ struct gspca_dev {
__u8 iface; /* USB interface number */
__u8 alt; /* USB alternate setting */
__u8 nbalt; /* number of USB alternate settings */
u8 bulk; /* image transfer by 0:isoc / 1:bulk */
};

int gspca_dev_probe(struct usb_interface *intf,
Expand Down

0 comments on commit a2852b2

Please sign in to comment.