diff options
Diffstat (limited to 'linux')
-rw-r--r-- | linux/drivers/media/dvb/dibusb/dvb-dibusb-core.c | 14 | ||||
-rw-r--r-- | linux/drivers/media/dvb/dibusb/dvb-dibusb-dvb.c | 8 |
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) { |