diff options
author | 2018-01-04 20:30:24 -0500 | |
---|---|---|
committer | 2018-03-06 04:35:51 -0500 | |
commit | 4c7c3f9b1a85d26ffd4a8a31dd661856c7482357 (patch) | |
tree | cbb1391aafd3afa89ce66aefc9f2578311e29116 /drivers/media/dvb-frontends/lgdt3306a.c | |
parent | media: lgdt3306a: Set fe ops.release to NULL if probed (diff) | |
download | linux-4c7c3f9b1a85d26ffd4a8a31dd661856c7482357.tar.gz linux-4c7c3f9b1a85d26ffd4a8a31dd661856c7482357.tar.bz2 linux-4c7c3f9b1a85d26ffd4a8a31dd661856c7482357.zip |
media: lgdt3306a: QAM streaming improvement
Add some register updates required for stable viewing
on Cablevision in NY. Does not adversely affect other providers.
Changes since v1:
- Change upper case hex to lower case.
Signed-off-by: Brad Love <brad@nextdimension.cc>
Reviewed-by: Michael Ira Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/media/dvb-frontends/lgdt3306a.c')
-rw-r--r-- | drivers/media/dvb-frontends/lgdt3306a.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c index d2477edae197..377271decbab 100644 --- a/drivers/media/dvb-frontends/lgdt3306a.c +++ b/drivers/media/dvb-frontends/lgdt3306a.c @@ -598,6 +598,28 @@ static int lgdt3306a_set_qam(struct lgdt3306a_state *state, int modulation) if (lg_chkerr(ret)) goto fail; + /* 5.1 V0.36 SRDCHKALWAYS : For better QAM detection */ + ret = lgdt3306a_read_reg(state, 0x000a, &val); + val &= 0xfd; + val |= 0x02; + ret = lgdt3306a_write_reg(state, 0x000a, val); + if (lg_chkerr(ret)) + goto fail; + + /* 5.2 V0.36 Control of "no signal" detector function */ + ret = lgdt3306a_read_reg(state, 0x2849, &val); + val &= 0xdf; + ret = lgdt3306a_write_reg(state, 0x2849, val); + if (lg_chkerr(ret)) + goto fail; + + /* 5.3 Fix for Blonder Tongue HDE-2H-QAM and AQM modulators */ + ret = lgdt3306a_read_reg(state, 0x302b, &val); + val &= 0x7f; /* SELFSYNCFINDEN_CQS=0; disable auto reset */ + ret = lgdt3306a_write_reg(state, 0x302b, val); + if (lg_chkerr(ret)) + goto fail; + /* 6. Reset */ ret = lgdt3306a_soft_reset(state); if (lg_chkerr(ret)) |