V4L/DVB (7052): tda18271: when tuning digital, the analog demod must be tri-stated
authorMichael Krufky <mkrufky@linuxtv.org>
Sat, 19 Jan 2008 20:41:04 +0000 (17:41 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:05:09 +0000 (19:05 -0200)
Call analog_ops.standby during tda18271_set_params, to put the tda8295
in tri-state when tuning digital channels.  Otherwise the tda8295 will
interfere with the signal coming from the tda18271 into the digital
demodulator.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/frontends/tda18271-fe.c

index dd3657e459b118f46eca90fe289f3c756dc6aec6..dfe72aaec3802188f3f385d3171d80617c7d903e 100644 (file)
@@ -836,7 +836,6 @@ static int tda18271_set_params(struct dvb_frontend *fe,
 
        priv->mode = TDA18271_DIGITAL;
 
-       /* see table 22 */
        if (fe->ops.info.type == FE_ATSC) {
                switch (params->u.vsb.modulation) {
                case VSB_8:
@@ -884,6 +883,10 @@ static int tda18271_set_params(struct dvb_frontend *fe,
                return -EINVAL;
        }
 
+       /* When tuning digital, the analog demod must be tri-stated */
+       if (fe->ops.analog_ops.standby)
+               fe->ops.analog_ops.standby(fe);
+
        ret = tda18271_tune(fe, sgIF * 1000, freq, bw, std, 0);
 
        if (ret < 0)