media: dvb-frontends/stv0367: Improve DVB-C/T frontend status
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Sun, 25 Jun 2017 11:26:43 +0000 (08:26 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Sun, 25 Jun 2017 13:48:45 +0000 (10:48 -0300)
The stv0367 driver provide a lot of status on its state machine.
Change the logic to provide more information about frontend locking
status. Also, while any detailed status isn't available, provide a more
complete FE_STATUS for DVB-T.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
drivers/media/dvb-frontends/stv0367.c

index fab94341c22bdb91556e393493460ba538356389..8ac0f598978dacb8ed441bf6cc816a8b6bd5a463 100644 (file)
@@ -1509,7 +1509,8 @@ static int stv0367ter_read_status(struct dvb_frontend *fe,
        *status = 0;
 
        if (stv0367_readbits(state, F367TER_LK)) {
-               *status |= FE_HAS_LOCK;
+               *status = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI
+                         | FE_HAS_SYNC | FE_HAS_LOCK;
                dprintk("%s: stv0367 has locked\n", __func__);
        }
 
@@ -2157,6 +2158,18 @@ static int stv0367cab_read_status(struct dvb_frontend *fe,
 
        *status = 0;
 
+       if (state->cab_state->state > FE_CAB_NOSIGNAL)
+               *status |= FE_HAS_SIGNAL;
+
+       if (state->cab_state->state > FE_CAB_NOCARRIER)
+               *status |= FE_HAS_CARRIER;
+
+       if (state->cab_state->state >= FE_CAB_DEMODOK)
+               *status |= FE_HAS_VITERBI;
+
+       if (state->cab_state->state >= FE_CAB_DATAOK)
+               *status |= FE_HAS_SYNC;
+
        if (stv0367_readbits(state, (state->cab_state->qamfec_status_reg ?
                state->cab_state->qamfec_status_reg : F367CAB_QAMFEC_LOCK))) {
                *status |= FE_HAS_LOCK;