All of lore.kernel.org
 help / color / mirror / Atom feed
From: Abylay Ospan <aospan@netup.ru>
To: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	Sergey Kozlov <serjk@netup.ru>
Subject: Re: [PATCH] cxd2841er: Do some changes at the dvbv5 stats logic
Date: Thu, 30 Jun 2016 21:46:23 -0400	[thread overview]
Message-ID: <CAK3bHNW6fD=67M5n087qUoL38xRQ5bZ07vRsAoLV8XO0FSBNWg@mail.gmail.com> (raw)
In-Reply-To: <601a6f40c550ae683100c1e5446712945740a7ab.1467257693.git.mchehab@s-opensource.com>

Acked-by: Abylay Ospan <aospan@netup.ru>

2016-06-29 23:34 GMT-04:00 Mauro Carvalho Chehab <mchehab@s-opensource.com>:
> It is a good idea to measure the signal strength while
> tuning, as this helps to identify if the antenna is ok.
> Also, such measure helps to identify the quality of the
> signal.
>
> Do some changes to enable it before signal lock. While
> here, optimize the code to only initialize the stats
> length once, and make sure that, just after set_frontend,
> any reading for the stats that depends on lock to return
> FE_SCALE_NOT_AVAILABLE.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
>  drivers/media/dvb-frontends/cxd2841er.c | 45 ++++++++++++++++++++++++---------
>  1 file changed, 33 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
> index d369a7567d18..3d39ae954fe2 100644
> --- a/drivers/media/dvb-frontends/cxd2841er.c
> +++ b/drivers/media/dvb-frontends/cxd2841er.c
> @@ -2936,31 +2936,25 @@ static int cxd2841er_get_frontend(struct dvb_frontend *fe,
>         else if (priv->state == STATE_ACTIVE_TC)
>                 cxd2841er_read_status_tc(fe, &status);
>
> +       cxd2841er_read_signal_strength(fe, &strength);
> +       p->strength.stat[0].scale = FE_SCALE_RELATIVE;
> +       p->strength.stat[0].uvalue = strength;
> +
>         if (status & FE_HAS_LOCK) {
> -               cxd2841er_read_signal_strength(fe, &strength);
> -               p->strength.len = 1;
> -               p->strength.stat[0].scale = FE_SCALE_RELATIVE;
> -               p->strength.stat[0].uvalue = strength;
>                 cxd2841er_read_snr(fe, &snr);
> -               p->cnr.len = 1;
>                 p->cnr.stat[0].scale = FE_SCALE_DECIBEL;
>                 p->cnr.stat[0].svalue = snr;
> +
>                 cxd2841er_read_ucblocks(fe, &errors);
> -               p->block_error.len = 1;
>                 p->block_error.stat[0].scale = FE_SCALE_COUNTER;
>                 p->block_error.stat[0].uvalue = errors;
> +
>                 cxd2841er_read_ber(fe, &ber);
> -               p->post_bit_error.len = 1;
>                 p->post_bit_error.stat[0].scale = FE_SCALE_COUNTER;
>                 p->post_bit_error.stat[0].uvalue = ber;
>         } else {
> -               p->strength.len = 1;
> -               p->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> -               p->cnr.len = 1;
>                 p->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> -               p->block_error.len = 1;
>                 p->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> -               p->post_bit_error.len = 1;
>                 p->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
>         }
>         return 0;
> @@ -3021,6 +3015,12 @@ static int cxd2841er_set_frontend_s(struct dvb_frontend *fe)
>                         __func__, carr_offset);
>         }
>  done:
> +       /* Reset stats */
> +       p->strength.stat[0].scale = FE_SCALE_RELATIVE;
> +       p->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> +       p->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> +       p->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> +
>         return ret;
>  }
>
> @@ -3382,6 +3382,21 @@ static enum dvbfe_algo cxd2841er_get_algo(struct dvb_frontend *fe)
>         return DVBFE_ALGO_HW;
>  }
>
> +static int cxd2841er_init_stats(struct dvb_frontend *fe)
> +{
> +       struct dtv_frontend_properties *p = &fe->dtv_property_cache;
> +
> +       p->strength.len = 1;
> +       p->strength.stat[0].scale = FE_SCALE_RELATIVE;
> +       p->cnr.len = 1;
> +       p->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> +       p->block_error.len = 1;
> +       p->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> +       p->post_bit_error.len = 1;
> +       p->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
> +}
> +
> +
>  static int cxd2841er_init_s(struct dvb_frontend *fe)
>  {
>         struct cxd2841er_priv *priv = fe->demodulator_priv;
> @@ -3403,6 +3418,9 @@ static int cxd2841er_init_s(struct dvb_frontend *fe)
>         /* SONY_DEMOD_CONFIG_SAT_IFAGCNEG set to 1 */
>         cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0xa0);
>         cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xb9, 0x01, 0x01);
> +
> +       cxd2841er_init_stats(fe);
> +
>         return 0;
>  }
>
> @@ -3422,6 +3440,9 @@ static int cxd2841er_init_tc(struct dvb_frontend *fe)
>         /* SONY_DEMOD_CONFIG_PARALLEL_SEL = 1 */
>         cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x00);
>         cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, 0x00, 0x80);
> +
> +       cxd2841er_init_stats(fe);
> +
>         return 0;
>  }
>
> --
> 2.7.4
>



-- 
Abylay Ospan,
NetUP Inc.
http://www.netup.tv

      parent reply	other threads:[~2016-07-01  1:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-30  3:34 [PATCH] cxd2841er: Do some changes at the dvbv5 stats logic Mauro Carvalho Chehab
2016-06-30  5:39 ` kbuild test robot
2016-07-01  1:46 ` Abylay Ospan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK3bHNW6fD=67M5n087qUoL38xRQ5bZ07vRsAoLV8XO0FSBNWg@mail.gmail.com' \
    --to=aospan@netup.ru \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@infradead.org \
    --cc=mchehab@s-opensource.com \
    --cc=serjk@netup.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.