]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/media/video/cx88/cx88-dvb.c
[PATCH] dvb/v4l: lgdt3302: isolate tuner
[mv-sheeva.git] / drivers / media / video / cx88 / cx88-dvb.c
index 6ad1458ab652c02a5fe04935baa35108e3c0de68..3a8551a02d0ceb4c0c050b28b9e7a0e98e517540 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: cx88-dvb.c,v 1.42 2005/07/12 15:44:55 mkrufky Exp $
+ * $Id: cx88-dvb.c,v 1.47 2005/07/20 05:20:37 mkrufky Exp $
  *
  * device driver for Conexant 2388x based TV cards
  * MPEG Transport Stream (DVB) routines
@@ -211,6 +211,18 @@ static struct or51132_config pchdtv_hd3000 = {
 #endif
 
 #if CONFIG_DVB_LGDT3302
+static int lgdt3302_pll_set(struct dvb_frontend* fe,
+                           struct dvb_frontend_parameters* params,
+                           u8* pllbuf)
+{
+       struct cx8802_dev *dev= fe->dvb->priv;
+
+       pllbuf[0] = dev->core->pll_addr;
+       dvb_pll_configure(dev->core->pll_desc, &pllbuf[1],
+                         params->frequency, 0);
+       return 0;
+}
+
 static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured)
 {
        struct cx8802_dev *dev= fe->dvb->priv;
@@ -221,17 +233,9 @@ static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured)
        return 0;
 }
 
-static struct lgdt3302_config fusionhdtv_3_gold_q = {
-       .demod_address    = 0x0e,
-       .pll_address      = 0x61,
-       .pll_desc         = &dvb_pll_microtune_4042,
-       .set_ts_params    = lgdt3302_set_ts_param,
-};
-
-static struct lgdt3302_config fusionhdtv_3_gold_t = {
+static struct lgdt3302_config fusionhdtv_3_gold = {
        .demod_address    = 0x0e,
-       .pll_address      = 0x61,
-       .pll_desc         = &dvb_pll_thomson_dtt7611,
+       .pll_set          = lgdt3302_pll_set,
        .set_ts_params    = lgdt3302_set_ts_param,
 };
 #endif
@@ -294,7 +298,9 @@ static int dvb_register(struct cx8802_dev *dev)
                mdelay(100);
                cx_set(MO_GP0_IO, 9); // ANT connector too FIXME
                mdelay(200);
-               dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold_q,
+               dev->core->pll_addr = 0x61;
+               dev->core->pll_desc = &dvb_pll_microtune_4042;
+               dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold,
                                                    &dev->core->i2c_adap);
                }
                break;
@@ -308,7 +314,9 @@ static int dvb_register(struct cx8802_dev *dev)
                mdelay(100);
                cx_set(MO_GP0_IO, 9); /* ANT connector too FIXME */
                mdelay(200);
-               dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold_t,
+               dev->core->pll_addr = 0x61;
+               dev->core->pll_desc = &dvb_pll_thomson_dtt7611;
+               dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold,
                                                    &dev->core->i2c_adap);
                }
                break;