summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb
diff options
context:
space:
mode:
authorPatrick Boettcher <devnull@localhost>2004-12-29 09:52:11 +0000
committerPatrick Boettcher <devnull@localhost>2004-12-29 09:52:11 +0000
commit12fc9fae796e1f06b9c377b09f1063ca0d4ff66e (patch)
treee13ab272b6afc56b4f24b02db5bc085b8ab6193f /linux/drivers/media/dvb
parent76cbacdfec58a47fe55523e0cbcf5c786e0911d0 (diff)
downloadmediapointer-dvb-s2-12fc9fae796e1f06b9c377b09f1063ca0d4ff66e.tar.gz
mediapointer-dvb-s2-12fc9fae796e1f06b9c377b09f1063ca0d4ff66e.tar.bz2
fixed the goddamn error of mpeg2 transfer, it was the buffersize why the URBs never returned
Diffstat (limited to 'linux/drivers/media/dvb')
-rw-r--r--linux/drivers/media/dvb/dibusb/dvb-dibusb-core.c14
-rw-r--r--linux/drivers/media/dvb/dibusb/dvb-dibusb-dvb.c8
2 files changed, 12 insertions, 10 deletions
diff --git a/linux/drivers/media/dvb/dibusb/dvb-dibusb-core.c b/linux/drivers/media/dvb/dibusb/dvb-dibusb-core.c
index 9cbfede7d..abe272103 100644
--- a/linux/drivers/media/dvb/dibusb/dvb-dibusb-core.c
+++ b/linux/drivers/media/dvb/dibusb/dvb-dibusb-core.c
@@ -71,7 +71,7 @@ static struct dibusb_device_parameter dibusb_dev_parm[3] = {
.usb_cpu_csreg = 0x7f92,
.num_urbs = 3,
- .urb_buf_size = 4096,
+ .urb_buf_size = 188*21,
.default_size = 188*21,
.firmware_bug = 1,
@@ -89,7 +89,7 @@ static struct dibusb_device_parameter dibusb_dev_parm[3] = {
.usb_cpu_csreg = 0xe600,
.num_urbs = 3,
- .urb_buf_size = 40960,
+ .urb_buf_size = 188*210,
.default_size = 188*210,
.firmware_bug = 0,
@@ -317,6 +317,10 @@ static int dibusb_init(struct usb_dibusb *dib)
sema_init(&dib->usb_sem, 1);
sema_init(&dib->i2c_sem, 1);
+ dibusb_hw_wakeup(dib);
+/* dibusb_set_streaming_mode(dib,0);*/
+ dibusb_streaming(dib,1);
+
if ((ret = dibusb_usb_init(dib)) ||
(ret = dibusb_dvb_init(dib)) ||
(ret = dibusb_i2c_init(dib))) {
@@ -324,10 +328,6 @@ static int dibusb_init(struct usb_dibusb *dib)
return ret;
}
- dibusb_hw_wakeup(dib);
- dibusb_set_streaming_mode(dib,0);
- dibusb_streaming(dib,1);
-
if ((ret = dibusb_fe_init(dib)))
err("could not initialize a frontend.");
@@ -428,7 +428,7 @@ static void dibusb_disconnect(struct usb_interface *intf)
}
/* usb specific object needed to register this driver with the usb subsystem */
-static struct usb_driver dibusb_driver = {
+struct usb_driver dibusb_driver = {
.owner = THIS_MODULE,
.name = "dvb_dibusb",
.probe = dibusb_probe,
diff --git a/linux/drivers/media/dvb/dibusb/dvb-dibusb-dvb.c b/linux/drivers/media/dvb/dibusb/dvb-dibusb-dvb.c
index 792d6c3af..3d2628979 100644
--- a/linux/drivers/media/dvb/dibusb/dvb-dibusb-dvb.c
+++ b/linux/drivers/media/dvb/dibusb/dvb-dibusb-dvb.c
@@ -44,9 +44,10 @@ void dibusb_urb_complete(struct urb *urb, struct pt_regs *ptregs)
/* Francois recommends to drop not full-filled packets, even if they may
* contain valid TS packets, at least for USB1.1
- */
- if (urb->actual_length == dib->dibdev->parm->default_size && dib->dvb_is_ready)
- dvb_dmx_swfilter_packets(&dib->demux, (u8*) urb->transfer_buffer,urb->actual_length/188);
+ *
+ * if (urb->actual_length == dib->dibdev->parm->default_size && dib->dvb_is_ready) */
+ if (dib->dvb_is_ready)
+ dvb_dmx_swfilter(&dib->demux, (u8*) urb->transfer_buffer,urb->actual_length);
else
deb_ts("URB dropped because of the "
"actual_length or !dvb_is_ready (%d).\n",dib->dvb_is_ready);
@@ -96,6 +97,7 @@ static int dibusb_ctrl_feed(struct usb_dibusb *dib, int pid, int onoff)
* if this was the first pid to set and there is still a pid for
* reception.
*/
+
if ((dib->dibdev->parm->firmware_bug || dib->feedcount == onoff) &&
dib->feedcount > 0) {