media: lgdt3306a: QAM streaming improvement
authorBrad Love <brad@nextdimension.cc>
Fri, 5 Jan 2018 01:30:24 +0000 (20:30 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Mar 2018 09:35:51 +0000 (04:35 -0500)
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>
drivers/media/dvb-frontends/lgdt3306a.c

index d2477edae197b9666100d9e3129e08a32426db74..377271decbabe4f997d66ef21475132a2622fb83 100644 (file)
@@ -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))