[media] gspca - main: Fix a regression with the PS3 Eye webcam

When audio is present, some alternate settings were skipped.
This prevented some webcams to work, especially when bulk transfer was used.
This patch permits to use the last or only alternate setting.

Reported-by: Antonio Ospite <ospite@studenti.unina.it>
Tested-by: Antonio Ospite <ospite@studenti.unina.it>
Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Jean-François Moine 2010-10-16 13:54:05 -03:00 committed by Mauro Carvalho Chehab
parent 3f0a4d296e
commit f43402fa55
1 changed files with 2 additions and 2 deletions

View File

@ -652,7 +652,7 @@ static struct usb_host_endpoint *get_ep(struct gspca_dev *gspca_dev)
: USB_ENDPOINT_XFER_ISOC; : USB_ENDPOINT_XFER_ISOC;
i = gspca_dev->alt; /* previous alt setting */ i = gspca_dev->alt; /* previous alt setting */
if (gspca_dev->cam.reverse_alts) { if (gspca_dev->cam.reverse_alts) {
if (gspca_dev->audio) if (gspca_dev->audio && i < gspca_dev->nbalt - 2)
i++; i++;
while (++i < gspca_dev->nbalt) { while (++i < gspca_dev->nbalt) {
ep = alt_xfer(&intf->altsetting[i], xfer); ep = alt_xfer(&intf->altsetting[i], xfer);
@ -660,7 +660,7 @@ static struct usb_host_endpoint *get_ep(struct gspca_dev *gspca_dev)
break; break;
} }
} else { } else {
if (gspca_dev->audio) if (gspca_dev->audio && i > 1)
i--; i--;
while (--i >= 0) { while (--i >= 0) {
ep = alt_xfer(&intf->altsetting[i], xfer); ep = alt_xfer(&intf->altsetting[i], xfer);