]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/dvb/dvb-usb/digitv.c
Pull video into release branch
[linux-2.6-omap-h63xx.git] / drivers / media / dvb / dvb-usb / digitv.c
index 8fb34375c1fbeb1548c931de9b00cc419e88117d..bca1e09057395898478182fcc4cd4a909009f11a 100644 (file)
@@ -118,7 +118,10 @@ static int digitv_nxt6000_tuner_set_params(struct dvb_frontend *fe, struct dvb_f
 {
        struct dvb_usb_adapter *adap = fe->dvb->priv;
        u8 b[5];
-       dvb_usb_tuner_calc_regs(fe,fep,b, 5);
+
+       fe->ops.tuner_ops.calc_regs(fe, fep, b, sizeof(b));
+       if (fe->ops.i2c_gate_ctrl)
+               fe->ops.i2c_gate_ctrl(fe, 1);
        return digitv_ctrl_msg(adap->dev, USB_WRITE_TUNER, 0, &b[1], 4, NULL, 0);
 }
 
@@ -128,12 +131,14 @@ static struct nxt6000_config digitv_nxt6000_config = {
 
 static int digitv_frontend_attach(struct dvb_usb_adapter *adap)
 {
+       struct digitv_state *st = adap->dev->priv;
+
        if ((adap->fe = dvb_attach(mt352_attach, &digitv_mt352_config, &adap->dev->i2c_adap)) != NULL) {
-               adap->fe->ops.tuner_ops.calc_regs = dvb_usb_tuner_calc_regs;
+               st->is_nxt6000 = 0;
                return 0;
        }
        if ((adap->fe = dvb_attach(nxt6000_attach, &digitv_nxt6000_config, &adap->dev->i2c_adap)) != NULL) {
-               adap->fe->ops.tuner_ops.set_params = digitv_nxt6000_tuner_set_params;
+               st->is_nxt6000 = 1;
                return 0;
        }
        return -EIO;
@@ -141,8 +146,14 @@ static int digitv_frontend_attach(struct dvb_usb_adapter *adap)
 
 static int digitv_tuner_attach(struct dvb_usb_adapter *adap)
 {
-       adap->pll_addr = 0x60;
-       adap->pll_desc = &dvb_pll_tded4;
+       struct digitv_state *st = adap->dev->priv;
+
+       if (!dvb_attach(dvb_pll_attach, adap->fe, 0x60, NULL, DVB_PLL_TDED4))
+               return -ENODEV;
+
+       if (st->is_nxt6000)
+               adap->fe->ops.tuner_ops.set_params = digitv_nxt6000_tuner_set_params;
+
        return 0;
 }
 
@@ -271,23 +282,25 @@ static struct dvb_usb_device_properties digitv_properties = {
        .usb_ctrl = CYPRESS_FX2,
        .firmware = "dvb-usb-digitv-02.fw",
 
+       .size_of_priv = sizeof(struct digitv_state),
+
        .num_adapters = 1,
        .adapter = {
                {
-       .frontend_attach  = digitv_frontend_attach,
-       .tuner_attach     = digitv_tuner_attach,
+                       .frontend_attach  = digitv_frontend_attach,
+                       .tuner_attach     = digitv_tuner_attach,
 
-       /* parameter for the MPEG2-data transfer */
+                       /* parameter for the MPEG2-data transfer */
                        .stream = {
                                .type = USB_BULK,
-               .count = 7,
-               .endpoint = 0x02,
-               .u = {
-                       .bulk = {
-                               .buffersize = 4096,
-                       }
-               }
-       },
+                               .count = 7,
+                               .endpoint = 0x02,
+                               .u = {
+                                       .bulk = {
+                                               .buffersize = 4096,
+                                       }
+                               }
+                       },
                }
        },
        .identify_state   = digitv_identify_state,