All of lore.kernel.org
 help / color / mirror / Atom feed
From: Abylay Ospan <aospan@netup.ru>
To: Daniel Scheller <d.scheller.oss@gmail.com>
Cc: Kozlov Sergey <serjk@netup.ru>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-media <linux-media@vger.kernel.org>,
	rjkm@metzlerbros.de
Subject: Re: [PATCH 03/19] [media] dvb-frontends/cxd2841er: immediately unfreeze regs when done
Date: Tue, 30 May 2017 20:32:02 -0400	[thread overview]
Message-ID: <CAK3bHNXYyO0t2B0yhAs2Y_dn64A1K_J0D2zZ2HA-EXE==JWYVg@mail.gmail.com> (raw)
In-Reply-To: <20170409193828.18458-4-d.scheller.oss@gmail.com>

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

2017-04-09 15:38 GMT-04:00 Daniel Scheller <d.scheller.oss@gmail.com>:
> From: Daniel Scheller <d.scheller@gmx.net>
>
> Do unfreeze_regs() directly when accessing the demod registers is done,
> and don't have multiple unfreeze's on different conditions, which even
> can get prone to errors.
>
> Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
> ---
>  drivers/media/dvb-frontends/cxd2841er.c | 23 ++++++++++-------------
>  1 file changed, 10 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
> index 525d006..09c25d7 100644
> --- a/drivers/media/dvb-frontends/cxd2841er.c
> +++ b/drivers/media/dvb-frontends/cxd2841er.c
> @@ -1410,11 +1410,11 @@ static int cxd2841er_read_ber_i(struct cxd2841er_priv *priv,
>         cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x60);
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x5B, pktnum, sizeof(pktnum));
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x16, data, sizeof(data));
> +       cxd2841er_unfreeze_regs(priv);
>
>         if (!pktnum[0] && !pktnum[1]) {
>                 dev_dbg(&priv->i2c->dev,
>                                 "%s(): no valid BER data\n", __func__);
> -               cxd2841er_unfreeze_regs(priv);
>                 return -EINVAL;
>         }
>
> @@ -1424,7 +1424,6 @@ static int cxd2841er_read_ber_i(struct cxd2841er_priv *priv,
>         dev_dbg(&priv->i2c->dev, "%s(): bit_error=%u bit_count=%u\n",
>                         __func__, *bit_error, *bit_count);
>
> -       cxd2841er_unfreeze_regs(priv);
>         return 0;
>  }
>
> @@ -1634,6 +1633,8 @@ static u32 cxd2841er_dvbs_read_snr(struct cxd2841er_priv *priv,
>          * <SLV-T>    A1h       12h       [7:0]   ICPM_QUICKCNDT[7:0]
>          */
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x10, data, 3);
> +       cxd2841er_unfreeze_regs(priv);
> +
>         if (data[0] & 0x01) {
>                 value = ((u32)(data[1] & 0x1F) << 8) | (u32)(data[2] & 0xFF);
>                 min_index = 0;
> @@ -1676,11 +1677,9 @@ static u32 cxd2841er_dvbs_read_snr(struct cxd2841er_priv *priv,
>         } else {
>                 dev_dbg(&priv->i2c->dev,
>                         "%s(): no data available\n", __func__);
> -               cxd2841er_unfreeze_regs(priv);
>                 return -EINVAL;
>         }
>  done:
> -       cxd2841er_unfreeze_regs(priv);
>         *snr = res;
>         return 0;
>  }
> @@ -1709,12 +1708,12 @@ static int cxd2841er_read_snr_c(struct cxd2841er_priv *priv, u32 *snr)
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x19, data, 1);
>         qam = (enum sony_dvbc_constellation_t) (data[0] & 0x07);
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x4C, data, 2);
> +       cxd2841er_unfreeze_regs(priv);
>
>         reg = ((u32)(data[0]&0x1f) << 8) | (u32)data[1];
>         if (reg == 0) {
>                 dev_dbg(&priv->i2c->dev,
>                                 "%s(): reg value out of range\n", __func__);
> -               cxd2841er_unfreeze_regs(priv);
>                 return 0;
>         }
>
> @@ -1735,11 +1734,9 @@ static int cxd2841er_read_snr_c(struct cxd2841er_priv *priv, u32 *snr)
>                 *snr = -88 * (int32_t)sony_log(reg) + 86999;
>                 break;
>         default:
> -               cxd2841er_unfreeze_regs(priv);
>                 return -EINVAL;
>         }
>
> -       cxd2841er_unfreeze_regs(priv);
>         return 0;
>  }
>
> @@ -1758,17 +1755,17 @@ static int cxd2841er_read_snr_t(struct cxd2841er_priv *priv, u32 *snr)
>         cxd2841er_freeze_regs(priv);
>         cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x10);
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x28, data, sizeof(data));
> +       cxd2841er_unfreeze_regs(priv);
> +
>         reg = ((u32)data[0] << 8) | (u32)data[1];
>         if (reg == 0) {
>                 dev_dbg(&priv->i2c->dev,
>                         "%s(): reg value out of range\n", __func__);
> -               cxd2841er_unfreeze_regs(priv);
>                 return 0;
>         }
>         if (reg > 4996)
>                 reg = 4996;
>         *snr = 10000 * ((intlog10(reg) - intlog10(5350 - reg)) >> 24) + 28500;
> -       cxd2841er_unfreeze_regs(priv);
>         return 0;
>  }
>
> @@ -1787,18 +1784,18 @@ static int cxd2841er_read_snr_t2(struct cxd2841er_priv *priv, u32 *snr)
>         cxd2841er_freeze_regs(priv);
>         cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x20);
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x28, data, sizeof(data));
> +       cxd2841er_unfreeze_regs(priv);
> +
>         reg = ((u32)data[0] << 8) | (u32)data[1];
>         if (reg == 0) {
>                 dev_dbg(&priv->i2c->dev,
>                         "%s(): reg value out of range\n", __func__);
> -               cxd2841er_unfreeze_regs(priv);
>                 return 0;
>         }
>         if (reg > 10876)
>                 reg = 10876;
>         *snr = 10000 * ((intlog10(reg) -
>                 intlog10(12600 - reg)) >> 24) + 32000;
> -       cxd2841er_unfreeze_regs(priv);
>         return 0;
>  }
>
> @@ -1818,15 +1815,15 @@ static int cxd2841er_read_snr_i(struct cxd2841er_priv *priv, u32 *snr)
>         cxd2841er_freeze_regs(priv);
>         cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x60);
>         cxd2841er_read_regs(priv, I2C_SLVT, 0x28, data, sizeof(data));
> +       cxd2841er_unfreeze_regs(priv);
> +
>         reg = ((u32)data[0] << 8) | (u32)data[1];
>         if (reg == 0) {
>                 dev_dbg(&priv->i2c->dev,
>                                 "%s(): reg value out of range\n", __func__);
> -               cxd2841er_unfreeze_regs(priv);
>                 return 0;
>         }
>         *snr = 10000 * (intlog10(reg) >> 24) - 9031;
> -       cxd2841er_unfreeze_regs(priv);
>         return 0;
>  }
>
> --
> 2.10.2
>



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

  reply	other threads:[~2017-05-31  0:32 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-09 19:38 [PATCH 00/19] cxd2841er/ddbridge: support Sony CXD28xx hardware Daniel Scheller
2017-04-09 19:38 ` [PATCH 01/19] [media] dvb-frontends/cxd2841er: remove kernel log spam in non-debug levels Daniel Scheller
2017-05-30 14:45   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 02/19] [media] dvb-frontends/cxd2841er: do I2C reads in one go Daniel Scheller
2017-05-30 16:49   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 03/19] [media] dvb-frontends/cxd2841er: immediately unfreeze regs when done Daniel Scheller
2017-05-31  0:32   ` Abylay Ospan [this message]
2017-04-09 19:38 ` [PATCH 04/19] [media] dvb-frontends/cxd2841er: support CXD2837/38/43ER demods/Chip IDs Daniel Scheller
2017-05-31  2:48   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 05/19] [media] dvb-frontends/cxd2841er: replace IFFREQ calc macros into functions Daniel Scheller
2017-05-31 11:55   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 06/19] [media] dvb-frontends/cxd2841er: add variable for configuration flags Daniel Scheller
2017-05-31 11:57   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 07/19] [media] dvb-frontends/cxd2841er: make call to i2c_gate_ctrl optional Daniel Scheller
2017-05-31 11:59   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 08/19] [media] dvb-frontends/cxd2841er: support IF speed calc from tuner values Daniel Scheller
2017-05-31 12:03   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 09/19] [media] dvb-frontends/cxd2841er: TS_SERIAL config flag Daniel Scheller
2017-05-31 12:04   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 10/19] [media] dvb-frontends/cxd2841er: make ASCOT use optional Daniel Scheller
2017-05-31 12:16   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 11/19] [media] dvb-frontends/cxd2841er: optionally tune earlier in set_frontend() Daniel Scheller
2017-05-31 12:17   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 12/19] [media] dvb-frontends/cxd2841er: make lock wait in set_fe_tc() optional Daniel Scheller
2017-05-31 12:19   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 13/19] [media] dvb-frontends/cxd2841er: configurable IFAGCNEG Daniel Scheller
2017-05-31 12:19   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 14/19] [media] dvb-frontends/cxd2841er: more configurable TSBITS Daniel Scheller
2017-05-31 12:23   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 15/19] [media] dvb-frontends/cxd2841er: improved snr reporting Daniel Scheller
2017-05-31 12:23   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 16/19] [media] ddbridge: board control setup, ts quirk flags Daniel Scheller
2017-05-31 12:26   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 17/19] [media] ddbridge: add I2C functions, add XO2 module support Daniel Scheller
2017-05-31 12:28   ` Abylay Ospan
2017-04-09 19:38 ` [PATCH 18/19] [media] ddbridge: support for Sony CXD28xx C/C2/T/T2 tuner modules Daniel Scheller
2017-04-09 19:38 ` [PATCH 19/19] [media] ddbridge: hardware IDs for new C2T2 cards and other devices Daniel Scheller
2017-05-28 21:47 ` [PATCH 00/19] cxd2841er/ddbridge: support Sony CXD28xx hardware Daniel Scheller
     [not found]   ` <CAK3bHNW9sM0fZFqYEX-mEhv-Rax82u25KdgjQftGcoY6wV1O0A@mail.gmail.com>
2017-05-31 12:30     ` Abylay Ospan
2017-05-31 20:32       ` Daniel Scheller
2017-05-31 20:39         ` Abylay Ospan

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='CAK3bHNXYyO0t2B0yhAs2Y_dn64A1K_J0D2zZ2HA-EXE==JWYVg@mail.gmail.com' \
    --to=aospan@netup.ru \
    --cc=d.scheller.oss@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=rjkm@metzlerbros.de \
    --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.