summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/frontends
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2007-10-24 08:55:54 -0400
committerMichael Krufky <mkrufky@linuxtv.org>2007-10-24 08:55:54 -0400
commitd34b4355e00c810272a89a506d26385553ae23e2 (patch)
tree05899b7a5def70d7980ab42da5f16c5990740366 /linux/drivers/media/dvb/frontends
parent45e16ceff61bbe8a9d94d5967d909b901bed82bb (diff)
downloadmediapointer-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/Makefile1
-rw-r--r--linux/drivers/media/dvb/frontends/tda18271.c33
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",