linux/drivers/media/usb
Oleksij Rempel b1e43f2326 [media] uvcvideo: Do not use usb_set_interface on bulk EP
The UVC specification uses alternate setting selection to notify devices
of stream start/stop. This breaks when using bulk-based devices, as the
video streaming interface has a single alternate setting in that case,
making video stream start and video stream stop events to appear
identical to the device. Bulk-based devices are thus not well supported
by UVC.

The webcam built in the Asus Zenbook UX302LA ignores the set interface
request and will keep the video stream enabled when the driver tries to
stop it. If USB autosuspend is enabled the device will then be suspended
and will crash, requiring a cold reboot.

USB trace capture showed that Windows sends a CLEAR_FEATURE(HALT)
request to the bulk endpoint when stopping the stream instead of
selecting alternate setting 0. The camera then behaves correctly, and
thus seems to require that behaviour.

Replace selection of alternate setting 0 with clearing of the endpoint
halt feature at video stream stop for bulk-based devices. Let's refrain
from blaming Microsoft this time, as it's not clear whether this
Windows-specific but USB-compliant behaviour was specifically developed
to handle bulkd-based UVC devices, or if the camera just took advantage
of it.

CC: stable@vger.kernel.org
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-03-05 16:57:46 -03:00
..
au0828 [media] au0828: rework GPIO management for HVR-950q 2014-02-28 15:21:31 -03:00
b2c2 [media] drivers: media: usb: b2c2: use usb_*_coherent() instead of pci_*_consistent() in flexcop-usb.c 2013-10-17 11:26:41 -03:00
cpia2 [media] media: Change variable type to bool 2013-10-17 11:24:35 -03:00
cx231xx [media, edac] Change my email address 2014-02-07 08:03:07 -02:00
dvb-usb Merge branch 'upstream-fixes' into patchwork 2013-12-13 05:04:00 -02:00
dvb-usb-v2 [media] rtl2832: remove unused if_dvbt config parameter 2014-03-05 15:36:59 -03:00
em28xx [media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags 2014-03-05 16:34:14 -03:00
gspca [media] gspca_topro: Add a couple of missing length check in the packet parsing code 2014-02-28 14:38:16 -03:00
hdpvr [media] hdpvr: fix sparse warnings 2013-10-15 12:54:20 -03:00
pvrusb2 [media] pvrusb2: fix sparse warning 2013-10-15 12:54:38 -03:00
pwc [media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags 2014-03-05 16:34:14 -03:00
s2255 [media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags 2014-03-05 16:34:14 -03:00
siano [media] siano: Use the default firmware for Stellar 2013-10-14 06:41:10 -03:00
stk1160 [media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags 2014-03-05 16:34:14 -03:00
stkwebcam [media] Add HCL T12Rg-H to STK webcam upside-down table 2013-09-26 07:15:49 -03:00
tlg2300 [media] tlg2300: fix sparse warning 2013-10-15 13:00:38 -03:00
tm6000 [media, edac] Change my email address 2014-02-07 08:03:07 -02:00
ttusb-budget [media] ttusb-budget: fix memory leak in ttusb_probe() 2013-06-21 15:06:51 -03:00
ttusb-dec [media] dvb-usb: fix error handling in ttusb_dec_probe() 2013-10-03 07:33:59 -03:00
usbtv [media] v4l: Rename vb2_queue.timestamp_type as timestamp_flags 2014-03-05 16:34:14 -03:00
usbvision [media] usbvision: drop unused define USBVISION_SAY_AND_WAIT 2014-02-04 09:52:39 -02:00
uvc [media] uvcvideo: Do not use usb_set_interface on bulk EP 2014-03-05 16:57:46 -03:00
zr364xx [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
Kconfig [media] sn9c102: prepare for removal by moving it to staging 2013-12-20 13:41:36 -02:00
Makefile [media] sn9c102: prepare for removal by moving it to staging 2013-12-20 13:41:36 -02:00