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