aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/tm6000/tm6000-dvb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/tm6000/tm6000-dvb.c')
-rw-r--r--drivers/media/video/tm6000/tm6000-dvb.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/media/video/tm6000/tm6000-dvb.c b/drivers/media/video/tm6000/tm6000-dvb.c
index 5e6c129a4be..e1f3f66e1e6 100644
--- a/drivers/media/video/tm6000/tm6000-dvb.c
+++ b/drivers/media/video/tm6000/tm6000-dvb.c
@@ -89,9 +89,19 @@ static void tm6000_urb_received(struct urb *urb)
89 int ret; 89 int ret;
90 struct tm6000_core *dev = urb->context; 90 struct tm6000_core *dev = urb->context;
91 91
92 if (urb->status != 0) 92 switch (urb->status) {
93 case 0:
94 case -ETIMEDOUT:
95 break;
96 case -ENOENT:
97 case -ECONNRESET:
98 case -ESHUTDOWN:
99 return;
100 default:
93 print_err_status(dev, 0, urb->status); 101 print_err_status(dev, 0, urb->status);
94 else if (urb->actual_length > 0) 102 }
103
104 if (urb->actual_length > 0)
95 dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer, 105 dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer,
96 urb->actual_length); 106 urb->actual_length);
97 107
@@ -151,7 +161,7 @@ static int tm6000_start_stream(struct tm6000_core *dev)
151 printk(KERN_ERR "tm6000: pipe resetted\n"); 161 printk(KERN_ERR "tm6000: pipe resetted\n");
152 162
153/* mutex_lock(&tm6000_driver.open_close_mutex); */ 163/* mutex_lock(&tm6000_driver.open_close_mutex); */
154 ret = usb_submit_urb(dvb->bulk_urb, GFP_KERNEL); 164 ret = usb_submit_urb(dvb->bulk_urb, GFP_ATOMIC);
155 165
156/* mutex_unlock(&tm6000_driver.open_close_mutex); */ 166/* mutex_unlock(&tm6000_driver.open_close_mutex); */
157 if (ret) { 167 if (ret) {
@@ -396,6 +406,11 @@ static int dvb_init(struct tm6000_core *dev)
396 if (!dev->caps.has_dvb) 406 if (!dev->caps.has_dvb)
397 return 0; 407 return 0;
398 408
409 if (dev->udev->speed == USB_SPEED_FULL) {
410 printk(KERN_INFO "This USB2.0 device cannot be run on a USB1.1 port. (it lacks a hardware PID filter)\n");
411 return 0;
412 }
413
399 dvb = kzalloc(sizeof(struct tm6000_dvb), GFP_KERNEL); 414 dvb = kzalloc(sizeof(struct tm6000_dvb), GFP_KERNEL);
400 if (!dvb) { 415 if (!dvb) {
401 printk(KERN_INFO "Cannot allocate memory\n"); 416 printk(KERN_INFO "Cannot allocate memory\n");