V4L/DVB (13358): stv090x: add an additional check for packet delineator lock in stv09...
authorAndreas Regel <andreas.regel@gmx.de>
Fri, 13 Nov 2009 21:19:54 +0000 (18:19 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 5 Dec 2009 20:41:31 +0000 (18:41 -0200)
Signed-off-by: Andreas Regel <andreas.regel@gmx.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/stv090x.c

index 647c535..65ae677 100644 (file)
@@ -3324,7 +3324,6 @@ static enum dvbfe_search stv090x_search(struct dvb_frontend *fe, struct dvb_fron
        return DVBFE_ALGO_SEARCH_ERROR;
 }
 
-/* FIXME! */
 static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
 {
        struct stv090x_state *state = fe->demodulator_priv;
@@ -3346,9 +3345,15 @@ static int stv090x_read_status(struct dvb_frontend *fe, enum fe_status *status)
                dprintk(FE_DEBUG, 1, "Delivery system: DVB-S2");
                reg = STV090x_READ_DEMOD(state, DSTATUS);
                if (STV090x_GETFIELD_Px(reg, LOCK_DEFINITIF_FIELD)) {
-                       reg = STV090x_READ_DEMOD(state, TSSTATUS);
-                       if (STV090x_GETFIELD_Px(reg, TSFIFO_LINEOK_FIELD)) {
-                               *status = FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
+                       reg = STV090x_READ_DEMOD(state, PDELSTATUS1);
+                       if (STV090x_GETFIELD_Px(reg, PKTDELIN_LOCK_FIELD)) {
+                               reg = STV090x_READ_DEMOD(state, TSSTATUS);
+                               if (STV090x_GETFIELD_Px(reg, TSFIFO_LINEOK_FIELD)) {
+                                       *status = FE_HAS_CARRIER |
+                                                 FE_HAS_VITERBI |
+                                                 FE_HAS_SYNC |
+                                                 FE_HAS_LOCK;
+                               }
                        }
                }
                break;