[media] cxd2841er: provide signal strength for DVB-C
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 1 Jul 2016 14:03:14 +0000 (11:03 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Sat, 16 Jul 2016 09:55:30 +0000 (06:55 -0300)
Currently, there's no stats for DVB-C. Let's at least return
signal strength. The scale is different than on DVB-T, so let's
use a relative scale, for now.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/cxd2841er.c

index 94de6ba3d0e274c0041fe276ab728f22a157c589..2a698711d25bf3e7a3e673aedc413327c18997f6 100644 (file)
@@ -1750,7 +1750,6 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe)
 
        dev_dbg(&priv->i2c->dev, "%s()\n", __func__);
        switch (p->delivery_system) {
-       case SYS_DVBC_ANNEX_A:
        case SYS_DVBC_ANNEX_B:
        case SYS_DVBC_ANNEX_C:
                strength = 65535 - cxd2841er_read_agc_gain_c(
@@ -1766,6 +1765,12 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe)
                /* Formula was empirically determinated @ 410 MHz */
                p->strength.stat[0].uvalue = ((s32)strength) * 366 / 100 - 89520;
                break;  /* Code moved out of the function */
+       case SYS_DVBC_ANNEX_A:
+               strength = cxd2841er_read_agc_gain_t_t2(priv,
+                                                       p->delivery_system);
+               p->strength.stat[0].scale = FE_SCALE_RELATIVE;
+               p->strength.stat[0].uvalue = strength;
+               break;
        case SYS_ISDBT:
                strength = 65535 - cxd2841er_read_agc_gain_i(
                                priv, p->delivery_system);