From ed73683f06475531fb39e7ae9afe3011e4c5f8c1 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Sat, 19 Jan 2008 17:41:04 -0300 Subject: [PATCH] V4L/DVB (7052): tda18271: when tuning digital, the analog demod must be tri-stated 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 Signed-off-by: Mauro Carvalho Chehab --- drivers/media/dvb/frontends/tda18271-fe.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/media/dvb/frontends/tda18271-fe.c b/drivers/media/dvb/frontends/tda18271-fe.c index dd3657e459..dfe72aaec3 100644 --- a/drivers/media/dvb/frontends/tda18271-fe.c +++ b/drivers/media/dvb/frontends/tda18271-fe.c @@ -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) -- 2.39.5