linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH[[2.5][2-11] update the generic saa7146 driver
@ 2003-05-06 15:53 Michael Hunold
  0 siblings, 0 replies; only message in thread
From: Michael Hunold @ 2003-05-06 15:53 UTC (permalink / raw)
  To: linux-kernel; +Cc: torvalds

[-- Attachment #1: Type: text/plain, Size: 666 bytes --]

Hello,

this patch updates the generic saa7146 driver.

Fixed problems:
- remove some #if LINUX_VERSION_CODE constructions
- sync with the interrupt handler changes in 2.5.69
- add a missing kfree() call which caused the kernel to
   leak 32kB of kmalloc()ed memory. iieek!
- fixed the capture code to handle cards that have swapped
   fields
- added and fixed some debug messages

I know that I introduced some new #if LINUX_VERSION_CODE constructions. 
This is bad and the linuxtv.org team knows it. But most users compile 
and test the drivers under 2.4 so we have to keep the driver to compile 
with 2.4, too.

Please review and apply.

Thanks
Michael Hunold.



[-- Attachment #2: 02-saa7146-core.diff --]
[-- Type: text/plain, Size: 6878 bytes --]

diff -uNrwB -x '*.o' --new-file linux-2.5.69/drivers/media/common/saa7146_core.c linux-2.5.69.patch/drivers/media/common/saa7146_core.c
--- linux-2.5.69/drivers/media/common/saa7146_core.c	2003-05-06 13:16:20.000000000 +0200
+++ linux-2.5.69.patch/drivers/media/common/saa7146_core.c	2003-05-06 12:20:34.000000000 +0200
@@ -20,10 +20,6 @@
 
 #include <media/saa7146.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51)
-	#define KBUILD_MODNAME saa7146
-#endif
-
 /* global variables */
 struct list_head saa7146_devices;
 struct semaphore saa7146_devices_lock;
@@ -191,8 +187,11 @@
 
 /********************************************************************************/
 /* interrupt handler */
-
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+static void interrupt_hw(int irq, void *dev_id, struct pt_regs *regs)
+#else
 static irqreturn_t interrupt_hw(int irq, void *dev_id, struct pt_regs *regs)
+#endif
 {
 	struct saa7146_dev *dev = (struct saa7146_dev*)dev_id;
 	u32 isr = 0;
@@ -203,11 +202,14 @@
 	/* is this our interrupt? */
 	if ( 0 == isr ) {
 		/* nope, some other device */
-		return IRQ_NONE;
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
+		return IRQ_RETVAL(0);
+#else
+		return;
+#endif
 	}
 
 	saa7146_write(dev, ISR, isr);
-//	DEB_INT(("0x%08x\n",isr));
 
 	if( 0 != (dev->ext)) {
 		if( 0 != (dev->ext->irq_mask & isr )) {
@@ -254,7 +256,9 @@
 		ERR(("disabling interrupt source(s)!\n"));
 		IER_DISABLE(dev,isr);
 	}
-	return IRQ_HANDLED;
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
+	return IRQ_RETVAL(1);
+#endif
 }
 
 /*********************************************************************************/
diff -uNrwB -x '*.o' --new-file linux-2.5.69/drivers/media/common/saa7146_fops.c linux-2.5.69.patch/drivers/media/common/saa7146_fops.c
--- linux-2.5.69/drivers/media/common/saa7146_fops.c	2003-05-06 13:15:30.000000000 +0200
+++ linux-2.5.69.patch/drivers/media/common/saa7146_fops.c	2003-05-05 13:20:54.000000000 +0200
@@ -1,9 +1,5 @@
 #include <media/saa7146_vv.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51)
-	#define KBUILD_MODNAME saa7146
-#endif
-
 #define BOARD_CAN_DO_VBI(dev)   (dev->revision != 0 && dev->vv_data->vbi_minor != -1) 
 
 /********************************************************************************/
@@ -416,6 +412,7 @@
 
 	DEB_EE(("dev:%p\n",dev));
  
+ 	kfree(vv->clipping);
  	kfree(vv);
 	dev->vv_data = NULL;
 	dev->vv_callback = NULL;
diff -uNrwB -x '*.o' --new-file linux-2.5.69/drivers/media/common/saa7146_hlp.c linux-2.5.69.patch/drivers/media/common/saa7146_hlp.c
--- linux-2.5.69/drivers/media/common/saa7146_hlp.c	2003-05-06 13:15:30.000000000 +0200
+++ linux-2.5.69.patch/drivers/media/common/saa7146_hlp.c	2003-04-22 18:30:31.000000000 +0200
@@ -1,9 +1,5 @@
 #include <media/saa7146_vv.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51)
-	#define KBUILD_MODNAME saa7146
-#endif
-
 #define my_min(type,x,y) \
 	({ type __x = (x), __y = (y); __x < __y ? __x: __y; })
 #define my_max(type,x,y) \
@@ -962,6 +958,12 @@
 	unsigned long e_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_E_FID_A : CMD_E_FID_B;
 	unsigned long o_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_O_FID_A : CMD_O_FID_B;
 
+	if( 0 != (dev->ext->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) {
+		unsigned long tmp = e_wait;
+		e_wait = o_wait;
+		o_wait = tmp;
+	}
+
 	/* write beginning of rps-program */
 	count = 0;
 
diff -uNrwB -x '*.o' --new-file linux-2.5.69/drivers/media/common/saa7146_i2c.c linux-2.5.69.patch/drivers/media/common/saa7146_i2c.c
--- linux-2.5.69/drivers/media/common/saa7146_i2c.c	2003-05-06 13:15:30.000000000 +0200
+++ linux-2.5.69.patch/drivers/media/common/saa7146_i2c.c	2003-04-25 11:17:47.000000000 +0200
@@ -1,9 +1,5 @@
 #include <media/saa7146_vv.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51)
-	#define KBUILD_MODNAME saa7146
-#endif
-
 /* helper function */
 static
 void my_wait(struct saa7146_dev *dev, long ms)
@@ -382,7 +378,9 @@
 {
 	struct saa7146_dev* dev = i2c_get_adapdata(adapter);
 	
-	DEB_I2C(("adapter: '%s'.\n", adapter->dev.name));
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+	DEB_I2C(("adapter: '%s'.\n", adapter->name));
+#endif
 	
 	/* use helper function to transfer data */
 	return saa7146_i2c_transfer(dev, msg, num, adapter->retries);
@@ -411,8 +409,13 @@
 
 	if( NULL != i2c_adapter ) {
 		memset(i2c_adapter,0,sizeof(struct i2c_adapter));
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+		strcpy(i2c_adapter->name, dev->name);	
+		i2c_adapter->data	   = dev;
+#else
 		strcpy(i2c_adapter->dev.name, dev->name);	
 		i2c_set_adapdata(i2c_adapter,dev);
+#endif
 		i2c_adapter->algo	   = &saa7146_algo;
 		i2c_adapter->algo_data     = NULL;
 		i2c_adapter->id 	   = I2C_ALGO_SAA7146;
diff -uNrwB -x '*.o' --new-file linux-2.5.69/drivers/media/common/saa7146_vbi.c linux-2.5.69.patch/drivers/media/common/saa7146_vbi.c
--- linux-2.5.69/drivers/media/common/saa7146_vbi.c	2003-05-06 13:15:30.000000000 +0200
+++ linux-2.5.69.patch/drivers/media/common/saa7146_vbi.c	2003-04-22 18:30:31.000000000 +0200
@@ -1,9 +1,5 @@
 #include <media/saa7146_vv.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51)
-	#define KBUILD_MODNAME saa7146
-#endif
-
 static int vbi_pixel_to_capture = 720 * 2;
 
 static
diff -uNrwB -x '*.o' --new-file linux-2.5.69/drivers/media/common/saa7146_video.c linux-2.5.69.patch/drivers/media/common/saa7146_video.c
--- linux-2.5.69/drivers/media/common/saa7146_video.c	2003-05-06 13:15:30.000000000 +0200
+++ linux-2.5.69.patch/drivers/media/common/saa7146_video.c	2003-04-22 18:30:31.000000000 +0200
@@ -1,9 +1,5 @@
 #include <media/saa7146_vv.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51)
-	#define KBUILD_MODNAME saa7146
-#endif
-
 static
 int memory = 32;
 
@@ -434,20 +430,25 @@
 	case V4L2_CID_BRIGHTNESS:
 		value = saa7146_read(dev, BCS_CTRL);
 		c->value = 0xff & (value >> 24);
+		DEB_D(("V4L2_CID_BRIGHTNESS: %d\n",c->value));
 		break;
 	case V4L2_CID_CONTRAST:
 		value = saa7146_read(dev, BCS_CTRL);
 		c->value = 0x7f & (value >> 16);
+		DEB_D(("V4L2_CID_CONTRAST: %d\n",c->value));
 		break;
 	case V4L2_CID_SATURATION:
 		value = saa7146_read(dev, BCS_CTRL);
 		c->value = 0x7f & (value >> 0);
+		DEB_D(("V4L2_CID_SATURATION: %d\n",c->value));
 		break;
 	case V4L2_CID_VFLIP:
 		c->value = vv->vflip;
+		DEB_D(("V4L2_CID_VFLIP: %d\n",c->value));
 		break;
 	case V4L2_CID_HFLIP:
 		c->value = vv->hflip;
+		DEB_D(("V4L2_CID_HFLIP: %d\n",c->value));
 		break;
 	default:
 		return -EINVAL;
@@ -876,7 +877,7 @@
 			return -EINVAL;	
 		}
 
-		DEB_EE(("VIDIOC_ENUMSTD: type:%d, index:%d\n",f->type,f->index));
+		DEB_EE(("VIDIOC_ENUM_FMT: type:%d, index:%d\n",f->type,f->index));
 		return 0;
 	}
 	case VIDIOC_QUERYCTRL:
@@ -974,6 +975,8 @@
 		
 		struct saa7146_fh *ov_fh = NULL;
 						
+		DEB_EE(("VIDIOC_S_STD\n"));
+
 		if( 0 != vv->streaming ) {
 			return -EBUSY;
 		}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-05-06 16:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-06 15:53 [PATCH[[2.5][2-11] update the generic saa7146 driver Michael Hunold

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).