V4L/DVB (4924): Fix some bugs on usbvision due to the merge into one module
authorThierry MERLE <thierry.merle@free.fr>
Mon, 4 Dec 2006 11:31:04 +0000 (08:31 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 10 Dec 2006 11:05:41 +0000 (09:05 -0200)
Found the bug that prevented the driver from loading : a module
param conflict between usbvision-i2c and usbvision-core (debug
parameter).
- correct the module param "debug" conflics in usbvision-i2c.c and
usbvision-core.c
- add some debug printouts in usbvision-core.c VDIOC_QBUF/VIDIOC_DQBUF
- usbvision-core.c : add vb->field = V4L2_FIELD_NONE in VIDIOC_DQBUF

Signed-off-by: Thierry MERLE <thierry.merle@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/usbvision/usbvision-core.c
drivers/media/video/usbvision/usbvision-i2c.c

index a23fcd1..da422e7 100644 (file)
@@ -4240,6 +4240,7 @@ static int usbvision_v4l2_do_ioctl(struct inode *inode, struct file *file,
 
                        /* set v4l2_format index */
                        frame->v4l2_format = usbvision->palette;
+                       PDEBUG(DBG_IOCTL, "VIDIOC_QBUF frame=%d",vb->index);
 
                        return usbvision_new_frame(usbvision, vb->index);
                }
@@ -4269,8 +4270,8 @@ static int usbvision_v4l2_do_ioctl(struct inode *inode, struct file *file,
                        if (vb->index == -1)
                                return -EINVAL;
 
-                       PDEBUG(DBG_IOCTL, "VIDIOC_DQBUF frame=%d, grabstate=%d",
-                                      vb->index, usbvision->frame[vb->index].grabstate);
+                       PDEBUG(DBG_IOCTL, "VIDIOC_DQBUF frame=%d, grabstate=%d, curframeNum=%d",
+                                      vb->index, usbvision->frame[vb->index].grabstate,usbvision->curFrameNum);
 
                        switch (usbvision->frame[vb->index].grabstate) {
                        case FrameState_Unused:
@@ -4295,6 +4296,7 @@ static int usbvision_v4l2_do_ioctl(struct inode *inode, struct file *file,
                                errCode = (usbvision->frame[vb->index].grabstate == FrameState_Error) ? -EIO : 0;
                                vb->memory = V4L2_MEMORY_MMAP;
                                vb->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE;
+                               vb->field = V4L2_FIELD_NONE;
                                vb->sequence = usbvision->frame[vb->index].sequence;
                                usbvision->frame[vb->index].grabstate = FrameState_Unused;
                                break;
index e050e55..466e11f 100644 (file)
 #include <linux/i2c.h>
 #include "usbvision-i2c.h"
 
-static int debug = 0;  
+static int debug_i2c_usb = 0;  
 
 #if defined(module_param)                               // Showing parameters under SYSFS
-module_param (debug, int, 0444);                       // debug mode of the device driver
+module_param (debug_i2c_usb, int, 0444);                       // debug_i2c_usb mode of the device driver
 #else
-MODULE_PARM(debug, "i");                               // debug mode of the device driver
+MODULE_PARM(debug_i2c_usb, "i");                               // debug_i2c_usb mode of the device driver
 #endif
 
-MODULE_AUTHOR("Joerg Heckenbach");
-MODULE_DESCRIPTION("I2C algorithm for USB-I2C-bridges");
-MODULE_LICENSE("GPL");
-
 
 static inline int try_write_address(struct i2c_adapter *i2c_adap,
                                    unsigned char addr, int retries)
@@ -71,7 +67,7 @@ static inline int try_write_address(struct i2c_adapter *i2c_adap,
                        break;
                udelay(adap->udelay);
        }
-       if (debug) {
+       if (debug_i2c_usb) {
                if (i) {
                        info("%s: Needed %d retries for address %#2x", __FUNCTION__, i, addr);
                        info("%s: Maybe there's no device at this address", __FUNCTION__);
@@ -98,7 +94,7 @@ static inline int try_read_address(struct i2c_adapter *i2c_adap,
                        break;
                udelay(adap->udelay);
        }
-       if (debug) {
+       if (debug_i2c_usb) {
                if (i) {
                        info("%s: Needed %d retries for address %#2x", __FUNCTION__, i, addr);
                        info("%s: Maybe there's no device at this address", __FUNCTION__);
@@ -170,7 +166,7 @@ usb_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num)
                pmsg = &msgs[i];
                ret = usb_find_address(i2c_adap, pmsg, i2c_adap->retries, &addr);
                if (ret != 0) {
-                       if (debug) {
+                       if (debug_i2c_usb) {
                                info("%s: got NAK from device, message #%d\n", __FUNCTION__, i);
                        }
                        return (ret < 0) ? ret : -EREMOTEIO;
@@ -236,7 +232,7 @@ int usbvision_i2c_usb_add_bus(struct i2c_adapter *adap)
 
        i2c_add_adapter(adap);
 
-       if (debug) {
+       if (debug_i2c_usb) {
                info("i2c bus for %s registered", adap->name);
        }
 
@@ -249,7 +245,7 @@ int usbvision_i2c_usb_del_bus(struct i2c_adapter *adap)
 
        i2c_del_adapter(adap);
 
-       if (debug) {
+       if (debug_i2c_usb) {
                info("i2c bus for %s unregistered", adap->name);
        }
 #ifdef MODULE