[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:
parent
3f0a4d296e
commit
f43402fa55
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue