diff options
author | Yasunari Takiguchi <Yasunari.Takiguchi@sony.com> | 2018-04-26 09:41:29 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2018-05-05 17:37:53 +0300 |
commit | f2e7af0baee2d1b5f14fd5676fa3dc50b9701163 (patch) | |
tree | 6bd06ea1ebd5bc9e5543b65f79840ec2e872d25a /drivers/media/dvb-frontends/cxd2880/cxd2880_top.c | |
parent | 447f0081fc33b7f794505cf561a03e6e0f4814c0 (diff) | |
download | linux-f2e7af0baee2d1b5f14fd5676fa3dc50b9701163.tar.xz |
media: cxd2880:Optimized spi drive current and BER/PER set/get condition
This is the optimization for SPI drive current and
signal lock condition check part for BER/PER measure
to ensure BER/PER are stable
Signed-off-by: Yasunari Takiguchi <Yasunari.Takiguchi@sony.com>
Signed-off-by: Masayuki Yamamoto <Masayuki.Yamamoto@sony.com>
Signed-off-by: Hideki Nozawa <Hideki.Nozawa@sony.com>
Signed-off-by: Kota Yonezawa <Kota.Yonezawa@sony.com>
Signed-off-by: Toshihiko Matsumoto <Toshihiko.Matsumoto@sony.com>
Signed-off-by: Satoshi Watanabe <Satoshi.C.Watanabe@sony.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/dvb-frontends/cxd2880/cxd2880_top.c')
-rw-r--r-- | drivers/media/dvb-frontends/cxd2880/cxd2880_top.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c index d474dc1b05da..bd9101e246d5 100644 --- a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c +++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c @@ -520,6 +520,15 @@ static int cxd2880_init(struct dvb_frontend *fe) pr_err("cxd2880 integ init failed %d\n", ret); return ret; } + + ret = cxd2880_tnrdmd_set_cfg(&priv->tnrdmd, + CXD2880_TNRDMD_CFG_TSPIN_CURRENT, + 0x00); + if (ret) { + mutex_unlock(priv->spi_mutex); + pr_err("cxd2880 set config failed %d\n", ret); + return ret; + } mutex_unlock(priv->spi_mutex); pr_debug("OK.\n"); @@ -1126,7 +1135,7 @@ static int cxd2880_get_stats(struct dvb_frontend *fe, priv = fe->demodulator_priv; c = &fe->dtv_property_cache; - if (!(status & FE_HAS_LOCK)) { + if (!(status & FE_HAS_LOCK) || !(status & FE_HAS_CARRIER)) { c->pre_bit_error.len = 1; c->pre_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; c->pre_bit_count.len = 1; @@ -1345,7 +1354,8 @@ static int cxd2880_read_status(struct dvb_frontend *fe, pr_debug("status %d\n", *status); - if (priv->s == 0 && (*status & FE_HAS_LOCK)) { + if (priv->s == 0 && (*status & FE_HAS_LOCK) && + (*status & FE_HAS_CARRIER)) { mutex_lock(priv->spi_mutex); if (c->delivery_system == SYS_DVBT) { ret = cxd2880_set_ber_per_period_t(fe); |