this post was helpful
http://<email address hidden>/msg598000.html
don't forget to add this patch also.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502805
I was able to patch the qc-driver.c, but I had to replace the qc-usb.tar.bz2 file in the /usr/src directory because module-assistant kept wiping out the patched file.
the Line numbers weren't quite right. but the general idea atleast let me compile.
--- --- a/qc-driver.c +++ b/qc-driver.c @@ -2528,7 +2528,11 @@ if (qcdebug&QC_DEBUGUSER) PDEBUG("VIDIOCGCAP"); memset(&b, 0, sizeof(b)); strcpy(b.name, "Logitech QuickCam USB"); /* Max 31 characters */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) + b.type = VID_TYPE_CAPTURE | VID_TYPE_SUBCAPTURE; +#else b.type = qc->vdev.type; +#endif b.channels = 1; b.audios = 0; b.maxwidth = qc->sensor_data.maxwidth; @@ -3007,7 +3011,9 @@
static struct video_device qc_v4l_template = { name: "QuickCam USB", +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) type: VID_TYPE_CAPTURE | VID_TYPE_SUBCAPTURE, +#endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) hardware: VID_HARDWARE_QCAM_USB, #endif ---
Signed-off-by: Hans Verkuil <email address hidden> Signed-off-by: Mauro Carvalho Chehab <email address hidden>
Copyright (C) 2008 Stefan Lippers-Hollmann <email address hidden>
--- a/qc-driver.c +++ b/qc-driver.c @@ -2255,7 +2255,11 @@ static unsigned int qc_v4l_poll(struct v #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) struct video_device *dev = video_devdata(file); #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct quickcam *qc = (struct quickcam *)video_get_drvdata(dev); +#else struct quickcam *qc = (struct quickcam *)dev->priv; +#endif struct qc_frame_data *fd = &qc->frame_data; int mask;
@@ -2307,7 +2311,11 @@ static int qc_v4l_open(struct video_devi #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) struct video_device *dev = video_devdata(file); #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct quickcam *qc = video_get_drvdata(dev); +#else struct quickcam *qc = dev->priv; +#endif int r;
if (qcdebug&QC_DEBUGLOGIC || qcdebug&QC_DEBUGUSER) PDEBUG("qc_v4l_open(qc=%p)", qc); @@ -2375,7 +2383,11 @@ static void qc_v4l_close(struct video_de #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) struct video_device *dev = video_devdata(file); #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct quickcam *qc = (struct quickcam *)video_get_drvdata(dev); +#else struct quickcam *qc = (struct quickcam *)dev->priv; +#endif if (qcdebug&QC_DEBUGLOGIC || qcdebug&QC_DEBUGUSER) PDEBUG("qc_v4l_close(dev=%p,qc=%p)",dev,qc); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) TEST_BUGR_MSG(qc==NULL, "qc==NULL"); @@ -2423,7 +2435,11 @@ static long qc_v4l_read(struct video_dev struct video_device *dev = video_devdata(file); int noblock = file->f_flags & O_NONBLOCK; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct quickcam *qc = (struct quickcam *)video_get_drvdata(dev); +#else struct quickcam *qc = (struct quickcam *)dev->priv; +#endif int frame_len; unsigned char *frame; long r = 0; @@ -2478,7 +2494,11 @@ static int qc_v4l_mmap( const void *start = (void *)vma->vm_start; unsigned long size = vma->vm_end - vma->vm_start; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct quickcam *qc = (struct quickcam *)video_get_drvdata(dev); +#else struct quickcam *qc = (struct quickcam *)dev->priv; +#endif unsigned char *frame; int ret = 0, frame_size; #if !HAVE_VMA && LINUX_VERSION_CODE<KERNEL_VERSION(2,6,0) @@ -2510,7 +2530,11 @@ static int qc_v4l_ioctl(struct video_dev struct video_device *dev = video_devdata(file); void *argp = (void *)arg; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct quickcam *qc = (struct quickcam *)video_get_drvdata(dev); +#else struct quickcam *qc = (struct quickcam *)dev->priv; +#endif int i, retval = 0;
if (qcdebug&QC_DEBUGLOGIC || qcdebug&QC_DEBUGUSER) PDEBUG("qc_v4l_ioctl(dev=%p,cmd=%u,arg=%p,qc=%p)",dev,cmd,argp,qc); @@ -3165,7 +3189,11 @@ PDEBUG("poisoning qc in qc_usb_init");
/* Register V4L video device */ memcpy(&qc->vdev, &qc_v4l_template, sizeof(qc_v4l_template)); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + video_set_drvdata(&qc->vdev, qc); +#else qc->vdev.priv = qc; +#endif r = video_register_device(&qc->vdev, VFL_TYPE_GRABBER, video_nr); if (r<0) goto fail3; PRINTK(KERN_INFO, "Registered device: /dev/video%i", qc->vdev.minor);
this post was helpful
http://<email address hidden> /msg598000. html
don't forget to add this patch also.
http:// bugs.debian. org/cgi- bin/bugreport. cgi?bug= 502805
I was able to patch the qc-driver.c, but I had to replace the qc-usb.tar.bz2 file in the /usr/src directory because module-assistant kept wiping out the patched file.
the Line numbers weren't quite right. but the general idea atleast let me compile.
--- QC_DEBUGUSER) PDEBUG( "VIDIOCGCAP" ); VERSION( 2,6,27) SUBCAPTURE; data.maxwidth;
--- a/qc-driver.c
+++ b/qc-driver.c
@@ -2528,7 +2528,11 @@
if (qcdebug&
memset(&b, 0, sizeof(b));
strcpy(b.name, "Logitech QuickCam USB"); /* Max 31 characters */
+#if LINUX_VERSION_CODE >= KERNEL_
+ b.type = VID_TYPE_CAPTURE | VID_TYPE_
+#else
b.type = qc->vdev.type;
+#endif
b.channels = 1;
b.audios = 0;
b.maxwidth = qc->sensor_
@@ -3007,7 +3011,9 @@
static struct video_device qc_v4l_template = { VERSION( 2,6,27) SUBCAPTURE, VERSION( 2,6,24) QCAM_USB,
name: "QuickCam USB",
+#if LINUX_VERSION_CODE < KERNEL_
type: VID_TYPE_CAPTURE | VID_TYPE_
+#endif
#if LINUX_VERSION_CODE < KERNEL_
hardware: VID_HARDWARE_
#endif
---
Signed-off-by: Hans Verkuil <email address hidden>
Signed-off-by: Mauro Carvalho Chehab <email address hidden>
Copyright (C) 2008 Stefan Lippers-Hollmann <email address hidden>
--- a/qc-driver.c VERSION( 2,6,0) file); VERSION( 2,6,28) get_drvdata( dev);
+++ b/qc-driver.c
@@ -2255,7 +2255,11 @@ static unsigned int qc_v4l_poll(struct v
#if LINUX_VERSION_CODE >= KERNEL_
struct video_device *dev = video_devdata(
#endif
+#if LINUX_VERSION_CODE >= KERNEL_
+ struct quickcam *qc = (struct quickcam *)video_
+#else
struct quickcam *qc = (struct quickcam *)dev->priv;
+#endif
struct qc_frame_data *fd = &qc->frame_data;
int mask;
@@ -2307,7 +2311,11 @@ static int qc_v4l_open(struct video_devi VERSION( 2,6,0) file); VERSION( 2,6,28) drvdata( dev);
#if LINUX_VERSION_CODE >= KERNEL_
struct video_device *dev = video_devdata(
#endif
+#if LINUX_VERSION_CODE >= KERNEL_
+ struct quickcam *qc = video_get_
+#else
struct quickcam *qc = dev->priv;
+#endif
int r;
if (qcdebug& QC_DEBUGLOGIC || qcdebug& QC_DEBUGUSER) PDEBUG( "qc_v4l_ open(qc= %p)", qc); VERSION( 2,6,0) file); VERSION( 2,6,28) get_drvdata( dev); QC_DEBUGLOGIC || qcdebug& QC_DEBUGUSER) PDEBUG( "qc_v4l_ close(dev= %p,qc=% p)",dev, qc); VERSION( 2,6,0) BUGR_MSG( qc==NULL, "qc==NULL"); file); VERSION( 2,6,28) get_drvdata( dev); VERSION( 2,6,28) get_drvdata( dev); CODE<KERNEL_ VERSION( 2,6,0) file); VERSION( 2,6,28) get_drvdata( dev);
@@ -2375,7 +2383,11 @@ static void qc_v4l_close(struct video_de
#if LINUX_VERSION_CODE >= KERNEL_
struct video_device *dev = video_devdata(
#endif
+#if LINUX_VERSION_CODE >= KERNEL_
+ struct quickcam *qc = (struct quickcam *)video_
+#else
struct quickcam *qc = (struct quickcam *)dev->priv;
+#endif
if (qcdebug&
#if LINUX_VERSION_CODE >= KERNEL_
TEST_
@@ -2423,7 +2435,11 @@ static long qc_v4l_read(struct video_dev
struct video_device *dev = video_devdata(
int noblock = file->f_flags & O_NONBLOCK;
#endif
+#if LINUX_VERSION_CODE >= KERNEL_
+ struct quickcam *qc = (struct quickcam *)video_
+#else
struct quickcam *qc = (struct quickcam *)dev->priv;
+#endif
int frame_len;
unsigned char *frame;
long r = 0;
@@ -2478,7 +2494,11 @@ static int qc_v4l_mmap(
const void *start = (void *)vma->vm_start;
unsigned long size = vma->vm_end - vma->vm_start;
#endif
+#if LINUX_VERSION_CODE >= KERNEL_
+ struct quickcam *qc = (struct quickcam *)video_
+#else
struct quickcam *qc = (struct quickcam *)dev->priv;
+#endif
unsigned char *frame;
int ret = 0, frame_size;
#if !HAVE_VMA && LINUX_VERSION_
@@ -2510,7 +2530,11 @@ static int qc_v4l_ioctl(struct video_dev
struct video_device *dev = video_devdata(
void *argp = (void *)arg;
#endif
+#if LINUX_VERSION_CODE >= KERNEL_
+ struct quickcam *qc = (struct quickcam *)video_
+#else
struct quickcam *qc = (struct quickcam *)dev->priv;
+#endif
int i, retval = 0;
if (qcdebug& QC_DEBUGLOGIC || qcdebug& QC_DEBUGUSER) PDEBUG( "qc_v4l_ ioctl(dev= %p,cmd= %u,arg= %p,qc=% p)",dev, cmd,argp, qc);
@@ -3165,7 +3189,11 @@ PDEBUG("poisoning qc in qc_usb_init");
/* Register V4L video device */ &qc->vdev, &qc_v4l_template, sizeof( qc_v4l_ template) ); VERSION( 2,6,28) drvdata( &qc->vdev, qc); device( &qc->vdev, VFL_TYPE_GRABBER, video_nr); KERN_INFO, "Registered device: /dev/video%i", qc->vdev.minor);
memcpy(
+#if LINUX_VERSION_CODE >= KERNEL_
+ video_set_
+#else
qc->vdev.priv = qc;
+#endif
r = video_register_
if (r<0) goto fail3;
PRINTK(