OSDN Git Service

[media] em28xx: fix analog streaming with USB bulk transfers
authorFrank Schaefer <fschaefer.oss@googlemail.com>
Thu, 7 Feb 2013 16:32:46 +0000 (13:32 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 11 Feb 2013 20:17:44 +0000 (18:17 -0200)
commit33f6984ecefb9b84f1b4d1d3b9022731bb8b62d0
tree52b7d2df6ef5ea77c927aa6c3379ac5ebd63f491
parent4880f56438ef56457edd5548b257382761591998
[media] em28xx: fix analog streaming with USB bulk transfers

With the conversion to videobuf2, some unnecessary calls of
em28xx_set_alternate() have been removed. It is now called at analog streaming
start only.
This has unveiled a bug that causes USB bulk transfers to fail with all urbs
having status -EVOERFLOW.
The reason is, that for bulk transfers usb_set_interface() needs to be called
even if the previous alt setting was the same (side note: bulk transfers seem
to work only with alt=0).
While it seems to be NOT necessary for isoc transfers, it's reasonable to just
call usb_set_interface() unconditionally in em28xx_set_alternate().
Also add a comment that explains the issue to prevent regressions in the future.

Cc: stable@vger.kernel.org # for 3.8
Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/em28xx/em28xx-core.c