Skip to contentSkip to conversation

LinuxTV.org DVB driver update

PATCH In review Michael Hunold (LinuxTV.org CVS maintainer) 9 participants 28 messages Oct 8, 2003 – Oct 14, 2003

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/14 LinuxTV.org DVB driver update

Hi Linus,

this is the periodical patchset bomb to keep the DVB subsystem and the various DVB drivers from the LinuxTV.org CVS in sync with 2.6.

There are 13 individual patches, all have detailed patch desriptions in the top of the file. There is some fuzziness, mainly due to the "video-buf" updates from Gerd Knorr yesterday.

Please apply.

Thanks
Michael.

#2 lore raw

PATCH 3/14 add new DVB-T frontend driver

- [DVB] add new DVB-T frontend driver sp887x.c

drivers/media/dvb/frontends/Makefile +1 -0
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/frontends/Makefile linux-2.6.0-test5/drivers/media/dvb/frontends/Makefile
@@ -15,3 +15,4 @@
 obj-$(CONFIG_DVB_MT312) += mt312.o
 obj-$(CONFIG_DVB_VES1820) += ves1820.o
 obj-$(CONFIG_DVB_TDA1004X) += tda1004x.o
+obj-$(CONFIG_DVB_SP887X) += sp887x.o
drivers/media/dvb/frontends/sp887x.c +610 -0

610 lines not on this page · raw message

#3 lore raw

PATCH 4/14 video capture updates for saa7146 core

- [DVB] some Kconfig simplifications
- [DVB] FIELD_ALTERNATE capture was broken, add a "wait for vbi" command before actually waiting for the field change
- [DVB] improvements regarding streaming capture to gfx card memory.
- [DVB] captured frames could only be page aligned. fixed.
- [DVB] fix pgtable_build_single, it should work for all kinds of buffers now (system memory (kernel/user) and gfx-memory)
- [DVB] Fix bytesperline-calculation for V4L2_FIELD_ALTERNATE vs. V4L2_FIELD_INTERLACED capture

drivers/media/common/Kconfig +4 -7
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/common/Kconfig linux-2.6.0-test5/drivers/media/common/Kconfig
@@ -1,11 +1,8 @@
 config VIDEO_SAA7146
-        tristate
-        default y if DVB_AV7110=y || DVB_BUDGET=y || DVB_BUDGET_AV=y || VIDEO_MXB=y || VIDEO_DPC=y || VIDEO_HEXIUM_ORION=y || VIDEO_HEXIUM_GEMINI=y
-        default m if DVB_AV7110=m || DVB_BUDGET=m || DVB_BUDGET_AV=m || VIDEO_MXB=m || VIDEO_DPC=m || VIDEO_HEXIUM_ORION=m || VIDEO_HEXIUM_GEMINI=m
+	def_tristate DVB_AV7110 || DVB_BUDGET || DVB_BUDGET_AV || \
+		     VIDEO_MXB || VIDEO_DPC || VIDEO_HEXIUM_ORION || \
+		     VIDEO_HEXIUM_GEMINI
         depends on VIDEO_DEV && PCI && I2C
-
 config VIDEO_VIDEOBUF
-        tristate
-        default y if VIDEO_SAA7134=y || VIDEO_BT848=y || VIDEO_SAA7146=y
-        default m if VIDEO_SAA7134=m || VIDEO_BT848=m || VIDEO_SAA7146=m
+	def_tristate VIDEO_SAA7134 || VIDEO_BT848 || VIDEO_SAA7146
         depends on VIDEO_DEV
drivers/media/common/saa7146_core.c +15 -7
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/common/saa7146_core.c linux-2.6.0-test5/drivers/media/common/saa7146_core.c
@@ -139,34 +139,42 @@
 	return 0;
 }
 
-void saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt, struct scatterlist *list, int length )
+void saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt,
+	struct scatterlist *list, int sglen  )
 {
 	u32   *ptr, fill;
+	int nr_pages = 0;
 	int   i,p;
 
-//fm	DEB_EE(("pci:%p, pt:%p, sl:%p, len:%d\n",pci,pt,list,length));
+	BUG_ON( 0 == sglen);
 
 	/* if we have a user buffer, the first page may not be
 	   aligned to a page boundary. */
 	pt->offset = list->offset;
 
 	ptr = pt->cpu;
-	for (i = 0; i < length; i++, list++) {
+	for (i = 0; i < sglen; i++, list++) {
+/*
+		printk("i:%d, adr:0x%08x, len:%d, offset:%d\n", i,sg_dma_address(list), sg_dma_len(list), list->offset);
+*/
 		for (p = 0; p * 4096 < list->length; p++, ptr++) {
-			*ptr = sg_dma_address(list) - list->offset;
+			*ptr = sg_dma_address(list) + p * 4096;
+			nr_pages++;
 		}
 	}
 
 
 	/* safety; fill the page table up with the last valid page */
 	fill = *(ptr-1);
-	for(;i<1024;i++) {
+	for(i=nr_pages;i<1024;i++) {
 		*ptr++ = fill;
 	}
+
 /*
 	ptr = pt->cpu;
-	for(j=0;j<60;j++) {
-		printk("ptr1 %d: 0x%08x\n",j,ptr[j]);
+	printk("offset: %d\n",pt->offset);
+	for(i=0;i<5;i++) {
+		printk("ptr1 %d: 0x%08x\n",i,ptr[i]);
 	}
 */
 }
drivers/media/common/saa7146_fops.c +4 -0
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/common/saa7146_fops.c linux-2.6.0-test5/drivers/media/common/saa7146_fops.c
@@ -304,6 +304,7 @@
 			return videobuf_poll_stream(file, &fh->vbi_q, wait);
 		q = &fh->vbi_q;
 	} else {
+		DEB_D(("using video queue.\n"));
 		q = &fh->video_q;
 	}
 
@@ -311,14 +312,17 @@
 		buf = list_entry(q->stream.next, struct videobuf_buffer, stream);
 
 	if (!buf) {
+		DEB_D(("buf == NULL!\n"));
 		return POLLERR;
 	}
 
 	poll_wait(file, &buf->done, wait);
 	if (buf->state == STATE_DONE || buf->state == STATE_ERROR) {
+		DEB_D(("poll succeeded!\n"));
 		return POLLIN|POLLRDNORM;
 	}
 
+	DEB_D(("nothing to poll for, buf->state:%d\n",buf->state));
 	return 0;
 }
 
drivers/media/common/saa7146_hlp.c +21 -10
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/common/saa7146_hlp.c linux-2.6.0-test5/drivers/media/common/saa7146_hlp.c
@@ -742,6 +742,7 @@
 
 	int width = buf->fmt->width;
 	int height = buf->fmt->height;
+	int bytesperline = buf->fmt->bytesperline;
 	enum v4l2_field field = buf->fmt->field;
 
 	int depth = sfmt->depth;
@@ -749,7 +750,11 @@
 	DEB_CAP(("[size=%dx%d,fields=%s]\n",
 		width,height,v4l2_field_names[field]));
 
+	if( bytesperline != 0) {
+		vdma1.pitch = bytesperline*2;
+	} else {
 	vdma1.pitch		= (width*depth*2)/8;
+	}
 	vdma1.num_line_byte	= ((vv->standard->v_field<<16) + vv->standard->h_pixels);
 	vdma1.base_page		= buf->pt[0].dma | ME1;
 	
@@ -799,6 +804,8 @@
 	vdma2->pitch	= width;
 	vdma3->pitch	= width;
 
+	/* fixme: look at bytesperline! */
+
 	if( 0 != vv->vflip ) {
 		vdma2->prot_addr	= buf->pt[1].offset;
 		vdma2->base_even	= ((vdma2->pitch/2)*height)+buf->pt[1].offset;
@@ -871,6 +878,8 @@
 	DEB_CAP(("[size=%dx%d,fields=%s]\n",
 		width,height,v4l2_field_names[field]));
 
+	/* fixme: look at bytesperline! */
+
 	/* fixme: what happens for user space buffers here?. The offsets are
 	   most likely wrong, this version here only works for page-aligned
 	   buffers, modifications to the pagetable-functions are necessary...*/
@@ -997,8 +1006,10 @@
 		WRITE_RPS0(CMD_PAUSE | o_wait);
 	WRITE_RPS0(CMD_PAUSE | e_wait);
 	} else if ( vv->last_field == V4L2_FIELD_TOP ) {
+		WRITE_RPS0(CMD_PAUSE | (vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? MASK_10 : MASK_09));
 	WRITE_RPS0(CMD_PAUSE | o_wait);
 	} else if ( vv->last_field == V4L2_FIELD_BOTTOM ) {
+		WRITE_RPS0(CMD_PAUSE | (vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? MASK_10 : MASK_09));
 		WRITE_RPS0(CMD_PAUSE | e_wait);
 	}
 
@@ -1033,16 +1044,6 @@
 
 	DEB_CAP(("buf:%p, next:%p\n",buf,next));
 
-/*
-	printk("vdma%d.base_even:     0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1));
-	printk("vdma%d.base_odd:      0x%08x\n", 1,saa7146_read(dev,BASE_ODD1));
-	printk("vdma%d.prot_addr:     0x%08x\n", 1,saa7146_read(dev,PROT_ADDR1));
-	printk("vdma%d.base_page:     0x%08x\n", 1,saa7146_read(dev,BASE_PAGE1));
-	printk("vdma%d.pitch:         0x%08x\n", 1,saa7146_read(dev,PITCH1));
-	printk("vdma%d.num_line_byte: 0x%08x\n", 1,saa7146_read(dev,NUM_LINE_BYTE1));
-	printk("vdma%d => vptr      : 0x%08x\n", 1,saa7146_read(dev,PCI_VDP1));
-*/
-
 	vdma1_prot_addr = saa7146_read(dev, PROT_ADDR1);
 	if( 0 == vdma1_prot_addr ) {
 		/* clear out beginning of streaming bit (rps register 0)*/
@@ -1069,6 +1070,16 @@
 		program_capture_engine(dev,0);
 	}
 
+/*
+	printk("vdma%d.base_even:     0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1));
+	printk("vdma%d.base_odd:      0x%08x\n", 1,saa7146_read(dev,BASE_ODD1));
+	printk("vdma%d.prot_addr:     0x%08x\n", 1,saa7146_read(dev,PROT_ADDR1));
+	printk("vdma%d.base_page:     0x%08x\n", 1,saa7146_read(dev,BASE_PAGE1));
+	printk("vdma%d.pitch:         0x%08x\n", 1,saa7146_read(dev,PITCH1));
+	printk("vdma%d.num_line_byte: 0x%08x\n", 1,saa7146_read(dev,NUM_LINE_BYTE1));
+	printk("vdma%d => vptr      : 0x%08x\n", 1,saa7146_read(dev,PCI_VDP1));
+*/
+
 	/* write the address of the rps-program */
 	saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle);
 
drivers/media/common/saa7146_video.c +170 -49

321 lines not on this page · raw message

#4 lore raw

PATCH 5/14 multiple device *read* opens support

- [DVB] allow multiple read device opens

drivers/media/dvb/dvb-core/dvbdev.h +7 -1
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvbdev.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvbdev.h
@@ -55,12 +58,18 @@
 struct dvb_device {
 	struct list_head list_head;
 	struct file_operations *fops;
+ 
+ 
+ 
 	struct dvb_adapter *adapter;
 	int type;
 	u32 id;
 
-	int users;
+	/* in theory, 'users' can vanish now,
+	   but I don't want to change too much now... */
+	int readers;
 	int writers;
+	int users;
 
         /* don't really need those !? -- FIXME: use video_usercopy  */
         int (*kernel_ioctl)(struct inode *inode, struct file *file,
drivers/media/dvb/dvb-core/dvbdev.c +9 -2
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvbdev.c
@@ -112,7 +121,11 @@
 	if (!dvbdev->users)
                 return -EBUSY;
 
-	if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
+	if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
+                if (!dvbdev->readers)
+		        return -EBUSY;
+		dvbdev->readers--;
+	} else {
                 if (!dvbdev->writers)
 		        return -EBUSY;
 		dvbdev->writers--;
@@ -130,8 +143,11 @@
 	if (!dvbdev)
                 return -ENODEV;
 
-	if ((file->f_flags & O_ACCMODE) != O_RDONLY)
+	if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
+		dvbdev->readers++;
+	} else {
 		dvbdev->writers++;
+	}
 
 	dvbdev->users++;
 	return 0;
drivers/media/dvb/dvb-core/dvb_frontend.c +1 -0
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_frontend.c linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -870,6 +886,7 @@
 	static const struct dvb_device dvbdev_template = {
 		.users = ~0,
 		.writers = 1,
+		.readers = (~0)-1,
 		.fops = &dvb_frontend_fops,
 		.kernel_ioctl = dvb_frontend_ioctl
 	};
#5 lore raw

PATCH 6/14 update copyright and licensing

- [DVB] - fix copyright stuff in various files:
- remove e-mail addresses that don't exist anymore, but of course keep the names
- change license from GPL to LGPL in dvb_i2c.h (Convergence code)
- change license from GPL to LGPL in dvb_ringbuffer.h (ack by original author Oliver Endriss)
- add LGPL license to dvb_functions

drivers/media/dvb/dvb-core/demux.h +2 -1
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/demux.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/demux.h
@@ -1,4 +1,5 @@
-/* demux.h 
+/* 
+ * demux.h 
  *
  * Copyright (c) 2002 Convergence GmbH
  * 
drivers/media/dvb/dvb-core/dmxdev.h +2 -3
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dmxdev.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dmxdev.h
@@ -1,9 +1,8 @@
 /* 
  * dmxdev.h
  *
- * Copyright (C) 2000 Ralph  Metzler <[email protected]>
- *                  & Marcus Metzler <[email protected]>
-                      for convergence integrated media GmbH
+ * Copyright (C) 2000 Ralph Metzler & Marcus Metzler
+ *                    for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
drivers/media/dvb/dvb-core/dvbdev.h +2 -3
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvbdev.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvbdev.h
@@ -1,9 +1,8 @@
 /* 
  * dvbdev.h
  *
- * Copyright (C) 2000 Ralph  Metzler <[email protected]>
- *                  & Marcus Metzler <[email protected]>
-                      for convergence integrated media GmbH
+ * Copyright (C) 2000 Ralph Metzler & Marcus Metzler
+ *                    for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Lesser Public License
drivers/media/dvb/dvb-core/dvb_ringbuffer.h +5 -11
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_ringbuffer.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_ringbuffer.h
@@ -5,28 +5,22 @@
  * Copyright (C) 2003 Oliver Endriss 
  * 
  * based on code originally found in av7110.c:
- * Copyright (C) 1999-2002 Ralph  Metzler 
- *                       & Marcus Metzler for convergence integrated media GmbH
+ * Copyright (C) 1999-2002 Ralph Metzler & Marcus Metzler
+ *                         for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
  * of the License, or (at your option) any later version.
  * 
- *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * 
- *
- * You should have received a copy of the GNU General Public License
+ * You should have received a copy of the GNU Lesser General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
- * 
- *
- * the project's page is at http://www.linuxtv.org/dvb/
  */
 
 #ifndef _DVB_RINGBUFFER_H_
drivers/media/dvb/dvb-core/dvb_net.h +1 -2
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_net.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_net.h
@@ -1,8 +1,7 @@
 /* 
  * dvb_net.h
  *
- * Copyright (C) 2001 Convergence integrated media GmbH
- *                    Ralph Metzler <[email protected]>
+ * Copyright (C) 2001 Ralph Metzler for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
drivers/media/dvb/dvb-core/dvb_i2c.h +3 -4
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_i2c.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_i2c.h
@@ -4,8 +4,8 @@
  * Copyright (C) 2002 Holger Waechtler for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
  * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
@@ -13,10 +13,9 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
+ * You should have received a copy of the GNU Lesser General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
  */
 
 #ifndef _DVB_I2C_H_
drivers/media/dvb/dvb-core/dvb_functions.h +23 -0
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_functions.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_functions.h
@@ -1,3 +1,26 @@
+/* 
+ * dvb_functions.h: isolate some Linux specific stuff from the dvb-core
+ *                  that can't be expressed as a one-liner
+ *                  in order to make porting to other environments easier
+ *
+ * Copyright (C) 2003 Convergence GmbH
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Lesser Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ */
+
 #ifndef __DVB_FUNCTIONS_H__
 #define __DVB_FUNCTIONS_H__
 
drivers/media/dvb/dvb-core/dvb_demux.h +2 -3
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_demux.h
@@ -1,8 +1,7 @@
 /* 
- * dvb_demux.h - DVB kernel demux API
+ * dvb_demux.h: DVB kernel demux API
  *
- * Copyright (C) 2000-2001 Marcus Metzler <[email protected]>
- *                       & Ralph  Metzler <[email protected]>
+ * Copyright (C) 2000-2001 Marcus Metzler & Ralph Metzler
  *                         for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
drivers/media/dvb/dvb-core/dvb_filter.h +20 -0
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_filter.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_filter.h
@@ -1,3 +1,23 @@
+/*
+ * dvb_filter.h
+ *
+ * Copyright (C) 2003 Convergence GmbH
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
 #ifndef _DVB_FILTER_H_
 #define _DVB_FILTER_H_
 
drivers/media/dvb/dvb-core/dvb_frontend.h +4 -4
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_frontend.h linux-2.6.0-test5/drivers/media/dvb/dvb-core/dvb_frontend.h
@@ -1,9 +1,9 @@
 /* 
- * dvb-core.h
+ * dvb_frontend.h
+ *
+ * Copyright (C) 2001 Ralph Metzler for convergence integrated media GmbH
+ *                    overhauled by Holger Waechtler for Convergence GmbH
  *
- * Copyright (C) 2001 Ralph  Metzler <[email protected]>
- *                    overhauled by Holger Waechtler <[email protected]>
- *                    for convergence integrated media GmbH
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
#6 lore raw

PATCH 7/14 usual c99 initializer fixes

- [DVB] the usual c99 initialization fixes all over the DVB place

drivers/media/dvb/ttpci/av7110.c +50 -9
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/ttpci/av7110.c linux-2.6.0-test5/drivers/media/dvb/ttpci/av7110.c
@@ -2608,8 +2615,23 @@
  ****************************************************************************/
 
 static struct v4l2_input inputs[2] = {
-	{ 0,	"DVB",		V4L2_INPUT_TYPE_CAMERA,	1, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, 
-	{ 1,	"ANALOG",	V4L2_INPUT_TYPE_TUNER,	2, 1, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 },
+	{	
+		.index 		= 0,
+		.name 		= "DVB",
+		.type		= V4L2_INPUT_TYPE_CAMERA,
+		.audioset 	= 1,
+		.tuner		= 0, /* ignored */
+		.std		= V4L2_STD_PAL_BG|V4L2_STD_NTSC_M,
+		.status		= 0,
+	}, { 
+		.index 		= 1,
+		.name 		= "ANALOG",
+		.type		= V4L2_INPUT_TYPE_TUNER,
+		.audioset 	= 2,
+		.tuner		= 0,
+		.std		= V4L2_STD_PAL_BG|V4L2_STD_NTSC_M,
+		.status		= 0,
+	}
 };
 
 /* taken from ves1820.c */
@@ -4629,19 +4673,45 @@
 /* FIXME: these values are experimental values that look better than the
    values from the latest "official" driver -- at least for me... (MiHu) */
 static struct saa7146_standard standard[] = {
-	{ "PAL", V4L2_STD_PAL, 0x15, 288, 576, 0x4a, 708, 709, 576, 768 },
-//	{ "PAL", V4L2_STD_PAL, 0x15, 288, 576, 0x3a, 720, 721, 576, 768 },
-	{ "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 },
+	{
+		.name	= "PAL", 	.id		= V4L2_STD_PAL_BG,
+		.v_offset	= 0x15,	.v_field 	= 288,		.v_calc	= 576,
+		.h_offset	= 0x4a,	.h_pixels 	= 708,		.h_calc	= 709,
+		.v_max_out	= 576,	.h_max_out	= 768,
+	}, {
+		.name	= "NTSC", 	.id		= V4L2_STD_NTSC,
+		.v_offset	= 0x10,	.v_field 	= 244,		.v_calc	= 480,
+		.h_offset	= 0x40,	.h_pixels 	= 708,		.h_calc	= 709,
+		.v_max_out	= 480,	.h_max_out	= 640,
+	}
 };
 
 static struct saa7146_standard analog_standard[] = {
-	{ "PAL", V4L2_STD_PAL, 0x18, 288, 576, 0x08, 708, 709, 576, 768 },
-	{ "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 },
+	{
+		.name	= "PAL", 	.id		= V4L2_STD_PAL_BG,
+		.v_offset	= 0x18,	.v_field 	= 288,		.v_calc	= 576,
+		.h_offset	= 0x08,	.h_pixels 	= 708,		.h_calc	= 709,
+		.v_max_out	= 576,	.h_max_out	= 768,
+	}, {
+		.name	= "NTSC", 	.id		= V4L2_STD_NTSC,
+		.v_offset	= 0x10,	.v_field 	= 244,		.v_calc	= 480,
+		.h_offset	= 0x40,	.h_pixels 	= 708,		.h_calc	= 709,
+		.v_max_out	= 480,	.h_max_out	= 640,
+	}
 };
 
 static struct saa7146_standard dvb_standard[] = {
-	{ "PAL", V4L2_STD_PAL, 0x14, 288, 576, 0x4a, 708, 709, 576, 768 },
-	{ "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 },
+	{
+		.name	= "PAL", 	.id		= V4L2_STD_PAL_BG,
+		.v_offset	= 0x14,	.v_field 	= 288,		.v_calc	= 576,
+		.h_offset	= 0x4a,	.h_pixels 	= 708,		.h_calc	= 709,
+		.v_max_out	= 576,	.h_max_out	= 768,
+	}, {
+		.name	= "NTSC", 	.id		= V4L2_STD_NTSC,
+		.v_offset	= 0x10,	.v_field 	= 244,		.v_calc	= 480,
+		.h_offset	= 0x40,	.h_pixels 	= 708,		.h_calc	= 709,
+		.v_max_out	= 480,	.h_max_out	= 640,
+	}
 };
 
 static struct saa7146_extension av7110_extension;
#7 lore raw

PATCH 8/14 various patches for non-av7110 dvb-drivers

- [DVB] patch by Jon Burgess to fix DMA issues
- [DVB] reduce the number of dropped TS packets when an error is detected (Jon Burgess)
- [DVB] use budget-ci driver for new TT DVB-T cards with onboard MSP430.

drivers/media/dvb/ttpci/budget-ci.c +2 -0
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/ttpci/budget-ci.c linux-2.6.0-test5/drivers/media/dvb/ttpci/budget-ci.c
@@ -357,10 +363,12 @@
 static struct saa7146_extension budget_extension; 
 
 MAKE_BUDGET_INFO(ttbci,	"TT-Budget/WinTV-NOVA-CI PCI",	BUDGET_TT_HW_DISEQC);
+MAKE_BUDGET_INFO(ttbt2,	"TT-Budget/WinTV-NOVA-T  PCI",	BUDGET_TT);
 
 static struct pci_device_id pci_tbl[] = {
 	MAKE_EXTENSION_PCI(ttbci, 0x13c2, 0x100c),
 	MAKE_EXTENSION_PCI(ttbci, 0x13c2, 0x100f),
+	MAKE_EXTENSION_PCI(ttbt2,  0x13c2, 0x1011),
 	{
 		.vendor    = 0,
 	}
drivers/media/dvb/ttpci/budget-core.c +2 -2
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/ttpci/budget-core.c linux-2.6.0-test5/drivers/media/dvb/ttpci/budget-core.c
@@ -46,12 +46,12 @@
         mdelay(10);
 
         saa7146_write(dev, BASE_ODD3, 0);
-        saa7146_write(dev, BASE_EVEN3, TS_WIDTH*TS_HEIGHT/2);
+        saa7146_write(dev, BASE_EVEN3, 0);
         saa7146_write(dev, PROT_ADDR3, TS_WIDTH*TS_HEIGHT);	
         saa7146_write(dev, BASE_PAGE3, budget->pt.dma |ME1|0x90);
         saa7146_write(dev, PITCH3, TS_WIDTH);
 
-        saa7146_write(dev, NUM_LINE_BYTE3, ((TS_HEIGHT/2)<<16)|TS_WIDTH);
+        saa7146_write(dev, NUM_LINE_BYTE3, (TS_HEIGHT<<16)|TS_WIDTH);
       	saa7146_write(dev, MC2, (MASK_04 | MASK_20));
      	saa7146_write(dev, MC1, (MASK_04 | MASK_20)); // DMA3 on
 
drivers/media/dvb/ttpci/budget.c +0 -2
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/ttpci/budget.c linux-2.6.0-test5/drivers/media/dvb/ttpci/budget.c
@@ -192,7 +192,6 @@
 MAKE_BUDGET_INFO(ttbs,	"TT-Budget/WinTV-NOVA-S  PCI",	BUDGET_TT);
 MAKE_BUDGET_INFO(ttbc,	"TT-Budget/WinTV-NOVA-C  PCI",	BUDGET_TT);
 MAKE_BUDGET_INFO(ttbt,	"TT-Budget/WinTV-NOVA-T  PCI",	BUDGET_TT);
-MAKE_BUDGET_INFO(ttbt2,	"TT-Budget/WinTV-NOVA-T  PCI",	BUDGET_TT);
 MAKE_BUDGET_INFO(satel,	"SATELCO Multimedia PCI",	BUDGET_TT_HW_DISEQC);
 /* Uncomment for Budget Patch */
 /*MAKE_BUDGET_INFO(fs_1_3,"Siemens/Technotrend/Hauppauge PCI rev1.3+Budget_Patch", BUDGET_PATCH);*/
@@ -203,7 +202,6 @@
 	MAKE_EXTENSION_PCI(ttbs,  0x13c2, 0x1003),
 	MAKE_EXTENSION_PCI(ttbc,  0x13c2, 0x1004),
 	MAKE_EXTENSION_PCI(ttbt,  0x13c2, 0x1005),
-	MAKE_EXTENSION_PCI(ttbt2,  0x13c2, 0x1011),	
 	MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013),
 	{
 		.vendor    = 0,
#8 lore raw

PATCH 9/14 various av7110 dvb-driver updates

Sorry: have a look at patch 12 for details!
-[DVB] various av7110 updates

drivers/media/dvb/ttpci/av7110.c +47 -18
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/ttpci/av7110.c linux-2.6.0-test5/drivers/media/dvb/ttpci/av7110.c
@@ -40,9 +40,9 @@
 #include <linux/delay.h>
 #include <linux/fs.h>
 #include <linux/timer.h>
+#include <linux/poll.h>
 #include <linux/unistd.h>
 #include <linux/byteorder/swabb.h>
-#include <linux/poll.h>
 #include <linux/slab.h>
 #include <linux/smp_lock.h>
 #include <stdarg.h>
@@ -196,17 +197,22 @@
 	return result;
 }
 
-/* DEBI during interrupt */
 
-/* fixme: val can be a pointer to a memory or an u32 value -- this 
-   won't work on 64bit platforms! */
+/* DEBI during interrupt */
+/* single word writes */
 static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val, int count)
 {
-        if (count>4 && val)
-                memcpy(av7110->debi_virt, (char *) val, count);
         debiwrite(av7110, config, addr, val, count);
 }
 
+/* buffer writes */
+static inline void mwdebi(struct av7110 *av7110, u32 config, int addr, char *val, int count)
+{
+	memcpy(av7110->debi_virt, val, count);
+        debiwrite(av7110, config, addr, 0, count);
+}
+
+
 static inline u32 irdebi(struct av7110 *av7110, u32 config, int addr, u32 val, int count)
 {
         u32 res;
@@ -1915,8 +1922,8 @@
                 if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0)
                         return -1;
                 DEB_D(("Writing DRAM block %d\n",i));
-                iwdebi(av7110, DEBISWAB, bootblock,
-                       i*(BOOT_MAX_SIZE)+(u32)data,
+                mwdebi(av7110, DEBISWAB, bootblock,
+                       ((char*)data) + i*(BOOT_MAX_SIZE),
                        BOOT_MAX_SIZE);
                 bootblock^=0x1400;
                 iwdebi(av7110, DEBISWAB, BOOT_BASE, swab32(base), 4);
@@ -1929,9 +1936,9 @@
                 if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0)
                         return -1;
                 if (rest>4)
-                        iwdebi(av7110, DEBISWAB, bootblock, i*(BOOT_MAX_SIZE)+(u32)data, rest);
+                        mwdebi(av7110, DEBISWAB, bootblock, ((char*)data) + i*(BOOT_MAX_SIZE), rest);
                 else
-                        iwdebi(av7110, DEBISWAB, bootblock, i*(BOOT_MAX_SIZE)-4+(u32)data, rest+4);
+                        mwdebi(av7110, DEBISWAB, bootblock, ((char*)data) + i*(BOOT_MAX_SIZE) - 4, rest+4);
                 
                 iwdebi(av7110, DEBISWAB, BOOT_BASE, swab32(base), 4);
                 iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, rest, 2);
@@ -2015,7 +2022,7 @@
         //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT);
         //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
 
-        iwdebi(av7110, DEBISWAB, DPRAM_BASE, (u32) bootcode, sizeof(bootcode));
+	mwdebi(av7110, DEBISWAB, DPRAM_BASE, bootcode, sizeof(bootcode));
         iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
         
         wait_for_debi_done(av7110);
@@ -2033,7 +2040,7 @@
         
         DEB_D(("bootarm: load dpram code\n"));
 
-	iwdebi(av7110, DEBISWAB, DPRAM_BASE, (u32) Dpram, sizeof(Dpram));
+	mwdebi(av7110, DEBISWAB, DPRAM_BASE, Dpram, sizeof(Dpram));
 
 	wait_for_debi_done(av7110);
 
@@ -2742,7 +2764,7 @@
 
 		DEB_EE(("VIDIOC_G_TUNER: %d\n", t->index));
 
-		if( 0 == av7110->has_analog_tuner || av7110->current_input != 1 ) {
+		if( 0 == av7110->has_analog_tuner || t->index != 0 ) {
 			return -EINVAL;
 		}
 
@@ -3257,7 +3279,7 @@
 	DEB_EE(("av7110: fwstc = %04hx %04hx %04hx %04hx\n",
 			fwstc[0], fwstc[1], fwstc[2], fwstc[3]));
 
-	*stc =  (((uint64_t)(~fwstc[2]) & 1) << 32) |
+	*stc =  (((uint64_t) ((fwstc[3] & 0x8000) >> 15)) << 32) |
 		(((uint64_t)fwstc[1])     << 16) | ((uint64_t)fwstc[0]);
 	*base = 1;
 
@@ -3630,17 +3652,22 @@
 
 	DEB_EE(("av7110: %p\n",av7110));
 
+	if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
 	poll_wait(file, &av7110->avout.queue, wait);
+	}
+	
 	poll_wait(file, &av7110->video_events.wait_queue, wait);
 
 	if (av7110->video_events.eventw != av7110->video_events.eventr)
 		mask = POLLPRI;
 
+	if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
 	if (av7110->playing) {
                 if (FREE_COND)
                         mask |= (POLLOUT | POLLWRNORM);
         } else /* if not playing: may play if asked for */
                 mask |= (POLLOUT | POLLWRNORM);
+	}
 
         return mask;
 }
@@ -3653,6 +3680,10 @@
 
 	DEB_EE(("av7110: %p\n",av7110));
 
+	if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
+		return -EPERM;
+	}
+
         if (av7110->videostate.stream_source!=VIDEO_SOURCE_MEMORY) 
                 return -EPERM;
 
@@ -3690,6 +3721,10 @@
                 n=MIN_IFRAME/len+1;
         }
 
+	/* setting n always > 1, fixes problems when playing stillframes
+	   consisting of I- and P-Frames */
+	n=MIN_IFRAME/len+1;
+	
 	/* FIXME: nonblock? */
 	dvb_play(av7110, iframe_header, sizeof(iframe_header), 0, 1, 0);
 
@@ -3711,9 +3746,12 @@
         
 	DEB_EE(("av7110: %p\n",av7110));
 
-        if (((file->f_flags&O_ACCMODE)==O_RDONLY) &&
-            (cmd!=VIDEO_GET_STATUS))
+        if ((file->f_flags&O_ACCMODE)==O_RDONLY) {
+		if ( cmd!=VIDEO_GET_STATUS && cmd!=VIDEO_GET_EVENT && 
+		     cmd!=VIDEO_GET_SIZE ) {
                 return -EPERM;
+		}
+	}
         
         switch (cmd) {
         case VIDEO_STOP:
@@ -4027,15 +4065,17 @@
 
         if ((err=dvb_generic_open(inode, file))<0)
                 return err;
+
+	if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
         dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout);
         dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout);
         av7110->video_blank=1;
         av7110->audiostate.AV_sync_state=1;
         av7110->videostate.stream_source=VIDEO_SOURCE_DEMUX;
 
-	if ((file->f_flags & O_ACCMODE) != O_RDONLY)
 		/*  empty event queue */
 		av7110->video_events.eventr = av7110->video_events.eventw = 0;
+	}
 
         return 0;
 }
@@ -4047,7 +4087,10 @@
 
 	DEB_EE(("av7110: %p\n",av7110));
 
+	if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
         AV_Stop(av7110, RP_VIDEO);
+	}
+
         return dvb_generic_release(inode, file);
 }
 
@@ -4094,7 +4137,8 @@
 
 static struct dvb_device dvbdev_video = {
 	.priv		= 0,
-	.users		= 1,
+	.users		= 6,
+	.readers	= 5,	/* arbitrary */
 	.writers	= 1,
 	.fops		= &dvb_video_fops,
 	.kernel_ioctl	= dvb_video_ioctl,
@@ -4660,6 +4730,7 @@
 MAKE_AV7110_INFO(unkwn1, "Technotrend/Hauppauge PCI rev?(unknown1)?");
 MAKE_AV7110_INFO(unkwn2, "Technotrend/Hauppauge PCI rev?(unknown2)?");
 MAKE_AV7110_INFO(nexus,  "Technotrend/Hauppauge Nexus PCI DVB-S");
+MAKE_AV7110_INFO(dvboc11,"Octal/Technotrend DVB-C for iTV");
 
 static struct pci_device_id pci_tbl[] = {
 	MAKE_EXTENSION_PCI(fs_1_5, 0x110a, 0xffff),
@@ -4676,6 +4747,7 @@
 	MAKE_EXTENSION_PCI(unkwn1, 0xffc2, 0x0000),
 	MAKE_EXTENSION_PCI(unkwn2, 0x00a1, 0x00a1),
 	MAKE_EXTENSION_PCI(nexus,  0x00a1, 0xa1a0),
+	MAKE_EXTENSION_PCI(dvboc11,0x13c2, 0x000a),
 	{
 		.vendor    = 0,
 	}
#9 lore raw

PATCH 10/14 update dvb frontend drivers

- [DVB] add budget driver as possible client of the ves1820 frontend driver
- [DVB] fix wrong include in sp887x.c frontend driver
- [DVB] fix wrong chip description in tda1004xh frontend driver
- [DVB] fixed detection of stv0299 if chip is in standby mode
- [DVB] change some #ifdef to #if, for easier debug enable/disable
- [DVB] ves1820: patch by Peter Bieringer: nicer log output
- [DVB] ves1820: allow PWM (tuner calibaration) value from EEPROM to be overridden on command line (based on patch by Peter Bieringer). New module paramters: "pwm" (max 4 ints, range -1..0xff) and "verbose" (to print AFC value aftger tuning).

drivers/media/dvb/frontends/ves1820.c +2 -1
diff -uNrwB --new-file xx-linux-2.6.0-test5/drivers/media/dvb/frontends/ves1820.c linux-2.6.0-test5/drivers/media/dvb/frontends/ves1820.c
@@ -173,7 +173,8 @@
 	if (tuner_type == 0xff)     /*  PLL not reachable over i2c ...  */
 		return 0;
 
-	if (strstr (fe->i2c->adapter->name, "Technotrend"))
+	if (strstr (fe->i2c->adapter->name, "Technotrend") ||
+	    strstr (fe->i2c->adapter->name, "TT-Budget"))
 		ifreq = 35937500;
 	else
 		ifreq = 36125000;
drivers/media/dvb/frontends/sp887x.c +1 -1
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/frontends/sp887x.c linux-2.6.0-test6-cvs/drivers/media/dvb/frontends/sp887x.c
@@ -4,7 +4,7 @@
 #include <linux/i2c.h>
 
 #include "dvb_frontend.h"
-#include "dvb_compat.h"
+#include "dvb_functions.h"
 
 
 #if 0
drivers/media/dvb/frontends/tda1004x.c +1 -1
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/frontends/tda1004x.c linux-2.6.0-test6-cvs/drivers/media/dvb/frontends/tda1004x.c
@@ -1,5 +1,5 @@
   /*
-     Driver for Philips tda1004x OFDM Frontend
+     Driver for Philips tda1004xh OFDM Frontend
 
      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
drivers/media/dvb/frontends/stv0299.c +4 -1
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/frontends/stv0299.c linux-2.6.0-test6-cvs/drivers/media/dvb/frontends/stv0299.c
@@ -913,7 +913,10 @@
 static int uni0299_attach (struct dvb_i2c_bus *i2c)
 {
         long tuner_type;
-	u8 id = stv0299_readreg (i2c, 0x00);
+	u8 id;
+ 
+	stv0299_writereg (i2c, 0x02, 0x00); /* standby off */
+	id = stv0299_readreg (i2c, 0x00);
 
 	dprintk ("%s: id == 0x%02x\n", __FUNCTION__, id);
 
drivers/media/dvb/frontends/mt312.c +2 -2
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/frontends/mt312.c linux-2.6.0-test6-cvs/drivers/media/dvb/frontends/mt312.c
@@ -85,7 +85,7 @@
 		printk(KERN_ERR "%s: ret == %d\n", __FUNCTION__, ret);
 		return -EREMOTEIO;
 	}
-#ifdef MT312_DEBUG
+#if MT312_DEBUG
 	{
 		int i;
 		printk(KERN_INFO "R(%d):", reg & 0x7f);
@@ -106,7 +106,7 @@
 	u8 buf[count + 1];
 	struct i2c_msg msg;
 
-#ifdef MT312_DEBUG
+#if MT312_DEBUG
 	{
 		int i;
 		printk(KERN_INFO "W(%d):", reg & 0x7f);
drivers/media/dvb/frontends/ves1820.c +33 -13

119 lines not on this page · raw message

#10 lore raw

PATCH 11/14 Kconfig and Makefile updates, inspired by Adrian Bunk and Roman Zippel

- [DVB] split up saa7146 compilation in core part (saa7146.o) and video+vbi part (saa7146_vv). some drivers need both (av7110.c), some drivers only need the core stuff (budget*.c)
- [DVB] add entry for sp887x DVB-T modulator to corresponding Kconfig
- [DVB] use new SELECT facility of Kconfig, first mentioned by Adrian Bunk and Roman Zippel in DVB subsystem
- [DVB] use SELECT in media/video/Kconfig, too.

drivers/media/common/Kconfig +10 -6
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/common/Kconfig linux-2.6.0-test6-cvs/drivers/media/common/Kconfig
@@ -1,8 +1,12 @@
 config VIDEO_SAA7146
-	def_tristate DVB_AV7110 || DVB_BUDGET || DVB_BUDGET_AV || \
-		     VIDEO_MXB || VIDEO_DPC || VIDEO_HEXIUM_ORION || \
-		     VIDEO_HEXIUM_GEMINI
-        depends on VIDEO_DEV && PCI && I2C
+        tristate
+	select I2C
+
+config VIDEO_SAA7146_VV
+        tristate
+	select VIDEO_BUF
+	select VIDEO_VIDEOBUF
+	select VIDEO_SAA7146
+
 config VIDEO_VIDEOBUF
-	def_tristate VIDEO_SAA7134 || VIDEO_BT848 || VIDEO_SAA7146
-        depends on VIDEO_DEV
+        tristate
drivers/media/common/Makefile +2 -1
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/common/Makefile linux-2.6.0-test6-cvs/drivers/media/common/Makefile
@@ -1,5 +1,6 @@
 saa7146-objs    := saa7146_i2c.o saa7146_core.o 
 saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o  
 
-obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o saa7146_vv.o
+obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o
+obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o
 
drivers/media/dvb/Kconfig +5 -7
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/Kconfig linux-2.6.0-test6-cvs/drivers/media/dvb/Kconfig
@@ -3,16 +3,16 @@
 #
 
 menu "Digital Video Broadcasting Devices"
-	depends on NET && INET 
 
 config DVB
 	bool "DVB For Linux"
+	depends on NET && INET
 	---help---
 	  Support Digital Video Broadcasting hardware.  Enable this if you 
 	  own a DVB adapter and want to use it or if you compile Linux for 
 	  a digital SetTopBox.
 
-	  API specs and user tools and are available for example from 
+	  API specs and user tools are available from
 	  <http://www.linuxtv.org/>. 
 
 	  Please report problems regarding this driver to the LinuxDVB 
@@ -33,18 +33,16 @@
 source "drivers/media/dvb/frontends/Kconfig"
 
 comment "Supported SAA7146 based PCI Adapters"
-	depends on DVB && PCI
-
+	depends on DVB_CORE && PCI
 source "drivers/media/dvb/ttpci/Kconfig"
 
 comment "Supported USB Adapters"
-	depends on DVB && USB
-
+	depends on DVB_CORE && USB
 source "drivers/media/dvb/ttusb-budget/Kconfig"
 source "drivers/media/dvb/ttusb-dec/Kconfig"
 
 comment "Supported FlexCopII (B2C2) Adapters"
-	depends on DVB && PCI
+	depends on DVB_CORE && PCI
 source "drivers/media/dvb/b2c2/Kconfig"
 
 endmenu
drivers/media/dvb/dvb-core/Kconfig +4 -1
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/dvb-core/Kconfig linux-2.6.0-test6-cvs/drivers/media/dvb/dvb-core/Kconfig
@@ -4,5 +4,8 @@
 	select CRC32
 	help
 	  DVB core utility functions for device handling, software fallbacks etc.
+	  Say Y when you have a DVB card and want to use it. Say Y if your want
+	  to build your drivers outside the kernel, but need the DVB core. All 
+	  in-kernel drivers will select this automatically if needed.
+	  If unsure say N.
 
-	  Say Y when you have a DVB card and want to use it. If unsure say N.
drivers/media/dvb/dvb-core/Makefile.lib +1 -0
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/dvb-core/Makefile.lib linux-2.6.0-test6-cvs/drivers/media/dvb/dvb-core/Makefile.lib
@@ -0,0 +1 @@
+obj-$(CONFIG_DVB_CORE)		+= crc32.o
drivers/media/dvb/ttpci/Kconfig +12 -4
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/ttpci/Kconfig linux-2.6.0-test6-cvs/drivers/media/dvb/ttpci/Kconfig
@@ -1,6 +1,8 @@
 config DVB_AV7110
 	tristate "AV7110 cards"
-	depends on VIDEO_DEV && DVB_CORE
+	depends on DVB_CORE
+	select VIDEO_DEV
+	select VIDEO_SAA7146_VV
 	help
 	  Support for SAA7146 and AV7110 based DVB cards as produced 
 	  by Fujitsu-Siemens, Technotrend, Hauppauge and others.
@@ -26,6 +28,7 @@
 config DVB_BUDGET
 	tristate "Budget cards"
 	depends on DVB_CORE
+	select VIDEO_SAA7146
 	help
 	  Support for simple SAA7146 based DVB cards
 	  (so called Budget- or Nova-PCI cards) without onboard
@@ -38,7 +41,8 @@
 
 config DVB_BUDGET_CI
 	tristate "Budget cards with onboard CI connector"
-	depends on VIDEO_DEV && DVB_CORE && DVB_BUDGET
+	depends on DVB_CORE
+	select VIDEO_SAA7146
 	help
 	  Support for simple SAA7146 based DVB cards
 	  (so called Budget- or Nova-PCI cards) without onboard
@@ -51,7 +55,9 @@
 
 config DVB_BUDGET_AV
 	tristate "Budget cards with analog video inputs"
-	depends on VIDEO_DEV && DVB_CORE && DVB_BUDGET
+	depends on DVB_CORE
+	select VIDEO_DEV
+	select VIDEO_SAA7146_VV
 	help
 	  Support for simple SAA7146 based DVB cards
 	  (so called Budget- or Nova-PCI cards) without onboard
@@ -64,7 +70,9 @@
 
 config DVB_BUDGET_PATCH
 	tristate "AV7110 cards with Budget Patch"
-	depends on DVB_CORE && DVB_BUDGET
+	depends on DVB_BUDGET
+	select VIDEO_DEV
+	select VIDEO_SAA7146_VV
 	help
 	  Support for Budget Patch (full TS) modification on 
 	  SAA7146+AV7110 based cards (DVB-S cards). This
drivers/media/dvb/ttusb-budget/Kconfig +1 -1
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/ttusb-budget/Kconfig linux-2.6.0-test6-cvs/drivers/media/dvb/ttusb-budget/Kconfig
@@ -1,6 +1,6 @@
 config DVB_TTUSB_BUDGET
 	tristate "Technotrend/Hauppauge Nova-USB devices"
-	depends on DVB_CORE && USB
+	depends on DVB_CORE
 	help
 	  Support for external USB adapters designed by Technotrend and
 	  produced by Hauppauge, shipped under the brand name 'Nova-USB'.
drivers/media/dvb/frontends/Kconfig +10 -0
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/frontends/Kconfig linux-2.6.0-test6-cvs/drivers/media/dvb/frontends/Kconfig
@@ -26,6 +26,16 @@
 	  DVB adapter simply enable all supported frontends, the 
 	  right one will get autodetected.
 
+config DVB_SP887X
+ 	tristate "Frontends with sp887x demodulators, e.g. Microtune DTF7072"
+ 	depends on DVB_CORE
+ 	help
+ 	  A DVB-T demodulator driver. Say Y when you want to support the sp887x.
+ 
+ 	  If you don't know what tuner module is soldered on your
+ 	  DVB adapter simply enable all supported frontends, the
+ 	  right one will get autodetected.
+
 config DVB_ALPS_TDLB7
 	tristate "Alps TDLB7 (OFDM)"
 	depends on DVB_CORE
drivers/media/video/Kconfig +9 -5
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/video/Kconfig linux-2.6.0-test6-cvs/drivers/media/video/Kconfig
@@ -3,7 +3,7 @@
 #
 
 menu "Video For Linux"
-	depends on VIDEO_DEV!=n
+	depends on VIDEO_DEV
 
 comment "Video Adapters"
 
@@ -228,7 +228,8 @@
 
 config VIDEO_MXB
 	tristate "Siemens-Nixdorf 'Multimedia eXtension Board'"
-	depends on VIDEO_DEV && PCI && I2C
+	depends on VIDEO_DEV && PCI
+	select VIDEO_SAA7146_VV
 	---help---
 	  This is a video4linux driver for the 'Multimedia eXtension Board'
 	  TV card by Siemens-Nixdorf.
@@ -238,7 +239,8 @@
 
 config VIDEO_DPC
 	tristate "Philips-Semiconductors 'dpc7146 demonstration board'"
-	depends on VIDEO_DEV && PCI && I2C
+	depends on VIDEO_DEV && PCI
+	select VIDEO_SAA7146_VV
 	---help---
 	  This is a video4linux driver for the 'dpc7146 demonstration
 	  board' by Philips-Semiconductors. It's the reference design
@@ -251,7 +253,8 @@
 
 config VIDEO_HEXIUM_ORION
 	tristate "Hexium HV-PCI6 and Orion frame grabber"
-	depends on VIDEO_DEV && PCI && I2C
+	depends on VIDEO_DEV && PCI
+	select VIDEO_SAA7146_VV
 	---help---
 	  This is a video4linux driver for the Hexium HV-PCI6 and
 	  Orion frame grabber cards by Hexium.
@@ -261,7 +264,8 @@
 
 config VIDEO_HEXIUM_GEMINI
 	tristate "Hexium Gemini frame grabber"
-	depends on VIDEO_DEV && PCI && I2C
+	depends on VIDEO_DEV && PCI
+	select VIDEO_SAA7146_VV
 	---help---
 	  This is a video4linux driver for the Hexium Gemini frame
 	  grabber card by Hexium. Please note that the Gemini Dual
#11 lore raw

PATCH 12/14 some more av7110 dvb-driver updates

- [DVB] some progress on DVB-C analog module: experimentally fix frequency offset, initialize msp3400 for analog TV sound
- [DVB] Reduce the number of dropped TS packets when an error is detected (Jon Burgess)
- [DVB] If somebody calls G_TUNER for a DVB-C card w/ analog module, then check for the selected tuner, not if the currently selected channel has a tuner.
- [DVB] play_iframe may be used to play stillpicture frames, that can either by complete i-frames or partial p-frames. In any case, the av7110 needs about 400kB of video data, before the internal video decoder starts displaying anything. for stillframes, this is bad, so we *always* loop writing the frame until the magic amount is reached. stupid, but works...
- [DVB] applied 64bit fixes by Pedro Miguel Teixeira <[email protected]

drivers/media/dvb/dvb-core/dvb_demux.c +2 -0
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/dvb-core/dvb_demux.c linux-2.6.0-test6-cvs/drivers/media/dvb/dvb-core/dvb_demux.c
@@ -391,7 +393,9 @@
 	spin_lock(&demux->lock);
 
 	while (count--) {
+               	if(buf[0] == 0x47) {
 		dvb_dmx_swfilter_packet(demux, buf);
+		}
 		buf += 188;
 	}
 
drivers/media/dvb/ttpci/av7110.h +2 -2
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/ttpci/av7110.h linux-2.6.0-test6-cvs/drivers/media/dvb/ttpci/av7110.h
@@ -399,14 +399,14 @@
 
         struct dvb_device       dvb_dev;
         struct dvb_net               dvb_net;
-	struct video_device	vd;
+	struct video_device	v4l_dev;
 
         struct saa7146_dev	*dev;
 
 	struct dvb_i2c_bus	*i2c_bus;	
 	char			*card_name;
 
-	/* support for analog module of dvb-c */
+	/* support for analog module of dvb-c */
 	int			has_analog_tuner;
 	int			current_input;
 	u32			current_freq;
drivers/media/dvb/ttpci/budget-core.c +0 -3
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/dvb/ttpci/budget-core.c linux-2.6.0-test6-cvs/drivers/media/dvb/ttpci/budget-core.c
@@ -80,14 +80,11 @@
 		return;
 
         if (newdma > olddma) { /* no wraparound, dump olddma..newdma */
-               	if(mem[olddma] == 0x47)
                         dvb_dmx_swfilter_packets(&budget->demux, 
         	                mem+olddma, (newdma-olddma) / 188);
         } else { /* wraparound, dump olddma..buflen and 0..newdma */
-                if(mem[olddma] == 0x47)
 	                dvb_dmx_swfilter_packets(&budget->demux,
         	                mem+olddma, (TS_BUFLEN-olddma) / 188);
-                if(mem[0] == 0x47)
                         dvb_dmx_swfilter_packets(&budget->demux,
                                 mem, newdma / 188);
         }
drivers/media/dvb/ttpci/av7110.c +223 -61

467 lines not on this page · raw message

#12 lore raw

PATCH 13/14 fix v4l1 backward compatibility in saa7146 driver

- [DVB] fix VIDIOC_S_FBUF for v4l1 backward compatility with xfree86 / v4l_drv

drivers/media/common/saa7146_video.c +17 -4
diff -uNrwB --new-file -uraN linux-2.6.0-test6/drivers/media/common/saa7146_video.c linux-2.6.0-test6-cvs/drivers/media/common/saa7146_video.c
@@ -904,6 +904,8 @@
 	{
 		struct v4l2_framebuffer *fb = arg;
 		struct saa7146_format *fmt;
+		struct saa7146_fh *ov_fh = NULL;
+		int restart_overlay = 0;
 
 		DEB_EE(("VIDIOC_S_FBUF\n"));
 
@@ -913,10 +915,6 @@
 			return -EPERM;
 		}
 */
-		if( 0 != vv->ov_data ) {
-			DEB_D(("VIDIOC_S_FBUF: overlay is active.\n"));
-			return -EPERM;
-		}
 
 		/* check args */
 		fmt = format_by_fourcc(dev,fb->fmt.pixelformat);
@@ -924,12 +922,27 @@
 			return -EINVAL;
 		}
 		
+		down(&dev->lock);
+
+		if( vv->ov_data != NULL ) {
+			ov_fh = vv->ov_data->fh;
+			saa7146_stop_preview(ov_fh);
+			restart_overlay = 1;
+		}
+
 		/* ok, accept it */
 		vv->ov_fb = *fb;
 		vv->ov_fmt = fmt;
 		if (0 == vv->ov_fb.fmt.bytesperline)
 			vv->ov_fb.fmt.bytesperline =
 				vv->ov_fb.fmt.width*fmt->depth/8;
+
+		if( 0 != restart_overlay ) {
+			saa7146_start_preview(ov_fh);
+		}
+
+		up(&dev->lock);
+
 		return 0;
 	}
 	case VIDIOC_ENUM_FMT:
#14 lore raw

Re: [PATCH 2/14] firmware update for av7110 dvb driver

In reply to Michael Hunold (LinuxTV.org CVS maintainer)

Hi Michael,

Quoted 1 line

... send to Linus only. (You don't want a 150kB bzip2 compressed firmware blob, don't you? In case you do, drop me a line.)

the request_firmware() framework is part of Linux 2.4 and 2.6 and so for most drivers the firmware file can be loaded from userspace through proc or sysfs. Please take a look at it.

Regards

Marcel

#15 lore raw

Re: [PATCH 2/14] firmware update for av7110 dvb driver

Hello Marcel,

Quoted 5 lines
Quoted 1 line

... send to Linus only. (You don't want a 150kB bzip2 compressed firmware blob, don't you? In case you do, drop me a line.)

the request_firmware() framework is part of Linux 2.4 and 2.6 and so for most drivers the firmware file can be loaded from userspace through proc or sysfs. Please take a look at it.

Yes, we know. When I looked at it the last time, there were some problems that kept us from actually finishing the work.

(If you did not use a hotplug agent, then the system was frozen, because the firmware foo did not use it's own workqueue)

I gave some feedback, but I don't know if the fixes made it into the kernel yet.

I have once patched our drivers to use request_firmware() and I have these patches still lying around, so I'll try and see if they work when I have some spare time.

Quoted 2 lines

Regards
Marcel

CU
Michael.

#16 lore raw

Re: [PATCH 2/14] firmware update for av7110 dvb driver

Hello Marcel,

Quoted 10 lines
Quoted 6 lines
Quoted 1 line

... send to Linus only. (You don't want a 150kB bzip2 compressed firmware blob, don't you? In case you do, drop me a line.)

the request_firmware() framework is part of Linux 2.4 and 2.6 and so for most drivers the firmware file can be loaded from userspace through proc or sysfs. Please take a look at it.

Yes, we know. When I looked at it the last time, there were some problems that kept us from actually finishing the work.

(If you did not use a hotplug agent, then the system was frozen, because the firmware foo did not use it's own workqueue)

As a follow-up to my post: I just checked what already got in and what's still missing. I attached the stuff from request_firmwar() that didn't make it into the kernel yet.

Please note that I did not check if the problem has been solved otherwise. Perhaps Manuel Estrada Sainz <[email protected]> can tell us what the current state is?

CU
Michael.

drivers/base/firmware_class.c +11 -1
diff -u -r1.3 firmware_class.c
@@ -22,6 +22,8 @@
 MODULE_LICENSE("GPL");
 
 static int loading_timeout = 10;	/* In seconds */
+static struct workqueue_struct *firmware_wq;
+
 
 struct firmware_priv {
 	char fw_id[FIRMWARE_NAME_MAX];
@@ -467,7 +469,7 @@
 	};
 	INIT_WORK(&fw_work->work, request_firmware_work_func, fw_work);
 
-	schedule_work(&fw_work->work);
+	queue_work(firmware_wq, &fw_work->work);
 	return 0;
 }
 
@@ -485,12 +487,20 @@
 		       __FUNCTION__);
 		class_unregister(&firmware_class);
 	}
+	firmware_wq = create_workqueue("firmware");
+	if (!firmware_wq) {
+		printk(KERN_ERR "%s: create_workqueue failed\n", __FUNCTION__);
+		class_remove_file(&firmware_class, &class_attr_timeout);
+		class_unregister(&firmware_class);
+		error = -EIO;
+	}
 	return error;
 
 }
 static void __exit
 firmware_class_exit(void)
 {
+	destroy_workqueue(firmware_wq);
 	class_remove_file(&firmware_class, &class_attr_timeout);
 	class_unregister(&firmware_class);
 }
#17 lore raw

Re: [PATCH 2/14] firmware update for av7110 dvb driver

Quoted 15 lines · Michael Hunold

Hello Marcel,

Quoted 8 lines
Quoted 7 lines
Quoted 2 lines

... send to Linus only. (You don't want a 150kB bzip2 compressed firmware blob, don't you? In case you do, drop me a line.)

the request_firmware() framework is part of Linux 2.4 and 2.6 and so for most drivers the firmware file can be loaded from userspace through proc or sysfs. Please take a look at it.

Quoted 5 lines

Yes, we know. When I looked at it the last time, there were some problems that kept us from actually finishing the work.

(If you did not use a hotplug agent, then the system was frozen, because the firmware foo did not use it's own workqueue)

Quoted 7 lines

As a follow-up to my post: I just checked what already got in and what's still missing. I attached the stuff from request_firmwar() that didn't make it into the kernel yet.

Please note that I did not check if the problem has been solved otherwise. Perhaps Manuel Estrada Sainz <[email protected]> can tell us what the current state is?

The patch should work but Andrew Morton didn't like the fact that in practice the kernel end's up having some threads around full time for the sole purpose of loading firmware once in a while.

I should make a new patch to spawn a thread for each firmware load and have them die when the job is done. And stop using workqueues at all.

- Performance should not be an issue since firmware should seldom be needed.
- Code complexity shouldn't change much either.

Comments are welcomed.

If the issue seams urgent, the current "private workqueue" patch could be applied and replaced later with a cleaner solution.

Just for the record I should get the job done within a couple of weeks. A proposal patch would of course help :)

Have a nice day

Manuel

Signature · 6 lines
--- Manuel Estrada Sainz <[email protected]>
                         <[email protected]>
			 <[email protected]>
------------------------ <[email protected]> -------------------
Let us have the serenity to accept the things we cannot change, courage to
change the things we can, and wisdom to know the difference.
#18 lore raw

Re: [PATCH 2/14] firmware update for av7110 dvb driver

In reply to Marcel Holtmann

Hi Marcel,

Quoted 3 lines

the request_firmware() framework is part of Linux 2.4 and 2.6 and so for most drivers the firmware file can be loaded from userspace through proc or sysfs. Please take a look at it.

Is there a way to use this for ISA devices? I'd like to convert my tms380tr request_firmware() as i want to get rid of hardcoded, binary only firmware. However, there is no struct device for ISA devices (and in particular, no bus id) and unlike the old style PCI DMA mapping, which accepts NULL as pci_dev and assumes ISA in this case, request_firmware() absolutely needs the parameter...

--jochen

#20 lore raw

Hello Stephen,

Quoted 6 lines

This update broke the dvb network device changes to make it work with the new rules about dynamic allocation for 2.6. It reverts the code to getting the network device out of an array, so it will break if:
rmmod dvb_net </sys/class/net/dvb0_0/mtu
See:
Documentation/net/netdevices.txt

Thanks for spotting this, although I don't know what has gone wrong here yet. (I don't know the DVB net code very well).

I'll review this, have a talk with the original author and then send an update patch.

Unfortunately, I don't notice every patch that goes directly into 2.6 without getting postet on the linux-dvb mailinglist. Now if someone changes stuff in our CVS in the same file, it can happen that the stuff from the kernel is wiped out.

CU
Michael.

#21 lore raw
Quoted 4 lines · On Sat, 11 Oct 2003 10:41:43 +0200 Michael Hunold <[email protected]> wrote:

Unfortunately, I don't notice every patch that goes directly into 2.6 without getting postet on the linux-dvb mailinglist. Now if someone changes stuff in our CVS in the same file, it can happen that the stuff from the kernel is wiped out.

It is your responsibility to resolve such things though. It is inevitable and unavoidable that others outside of your development group will make many changes to your files, as we fix bugs that are tree-wide.

#22 lore raw
Quoted 8 lines · David S. Miller
Quoted 4 lines · On Sat, 11 Oct 2003 10:41:43 +0200 Michael Hunold <[email protected]> wrote:

Unfortunately, I don't notice every patch that goes directly into 2.6 without getting postet on the linux-dvb mailinglist. Now if someone changes stuff in our CVS in the same file, it can happen that the stuff from the kernel is wiped out.

Quoted 4 lines

It is your responsibility to resolve such things though. It is inevitable and unavoidable that others outside of your development group will make many changes to your files, as we fix bugs that are tree-wide.

So you best subscribe to bk-commits-head and monitor every patch that affects drivers/media/dvb/.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#23 lore raw
Quoted 9 lines · Geert Uytterhoeven
Quoted 8 lines · David S. Miller
Quoted 4 lines · On Sat, 11 Oct 2003 10:41:43 +0200 Michael Hunold <[email protected]> wrote:

Unfortunately, I don't notice every patch that goes directly into 2.6 without getting postet on the linux-dvb mailinglist. Now if someone changes stuff in our CVS in the same file, it can happen that the stuff from the kernel is wiped out.

Quoted 7 lines
Quoted 4 lines

It is your responsibility to resolve such things though. It is inevitable and unavoidable that others outside of your development group will make many changes to your files, as we fix bugs that are tree-wide.

So you best subscribe to bk-commits-head and monitor every patch that affects drivers/media/dvb/.

Or more simple - keep a copy of the kernel where your patches got applied, and make a diff between that kernel and latest.
Apply that diff to your local tree, and you are up-to-date.

This gives a good opportunity to review what has been applied without passing the maintainer.

And finally it also resolve potential conflicts.

And as always - the more frequent you get patches applied, the less burden it is to update to latest kernel.

Sam

#24 lore raw

Hello Sam,

Quoted 9 lines
Quoted 7 lines
Quoted 4 lines

It is your responsibility to resolve such things though. It is inevitable and unavoidable that others outside of your development group will make many changes to your files, as we fix bugs that are tree-wide.

So you best subscribe to bk-commits-head and monitor every patch that affects drivers/media/dvb/.

Quoted 6 lines

Or more simple - keep a copy of the kernel where your patches got applied, and make a diff between that kernel and latest.
Apply that diff to your local tree, and you are up-to-date.

This gives a good opportunity to review what has been applied without passing the maintainer.

Yes, another good hint. Thanks!

Quoted 1 line

Sam

CU
Michael.

#25 lore raw
In reply to Sam Ravnborg

I think root cause of the problem is that dvb was only just been added to the MAINTAINERS file so the patch got lost when I sent to closet match was the video lists. It was kind of orphan thing since it crossed both networking and DVB.

Do you need any help in reinserting it?

#26 lore raw

Hello Stephen,

Quoted 4 lines

I think root cause of the problem is that dvb was only just been added to the MAINTAINERS file so the patch got lost when I sent to closet match was the video lists. It was kind of orphan thing since it crossed both networking and DVB.

I just browsed thorugh the changelogs at
http://linus.bkbits.net:8080/linux-2.5/src/drivers/media/dvb?nav=index.html|src/.|src/drivers|src/drivers/media
and back-feeded the changes that did not make it into our local CVS yet.

Quoted 1 line

Do you need any help in reinserting it?

Thanks for your offer. But I have just cut out your patch, "reversed it", compile tested it and sent it to lkml.

CU
Michael.

#27 lore raw
In reply to Geert Uytterhoeven

Hello Geert,

Quoted 2 lines

So you best subscribe to bk-commits-head and monitor every patch that affects drivers/media/dvb/.

Thanks for that hint -- I should have thought about that before. 8-) I just subscribed to that list.

Quoted 2 lines

Gr{oetje,eeting}s,
Geert

CU
Michael.