summaryrefslogtreecommitdiff
path: root/linux/drivers
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2007-06-17 17:12:32 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2007-06-17 17:12:32 -0300
commitf897e2dc5035f072158729f103adfbecf7e21413 (patch)
tree455e385942c8056ecff0fd07ae0e6ee84ea816a7 /linux/drivers
parent493fb20bed3583c2980a82628995db8d4a89b10f (diff)
downloadmediapointer-dvb-s2-f897e2dc5035f072158729f103adfbecf7e21413.tar.gz
mediapointer-dvb-s2-f897e2dc5035f072158729f103adfbecf7e21413.tar.bz2
Fix usb_submit_urb to be called inside interrupt context
From: Michel Ludwig <michel.ludwig@gmail.com> Signed-off-by: Michel Ludwig <michel.ludwig@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'linux/drivers')
-rw-r--r--linux/drivers/staging/tm6000/tm6000-cards.c8
-rw-r--r--linux/drivers/staging/tm6000/tm6000-video.c2
2 files changed, 7 insertions, 3 deletions
diff --git a/linux/drivers/staging/tm6000/tm6000-cards.c b/linux/drivers/staging/tm6000/tm6000-cards.c
index b4a3d251a..6c73f419a 100644
--- a/linux/drivers/staging/tm6000/tm6000-cards.c
+++ b/linux/drivers/staging/tm6000/tm6000-cards.c
@@ -236,11 +236,15 @@ static int tm6000_usb_probe(struct usb_interface *interface,
/* Increment usage count */
tm6000_devused|=1<<nr;
+ snprintf(dev->name, 29, "tm6000 #%d", nr);
+
+ dev->model=id->driver_info;
+ if ((card[nr]>=0) && (card[nr]<ARRAY_SIZE(tm6000_boards))) {
+ dev->model=card[nr];
+ }
INIT_LIST_HEAD(&dev->tm6000_corelist);
dev->udev= usbdev;
- dev->model=id->driver_info;
- snprintf(dev->name, 29, "tm6000 #%d", nr);
dev->devno=nr;
switch (usbdev->speed) {
diff --git a/linux/drivers/staging/tm6000/tm6000-video.c b/linux/drivers/staging/tm6000/tm6000-video.c
index e70e8be5c..a67bcf7df 100644
--- a/linux/drivers/staging/tm6000/tm6000-video.c
+++ b/linux/drivers/staging/tm6000/tm6000-video.c
@@ -637,7 +637,7 @@ static int tm6000_start_thread( struct tm6000_dmaqueue *dma_q,
/* submit urbs and enables IRQ */
for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {
- rc = usb_submit_urb(dev->isoc_ctl.urb[i], GFP_KERNEL);
+ rc = usb_submit_urb(dev->isoc_ctl.urb[i], GFP_ATOMIC);
if (rc) {
tm6000_err("submit of urb %i failed (error=%i)\n", i,
rc);