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 linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb