Philip Rowlands <[EMAIL PROTECTED]>, Tue, 23 Aug 2005 22:29:22 +0100 (BST) > if ((t->type == TUNER_PHILIPS_SECAM || > t->type == TUNER_PHILIPS_FM1216ME_MK3) && freq < t->freq) { > buffer[0] = tun->config; > buffer[1] = config; > buffer[2] = (div >> 8) & 0x7f; > buffer[3] = div & 0xff; > } else { > > I don't see the divbytes <-> control swap in the FQ1216ME MK3 spec; it > seems this would mis-program the tuner on rising frequency?? Hmm, sorry but I can't see why you would... the register "swap" will only be done for TUNER_PHILIPS_SECAM and TUNER_PHILIPS_FM1216ME_MK3, note the "FM". You are looking in the FQ datasheet...
BUT, if we assume that FQ1216ME MK3 is almost true for FQ1216AME MK4 (except for P-bits) then it would actually explain a lot the result from my I2C-logs... ie my assumption about frequence pre-setting was wrong and the two tuner writes are: first set AB, then set DB1, DB2, CB, BB. Whats then is missing (and the one I think you are looking for) is the write to register AB, AL=6 - External AGC (AL2=1, AL1=1, AL0=0). The tuner has 5 registers: DB1 DB2 CB BB AB - If bit-7 is "0" then this is register DB1, - - Next byte is DB2. - If bit-7 is "1" then this is register CB. - - If CB bits T2=0, T1=1, T0=1. - - - Next byte is AC. - - If CB bits T2=0, T1=0, T0=1. - - - Next byte is BC. Start with control registers if new frequence is lower or same as current (ie not only when less). Would this make sense?? /Corax ---------- I2C-log: (Comments are assuming FQ1216ME MK3 registers are same, except for the P register.) (Notice the swapped byte-pair, in the second write, between the first and the second section when new frequence is same as current.) FQ1216AME_MK4 Write: DE 60 // CP=on OS=off T=3/AB RS=3/62.5kHz AL=6/ExtAGC ATC=off FQ1216AME_MK4 Write: 0D 62 CE 02 // PLL=3426 CP T=1/BB RS=3/62.5kHz P=2 TDA9887 Write: 00 96 70 49 // AUDGAIN_6=off AUDMUTE=off AUTOMUTE=on DEEMP=on DTC=50us GPO1=off GPO2=on LSTDPLL=on MODE=AM_TV- PINCTRL_E5=0 PINCTRL_E7=0 QSS=on S2IF=5.5MHz TOP=0 VIDMODE=SoundTrapActive VIF=45.75MHz FQ1216AME_MK4 Read: 7C // POR=off FL=on AGC=IntActive A=4 FQ1216AME_MK4 Write: DE 60 // CP=on OS=off T=3/CB RS=3/62.5kHz AL=6/ExtAGC ATC=off FQ1216AME_MK4 Write: CE 02 0D 62 // PLL=3426 CP T=1/BB RS=3/62.5kHz P=2 TDA9887 Write: 00 96 70 49 // AUDGAIN_6=off AUDMUTE=off AUTOMUTE=on DEEMP=on DTC=50us GPO1=off GPO2=on LSTDPLL=on MODE=AM_TV- PINCTRL_E5=0 PINCTRL_E7=0 QSS=on S2IF=5.5MHz TOP=0 VIDMODE=SoundTrapActive VIF=45.75MHz FQ1216AME_MK4 Read: 7C // POR=off FL=on AGC=IntActive A=4 FQ1216AME_MK4 Write: DE 60 // CP=on OS=off T=3/CB RS=3/62.5kHz AL=6/ExtAGC ATC=off FQ1216AME_MK4 Write: 0D D2 CE 02 // PLL=3538 CP T=1/BB RS=3/62.5kHz P=2 TDA9887 Write: 00 96 70 49 // AUDGAIN_6=off AUDMUTE=off AUTOMUTE=on DEEMP=on DTC=50us GPO1=off GPO2=on LSTDPLL=on MODE=AM_TV- PINCTRL_E5=0 PINCTRL_E7=0 QSS=on S2IF=5.5MHz TOP=0 VIDMODE=SoundTrapActive VIF=45.75MHz FQ1216AME_MK4 Read: 7C // POR=off FL=on AGC=IntActive A=4 FQ1216AME_MK4 Write: DE 60 // CP=on OS=off T=3/CB RS=3/62.5kHz AL=6/ExtAGC ATC=off FQ1216AME_MK4 Write: 0E 43 CE 02 // PLL=3651 CP T=1/BB RS=3/62.5kHz P=2 TDA9887 Write: 00 96 70 49 // AUDGAIN_6=off AUDMUTE=off AUTOMUTE=on DEEMP=on DTC=50us GPO1=off GPO2=on LSTDPLL=on MODE=AM_TV- PINCTRL_E5=0 PINCTRL_E7=0 QSS=on S2IF=5.5MHz TOP=0 VIDMODE=SoundTrapActive VIF=45.75MHz FQ1216AME_MK4 Read: 7C // POR=off FL=on AGC=IntActive A=4