Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7d11c53c5d909d866dee0ce5db2d6ca1c422edca
Commit:     7d11c53c5d909d866dee0ce5db2d6ca1c422edca
Parent:     a72dd305f99f6c6e4eff01478ae53fc80ce98fb1
Author:     Michael Krufky <[EMAIL PROTECTED]>
AuthorDate: Wed Oct 24 09:55:54 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 19:01:14 2008 -0200

    V4L/DVB (6449): tda18271: clean up i2c_gate handling
    
    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 <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/dvb/frontends/Makefile   |    1 +
 drivers/media/dvb/frontends/tda18271.c |   33 ++++++++++++++++++++++++-------
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/drivers/media/dvb/frontends/Makefile 
b/drivers/media/dvb/frontends/Makefile
index 457effc..57e5fa8 100644
--- a/drivers/media/dvb/frontends/Makefile
+++ b/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/drivers/media/dvb/frontends/tda18271.c 
b/drivers/media/dvb/frontends/tda18271.c
index 1b9c143..aaaa2f8 100644
--- a/drivers/media/dvb/frontends/tda18271.c
+++ b/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",
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to