Hi. Trent Piepho schrieb: > On Mon, 12 Mar 2007, Hartmut Hackmann wrote: >>> On Sunday 11 March 2007 09:40, Trent Piepho wrote: >>>> In dvb-pll, the frequency offset, which is the IF frequency the tuner will >>>> output at, is set to 36.213333 MHz. It looks like this code was written >>>> about two years ago by Patrick as part of the reverse engineered cxusb >>>> driver. >>>> >>>> In saa7134-dvb, there is some totally different code from programming >>>> fmd1216 tuners, and it uses an IF frequency of 36.13 MHz. >>>> >>>> So, why the difference? > > After looking at dvb-pll some more, I'm pretty sure the difference between > the saa7134 and the dvb-pll IF frequency is that the dvb-pll version has > 1/2 the step size added in, so the result will be rounded correctly. > > I think that should be done is adjust the IF values in in the dvb-pll > config structs to NOT include step-size/2 for rounding. Just use the IF > frequency. This is how most of the PLL definitions are already. The code > which calculates the divisor should be changed to round to the nearest > integer, rather than round down. > Jep >> I wrote the code in saa7134-dvb. The FMD1216 has an integrated SAW filter >> for DVB-T, the data sheet says 36.13MHz. This is strange because the >> data sheet also recommends a tuning step size of 167 kHz (4 MHz / 24), >> so it should be 36.167MHz.... > > Maybe the person who picked the SAW filter and the person who recommended > the step size should have talked to each other... > >> When i started writing it, there was no dvb-pll module. And the reason >> why i didn't move to dvb-pll yet is that this module has no means to >> control the RF AGC. Philips recommends different setting for analog and >> DVB-T. > > dvb-pll can do this now. These are the notes I've made about converting > fmd1216 to use dvb-pll wrt the saa7134 driver. > ok that's new > saa7134 driver > > tda10046 demod, driver supports IF 36.13 Mhz (used here) or 36.17 MHz > SAA7134_BOARD_MD7134 Medion 7134 > SAA7134_BOARD_ASUS_EUROPA2_HYBRID Asus Europa2 OEM > > tuner_ops.init = philips_fmd1216_tuner_init > tuner_ops.sleep = philips_fmd1216_tuner_sleep > tuner_ops.set_params = philips_fmd1216_tuner_set_params > > philips_fmd1216_tuner_init() just sends { 0x0b, 0xdc, 0x9c, 0xa0 } to the > tuner. It could be replaced with the dvb-pll version, which will have > the same effect. > I will have a look > philips_fmd1216_tuner_set_params() does not use dvb_pll_configure(), but is > totally different code. I've looked through it, and it will end up sending > almost the same data to the tuner. The only difference is that dvb-pll > uses a IF frequency of 36.213333 MHz while the code in saa7134 uses 36.13 > MHz. In this case, I think dvb-pll is wrong. It looks like the 26.213 MHz > value was written by Patrick Boettcher in 2005 when he wrote the cxusb > driver. Actually, what I think now is that the dvb-pll value is offset by > stepsize/2 for rounding, since dvb-pll rounds down while saa7143 rounds to > nearest. I should make a patch to fix rounding in dvb-pll. > > philips_fmd1216_tuner_sleep() is buggy! The _first_ time it is called > after _module loading_ it will send {0x0b, 0xdc, 0x9c, 0x60} and then > {0x0b, 0xdc, 0x86, 0x54} to the tuner. The first sequence sets AGC to > analog mode (IMHO, the v4l tuner driver should do this for tuner init, > but it doesn't). The second sequence just tunes to some random frequency > for no apparent reason. Neither actually turns the tuner off! > AFIK the v4l tuner driver can't do this since init is called only one at module initialization. Maybe the sequence is overdone but the intention is: - set up RF AGC - set the PLL to a valid frequency. I was told that this is important. - turn on the tda9887. This is invisible on the I2C bus in DVB mode. I am not aware that the tuner actually has a sleep mode. I used the sleep call be cause it simply was there. > After the first time it is called, philips_fmd1216_tuner_sleep() will just > send {0x0b, 0xdc, 0x86, 0x54} twice! The array the sequence is in > shouldn't be static, or there should just be two static arrays for each > sequence. IMHO, using static locals that are not const is almost always > wrong in the kernel. > Thats right, it is a bug. > I think this could be replaced with the dvb-pll sleep function, if a > sleep sequence was added to dvb_pll_fmd1216me. We should send {0x9d, > 0x60}, which will turn the tuner off and set the AGC back to the analog > recommended value. > Hm, the sequence is incomplete.. Do you have more information about the PLL chip? I will be happy to remove the tuning code from saa7134-dvb as soon as dvb-pll fulfills the needs - and things look like we are close to this. Are you aware that there is also the td1316? Hartmut _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb