diff options
-rw-r--r-- | drivers/media/dvb/dvb-usb/cxusb.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c index 0324807376cf..b4bb206a510f 100644 --- a/drivers/media/dvb/dvb-usb/cxusb.c +++ b/drivers/media/dvb/dvb-usb/cxusb.c | |||
@@ -14,9 +14,6 @@ | |||
14 | * TODO: check if the cx25840-driver (from ivtv) can be used for the analogue | 14 | * TODO: check if the cx25840-driver (from ivtv) can be used for the analogue |
15 | * part | 15 | * part |
16 | * | 16 | * |
17 | * FIXME: We're getting a lock and signal, but the isochronous transfer is empty | ||
18 | * for DVB-T. | ||
19 | * | ||
20 | * Copyright (C) 2005 Patrick Boettcher (patrick.boettcher@desy.de) | 17 | * Copyright (C) 2005 Patrick Boettcher (patrick.boettcher@desy.de) |
21 | * | 18 | * |
22 | * This program is free software; you can redistribute it and/or modify it | 19 | * This program is free software; you can redistribute it and/or modify it |
@@ -157,12 +154,20 @@ static int cxusb_power_ctrl(struct dvb_usb_device *d, int onoff) | |||
157 | 154 | ||
158 | static int cxusb_streaming_ctrl(struct dvb_usb_device *d, int onoff) | 155 | static int cxusb_streaming_ctrl(struct dvb_usb_device *d, int onoff) |
159 | { | 156 | { |
157 | u8 buf[2] = { 0x03, 0x00 }; | ||
158 | if (onoff) | ||
159 | cxusb_ctrl_msg(d,0x36, buf, 2, NULL, 0); | ||
160 | else | ||
161 | cxusb_ctrl_msg(d,0x37, NULL, 0, NULL, 0); | ||
162 | |||
160 | return 0; | 163 | return 0; |
161 | } | 164 | } |
162 | 165 | ||
163 | struct cx22702_config cxusb_cx22702_config = { | 166 | struct cx22702_config cxusb_cx22702_config = { |
164 | .demod_address = 0x63, | 167 | .demod_address = 0x63, |
165 | 168 | ||
169 | .output_mode = CX22702_PARALLEL_OUTPUT, | ||
170 | |||
166 | .pll_init = dvb_usb_pll_init_i2c, | 171 | .pll_init = dvb_usb_pll_init_i2c, |
167 | .pll_set = dvb_usb_pll_set_i2c, | 172 | .pll_set = dvb_usb_pll_set_i2c, |
168 | }; | 173 | }; |
@@ -182,12 +187,15 @@ static int cxusb_frontend_attach(struct dvb_usb_device *d) | |||
182 | u8 buf[2] = { 0x03, 0x00 }; | 187 | u8 buf[2] = { 0x03, 0x00 }; |
183 | u8 b = 0; | 188 | u8 b = 0; |
184 | 189 | ||
190 | if (usb_set_interface(d->udev,0,0) < 0) | ||
191 | err("set interface to alts=0 failed"); | ||
192 | |||
185 | cxusb_ctrl_msg(d,0xde,&b,0,NULL,0); | 193 | cxusb_ctrl_msg(d,0xde,&b,0,NULL,0); |
186 | cxusb_set_i2c_path(d,PATH_TUNER_OTHER); | 194 | cxusb_set_i2c_path(d,PATH_TUNER_OTHER); |
187 | cxusb_ctrl_msg(d,CMD_POWER_OFF, NULL, 0, &b, 1); | 195 | cxusb_ctrl_msg(d,CMD_POWER_OFF, NULL, 0, &b, 1); |
188 | 196 | ||
189 | if (usb_set_interface(d->udev,0,6) < 0) | 197 | if (usb_set_interface(d->udev,0,6) < 0) |
190 | err("set interface failed\n"); | 198 | err("set interface failed"); |
191 | 199 | ||
192 | cxusb_ctrl_msg(d,0x36, buf, 2, NULL, 0); | 200 | cxusb_ctrl_msg(d,0x36, buf, 2, NULL, 0); |
193 | cxusb_set_i2c_path(d,PATH_CX22702); | 201 | cxusb_set_i2c_path(d,PATH_CX22702); |
@@ -236,9 +244,9 @@ static struct dvb_usb_properties cxusb_properties = { | |||
236 | .endpoint = 0x02, | 244 | .endpoint = 0x02, |
237 | .u = { | 245 | .u = { |
238 | .isoc = { | 246 | .isoc = { |
239 | .framesperurb = 64, | 247 | .framesperurb = 32, |
240 | .framesize = 940*3, | 248 | .framesize = 940, |
241 | .interval = 1, | 249 | .interval = 5, |
242 | } | 250 | } |
243 | } | 251 | } |
244 | }, | 252 | }, |