Hi all,
> I have a hunch about this problem...
...
> This, ... leads me to believe that this is timer-induced. Something
> can't keep up. Adding debugging makes the operations slightly slower
> (the module needs to do additional IO to speak to syslogd), and this
> delay seems to be enough to keep it operational.
Attached is an extremely simple patch which seems to resolve the issue
for me. Before turning streaming on/off, I have inserted a tiny delay or
10 ms-
Just using 'debug=1' wasn't enough to keep tuner 2 from dying. I set it
up yesterday morning with debug=1, and when I got back home in the
evening the second tuner was dead again. I then made the attached patch
and the system has been stable since then (~24 hrs).
I also made a slight change by removing a "| 0x00" from the code. It
performs absolutely nothing (and is probably removed by the compiler in
optimization) but confuse when reading the code, imho... Patrick, if you
really want it there I can recreate the patch with the or statement
back ;)
Feel free to try it out.
// J
diff -r c08115f8f1f3 linux/drivers/media/dvb/dvb-usb/dib0700_core.c
--- a/linux/drivers/media/dvb/dvb-usb/dib0700_core.c Sun Jan 27 17:24:26 2008 +0000
+++ b/linux/drivers/media/dvb/dvb-usb/dib0700_core.c Mon Feb 04 19:17:03 2008 +0100
@@ -243,7 +243,7 @@ int dib0700_streaming_ctrl(struct dvb_us
u8 b[4];
b[0] = REQUEST_ENABLE_VIDEO;
- b[1] = (onoff << 4) | 0x00; /* this bit gives a kind of command, rather than enabling something or not */
+ b[1] = (onoff << 4); /* this bit gives a kind of command, rather than enabling something or not */
b[2] = (0x01 << 4); /* Master mode */
b[3] = 0x00;
@@ -256,6 +256,7 @@ int dib0700_streaming_ctrl(struct dvb_us
b[2] |= st->channel_state;
+ msleep(10);
deb_info("data for streaming: %x %x\n",b[1],b[2]);
return dib0700_ctrl_wr(adap->dev, b, 4);
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb