I found that dib3000mc_set_timing in dib3000mc_tune is not called because the
status of the register 509 take some time to udpate.
I added some msleep to do that. Perhaps they are a better way to do that.
Jose Alberto
diff -r f96f68c4e5d9 linux/drivers/media/dvb/frontends/dib3000mc.c
--- a/linux/drivers/media/dvb/frontends/dib3000mc.c Thu Jul 19 18:06:54 2007 -0300
+++ b/linux/drivers/media/dvb/frontends/dib3000mc.c Sat Jul 21 18:31:35 2007 +0200
@@ -38,6 +38,7 @@ struct dib3000mc_state {
struct dibx000_i2c_master i2c_master;
u32 timf;
+ u8 timf_nofirst;
fe_bandwidth_t current_bandwidth;
@@ -591,6 +592,13 @@ static int dib3000mc_tune(struct dvb_fro
dib3000mc_write_word(state, 26, 30336);
dib3000mc_write_word(state, 33, 6);
}
+
+ if (state->timf_nofirst == 0) {
+ state->timf_nofirst = 1;
+ msleep (500);
+ }
+ else
+ msleep (20);
if (dib3000mc_read_word(state, 509) & 0x80)
dib3000mc_set_timing(state, ch->nfft, ch->Bw, 1);
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb