Package: qc-usb-source
Version: 0.6.6-6
Severity: wishlist

The following commit to the upstream kernel (part of 2.6.28) removes the 
priv field, as a result qc-usb-source fails to build against 
kernel >=2.6.28

Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=601e9444f249d219009ec05674268d90f6f1cdcb
Commit:     601e9444f249d219009ec05674268d90f6f1cdcb
Parent:     e138c592b50370621653fd962b2bc3f4e25dfe78
Author:     Hans Verkuil <[email protected]>
AuthorDate: Sat Aug 23 07:24:07 2008 -0300
Committer:  Mauro Carvalho Chehab <[email protected]>
CommitDate: Sun Oct 12 09:36:54 2008 -0200

    V4L/DVB (8786): v4l2: remove the priv field, use dev_get_drvdata instead
    
    Remove the priv field and let video_get/set_drvdata use dev_get_drvdata
    and dev_set_drvdata instead.
    
    Convert all drivers that still used priv directly.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>

with the sollowing error message:

/usr/bin/make -f debian/rules.real build MAJOR='2.6' 
MODULESOURCE='qc-usb-source' FLAVOUR='sidux-amd64' UPSTREAMVERSION='2.6.28' 
MODULE='qc-usb' FEATURESET='none' VERSION_SOURCE='2.6.28.rev1' 
VERSION_REVISION='1' ABINAME='-0.slh.1' LOCALVERSION='-sidux-amd64' ARCH='amd64'
make[2]: Entering directory 
`/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1'
/usr/bin/make -C /usr/src/linux-headers-2.6.28-0.slh.1-sidux-amd64 
M=/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb
make[3]: Entering directory `/usr/src/linux-headers-2.6.28-0.slh.1-sidux-amd64'
  LD      
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/built-in.o
  CC [M]  
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.o
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_i2c_init':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:827:
 warning: assignment from incompatible pointer type
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_isoc_start':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:1869:
 warning: assignment from incompatible pointer type
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_v4l_poll':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:2258:
 error: 'struct video_device' has no member named 'priv'
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_v4l_open':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:2310:
 error: 'struct video_device' has no member named 'priv'
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_v4l_close':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:2378:
 error: 'struct video_device' has no member named 'priv'
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_v4l_read':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:2426:
 error: 'struct video_device' has no member named 'priv'
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_v4l_mmap':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:2481:
 error: 'struct video_device' has no member named 'priv'
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_v4l_ioctl':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:2513:
 error: 'struct video_device' has no member named 'priv'
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 At top level:
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:3004:
 warning: initialization from incompatible pointer type
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:
 In function 'qc_usb_init':
/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.c:3168:
 error: 'struct video_device' has no member named 'priv'
make[4]: *** 
[/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb/qc-driver.o]
 Error 1
make[3]: *** 
[_module_/tmp/buildd/linux-modules-sidux-main-2.6-2.6.28.rev1/debian/build/build_amd64_none_sidux-amd64_qc-usb]
 Error 2 

The attached, minimal and tested, patch (which depends on the 2.6.27 
compatibility fix in #502805) fixes this issue, while keeping compatibility
to older kernels. Severity wishlist, given that testing is frozen on 2.6.26
anyways.

Regards
        Stefan Lippers-Hollmann

-- System Information:
Debian Release: 5.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.28-0.slh.1-sidux-amd64 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages qc-usb-source depends on:
ii  bzip2                         1.0.5-1    high-quality block-sorting file co
ii  debhelper                     7.0.17     helper programs for debian/rules
ii  make                          3.81-5     The GNU version of the "make" util
ii  module-assistant              0.10.11.0  tool to make module package creati

qc-usb-source recommends no packages.

qc-usb-source suggests no packages.

-- no debconf information
The following upstream commit renders qc-usb FTBS:

Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=601e9444f249d219009ec05674268d90f6f1cdcb
Commit:     601e9444f249d219009ec05674268d90f6f1cdcb
Parent:     e138c592b50370621653fd962b2bc3f4e25dfe78
Author:     Hans Verkuil <[email protected]>
AuthorDate: Sat Aug 23 07:24:07 2008 -0300
Committer:  Mauro Carvalho Chehab <[email protected]>
CommitDate: Sun Oct 12 09:36:54 2008 -0200

    V4L/DVB (8786): v4l2: remove the priv field, use dev_get_drvdata instead
    
    Remove the priv field and let video_get/set_drvdata use dev_get_drvdata
    and dev_set_drvdata instead.
    
    Convert all drivers that still used priv directly.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>

Copyright (C) 2008 Stefan Lippers-Hollmann <[email protected]>

--- 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);

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to