msi3101_dbg_usb_control_msg(s->udev,
request, requesttype, value, index, NULL, 0);
- ret = usb_control_msg(s->udev, usb_rcvctrlpipe(s->udev, 0),
+ ret = usb_control_msg(s->udev, usb_sndctrlpipe(s->udev, 0),
request, requesttype, value, index, NULL, 0, 2000);
if (ret)
if (mutex_lock_interruptible(&s->v4l2_lock))
return -ERESTARTSYS;
- msi3101_ctrl_msg(s, CMD_STOP_STREAMING, 0);
-
if (s->udev)
msi3101_isoc_cleanup(s);
msi3101_cleanup_queued_bufs(s);
+
+ /* according to tests, at least 700us delay is required */
+ msleep(20);
+ msi3101_ctrl_msg(s, CMD_STOP_STREAMING, 0);
+
mutex_unlock(&s->v4l2_lock);
return 0;