V4L/DVB (12586): Update ALSA capture controls according to selected source.
[safe/jmp/linux-2.6] / drivers / media / video / meye.c
index 102a5b9..d0765be 100644 (file)
@@ -117,7 +117,7 @@ static int ptable_alloc(void)
        memset(meye.mchip_ptable, 0, sizeof(meye.mchip_ptable));
 
        /* give only 32 bit DMA addresses */
-       if (dma_set_mask(&meye.mchip_dev->dev, DMA_32BIT_MASK))
+       if (dma_set_mask(&meye.mchip_dev->dev, DMA_BIT_MASK(32)))
                return -1;
 
        meye.mchip_ptable_toc = dma_alloc_coherent(&meye.mchip_dev->dev,
@@ -841,23 +841,18 @@ again:
 /* video4linux integration                                                  */
 /****************************************************************************/
 
-static int meye_open(struct inode *inode, struct file *file)
+static int meye_open(struct file *file)
 {
-       int i, err;
+       int i;
 
-       lock_kernel();
-       err = video_exclusive_open(inode, file);
-       if (err < 0) {
-               unlock_kernel();
-               return err;
-       }
+       if (test_and_set_bit(0, &meye.in_use))
+               return -EBUSY;
 
        mchip_hic_stop();
 
        if (mchip_dma_alloc()) {
                printk(KERN_ERR "meye: mchip framebuffer allocation failed\n");
-               video_exclusive_release(inode, file);
-               unlock_kernel();
+               clear_bit(0, &meye.in_use);
                return -ENOBUFS;
        }
 
@@ -865,15 +860,14 @@ static int meye_open(struct inode *inode, struct file *file)
                meye.grab_buffer[i].state = MEYE_BUF_UNUSED;
        kfifo_reset(meye.grabq);
        kfifo_reset(meye.doneq);
-       unlock_kernel();
        return 0;
 }
 
-static int meye_release(struct inode *inode, struct file *file)
+static int meye_release(struct file *file)
 {
        mchip_hic_stop();
        mchip_dma_free();
-       video_exclusive_release(inode, file);
+       clear_bit(0, &meye.in_use);
        return 0;
 }
 
@@ -1023,7 +1017,6 @@ static int meyeioc_stilljcapt(int *len)
 static int vidioc_querycap(struct file *file, void *fh,
                                struct v4l2_capability *cap)
 {
-       memset(cap, 0, sizeof(*cap));
        strcpy(cap->driver, "meye");
        strcpy(cap->card, "meye");
        sprintf(cap->bus_info, "PCI:%s", pci_name(meye.mchip_dev));
@@ -1042,8 +1035,6 @@ static int vidioc_enum_input(struct file *file, void *fh, struct v4l2_input *i)
        if (i->index != 0)
                return -EINVAL;
 
-       memset(i, 0, sizeof(*i));
-       i->index = 0;
        strcpy(i->name, "Camera");
        i->type = V4L2_INPUT_TYPE_CAMERA;
 
@@ -1265,22 +1256,13 @@ static int vidioc_enum_fmt_vid_cap(struct file *file, void *fh,
        if (f->index > 1)
                return -EINVAL;
 
-       if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
        if (f->index == 0) {
                /* standard YUV 422 capture */
-               memset(f, 0, sizeof(*f));
-               f->index = 0;
-               f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
                f->flags = 0;
                strcpy(f->description, "YUV422");
                f->pixelformat = V4L2_PIX_FMT_YUYV;
        } else {
                /* compressed MJPEG capture */
-               memset(f, 0, sizeof(*f));
-               f->index = 1;
-               f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
                f->flags = V4L2_FMT_FLAG_COMPRESSED;
                strcpy(f->description, "MJPEG");
                f->pixelformat = V4L2_PIX_FMT_MJPEG;
@@ -1292,9 +1274,6 @@ static int vidioc_enum_fmt_vid_cap(struct file *file, void *fh,
 static int vidioc_try_fmt_vid_cap(struct file *file, void *fh,
                                struct v4l2_format *f)
 {
-       if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
        if (f->fmt.pix.pixelformat != V4L2_PIX_FMT_YUYV &&
            f->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG)
                return -EINVAL;
@@ -1325,12 +1304,6 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *fh,
 static int vidioc_g_fmt_vid_cap(struct file *file, void *fh,
                                    struct v4l2_format *f)
 {
-       if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
-       memset(&f->fmt.pix, 0, sizeof(struct v4l2_pix_format));
-       f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-
        switch (meye.mchip_mode) {
        case MCHIP_HIC_MODE_CONT_OUT:
        default:
@@ -1347,8 +1320,6 @@ static int vidioc_g_fmt_vid_cap(struct file *file, void *fh,
        f->fmt.pix.bytesperline = f->fmt.pix.width * 2;
        f->fmt.pix.sizeimage = f->fmt.pix.height *
                               f->fmt.pix.bytesperline;
-       f->fmt.pix.colorspace = 0;
-       f->fmt.pix.priv = 0;
 
        return 0;
 }
@@ -1356,9 +1327,6 @@ static int vidioc_g_fmt_vid_cap(struct file *file, void *fh,
 static int vidioc_s_fmt_vid_cap(struct file *file, void *fh,
                                    struct v4l2_format *f)
 {
-       if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
        if (f->fmt.pix.pixelformat != V4L2_PIX_FMT_YUYV &&
            f->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG)
                return -EINVAL;
@@ -1404,9 +1372,6 @@ static int vidioc_reqbufs(struct file *file, void *fh,
 {
        int i;
 
-       if (req->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
        if (req->memory != V4L2_MEMORY_MMAP)
                return -EINVAL;
 
@@ -1447,15 +1412,11 @@ static int vidioc_reqbufs(struct file *file, void *fh,
 
 static int vidioc_querybuf(struct file *file, void *fh, struct v4l2_buffer *buf)
 {
-       int index = buf->index;
+       unsigned int index = buf->index;
 
-       if (index < 0 || index >= gbuffers)
+       if (index >= gbuffers)
                return -EINVAL;
 
-       memset(buf, 0, sizeof(*buf));
-
-       buf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-       buf->index = index;
        buf->bytesused = meye.grab_buffer[index].size;
        buf->flags = V4L2_BUF_FLAG_MAPPED;
 
@@ -1477,13 +1438,10 @@ static int vidioc_querybuf(struct file *file, void *fh, struct v4l2_buffer *buf)
 
 static int vidioc_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
 {
-       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
        if (buf->memory != V4L2_MEMORY_MMAP)
                return -EINVAL;
 
-       if (buf->index < 0 || buf->index >= gbuffers)
+       if (buf->index >= gbuffers)
                return -EINVAL;
 
        if (meye.grab_buffer[buf->index].state != MEYE_BUF_UNUSED)
@@ -1503,9 +1461,6 @@ static int vidioc_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
 {
        int reqnr;
 
-       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
-
        if (buf->memory != V4L2_MEMORY_MMAP)
                return -EINVAL;
 
@@ -1583,7 +1538,7 @@ static int vidioc_streamoff(struct file *file, void *fh, enum v4l2_buf_type i)
        return 0;
 }
 
-static int vidioc_default(struct file *file, void *fh, int cmd, void *arg)
+static long vidioc_default(struct file *file, void *fh, int cmd, void *arg)
 {
        switch (cmd) {
        case MEYEIOC_G_PARAMS:
@@ -1690,17 +1645,13 @@ static int meye_mmap(struct file *file, struct vm_area_struct *vma)
        return 0;
 }
 
-static const struct file_operations meye_fops = {
+static const struct v4l2_file_operations meye_fops = {
        .owner          = THIS_MODULE,
        .open           = meye_open,
        .release        = meye_release,
        .mmap           = meye_mmap,
        .ioctl          = video_ioctl2,
-#ifdef CONFIG_COMPAT
-       .compat_ioctl   = v4l_compat_ioctl32,
-#endif
        .poll           = meye_poll,
-       .llseek         = no_llseek,
 };
 
 static const struct v4l2_ioctl_ops meye_ioctl_ops = {
@@ -1964,8 +1915,7 @@ static void __devexit meye_remove(struct pci_dev *pcidev)
 }
 
 static struct pci_device_id meye_pci_tbl[] = {
-       { PCI_VENDOR_ID_KAWASAKI, PCI_DEVICE_ID_MCHIP_KL5A72002,
-         PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+       { PCI_VDEVICE(KAWASAKI, PCI_DEVICE_ID_MCHIP_KL5A72002), 0 },
        { }
 };