[mythtv-users] patch for ck71d ivtv driver for 2.6.8

Frank Riley fhriley at yahoo.com
Mon Aug 23 23:05:46 EDT 2004


Here is a patch to get the ck71d ivtv driver working on the 2.6.8 kernel. 
Note that I have only verified this works on gentoo-dev-sources 2.6.8-r1. It 
may not work on other distributions.
-------------- next part --------------
diff -urN ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-api.c ivtv-0.1.10-pre2-ck71d/driver/ivtv-api.c
--- ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-api.c	2004-05-22 20:39:03.000000000 -0700
+++ ivtv-0.1.10-pre2-ck71d/driver/ivtv-api.c	2004-08-23 19:15:44.455446952 -0700
@@ -4253,12 +4253,15 @@
  */
 static void ivtv_dualwatch_set_dual(struct ivtv *itv) 
 {
-        if(!itv->dualwatch.encoding)
+	u32 audio_bitmap;
+	int stereo_flag;
+	int goal_stereo_flag;
+
+	if(!itv->dualwatch.encoding)
                 return;
 
-        u32 audio_bitmap = itv->dualwatch.audio_bitmap;
-        int stereo_flag = audio_bitmap&IVTV_CODEC_AUDIO_MPEG_STEREO_MASK;
-        int goal_stereo_flag;
+        audio_bitmap = itv->dualwatch.audio_bitmap;
+        stereo_flag = audio_bitmap&IVTV_CODEC_AUDIO_MPEG_STEREO_MASK;
         if(itv->dualwatch.enabled) {
                 struct v4l2_tuner vt;
                 memset(&vt, 0, sizeof(vt));
diff -urN ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-driver.c ivtv-0.1.10-pre2-ck71d/driver/ivtv-driver.c
--- ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-driver.c	2004-05-23 08:24:18.000000000 -0700
+++ ivtv-0.1.10-pre2-ck71d/driver/ivtv-driver.c	2004-08-23 11:01:03.049452104 -0700
@@ -689,13 +689,13 @@
 
 	set_fs(get_ds());
 
-        if ( (fd = open(fn, 0, 0)) == -1) {
+        if ( (fd = sys_open(fn, 0, 0)) == -1) {
                 printk(KERN_INFO "Unable to open '%s'.\n", fn);
 		l = -EINVAL;
 		goto failure;
         }
 	/* the 2 means SEEK_END */
-        l = lseek(fd, 0L, 2);
+        l = sys_lseek(fd, 0L, 2);
 
         if (l <= 0 || l > IVTV_FIRM_IMAGE_SIZE) {
                 printk(KERN_INFO "Firmware image too large '%s'\n", fn);
@@ -704,15 +704,15 @@
         }
 
 	/* the 2 means SEEK_SET */
-        lseek(fd, 0L, 0);
+        sys_lseek(fd, 0L, 0);
 
-        if (read(fd, mem, l) != l){
+        if (sys_read(fd, mem, l) != l){
                 printk(KERN_INFO "Failed to read '%s'.\n", fn);
 		l = -ENOMEM;
         }
 
 out:
-	close(fd);
+	sys_close(fd);
 failure:
 	set_fs(fs);
 
@@ -1776,7 +1776,7 @@
 
                 	/* wait 2s for EOS interrupt */
                 	while((!test_bit(IVTV_F_I_EOS, &itv->i_flags)) &&
-                		(jiffies < (then + (2.5 * HZ)))) {
+				(jiffies < (then + (5 * HZ)/2))) {
                         		schedule_timeout(HZ/100);
                 	}
                 	then = jiffies - then;
diff -urN ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-firmware.c ivtv-0.1.10-pre2-ck71d/driver/ivtv-firmware.c
--- ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-firmware.c	2004-05-15 23:04:42.000000000 -0700
+++ ivtv-0.1.10-pre2-ck71d/driver/ivtv-firmware.c	2004-08-23 08:46:45.918763200 -0700
@@ -83,13 +83,13 @@
 
 	set_fs(get_ds());
 
-        if ( (fd = open(fn, 0, 0)) == -1) {
+        if ( (fd = sys_open(fn, 0, 0)) == -1) {
                 printk(KERN_INFO "Unable to open '%s'.\n", fn);
 		l = -EINVAL;
 		goto failure;
         }
 	/* the 2 means SEEK_END */
-        l = lseek(fd, 0L, 2);
+        l = sys_lseek(fd, 0L, 2);
 
         if (l <= 0 || l > IVTV_FIRM_IMAGE_SIZE) {
                 printk(KERN_INFO "Firmware image too large '%s'\n", fn);
@@ -98,15 +98,15 @@
         }
 
 	/* the 2 means SEEK_SET */
-        lseek(fd, 0L, 0);
+        sys_lseek(fd, 0L, 0);
 
-        if (read(fd, mem, l) != l){
+        if (sys_read(fd, mem, l) != l){
                 printk(KERN_INFO "Failed to read '%s'.\n", fn);
 		l = -ENOMEM;
         }
 
 out:
-	close(fd);
+	sys_close(fd);
 failure:
 	set_fs(fs);
 
diff -urN ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-i2c.c ivtv-0.1.10-pre2-ck71d/driver/ivtv-i2c.c
--- ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv-i2c.c	2004-05-07 14:41:58.000000000 -0700
+++ ivtv-0.1.10-pre2-ck71d/driver/ivtv-i2c.c	2004-08-23 08:41:26.762282360 -0700
@@ -56,7 +56,7 @@
 	.owner = THIS_MODULE,
 #endif
 #ifdef LINUX26        
-	.class 			= I2C_ADAP_CLASS_TV_ANALOG,
+	.class 			= I2C_CLASS_TV_ANALOG,
 #endif
 };
 
diff -urN ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv.h ivtv-0.1.10-pre2-ck71d/driver/ivtv.h
--- ivtv-0.1.10-pre2-ck71d.orig/driver/ivtv.h	2004-05-22 20:29:38.000000000 -0700
+++ ivtv-0.1.10-pre2-ck71d/driver/ivtv.h	2004-08-23 08:44:31.635177408 -0700
@@ -34,6 +34,7 @@
 #include <linux/videodev.h>
 #include <linux/list.h>
 #include <linux/unistd.h>
+#include <linux/syscalls.h>
 #include <asm/uaccess.h>
 #include <asm/semaphore.h>
 #include <asm/system.h>
diff -urN ivtv-0.1.10-pre2-ck71d.orig/driver/msp3400.c ivtv-0.1.10-pre2-ck71d/driver/msp3400.c
--- ivtv-0.1.10-pre2-ck71d.orig/driver/msp3400.c	2004-05-15 07:41:25.000000000 -0700
+++ ivtv-0.1.10-pre2-ck71d/driver/msp3400.c	2004-08-23 19:12:34.173374224 -0700
@@ -184,6 +184,7 @@
 {
 	int err;
 
+	int retval;
         unsigned char write[3];
         unsigned char read[2];
         struct i2c_msg msgs[2] = {
@@ -208,7 +209,7 @@
 		msp3400c_reset(client);
 		return -1;
 	}
-	int retval = read[0] << 8 | read[1];
+	retval = read[0] << 8 | read[1];
 	dprintk_trace("trace: msp3400c_read(0x%x, 0x%x): 0x%x\n", dev, addr, retval);
 	return retval;
 }
@@ -1311,6 +1312,7 @@
 	struct msp3400c *msp = i2c_get_clientdata(client);
         int i;
         int modus;
+	int std;
 
         if(msp3400c_reset(client))
                 return -1;
@@ -1345,7 +1347,7 @@
                                            0x5a00 /* default: 9db gain (as recommended) */))
                 return -1;
 
-        int std=standard;
+        std=standard;
         if(msp3400c_write(client,
                           I2C_MSP3400C_DEM,
                           0x20, /* STANDARD SELECT  */


More information about the mythtv-users mailing list