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

Reply via email to