Hi Thomas,
Looks like the device does not like to be fed with the (full) init
METHOD2 on every open()...
Since the VIDIOC_QUERYCAP worked it should not be the wrong METHOD.
Someone reported similar behavior recently, and was apparently able to
fix the issue by adding more delay between open/close sequences.
Could you try the attached patch to see if it solves the issue?
If not, we can also try to add some mdelay() after each usb_control_msg().
Regards,
Antoine
--
Antoine "Royale" Jacquet
http://royale.zerezo.com
diff -r 77e731753c15 linux/drivers/media/video/zr364xx.c
--- a/linux/drivers/media/video/zr364xx.c Thu Feb 11 12:02:16 2010 -0200
+++ b/linux/drivers/media/video/zr364xx.c Thu Feb 11 16:01:44 2010 +0100
@@ -1005,7 +1005,7 @@
/* Added some delay here, since opening/closing the camera quickly,
* like Ekiga does during its startup, can crash the webcam
*/
- mdelay(100);
+ mdelay(200);
cam->skip = 2;
ret = 0;
@@ -1310,7 +1310,7 @@
/* Added some delay here, since opening/closing the camera quickly,
* like Ekiga does during its startup, can crash the webcam
*/
- mdelay(100);
+ mdelay(200);
err = 0;
out:
@@ -1396,7 +1396,7 @@
/* Added some delay here, since opening/closing the camera quickly,
* like Ekiga does during its startup, can crash the webcam
*/
- mdelay(100);
+ mdelay(200);
err = 0;
out: