media: stv0910: read and update mod_cod in read_status()
authorDaniel Scheller <d.scheller@gmx.net>
Sun, 15 Oct 2017 20:51:56 +0000 (16:51 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 11 Dec 2017 18:04:48 +0000 (13:04 -0500)
Add missing state->modcod update from upstream driver which needs to be
done when manage_matype_info() sets is_vcm on certain S2 transponders.

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

index 8bf855c301f55f3d5b9fbfe346b4feddedaae1ea..73f6df0abbfe117ad87e7f7983411dd5c55c01f7 100644 (file)
@@ -1498,6 +1498,19 @@ static int read_status(struct dvb_frontend *fe, enum fe_status *status)
                                enable_puncture_rate(state,
                                                     state->puncture_rate);
                }
+
+               /* Use highest signaled ModCod for quality */
+               if (state->is_vcm) {
+                       u8 tmp;
+                       enum fe_stv0910_mod_cod mod_cod;
+
+                       read_reg(state, RSTV0910_P2_DMDMODCOD + state->regoff,
+                                &tmp);
+                       mod_cod = (enum fe_stv0910_mod_cod)((tmp & 0x7c) >> 2);
+
+                       if (mod_cod > state->mod_cod)
+                               state->mod_cod = mod_cod;
+               }
        }
 
        /* read signal statistics */