[PATCH] dvb: usb: add TwinhanDTV StarBox support
[safe/jmp/linux-2.6] / drivers / media / dvb / dvb-usb / cxusb.c
index 0324807..9e96a18 100644 (file)
@@ -14,9 +14,6 @@
  * TODO: check if the cx25840-driver (from ivtv) can be used for the analogue
  * part
  *
- * FIXME: We're getting a lock and signal, but the isochronous transfer is empty
- * for DVB-T.
- *
  * Copyright (C) 2005 Patrick Boettcher (patrick.boettcher@desy.de)
  *
  *     This program is free software; you can redistribute it and/or modify it
@@ -144,8 +141,6 @@ static u32 cxusb_i2c_func(struct i2c_adapter *adapter)
 }
 
 static struct i2c_algorithm cxusb_i2c_algo = {
-       .name          = "Conexant USB I2C algorithm",
-       .id            = I2C_ALGO_BIT,
        .master_xfer   = cxusb_i2c_xfer,
        .functionality = cxusb_i2c_func,
 };
@@ -157,12 +152,20 @@ static int cxusb_power_ctrl(struct dvb_usb_device *d, int onoff)
 
 static int cxusb_streaming_ctrl(struct dvb_usb_device *d, int onoff)
 {
+       u8 buf[2] = { 0x03, 0x00 };
+       if (onoff)
+               cxusb_ctrl_msg(d,0x36, buf, 2, NULL, 0);
+       else
+               cxusb_ctrl_msg(d,0x37, NULL, 0, NULL, 0);
+
        return 0;
 }
 
 struct cx22702_config cxusb_cx22702_config = {
        .demod_address = 0x63,
 
+       .output_mode = CX22702_PARALLEL_OUTPUT,
+
        .pll_init = dvb_usb_pll_init_i2c,
        .pll_set  = dvb_usb_pll_set_i2c,
 };
@@ -182,12 +185,15 @@ static int cxusb_frontend_attach(struct dvb_usb_device *d)
        u8 buf[2] = { 0x03, 0x00 };
        u8 b = 0;
 
+       if (usb_set_interface(d->udev,0,0) < 0)
+               err("set interface to alts=0 failed");
+
        cxusb_ctrl_msg(d,0xde,&b,0,NULL,0);
        cxusb_set_i2c_path(d,PATH_TUNER_OTHER);
        cxusb_ctrl_msg(d,CMD_POWER_OFF, NULL, 0, &b, 1);
 
        if (usb_set_interface(d->udev,0,6) < 0)
-               err("set interface failed\n");
+               err("set interface failed");
 
        cxusb_ctrl_msg(d,0x36, buf, 2, NULL, 0);
        cxusb_set_i2c_path(d,PATH_CX22702);
@@ -236,9 +242,9 @@ static struct dvb_usb_properties cxusb_properties = {
                .endpoint = 0x02,
                .u = {
                        .isoc = {
-                               .framesperurb = 64,
-                               .framesize = 940*3,
-                               .interval = 1,
+                               .framesperurb = 32,
+                               .framesize = 940,
+                               .interval = 5,
                        }
                }
        },
@@ -254,7 +260,7 @@ static struct dvb_usb_properties cxusb_properties = {
 
 static struct usb_driver cxusb_driver = {
        .owner          = THIS_MODULE,
-       .name           = "cxusb",
+       .name           = "dvb_usb_cxusb",
        .probe          = cxusb_probe,
        .disconnect = dvb_usb_device_exit,
        .id_table       = cxusb_table,