gspca_pac7302: sporatdic problem when plugging the device
Hi,
I have sporadic problem with Labtec Webcam 2200 (0x093a:0x2626). I'm using gspca_pac7302 driver from http://linuxtv.org/hg/~jfrancois/gspca/
rev 13915 on top of Linux kernel 2.6.32.
I executed the following command in an xterm window:
$ while true; do ./svv; done
Then I plugged and unplugged the device 16 times. When I last plugged the device I get the following error in the dmesg:
[32393.421313] gspca: probing 093a:2626 [32393.426193] gspca: video0 created [32393.426958] gspca: probing 093a:2626 [32393.426968] gspca: Interface class 1 not handled here [32394.005917] pac7302: reg_w_page(): Failed to write register to index 0x49, value 0x0, error -71 [32394.067799] gspca: set alt 8 err -71 [32394.090792] gspca: set alt 8 err -71 [32394.118159] gspca: set alt 8 err -71
The 17th plug was working correctly again. I executed this test on an EeePC 901.
This driver version contains the msleep(4) in the reg_w_buf(). However, here the reg_w_page() fails, which does not have msleep() inside. I don't know what is the real problem, but I am afraid that slowing down reg_w_page() would make the time longer when the device can be used starting from the event when it is plugged.
Regards,
Márton Németh
Quoted 13 lines · On Sun, 10 Jan 2010 17:58:58 +0100 Németh Márton <[email protected]> wrote:
Then I plugged and unplugged the device 16 times. When I last plugged the device I get the following error in the dmesg:
[32393.421313] gspca: probing 093a:2626 [32393.426193] gspca: video0 created [32393.426958] gspca: probing 093a:2626 [32393.426968] gspca: Interface class 1 not handled here [32394.005917] pac7302: reg_w_page(): Failed to write register to index 0x49, value 0x0, error -71 [32394.067799] gspca: set alt 8 err -71 [32394.090792] gspca: set alt 8 err -71 [32394.118159] gspca: set alt 8 err -71
Quoted 8 lines
The 17th plug was working correctly again. I executed this test on an EeePC 901.
This driver version contains the msleep(4) in the
reg_w_buf(). However, here thereg_w_page()fails, which does not havemsleep()inside. I don't know what is the real problem, but I am afraid that slowing downreg_w_page()would make the time longer when the device can be used starting from the event when it is plugged.
Hi again,
I don't understand what you mean by:
Quoted 3 lines
This driver version contains the msleep(4) in the
reg_w_buf(). However, here thereg_w_page()fails, which does not havemsleep()inside.
Indeed the delay will slow down the webcam start (256 * 4 ms = 1s).
If having a delay fixes the problem, then, as the error always occurs at the same index 0x49 (3 reports), a single delay could be set before writing to this index. Do you want I code this for test?
Regards.
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Quoted 25 lines · Jean-Francois Moine
Quoted 13 lines · On Sun, 10 Jan 2010 17:58:58 +0100 Németh Márton <[email protected]> wrote:
Then I plugged and unplugged the device 16 times. When I last plugged the device I get the following error in the dmesg:
[32393.421313] gspca: probing 093a:2626 [32393.426193] gspca: video0 created [32393.426958] gspca: probing 093a:2626 [32393.426968] gspca: Interface class 1 not handled here [32394.005917] pac7302: reg_w_page(): Failed to write register to index 0x49, value 0x0, error -71 [32394.067799] gspca: set alt 8 err -71 [32394.090792] gspca: set alt 8 err -71 [32394.118159] gspca: set alt 8 err -71Quoted 8 lines
The 17th plug was working correctly again. I executed this test on an EeePC 901.
This driver version contains the msleep(4) in the
reg_w_buf(). However, here thereg_w_page()fails, which does not havemsleep()inside. I don't know what is the real problem, but I am afraid that slowing downreg_w_page()would make the time longer when the device can be used starting from the event when it is plugged.
Quoted 6 lines
Hi again,
I don't understand what you mean by:
Quoted 3 lines
This driver version contains the msleep(4) in the
reg_w_buf(). However, here thereg_w_page()fails, which does not havemsleep()inside.
I tought that the msleep(4) call introduced recently fixed the plug-in problem. It seems I misunderstood something.
Quoted 5 lines
Indeed the delay will slow down the webcam start (256 * 4 ms = 1s).
If having a delay fixes the problem, then, as the error always occurs at the same index
0x49(3 reports), a single delay could be set before writing to this index. Do you want I code this for test?
I tested the behaviour a little bit more. Out of 100 plug-ins:
OK: 81 times
"pac7302: reg_w_page(): Failed to write register to index 0x49, value 0x0, error -71": 19 times
Other error message I haven't got, so 19% of the time writing to register index 0x49 fails in reg_w_page(). So let's try doing fixing the way you described. If you send me a patch I can test it.
Regards,
Márton Németh
Quoted 9 lines · On Sun, 10 Jan 2010 21:28:29 +0100 Németh Márton <[email protected]> wrote:
I tested the behaviour a little bit more. Out of 100 plug-ins:
OK: 81 times
"pac7302:reg_w_page(): Failed to write register to index0x49, value0x0, error -71": 19 timesOther error message I haven't got, so 19% of the time writing to register index
0x49fails inreg_w_page(). So let's try doing fixing the way you described. If you send me a patch I can test it.
In some usbsnoop files I have, the index 0x48 is not loaded. May you try the attached patch (skip the index 0x48 and remove the delay).
(Stéphane, est-ce que tu peux voir aussi ce que ça donne chez toi?)
Regards.
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Sorry, I forgot to attach the patch.
Quoted 4 lines
In some usbsnoop files I have, the index
0x48is not loaded. May you try the attached patch (skip the index0x48and remove the delay).(Stéphane, est-ce que tu peux voir aussi ce que ça donne chez toi?)
Regards.
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Németh Márton
Tested-byJean-Francois Moine írta:
Quoted 4 lines
Sorry, I forgot to attach the patch.
Quoted 2 lines
In some usbsnoop files I have, the index
0x48is not loaded. May you try the attached patch (skip the index0x48and remove the delay).
100 plug-ins out of 100 OK, no errors: I say go for this patch.
I applied the patch on top of rev 14000:bc5737e0e757 from
http://linuxtv.org/hg/~jfrancois/gspca/ . I tested the driver on top of 2.6.32 with Labtec Webcam 2200 (0x093a:0x2626).
Thanks for the fix.
Regards,
Márton Németh