Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Nova-T and uncorrected blocks



Hi all.

I have uncorrected blocks with newer DVB driver revisions (I think someone have this problem already announced this to the mailling list). There is Grundig 29504-401 frontend on my Nova-T. Latest CVS contains grundig_29504-401.c revision 1.9. Tzap gives following output:

[root@vonasek driver]# tzap -a 1 -r CT1
using '/dev/dvb/adapter1/frontend0' and '/dev/dvb/adapter1/demux0'
tuning to 674000000 Hz
status 01 | signal 3434 | snr 0000 | ber 0000ffff | unc 00000000 |
status 1f | signal 3434 | snr 9b9b | ber 000064a8 | unc 00000513 | FE_HAS_LOCK
status 1f | signal 3434 | snr 9999 | ber 00007238 | unc 0000011a | FE_HAS_LOCK
status 1f | signal 3434 | snr 9a9a | ber 000067e4 | unc 0000013f | FE_HAS_LOCK
status 1f | signal 3434 | snr 9c9c | ber 000065e5 | unc 000001e5 | FE_HAS_LOCK
status 1f | signal 3434 | snr 9494 | ber 00006d04 | unc 00000197 | FE_HAS_LOCK
status 1f | signal 3434 | snr 9a9a | ber 00006ee9 | unc 00000150 | FE_HAS_LOCK
status 1f | signal 3434 | snr 9797 | ber 00006f13 | unc 000000f8 | FE_HAS_LOCK
status 1f | signal 3434 | snr 9c9c | ber 00006506 | unc 0000012a | FE_HAS_LOCK


Last revision, that looks good is 1.6:

[root@vonasek driver]# tzap -a 1 -r CT1
using '/dev/dvb/adapter1/frontend0' and '/dev/dvb/adapter1/demux0'
tuning to 674000000 Hz
status 01 | signal 3434 | snr 1d1d | ber 0000ffff | unc 00000000 |
status 1f | signal 3434 | snr a3a3 | ber 0000581d | unc 00000000 | FE_HAS_LOCK
status 1f | signal 3434 | snr a5a5 | ber 0000541a | unc 00000000 | FE_HAS_LOCK
status 1f | signal 3434 | snr a6a6 | ber 00004fd7 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 3434 | snr a5a5 | ber 00005089 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 3434 | snr a5a5 | ber 00005717 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 3434 | snr a3a3 | ber 00006428 | unc 00000000 | FE_HAS_LOCK


And the problem is in tsa5060_set_tv_freq function.
Revision 1.6:
static
int tsa5060_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq)
{
u32 div;
u8 buf [4];
u8 cfg;

div = (36000000 + freq) / 166666;
cfg = 0x88;

buf [0] = (div >> 8) & 0x7f;
buf [1] = div & 0xff;
buf [2] = ((div >> 10) & 0x60) | cfg;
buf [3] = 0xc0;

return tsa5060_write (i2c, buf);
}



Revision 1.9:
static
int tsa5060_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq)
{
u32 div;
u8 buf [4];
u8 cfg, cpump, band_select;

div = (36125000 + freq) / 166666;
cfg = 0x88;

cpump = div < 175000000 ? 2 : div < 390000000 ? 1 :
div < 470000000 ? 2 : div < 750000000 ? 1 : 3;

band_select = div < 175000000 ? 0x0e : div < 470000000 ? 0x05 : 0x03;

buf [0] = (div >> 8) & 0x7f;
buf [1] = div & 0xff;
buf [2] = ((div >> 10) & 0x60) | cfg;
buf [3] = cpump | band_select;

return tsa5060_write(i2c, buf);
}

If I change buf [3] in rev. 1.9 to 0xc0 all works fine. What is cpump and band_select???? BTW. the compared values 175000000, 390000000, 470000000 and 750000000 are too high. Cpump will be always 2 and band_select 0xe, unless you tune to 29 THz :))) It seems that these values are frequencies which divide individual frequency bands. I tried to compare freq instead of div. This gives cpump=1 band_select=3, but uncorrected blocks remains...


Michal



--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index