[media] stb0899: enable auto inversion handling unconditionally
authorReinhard Nißl <rnissl@gmx.de>
Sun, 2 Jun 2013 17:52:02 +0000 (14:52 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 8 Jun 2013 23:12:48 +0000 (20:12 -0300)
It seems that current inversion handling addresses only the signal
routing on the PCB, i. e. IQ signals are either swapped or not.
But when the device is operated in a Satellite Channel Router (SCR)
environment, an additional inversion is required due to the way how
the SCR works. Therefore it makes sense to me to always enable auto
inversion handling and drop the enum value IQ_SWAP_AUTO.

Signed-off-by: Reinhard Nißl <rnissl@gmx.de>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb-frontends/stb0899_algo.c
drivers/media/dvb-frontends/stb0899_drv.h

index bd9dbd70af0fcfa460e4629e54f4e004dfda3da6..14d720ba120742fbe1a756df2a12ef2667729c3d 100644 (file)
@@ -1373,9 +1373,6 @@ enum stb0899_status stb0899_dvbs2_algo(struct stb0899_state *state)
        case IQ_SWAP_ON:
                STB0899_SETFIELD_VAL(SPECTRUM_INVERT, reg, 1);
                break;
-       case IQ_SWAP_AUTO:      /* use last successful search first     */
-               STB0899_SETFIELD_VAL(SPECTRUM_INVERT, reg, 1);
-               break;
        }
        stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_DMD_CNTRL2, STB0899_OFF0_DMD_CNTRL2, reg);
        stb0899_dvbs2_reacquire(state);
@@ -1405,41 +1402,39 @@ enum stb0899_status stb0899_dvbs2_algo(struct stb0899_state *state)
        }
 
        if (internal->status != DVBS2_FEC_LOCK) {
-               if (internal->inversion == IQ_SWAP_AUTO) {
-                       reg = STB0899_READ_S2REG(STB0899_S2DEMOD, DMD_CNTRL2);
-                       iqSpectrum = STB0899_GETFIELD(SPECTRUM_INVERT, reg);
-                       /* IQ Spectrum Inversion        */
-                       STB0899_SETFIELD_VAL(SPECTRUM_INVERT, reg, !iqSpectrum);
-                       stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_DMD_CNTRL2, STB0899_OFF0_DMD_CNTRL2, reg);
-                       /* start acquistion process     */
-                       stb0899_dvbs2_reacquire(state);
+               reg = STB0899_READ_S2REG(STB0899_S2DEMOD, DMD_CNTRL2);
+               iqSpectrum = STB0899_GETFIELD(SPECTRUM_INVERT, reg);
+               /* IQ Spectrum Inversion        */
+               STB0899_SETFIELD_VAL(SPECTRUM_INVERT, reg, !iqSpectrum);
+               stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_DMD_CNTRL2, STB0899_OFF0_DMD_CNTRL2, reg);
+               /* start acquistion process     */
+               stb0899_dvbs2_reacquire(state);
+
+               /* Wait for demod lock (UWP and CSM)    */
+               internal->status = stb0899_dvbs2_get_dmd_status(state, searchTime);
+               if (internal->status == DVBS2_DEMOD_LOCK) {
+                       i = 0;
+                       /* Demod Locked, check FEC      */
+                       internal->status = stb0899_dvbs2_get_fec_status(state, FecLockTime);
+                       /*try thrice for false locks, (UWP and CSM Locked but no FEC)   */
+                       while ((internal->status != DVBS2_FEC_LOCK) && (i < 3)) {
+                               /*      Read the frequency offset*/
+                               offsetfreq = STB0899_READ_S2REG(STB0899_S2DEMOD, CRL_FREQ);
 
-                       /* Wait for demod lock (UWP and CSM)    */
-                       internal->status = stb0899_dvbs2_get_dmd_status(state, searchTime);
-                       if (internal->status == DVBS2_DEMOD_LOCK) {
-                               i = 0;
-                               /* Demod Locked, check FEC      */
-                               internal->status = stb0899_dvbs2_get_fec_status(state, FecLockTime);
-                               /*try thrice for false locks, (UWP and CSM Locked but no FEC)   */
-                               while ((internal->status != DVBS2_FEC_LOCK) && (i < 3)) {
-                                       /*      Read the frequency offset*/
-                                       offsetfreq = STB0899_READ_S2REG(STB0899_S2DEMOD, CRL_FREQ);
-
-                                       /* Set the Nominal frequency to the found frequency offset for the next reacquire*/
-                                       reg = STB0899_READ_S2REG(STB0899_S2DEMOD, CRL_NOM_FREQ);
-                                       STB0899_SETFIELD_VAL(CRL_NOM_FREQ, reg, offsetfreq);
-                                       stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_CRL_NOM_FREQ, STB0899_OFF0_CRL_NOM_FREQ, reg);
-
-                                       stb0899_dvbs2_reacquire(state);
-                                       internal->status = stb0899_dvbs2_get_fec_status(state, searchTime);
-                                       i++;
-                               }
+                               /* Set the Nominal frequency to the found frequency offset for the next reacquire*/
+                               reg = STB0899_READ_S2REG(STB0899_S2DEMOD, CRL_NOM_FREQ);
+                               STB0899_SETFIELD_VAL(CRL_NOM_FREQ, reg, offsetfreq);
+                               stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_CRL_NOM_FREQ, STB0899_OFF0_CRL_NOM_FREQ, reg);
+
+                               stb0899_dvbs2_reacquire(state);
+                               internal->status = stb0899_dvbs2_get_fec_status(state, searchTime);
+                               i++;
                        }
+               }
 /*
-                       if (pParams->DVBS2State == FE_DVBS2_FEC_LOCKED)
-                               pParams->IQLocked = !iqSpectrum;
+               if (pParams->DVBS2State == FE_DVBS2_FEC_LOCKED)
+                       pParams->IQLocked = !iqSpectrum;
 */
-               }
        }
        if (internal->status == DVBS2_FEC_LOCK) {
                dprintk(state->verbose, FE_DEBUG, 1, "----------------> DVB-S2 FEC Lock !");
index 8d26ff6eb1dbbf000a4bd2eb5f8e54fef1db2d31..1ddad6a8cc07f0fcb534c237417717f2f345dc91 100644 (file)
@@ -47,7 +47,6 @@ struct stb0899_s2_reg {
 enum stb0899_inversion {
        IQ_SWAP_OFF     = 0,
        IQ_SWAP_ON,
-       IQ_SWAP_AUTO
 };
 
 #define STB0899_GPIO00                         0xf140