diff options
author | Michael Krufky <mkrufky@linuxtv.org> | 2007-10-24 08:55:54 -0400 |
---|---|---|
committer | Michael Krufky <mkrufky@linuxtv.org> | 2007-10-24 08:55:54 -0400 |
commit | d34b4355e00c810272a89a506d26385553ae23e2 (patch) | |
tree | 05899b7a5def70d7980ab42da5f16c5990740366 /linux/drivers/media/dvb/frontends | |
parent | 45e16ceff61bbe8a9d94d5967d909b901bed82bb (diff) | |
download | mediapointer-dvb-s2-d34b4355e00c810272a89a506d26385553ae23e2.tar.gz mediapointer-dvb-s2-d34b4355e00c810272a89a506d26385553ae23e2.tar.bz2 |
tda18271: clean up i2c_gate handling
From: Michael Krufky <mkrufky@linuxtv.org>
Call analog_demod_ops->i2c_gate_ctrl when in analog tuning mode, and
frontend_ops.i2c_gate_ctrl when in digital tuning mode.
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
---
linux/drivers/media/dvb/frontends/Makefile | 1
linux/drivers/media/dvb/frontends/tda18271.c | 33 ++++++++++++++++++++-------
2 files changed, 26 insertions(+), 8 deletions(-)
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r-- | linux/drivers/media/dvb/frontends/Makefile | 1 | ||||
-rw-r--r-- | linux/drivers/media/dvb/frontends/tda18271.c | 33 |
2 files changed, 26 insertions, 8 deletions
diff --git a/linux/drivers/media/dvb/frontends/Makefile b/linux/drivers/media/dvb/frontends/Makefile index 457effcda..57e5fa805 100644 --- a/linux/drivers/media/dvb/frontends/Makefile +++ b/linux/drivers/media/dvb/frontends/Makefile @@ -3,6 +3,7 @@ # EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ +EXTRA_CFLAGS += -Idrivers/media/video/ obj-$(CONFIG_DVB_PLL) += dvb-pll.o obj-$(CONFIG_DVB_STV0299) += stv0299.o diff --git a/linux/drivers/media/dvb/frontends/tda18271.c b/linux/drivers/media/dvb/frontends/tda18271.c index 8916db29f..bc84465c7 100644 --- a/linux/drivers/media/dvb/frontends/tda18271.c +++ b/linux/drivers/media/dvb/frontends/tda18271.c @@ -21,6 +21,7 @@ #include <linux/i2c.h> #include <linux/delay.h> #include <linux/videodev2.h> +#include "tuner-driver.h" #include "tda18271.h" @@ -324,6 +325,26 @@ struct tda18271_priv { u32 bandwidth; }; +static int tda18271_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) +{ + struct tda18271_priv *priv = fe->tuner_priv; + struct analog_tuner_ops *ops = fe->ops.analog_demod_ops; + int ret = 0; + + switch (priv->mode) { + case TDA18271_ANALOG: + if (ops && ops->i2c_gate_ctrl) + ret = ops->i2c_gate_ctrl(fe, enable); + break; + case TDA18271_DIGITAL: + if (fe->ops.i2c_gate_ctrl) + ret = fe->ops.i2c_gate_ctrl(fe, enable); + break; + } + + return ret; +}; + /*---------------------------------------------------------------------*/ static void tda18271_dump_regs(struct dvb_frontend *fe) @@ -363,14 +384,12 @@ static void tda18271_read_regs(struct dvb_frontend *fe) .buf = regs, .len = 16 } }; - if (fe->ops.i2c_gate_ctrl) - fe->ops.i2c_gate_ctrl(fe, 1); + tda18271_i2c_gate_ctrl(fe, 1); /* read all registers */ ret = i2c_transfer(priv->i2c_adap, msg, 2); - if (fe->ops.i2c_gate_ctrl) - fe->ops.i2c_gate_ctrl(fe, 0); + tda18271_i2c_gate_ctrl(fe, 0); if (ret != 2) printk("ERROR: %s: i2c_transfer returned: %d\n", @@ -396,14 +415,12 @@ static void tda18271_write_regs(struct dvb_frontend *fe, int idx, int len) buf[i] = regs[idx-1+i]; } - if (fe->ops.i2c_gate_ctrl) - fe->ops.i2c_gate_ctrl(fe, 1); + tda18271_i2c_gate_ctrl(fe, 1); /* write registers */ ret = i2c_transfer(priv->i2c_adap, &msg, 1); - if (fe->ops.i2c_gate_ctrl) - fe->ops.i2c_gate_ctrl(fe, 0); + tda18271_i2c_gate_ctrl(fe, 0); if (ret != 1) printk(KERN_WARNING "ERROR: %s: i2c_transfer returned: %d\n", |