# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.587   -> 1.588  
#       drivers/media/video/cpia_usb.c  1.7     -> 1.8    
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/05/22      [EMAIL PROTECTED]     1.588
# [PATCH] cpia_usb, remove urb->next
# 
# This is the 2.5 version of the sample driver patch I sent around
# last week.  It updates one video driver to work with the updated
# ISO API:  no urb->next (explicit resubmit, with error detection)
# and explicit transfer interval (HCs must remove 1 msec limit).
# 
# The 2.4 version is known to work, but usb video in 2.5 seems to
# be a bit ill so this just fixes the compilation problem created
# by the first of these patches.
# --------------------------------------------
#
diff -Nru a/drivers/media/video/cpia_usb.c b/drivers/media/video/cpia_usb.c
--- a/drivers/media/video/cpia_usb.c    Wed May 22 13:52:18 2002
+++ b/drivers/media/video/cpia_usb.c    Wed May 22 13:52:18 2002
@@ -163,6 +163,11 @@
                        }
                }
        }
+
+       /* resubmit */
+       urb->dev = ucpia->dev;
+       if ((i = usb_submit_urb(urb, GFP_ATOMIC)) != 0)
+               printk(KERN_ERR __FUNCTION__ ": usb_submit_urb ret %d\n", i);
 }
 
 static int cpia_usb_open(void *privdata)
@@ -200,7 +205,9 @@
        ucpia->curbuff = ucpia->buffers[0];
        ucpia->workbuff = ucpia->buffers[1];
 
-       /* We double buffer the Iso lists */
+       /* We double buffer the Iso lists, and also know the polling
+        * interval is every frame (1 == (1 << (bInterval -1))).
+        */
        urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL);
        if (!urb) {
                printk(KERN_ERR "cpia_init_isoc: usb_alloc_urb 0\n");
@@ -216,6 +223,7 @@
        urb->transfer_buffer = ucpia->sbuf[0].data;
        urb->complete = cpia_usb_complete;
        urb->number_of_packets = FRAMES_PER_DESC;
+       urb->interval = 1;
        urb->transfer_buffer_length = FRAME_SIZE_PER_DESC * FRAMES_PER_DESC;
        for (fx = 0; fx < FRAMES_PER_DESC; fx++) {
                urb->iso_frame_desc[fx].offset = FRAME_SIZE_PER_DESC * fx;
@@ -237,15 +245,14 @@
        urb->transfer_buffer = ucpia->sbuf[1].data;
        urb->complete = cpia_usb_complete;
        urb->number_of_packets = FRAMES_PER_DESC;
+       urb->interval = 1;
        urb->transfer_buffer_length = FRAME_SIZE_PER_DESC * FRAMES_PER_DESC;
        for (fx = 0; fx < FRAMES_PER_DESC; fx++) {
                urb->iso_frame_desc[fx].offset = FRAME_SIZE_PER_DESC * fx;
                urb->iso_frame_desc[fx].length = FRAME_SIZE_PER_DESC;
        }
 
-       ucpia->sbuf[1].urb->next = ucpia->sbuf[0].urb;
-       ucpia->sbuf[0].urb->next = ucpia->sbuf[1].urb;
-       
+       /* queue the ISO urbs, and resubmit in the completion handler */
        err = usb_submit_urb(ucpia->sbuf[0].urb, GFP_KERNEL);
        if (err) {
                printk(KERN_ERR "cpia_init_isoc: usb_submit_urb 0 ret %d\n",

_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to