From: mchehab@infradead.org
To: linux-kernel@vger.kernel.org
Cc: linux-dvb-maintainer@linuxtv.org,
Mauro Carvalho Chehab <mchehab@infradead.org>
Subject: [PATCH 022/141] V4L/DVB (3421): Several fixes to prepare for VBI
Date: Mon, 20 Mar 2006 12:08:40 -0300 [thread overview]
Message-ID: <20060320150840.PS695488000022@infradead.org> (raw)
In-Reply-To: <20060320150819.PS760228000000@infradead.org>
From: Mauro Carvalho Chehab <mchehab@infradead.org>
Date: 1138043468 -0200
- Fixed VBI compilation.
- Included capacity to specify vbi and video number.
- Added a better control for using more than one em28xx device.
- VIDIOC_G_FMT now calls a function.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
---
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 94a14a2..e4e82ae 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -28,6 +28,7 @@
#include <linux/list.h>
#include <linux/module.h>
#include <linux/kernel.h>
+#include <linux/bitmap.h>
#include <linux/usb.h>
#include <linux/i2c.h>
#include <linux/version.h>
@@ -59,8 +60,14 @@ MODULE_LICENSE("GPL");
static LIST_HEAD(em28xx_devlist);
static unsigned int card[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
+static unsigned int video_nr[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
+static unsigned int vbi_nr[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
module_param_array(card, int, NULL, 0444);
+module_param_array(video_nr, int, NULL, 0444);
+module_param_array(vbi_nr, int, NULL, 0444);
MODULE_PARM_DESC(card,"card type");
+MODULE_PARM_DESC(video_nr,"video device numbers");
+MODULE_PARM_DESC(vbi_nr,"vbi device numbers");
static int tuner = -1;
module_param(tuner, int, 0444);
@@ -70,6 +77,9 @@ static unsigned int video_debug = 0;
module_param(video_debug,int,0644);
MODULE_PARM_DESC(video_debug,"enable debug messages [video]");
+/* Bitmask marking allocated devices from 0 to EM28XX_MAXBOARDS */
+static unsigned long em28xx_devused;
+
/* supported tv norms */
static struct em28xx_tvnorm tvnorms[] = {
{
@@ -211,6 +221,11 @@ static int em28xx_config(struct em28xx *
em28xx_write_regs_req(dev, 0x00, 0x06, "\x40", 1);
/* enable vbi capturing */
+
+ em28xx_write_regs_req(dev,0x00,0x0e,"\xC0",1);
+ em28xx_write_regs_req(dev,0x00,0x0f,"\x80",1);
+ em28xx_write_regs_req(dev,0x00,0x11,"\x51",1);
+
em28xx_audio_usb_mute(dev, 1);
dev->mute = 1; /* maybe not the right place... */
dev->volume = 0x1f;
@@ -323,13 +338,20 @@ static int em28xx_v4l2_open(struct inode
h = list_entry(list, struct em28xx, devlist);
if (h->vdev->minor == minor) {
dev = h;
+ dev->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ }
+ if (h->vbi_dev->minor == minor) {
+ dev = h;
+ dev->type = V4L2_BUF_TYPE_VBI_CAPTURE;
}
}
+ if (NULL == dev)
+ return -ENODEV;
filp->private_data=dev;
-
- em28xx_videodbg("users=%d\n", dev->users);
+ em28xx_videodbg("open minor=%d type=%s users=%d\n",
+ minor,v4l2_type_names[dev->type],dev->users);
if (!down_read_trylock(&em28xx_disconnect))
return -ERESTARTSYS;
@@ -340,13 +362,6 @@ static int em28xx_v4l2_open(struct inode
return -EBUSY;
}
-/* if(dev->vbi_dev->minor == minor){
- dev->type=V4L2_BUF_TYPE_VBI_CAPTURE;
- }*/
- if (dev->vdev->minor == minor) {
- dev->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- }
-
init_MUTEX(&dev->fileop_lock); /* to 1 == available */
spin_lock_init(&dev->queue_lock);
init_waitqueue_head(&dev->wait_frame);
@@ -354,23 +369,27 @@ static int em28xx_v4l2_open(struct inode
down(&dev->lock);
- em28xx_set_alternate(dev);
+ if (dev->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
+ em28xx_set_alternate(dev);
+
+ dev->width = norm_maxw(dev);
+ dev->height = norm_maxh(dev);
+ dev->frame_size = dev->width * dev->height * 2;
+ dev->field_size = dev->frame_size >> 1; /*both_fileds ? dev->frame_size>>1 : dev->frame_size; */
+ dev->bytesperline = dev->width * 2;
+ dev->hscale = 0;
+ dev->vscale = 0;
- dev->width = norm_maxw(dev);
- dev->height = norm_maxh(dev);
- dev->frame_size = dev->width * dev->height * 2;
- dev->field_size = dev->frame_size >> 1; /*both_fileds ? dev->frame_size>>1 : dev->frame_size; */
- dev->bytesperline = dev->width * 2;
- dev->hscale = 0;
- dev->vscale = 0;
+ em28xx_capture_start(dev, 1);
+ em28xx_resolution_set(dev);
- em28xx_capture_start(dev, 1);
- em28xx_resolution_set(dev);
+ /* start the transfer */
+ errCode = em28xx_init_isoc(dev);
+ if (errCode)
+ goto err;
- /* start the transfer */
- errCode = em28xx_init_isoc(dev);
- if (errCode)
- goto err;
+ video_mux(dev, 0);
+ }
dev->users++;
filp->private_data = dev;
@@ -383,8 +402,6 @@ static int em28xx_v4l2_open(struct inode
dev->state |= DEV_INITIALIZED;
- video_mux(dev, 0);
-
err:
up(&dev->lock);
up_read(&em28xx_disconnect);
@@ -400,14 +417,21 @@ static void em28xx_release_resources(str
{
mutex_lock(&em28xx_sysfs_lock);
- em28xx_info("V4L2 device /dev/video%d deregistered\n",
- dev->vdev->minor);
+ /*FIXME: I2C IR should be disconnected */
+
+ em28xx_info("V4L2 devices /dev/video%d and /dev/vbi%d deregistered\n",
+ dev->vdev->minor-MINOR_VFL_TYPE_GRABBER_MIN,
+ dev->vbi_dev->minor-MINOR_VFL_TYPE_VBI_MIN);
list_del(&dev->devlist);
video_unregister_device(dev->vdev);
-/* video_unregister_device(dev->vbi_dev); */
+ video_unregister_device(dev->vbi_dev);
em28xx_i2c_unregister(dev);
usb_put_dev(dev->udev);
mutex_unlock(&em28xx_sysfs_lock);
+
+
+ /* Mark device as unused */
+ em28xx_devused&=~(1<<dev->devno);
}
/*
@@ -463,6 +487,28 @@ em28xx_v4l2_read(struct file *filp, char
int ret = 0;
struct em28xx *dev = filp->private_data;
+ if (dev->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
+ em28xx_videodbg("V4l2_Buf_type_videocapture is set\n");
+ }
+ if (dev->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
+ em28xx_videodbg("V4L2_BUF_TYPE_VBI_CAPTURE is set\n");
+ em28xx_videodbg("not supported yet! ...\n");
+ if (copy_to_user(buf, "", 1)) {
+ up(&dev->fileop_lock);
+ return -EFAULT;
+ }
+ return (1);
+ }
+ if (dev->type == V4L2_BUF_TYPE_SLICED_VBI_CAPTURE) {
+ em28xx_videodbg("V4L2_BUF_TYPE_SLICED_VBI_CAPTURE is set\n");
+ em28xx_videodbg("not supported yet! ...\n");
+ if (copy_to_user(buf, "", 1)) {
+ up(&dev->fileop_lock);
+ return -EFAULT;
+ }
+ return (1);
+ }
+
if (down_interruptible(&dev->fileop_lock))
return -ERESTARTSYS;
@@ -799,7 +845,8 @@ static int em28xx_stream_interrupt(struc
else if (ret) {
dev->state |= DEV_MISCONFIGURED;
em28xx_videodbg("device is misconfigured; close and "
- "open /dev/video%d again\n", dev->vdev->minor);
+ "open /dev/video%d again\n",
+ dev->vdev->minor-MINOR_VFL_TYPE_GRABBER_MIN);
return ret;
}
@@ -850,6 +897,36 @@ static int em28xx_set_norm(struct em28xx
return 0;
}
+
+static int em28xx_get_fmt(struct em28xx *dev, struct v4l2_format *format)
+{
+ em28xx_videodbg("VIDIOC_G_FMT: type=%s\n",
+ (format->type ==V4L2_BUF_TYPE_VIDEO_CAPTURE) ?
+ "V4L2_BUF_TYPE_VIDEO_CAPTURE" :
+ (format->type ==V4L2_BUF_TYPE_VBI_CAPTURE) ?
+ "V4L2_BUF_TYPE_VBI_CAPTURE" :
+ (format->type ==V4L2_CAP_SLICED_VBI_CAPTURE) ?
+ "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE " :
+ "not supported");
+
+ if (format->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
+ format->fmt.pix.width = dev->width;
+ format->fmt.pix.height = dev->height;
+ format->fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
+ format->fmt.pix.bytesperline = dev->bytesperline;
+ format->fmt.pix.sizeimage = dev->frame_size;
+ format->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
+ format->fmt.pix.field = dev->interlaced ? V4L2_FIELD_INTERLACED : V4L2_FIELD_TOP; /* FIXME: TOP? NONE? BOTTOM? ALTENATE? */
+
+ em28xx_videodbg("VIDIOC_G_FMT: %dx%d\n", dev->width,
+ dev->height);
+ return 0;
+ }
+
+ return -EINVAL;
+}
+
+
/*
* em28xx_v4l2_do_ioctl()
* This function is _not_ called directly, but from
@@ -1290,6 +1367,7 @@ static int em28xx_video_do_ioctl(struct
sizeof(cap->bus_info));
cap->version = EM28XX_VERSION_CODE;
cap->capabilities =
+ V4L2_CAP_SLICED_VBI_CAPTURE |
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_AUDIO |
V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
@@ -1314,32 +1392,7 @@ static int em28xx_video_do_ioctl(struct
}
case VIDIOC_G_FMT:
- {
- struct v4l2_format *format = arg;
-
- em28xx_videodbg("VIDIOC_G_FMT: type=%s\n",
- format->type ==
- V4L2_BUF_TYPE_VIDEO_CAPTURE ?
- "V4L2_BUF_TYPE_VIDEO_CAPTURE" : format->type ==
- V4L2_BUF_TYPE_VBI_CAPTURE ?
- "V4L2_BUF_TYPE_VBI_CAPTURE " :
- "not supported");
-
- if (format->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
- return -EINVAL;
-
- format->fmt.pix.width = dev->width;
- format->fmt.pix.height = dev->height;
- format->fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
- format->fmt.pix.bytesperline = dev->bytesperline;
- format->fmt.pix.sizeimage = dev->frame_size;
- format->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
- format->fmt.pix.field = dev->interlaced ? V4L2_FIELD_INTERLACED : V4L2_FIELD_TOP; /* FIXME: TOP? NONE? BOTTOM? ALTENATE? */
-
- em28xx_videodbg("VIDIOC_G_FMT: %dx%d\n", dev->width,
- dev->height);
- return 0;
- }
+ return em28xx_get_fmt(dev, (struct v4l2_format *) arg);
case VIDIOC_TRY_FMT:
case VIDIOC_S_FMT:
@@ -1741,6 +1794,7 @@ static int em28xx_init_dev(struct em28xx
if (errCode) {
em28xx_errdev("error configuring device\n");
kfree(dev);
+ em28xx_devused&=~(1<<dev->devno);
return -ENOMEM;
}
@@ -1767,9 +1821,30 @@ static int em28xx_init_dev(struct em28xx
if (NULL == dev->vdev) {
em28xx_errdev("cannot allocate video_device.\n");
kfree(dev);
+ em28xx_devused&=~(1<<dev->devno);
return -ENOMEM;
}
+ dev->vbi_dev = video_device_alloc();
+ if (NULL == dev->vbi_dev) {
+ em28xx_errdev("cannot allocate video_device.\n");
+ kfree(dev->vdev);
+ kfree(dev);
+ em28xx_devused&=~(1<<dev->devno);
+ return -ENOMEM;
+ }
+
+ /* Fills VBI device info */
+ dev->vbi_dev->type = VFL_TYPE_VBI;
+ dev->vbi_dev->hardware = 0;
+ dev->vbi_dev->fops = &em28xx_v4l_fops;
+ dev->vbi_dev->minor = -1;
+ dev->vbi_dev->dev = &dev->udev->dev;
+ dev->vbi_dev->release = video_device_release;
+ snprintf(dev->vbi_dev->name, sizeof(dev->vbi_dev->name), "%s#%d %s",
+ "em28xx",dev->devno,"vbi");
+
+ /* Fills CAPTURE device info */
dev->vdev->type = VID_TYPE_CAPTURE;
if (dev->has_tuner)
dev->vdev->type |= VID_TYPE_TUNER;
@@ -1778,21 +1853,39 @@ static int em28xx_init_dev(struct em28xx
dev->vdev->minor = -1;
dev->vdev->dev = &dev->udev->dev;
dev->vdev->release = video_device_release;
- snprintf(dev->vdev->name, sizeof(dev->vdev->name), "%s",
- "em28xx video");
+ snprintf(dev->vdev->name, sizeof(dev->vbi_dev->name), "%s#%d %s",
+ "em28xx",dev->devno,"video");
+
list_add_tail(&dev->devlist,&em28xx_devlist);
/* register v4l2 device */
down(&dev->lock);
- if ((retval = video_register_device(dev->vdev, VFL_TYPE_GRABBER, -1))) {
+ if ((retval = video_register_device(dev->vdev, VFL_TYPE_GRABBER,
+ video_nr[dev->devno]))) {
em28xx_errdev("unable to register video device (error=%i).\n",
retval);
up(&dev->lock);
list_del(&dev->devlist);
video_device_release(dev->vdev);
kfree(dev);
+ em28xx_devused&=~(1<<dev->devno);
return -ENODEV;
}
+
+ if (video_register_device(dev->vbi_dev, VFL_TYPE_VBI,
+ vbi_nr[dev->devno]) < 0) {
+ printk("unable to register vbi device\n");
+ up(&dev->lock);
+ list_del(&dev->devlist);
+ video_device_release(dev->vbi_dev);
+ video_device_release(dev->vdev);
+ kfree(dev);
+ em28xx_devused&=~(1<<dev->devno);
+ return -ENODEV;
+ } else {
+ printk("registered VBI\n");
+ }
+
if (dev->has_msp34xx) {
/* Send a reset to other chips via gpio */
em28xx_write_regs_req(dev, 0x00, 0x08, "\xf7", 1);
@@ -1805,8 +1898,9 @@ static int em28xx_init_dev(struct em28xx
up(&dev->lock);
- em28xx_info("V4L2 device registered as /dev/video%d\n",
- dev->vdev->minor);
+ em28xx_info("V4L2 device registered as /dev/video%d and /dev/vbi%d\n",
+ dev->vdev->minor-MINOR_VFL_TYPE_GRABBER_MIN,
+ dev->vbi_dev->minor-MINOR_VFL_TYPE_VBI_MIN);
return 0;
}
@@ -1828,6 +1922,9 @@ static int em28xx_usb_probe(struct usb_i
udev = usb_get_dev(interface_to_usbdev(interface));
ifnum = interface->altsetting[0].desc.bInterfaceNumber;
+ /* Check to see next free device and mark as used */
+ nr=find_first_zero_bit(&em28xx_devused,EM28XX_MAXBOARDS);
+ em28xx_devused|=1<<nr;
/* Don't register audio interfaces */
if (interface->altsetting[0].desc.bInterfaceClass == USB_CLASS_AUDIO) {
@@ -1835,6 +1932,8 @@ static int em28xx_usb_probe(struct usb_i
udev->descriptor.idVendor,udev->descriptor.idProduct,
ifnum,
interface->altsetting[0].desc.bInterfaceClass);
+
+ em28xx_devused&=~(1<<nr);
return -ENODEV;
}
@@ -1849,18 +1948,20 @@ static int em28xx_usb_probe(struct usb_i
if ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) !=
USB_ENDPOINT_XFER_ISOC) {
em28xx_err(DRIVER_NAME " probing error: endpoint is non-ISO endpoint!\n");
+ em28xx_devused&=~(1<<nr);
return -ENODEV;
}
if ((endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
em28xx_err(DRIVER_NAME " probing error: endpoint is ISO OUT endpoint!\n");
+ em28xx_devused&=~(1<<nr);
return -ENODEV;
}
model=id->driver_info;
- nr=interface->minor;
- if (nr>EM28XX_MAXBOARDS) {
+ if (nr > EM28XX_MAXBOARDS) {
printk (DRIVER_NAME ": Supports only %i em28xx boards.\n",EM28XX_MAXBOARDS);
+ em28xx_devused&=~(1<<nr);
return -ENOMEM;
}
@@ -1868,19 +1969,24 @@ static int em28xx_usb_probe(struct usb_i
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
if (dev == NULL) {
em28xx_err(DRIVER_NAME ": out of memory!\n");
+ em28xx_devused&=~(1<<nr);
return -ENOMEM;
}
+ snprintf(dev->name, 29, "em28xx #%d", nr);
+ dev->devno=nr;
+
/* compute alternate max packet sizes */
uif = udev->actconfig->interface[0];
dev->num_alt=uif->num_altsetting;
- printk(DRIVER_NAME ": Alternate settings: %i\n",dev->num_alt);
+ em28xx_info("Alternate settings: %i\n",dev->num_alt);
// dev->alt_max_pkt_size = kmalloc(sizeof(*dev->alt_max_pkt_size)*
dev->alt_max_pkt_size = kmalloc(32*
dev->num_alt,GFP_KERNEL);
if (dev->alt_max_pkt_size == NULL) {
- em28xx_err(DRIVER_NAME ": out of memory!\n");
+ em28xx_errdev("out of memory!\n");
+ em28xx_devused&=~(1<<nr);
return -ENOMEM;
}
@@ -1889,27 +1995,26 @@ static int em28xx_usb_probe(struct usb_i
wMaxPacketSize);
dev->alt_max_pkt_size[i] =
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
- printk(DRIVER_NAME ": Alternate setting %i, max size= %i\n",i,
+ em28xx_info("Alternate setting %i, max size= %i\n",i,
dev->alt_max_pkt_size[i]);
}
- snprintf(dev->name, 29, "em28xx #%d", nr);
-
if ((card[nr]>=0)&&(card[nr]<em28xx_bcount))
model=card[nr];
if ((model==EM2800_BOARD_UNKNOWN)||(model==EM2820_BOARD_UNKNOWN)) {
- printk( "%s: Your board has no eeprom inside it and thus can't\n"
+ em28xx_errdev( "Your board has no eeprom inside it and thus can't\n"
"%s: be autodetected. Please pass card=<n> insmod option to\n"
"%s: workaround that. Redirect complaints to the vendor of\n"
- "%s: the TV card. Best regards,\n"
+ "%s: the TV card. Generic type will be used."
+ "%s: Best regards,\n"
"%s: -- tux\n",
dev->name,dev->name,dev->name,dev->name,dev->name);
- printk("%s: Here is a list of valid choices for the card=<n> insmod option:\n",
+ em28xx_errdev("%s: Here is a list of valid choices for the card=<n> insmod option:\n",
dev->name);
for (i = 0; i < em28xx_bcount; i++) {
- printk("%s: card=%d -> %s\n",
- dev->name, i, em28xx_boards[i].name);
+ em28xx_errdev(" card=%d -> %s\n", i,
+ em28xx_boards[i].name);
}
}
@@ -1935,12 +2040,9 @@ static void em28xx_usb_disconnect(struct
struct em28xx *dev = usb_get_intfdata(interface);
usb_set_intfdata(interface, NULL);
-/*FIXME: IR should be disconnected */
-
if (!dev)
return;
-
down_write(&em28xx_disconnect);
down(&dev->lock);
@@ -1952,7 +2054,9 @@ static void em28xx_usb_disconnect(struct
if (dev->users) {
em28xx_warn
("device /dev/video%d is open! Deregistration and memory "
- "deallocation are deferred on close.\n", dev->vdev->minor);
+ "deallocation are deferred on close.\n",
+ dev->vdev->minor-MINOR_VFL_TYPE_GRABBER_MIN);
+
dev->state |= DEV_MISCONFIGURED;
em28xx_uninit_isoc(dev);
dev->state |= DEV_DISCONNECTED;
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h
index 33de9d8..119fdbe 100644
--- a/drivers/media/video/em28xx/em28xx.h
+++ b/drivers/media/video/em28xx/em28xx.h
@@ -209,6 +209,7 @@ struct em28xx {
/* generic device properties */
char name[30]; /* name (including minor) of the device */
int model; /* index in the device_data struct */
+ int devno; /* marks the number of this device */
unsigned int is_em2800;
int video_inputs; /* number of video inputs */
struct list_head devlist;
next prev parent reply other threads:[~2006-03-20 15:17 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-20 15:08 [PATCH 000/141] V4L/DVB updates part 1 mchehab
2006-03-20 15:08 ` [PATCH 003/141] V4L/DVB (3393): Move all IR keymaps to ir-common module mchehab
2006-03-20 15:08 ` [PATCH 001/141] V4L/DVB (3392): Add PCI ID for DigitalNow DVB-T Dual, rebranded DViCO FusionHDTV DVB-T Dual mchehab
2006-03-20 15:08 ` [PATCH 006/141] V4L/DVB (3403): Add probe check for the tda9840 mchehab
2006-03-20 15:08 ` [PATCH 009/141] V4L/DVB (3406): Added credits for em28xx-video.c mchehab
2006-03-20 15:08 ` [PATCH 005/141] V4L/DVB (3402): Fix handling of VIDIOC_G_TUNER audmode in msp3400 mchehab
2006-03-20 15:08 ` [PATCH 011/141] V4L/DVB (3408): Included new sliced VBI types to videodev2.h and tvp5150 mchehab
2006-03-20 15:08 ` [PATCH 008/141] V4L/DVB (3405): Fixes tvp5150a/am1 detection mchehab
2006-03-20 15:08 ` [PATCH 010/141] V4L/DVB (3407): added some code for VBI processing and cleanup debug dump mchehab
2006-03-20 15:08 ` [PATCH 007/141] V4L/DVB: VIDEO_CX88_ALSA must select SND_PCM mchehab
2006-03-20 15:08 ` [PATCH 013/141] V4L/DVB (3410): Implemented sliced VBI set on VIDIOC_S_FMT mchehab
2006-03-20 15:08 ` [PATCH 017/141] V4L/DVB (3416): Recognise Hauppauge card #34519 mchehab
2006-03-20 15:08 ` [PATCH 015/141] V4L/DVB (3413): Kill nxt2002 in favor of the nxt200x module mchehab
2006-03-20 15:08 ` [PATCH 014/141] V4L/DVB (3411): group dvb-bt8xx Subsystem ID's together, in order mchehab
2006-03-20 15:08 ` [PATCH 016/141] V4L/DVB (3414): rename dvb_pll_tbmv30111in to dvb_pll_samsung_tbmv mchehab
2006-03-20 15:08 ` [PATCH 020/141] V4L/DVB (3419): added some VBI macros and moved minor definitions to header file mchehab
2006-03-20 15:08 ` mchehab [this message]
2006-03-20 15:08 ` [PATCH 019/141] V4L/DVB (3418): Cause tda9887 to use I2C_DRIVERID_TDA9887 mchehab
2006-03-20 15:08 ` [PATCH 021/141] V4L/DVB (3420): Added iocls to configure VBI on tvp5150 mchehab
2006-03-20 15:08 ` [PATCH 023/141] V4L/DVB (3422): Implemented VIDIOC_G_FMT/S_FMT for sliced VBI mchehab
2006-03-20 15:08 ` [PATCH 018/141] V4L/DVB (3417): make VP-3054 Secondary I2C Bus Support a Kconfig option mchehab
2006-03-20 15:08 ` [PATCH 026/141] V4L/DVB (3428): drivers/media/dvb/ possible cleanups mchehab
2006-03-20 15:08 ` [PATCH 029/141] V4L/DVB (3431): fixed spelling error, exectuted --> executed mchehab
2006-03-20 15:08 ` [PATCH 025/141] V4L/DVB (3427): audmode and rxsubchans fixes (VIDIOC_G/S_TUNER) mchehab
2006-03-20 15:08 ` [PATCH 028/141] V4L/DVB (3430): Add new internal VIDIOC_INT commands mchehab
2006-03-20 15:08 ` [PATCH 024/141] V4L/DVB (3423): CodingStyle fixes mchehab
2006-03-20 15:08 ` [PATCH 027/141] V4L/DVB (3429): Missing break statement on tuner-core mchehab
2006-03-20 15:08 ` [PATCH 035/141] V4L/DVB (3439): removed duplicated tuner_ranges mchehab
2006-03-20 15:08 ` [PATCH 030/141] V4L/DVB (3432): Hauppauge HVR 900 Composite support mchehab
2006-03-20 15:08 ` [PATCH 033/141] V4L/DVB (3435): rename cb variable names in tuner structures for global consistency mchehab
2006-03-20 15:08 ` [PATCH 031/141] V4L/DVB (3433): Fix printk type warning mchehab
2006-03-20 15:08 ` [PATCH 032/141] V4L/DVB (3434): changed comment in tuner-core.c mchehab
2006-03-20 15:08 ` [PATCH 034/141] V4L/DVB (3436): move config byte from tuner_params to tuner_range struct mchehab
2006-03-20 15:08 ` [PATCH 036/141] V4L/DVB (3439a): media video stradis memory fix mchehab
2006-03-20 15:08 ` [PATCH 040/141] V4L/DVB (3266): Fix NICAM buzz on analog sound mchehab
2006-03-20 15:08 ` [PATCH 037/141] V4L/DVB (3442): Allow tristate build for cx88-vp3054-i2c mchehab
2006-03-20 15:08 ` [PATCH 038/141] V4L/DVB (3453a): Alters MAINTAINERS file to point to newer v4l-dvb email mchehab
2006-03-20 15:08 ` [PATCH 041/141] V4L/DVB (3267): Add support for the Avermedia 777 DVB-T card mchehab
2006-03-20 15:08 ` [PATCH 039/141] V4L/DVB (3265): Add count to tunertype struct mchehab
2006-03-20 15:08 ` [PATCH 042/141] V4L/DVB (3268): Move video std detection to top of set_tv_freq function mchehab
2006-03-20 15:08 ` [PATCH 043/141] V4L/DVB (3269): Allow multiple tuner params in each tuner definition mchehab
2006-03-20 15:08 ` [PATCH 047/141] V4L/DVB (3276): Added terratec hybrid xs and kworld 2800rf support mchehab
2006-03-20 15:08 ` [PATCH 045/141] V4L/DVB (3271): Update tuner comments mchehab
2006-03-20 15:08 ` [PATCH 046/141] V4L/DVB (3275): Allow SAA7134 to fall back to AM sound when there is NICAM-L mchehab
2006-03-20 15:08 ` [PATCH 044/141] V4L/DVB (3270): Tuner_dbg will show tuner param and range selected mchehab
2006-03-20 15:08 ` [PATCH 050/141] V4L/DVB (3280): Changed description of KWorld PVR TV 2800RF mchehab
2006-03-20 15:08 ` [PATCH 052/141] V4L/DVB (3294): Fix [Bug 5895] to correct snd_87x autodetect mchehab
2006-03-20 15:08 ` [PATCH 051/141] V4L/DVB (3281): Added signal detection support to tvp5150 mchehab
2006-03-20 15:08 ` [PATCH 049/141] V4L/DVB (3278): Show debug for tuners trying to use unsupported video standards mchehab
2006-03-20 15:08 ` [PATCH 048/141] V4L/DVB (3277): Use default tuner_params if desired_type not available mchehab
2006-03-20 15:08 ` [PATCH 053/141] V4L/DVB (3297): Add IR support to KWorld DVB-T (cx22702-based) mchehab
2006-03-20 15:08 ` [PATCH 057/141] V4L/DVB (3303): TDA8290 update mchehab
2006-03-20 15:08 ` [PATCH 059/141] V4L/DVB (3305): Added support for the ADS Instant TV DUO Cardbus PTV331 mchehab
2006-03-20 15:08 ` [PATCH 056/141] V4L/DVB (3302): Added support for the LifeView FlyDVB-T LR301 card mchehab
2006-03-20 15:08 ` [PATCH 058/141] V4L/DVB (3304): TDA10046 Driver update mchehab
2006-03-20 15:08 ` [PATCH 055/141] V4L/DVB (3300): Add standard for South Korean NTSC-M using A2 audio mchehab
2006-03-20 15:08 ` [PATCH 054/141] V4L/DVB (3299): Kconfig: DVB_USB_CXUSB depends on DVB_LGDT330X and DVB_MT352 mchehab
2006-03-20 15:08 ` [PATCH 060/141] V4L/DVB (3306): Fixed i2c return value, conversion mdelay to msleep mchehab
2006-03-20 15:08 ` [PATCH 062/141] V4L/DVB (3308): Use parallel transport for FusionHDTV Dual Digital USB mchehab
2006-03-20 15:08 ` [PATCH 061/141] V4L/DVB (3307): Support for Galaxis DVB-S rev1.3 mchehab
2006-03-20 15:08 ` [PATCH 063/141] V4L/DVB (3310): Use MT352 parallel transport function for all Bluebird FusionHDTV DVB-T boxes mchehab
2006-03-20 15:08 ` [PATCH 064/141] V4L/DVB (3312): FIX: Multiple usage of VP7045-based devices mchehab
2006-03-20 15:08 ` [PATCH 065/141] V4L/DVB (3313): FIX: Check if FW was downloaded or not + new firmware file mchehab
2006-03-20 15:08 ` [PATCH 069/141] V4L/DVB (3318a): Makes Some symbols static mchehab
2006-03-20 15:08 ` [PATCH 071/141] V4L/DVB (3318c): fix saa7146 kobject register failure mchehab
2006-03-20 15:08 ` [PATCH 068/141] V4L/DVB (3316): Add initial support for KWorld HardwareMpegTV XPert mchehab
2006-03-20 15:08 ` [PATCH 066/141] V4L/DVB (3314): Fixed em28xx based system lockup mchehab
2006-03-20 15:08 ` [PATCH 067/141] V4L/DVB (3315): Added support for the Tevion DVB-T 220RF card mchehab
2006-03-20 15:08 ` [PATCH 074/141] V4L/DVB (3325): Disabled debug on by default in tvp5150 mchehab
2006-03-20 15:08 ` [PATCH 077/141] V4L/DVB (3300b): .gitignore should also ignore StGit generated dirs mchehab
2006-03-21 12:20 ` Andrew Morton
2006-03-20 15:08 ` [PATCH 075/141] V4L/DVB (3326): Adding support for Terratec Prodigy XS mchehab
2006-03-20 15:08 ` [PATCH 072/141] V4L/DVB (3318e): DVB: remove the at76c651/tda80xx frontends mchehab
2006-03-20 15:08 ` [PATCH 073/141] V4L/DVB (3324): Fix Samsung tuner frequency ranges mchehab
2006-03-20 15:08 ` [PATCH 076/141] V4L/DVB (3300a): Removing personal email from DVB maintainers mchehab
2006-03-20 15:08 ` [PATCH 081/141] V4L/DVB (3332): XC3028 code marked with an special define option mchehab
2006-03-20 15:08 ` [PATCH 078/141] V4L/DVB (3291): Added support for xc3028 analogue tuner (Hauppauge HVR900, Terratec Hybrid XS) mchehab
2006-03-20 15:08 ` [PATCH 079/141] V4L/DVB (3292): Fixed xc3028 firmware extractor, added terratec fw support mchehab
2006-03-20 15:08 ` [PATCH 080/141] V4L/DVB (3293): Fixed amux hauppauge hvr900/terratec hybrid xs mchehab
2006-03-20 15:08 ` [PATCH 082/141] V4L/DVB (3334): Added ET61X251 fourcc type mchehab
2006-03-20 15:08 ` [PATCH 083/141] V4L/DVB (3335): Fix in-kernel build mchehab
2006-03-20 15:08 ` [PATCH 089/141] V4L/DVB (3344): KWorld HardwareMpegTV XPert must set gpio2 mchehab
2006-03-20 15:08 ` [PATCH 086/141] V4L/DVB (3340): Make a struct static mchehab
2006-03-20 15:08 ` [PATCH 085/141] V4L/DVB (3337): Drivers/media/dvb/frontends/mt312.c: cleanups mchehab
2006-03-20 15:08 ` [PATCH 088/141] V4L/DVB (3343): KWorld HardwareMpegTV XPert: Add radio support mchehab
2006-03-20 15:08 ` [PATCH 084/141] V4L/DVB (3336): Bt8xx documentation authors fix mchehab
2006-03-20 15:08 ` [PATCH 087/141] V4L/DVB (3341): Upstream sync - make 2 structs static mchehab
2006-03-20 15:08 ` [PATCH 095/141] V4L/DVB (3354): Fix maximum for the saturation and contrast controls mchehab
2006-03-20 15:08 ` [PATCH 094/141] V4L/DVB (3352): Cxusb: fix lgdt3303 naming mchehab
2006-03-20 15:08 ` [PATCH 093/141] V4L/DVB (3349): Remote control codes for BTTV_BOARD_CONTVFMI mchehab
2006-03-20 15:08 ` [PATCH 090/141] V4L/DVB (3346): Add saa713x card: ELSA EX-VISION 700TV (saa7130) mchehab
2006-03-20 15:08 ` [PATCH 092/141] V4L/DVB (3348): Fixed saa7134 ALSA initialization with multiple cards mchehab
2006-03-20 15:08 ` [PATCH 091/141] V4L/DVB (3347): Pinnacle PCTV 40i: add filtered Composite2 input mchehab
2006-03-20 15:08 ` [PATCH 097/141] V4L/DVB (3362): KWorld ATSC110: implement set_pll_input mchehab
2006-03-20 15:08 ` [PATCH 100/141] V4L/DVB (3366): Kworld ATSC110: initialize the tuner for analog mode on module load mchehab
2006-03-20 15:08 ` [PATCH 098/141] V4L/DVB (3363): Kworld ATSC110: enable composite and svideo inputs mchehab
2006-03-20 15:08 ` [PATCH 096/141] V4L/DVB (3361): Add support for Kworld ATSC110 mchehab
2006-03-20 15:08 ` [PATCH 099/141] V4L/DVB (3365): Kworld ATSC110: cleanups mchehab
2006-03-20 15:08 ` [PATCH 101/141] V4L/DVB (3368): KWorld HardwareMpegTV XPert: update comments mchehab
2006-03-20 15:08 ` [PATCH 103/141] V4L/DVB (3371): Add debug to ioctl arguments mchehab
2006-03-20 15:08 ` [PATCH 106/141] V4L/DVB (3374): Adds debuging v4l2_memory enum mchehab
2006-03-20 15:08 ` [PATCH 107/141] V4L/DVB (3375): Add AUDIO_GET_PTS and VIDEO_GET_PTS ioctls mchehab
2006-03-20 15:08 ` [PATCH 105/141] V4L/DVB (3373): Debug messages for ioctl improved mchehab
2006-03-20 15:08 ` [PATCH 102/141] V4L/DVB (3369): LifeView FlyDVB-T Duo: add support for remote control mchehab
2006-03-20 15:08 ` [PATCH 104/141] V4L/DVB (3372): Fix a small bug when constructing fps and line numbers mchehab
2006-03-20 15:08 ` [PATCH 109/141] V4L/DVB (3377): Support for Satelco EasyWatch DVB-S light mchehab
2006-03-20 15:08 ` [PATCH 111/141] V4L/DVB (3380): TUV1236d: declare buffer as static const mchehab
2006-03-20 15:08 ` [PATCH 110/141] V4L/DVB (3378): Restore power on defaults of tda9887 after tda8290 probe mchehab
2006-03-20 15:08 ` [PATCH 112/141] V4L/DVB (3382): Fix stv0297 for qam128 on tt c1500 (saa7146) mchehab
2006-03-20 15:08 ` [PATCH 114/141] V4L/DVB (3386): Dvb-core: remove dead code mchehab
2006-03-20 15:08 ` [PATCH 116/141] V4L/DVB (3389): Fix broken IF-OUT Relay handling mchehab
2006-03-20 15:08 ` [PATCH 118/141] V4L/DVB (3391): Documentation update mchehab
2006-03-20 15:08 ` [PATCH 113/141] V4L/DVB (3385): Dvb: fix __init/__exit section references in av7110 driver mchehab
2006-03-20 15:08 ` [PATCH 117/141] V4L/DVB (3390): Fix module parameters mchehab
2006-03-20 15:56 ` Duncan Sands
2006-03-20 19:10 ` Edgar Toernig
2006-03-21 11:18 ` Duncan Sands
2006-03-20 15:08 ` [PATCH 115/141] V4L/DVB (3388): Ignore DiSEqC messages > 6 and < 3 mchehab
2006-03-20 15:08 ` [PATCH 120/141] V4L/DVB (3392a): XC3028 code removed from -git versions mchehab
2006-03-20 15:08 ` [PATCH 122/141] V4L/DVB (3394): Bttv: correct bttv_risc_packed buffer size mchehab
2006-03-20 15:08 ` [PATCH 124/141] V4L/DVB (3396): Add DVB-T support for the LifeView DVB Trio PCI card mchehab
2006-03-20 15:08 ` [PATCH 123/141] V4L/DVB (3395): Fixed Pinnacle 300i DVB-T support mchehab
2006-03-20 15:08 ` [PATCH 121/141] V4L/DVB (3393): Cx88: reduce excessive logging mchehab
2006-03-20 15:08 ` [PATCH 119/141] V4L/DVB (3392): Do a RESYNC for all cards mchehab
2006-03-20 15:08 ` [PATCH 128/141] V4L/DVB (3399a): cpia2/cpia2_v4l.c cleanups mchehab
2006-03-20 15:08 ` [PATCH 131/141] V4L/DVB (3403): Workaround to fix initialization for Nexus CA mchehab
2006-03-20 15:08 ` [PATCH 125/141] V4L/DVB (3398): ELSA EX-VISION 700TV: fix incorrect PCI subsystem ID mchehab
2006-03-20 15:08 ` [PATCH 126/141] V4L/DVB (3399): ELSA EX-VISION 500TV: " mchehab
2006-03-20 15:08 ` [PATCH 130/141] V4L/DVB (3401): Coding style fixes in saa7134-dvb.c mchehab
2006-03-20 15:08 ` [PATCH 129/141] V4L/DVB (3400): Fixes for Lifeview Trio non fatal bugs mchehab
2006-03-20 15:08 ` [PATCH 127/141] V4L/DVB (3197a): IR keymaps are exported by the ir-common module now mchehab
2006-03-20 15:08 ` [PATCH 132/141] V4L/DVB (3404): Refactored LNBP21 and BSBE1 support mchehab
2006-03-20 15:08 ` [PATCH 134/141] V4L/DVB (3406): Use refactored LNBP21 and BSBE1 code mchehab
2006-03-20 15:08 ` [PATCH 137/141] V4L/DVB (3410): Move DViCO hybrid initialisation data from stack mchehab
2006-03-20 15:08 ` [PATCH 135/141] V4L/DVB (3408): DViCO FusionHDTV DVB-T Hybrid and ZL10353-based FusionHDTV DVB-T Plus support mchehab
2006-03-20 15:08 ` [PATCH 133/141] V4L/DVB (3405): TechnoTrend S-1500 card handling moved from budget.c to budget-ci.c mchehab
2006-03-20 15:08 ` [PATCH 136/141] V4L/DVB (3409): Kconfig: fix in-kernel build for cx88-dvb: zl10353 frontend mchehab
2006-03-20 15:09 ` [PATCH 141/141] V4L/DVB (3415): Msp3400-kthreads.c: make 3 functions static mchehab
2006-03-20 15:09 ` [PATCH 140/141] V4L/DVB (3414): Saa7134: document that there's also a 220RF from KWorld mchehab
2006-03-20 15:09 ` [PATCH 139/141] V4L/DVB (3413): Typos grab bag of the month mchehab
2006-03-20 15:09 ` [PATCH 138/141] V4L/DVB (3411): FE6600 is a Thomson tuner mchehab
2006-03-20 15:49 ` [PATCH 000/141] V4L/DVB updates part 1 Kyle McMartin
2006-03-20 15:50 ` Arjan van de Ven
2006-03-20 17:51 ` Valdis.Kletnieks
2006-03-20 17:55 ` Mauro Carvalho Chehab
2006-03-21 15:47 ` Linus Torvalds
2006-03-21 16:26 ` Linus Torvalds
2006-03-21 17:43 ` Mauro Carvalho Chehab
2006-03-21 18:03 ` Linus Torvalds
2006-03-21 18:24 ` Mauro Carvalho Chehab
2006-03-21 18:42 ` Linus Torvalds
2006-03-21 19:15 ` Mauro Carvalho Chehab
2006-03-21 19:32 ` Linus Torvalds
2006-03-21 23:53 ` Daniel Barkalow
2006-03-22 0:33 ` Linus Torvalds
2006-03-22 21:32 ` Junio C Hamano
2006-03-23 3:31 ` Linus Torvalds
2006-03-22 12:05 ` Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060320150840.PS695488000022@infradead.org \
--to=mchehab@infradead.org \
--cc=linux-dvb-maintainer@linuxtv.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox