]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
V4L/DVB (3847): Convert cx22700 to refactored tuner code
authorAndrew de Quincey <adq_dvb@lidskialf.net>
Tue, 18 Apr 2006 20:47:09 +0000 (17:47 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 25 Jun 2006 04:58:32 +0000 (01:58 -0300)
Convert to tuner_ops calls.
Remove pll function pointers from structure.
Remove unneeded tuner calls.
Add i2c gate control function.

Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/frontends/cx22700.c
drivers/media/dvb/frontends/cx22700.h

index 755f774f6b7d4262077def4b7a22b4f5b09efec1..02fee904752e1a3e57c84d144f6f7091c605224c 100644 (file)
@@ -247,12 +247,6 @@ static int cx22700_init (struct dvb_frontend* fe)
 
        cx22700_writereg (state, 0x00, 0x01);
 
-       if (state->config->pll_init) {
-               cx22700_writereg (state, 0x0a, 0x00);  /* open i2c bus switch */
-               state->config->pll_init(fe);
-               cx22700_writereg (state, 0x0a, 0x01);  /* close i2c bus switch */
-       }
-
        return 0;
 }
 
@@ -333,9 +327,11 @@ static int cx22700_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
        cx22700_writereg (state, 0x00, 0x02); /* XXX CHECKME: soft reset*/
        cx22700_writereg (state, 0x00, 0x00);
 
-       cx22700_writereg (state, 0x0a, 0x00);  /* open i2c bus switch */
-       state->config->pll_set(fe, p);
-       cx22700_writereg (state, 0x0a, 0x01);  /* close i2c bus switch */
+       if (fe->ops->tuner_ops.set_params) {
+               fe->ops->tuner_ops.set_params(fe, p);
+               if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0);
+       }
+
        cx22700_set_inversion (state, p->inversion);
        cx22700_set_tps (state, &p->u.ofdm);
        cx22700_writereg (state, 0x37, 0x01);  /* PAL loop filter off */
@@ -353,6 +349,17 @@ static int cx22700_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
        return cx22700_get_tps (state, &p->u.ofdm);
 }
 
+static int cx22700_i2c_gate_ctrl(struct dvb_frontend* fe, int enable)
+{
+       struct cx22700_state* state = fe->demodulator_priv;
+
+       if (enable) {
+               return cx22700_writereg(state, 0x0a, 0x00);
+       } else {
+               return cx22700_writereg(state, 0x0a, 0x01);
+       }
+}
+
 static int cx22700_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)
 {
        fesettings->min_delay_ms = 150;
@@ -413,6 +420,7 @@ static struct dvb_frontend_ops cx22700_ops = {
        .release = cx22700_release,
 
        .init = cx22700_init,
+       .i2c_gate_ctrl = cx22700_i2c_gate_ctrl,
 
        .set_frontend = cx22700_set_frontend,
        .get_frontend = cx22700_get_frontend,
index c9145b45874b3214f6424b9d0cfcc4292410876d..dcd8979c1a15e2668b5a5a8a8c276b59366edbb2 100644 (file)
@@ -29,10 +29,6 @@ struct cx22700_config
 {
        /* the demodulator's i2c address */
        u8 demod_address;
-
-       /* PLL maintenance */
-       int (*pll_init)(struct dvb_frontend* fe);
-       int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
 };
 
 extern struct dvb_frontend* cx22700_attach(const struct cx22700_config* config,