]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/media/video/pwc/pwc-v4l.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / media / video / pwc / pwc-v4l.c
index 7061a03f5cf1de8a2df38d8632ef6c57084c4cd6..8ca4d22b4384f0f496397f9d6307dd01d2ff9a59 100644 (file)
@@ -309,7 +309,10 @@ static int pwc_vidioc_set_fmt(struct pwc_device *pdev, struct v4l2_format *f)
            pixelformat != V4L2_PIX_FMT_PWC2)
                return -EINVAL;
 
-       PWC_DEBUG_IOCTL("Try to change format to: width=%d height=%d fps=%d "
+       if (pdev->iso_init)
+               return -EBUSY;
+
+       PWC_DEBUG_IOCTL("Trying to set format to: width=%d height=%d fps=%d "
                        "compression=%d snapshot=%d format=%c%c%c%c\n",
                        f->fmt.pix.width, f->fmt.pix.height, fps,
                        compression, snapshot,
@@ -318,14 +321,14 @@ static int pwc_vidioc_set_fmt(struct pwc_device *pdev, struct v4l2_format *f)
                        (pixelformat>>16)&255,
                        (pixelformat>>24)&255);
 
-       ret = pwc_try_video_mode(pdev,
+       ret = pwc_set_video_mode(pdev,
                                 f->fmt.pix.width,
                                 f->fmt.pix.height,
                                 fps,
                                 compression,
                                 snapshot);
 
-       PWC_DEBUG_IOCTL("pwc_try_video_mode(), return=%d\n", ret);
+       PWC_DEBUG_IOCTL("pwc_set_video_mode(), return=%d\n", ret);
 
        if (ret)
                return ret;
@@ -359,23 +362,6 @@ long pwc_video_do_ioctl(struct file *file, unsigned int cmd, void *arg)
 
 
        switch (cmd) {
-#ifdef CONFIG_VIDEO_V4L1_COMPAT
-               /* mmap() functions */
-               case VIDIOCGMBUF:
-               {
-                       /* Tell the user program how much memory is needed for a mmap() */
-                       struct video_mbuf *vm = arg;
-                       int i;
-
-                       memset(vm, 0, sizeof(*vm));
-                       vm->size = pwc_mbufs * pdev->len_per_image;
-                       vm->frames = pwc_mbufs; /* double buffering should be enough for most applications */
-                       for (i = 0; i < pwc_mbufs; i++)
-                               vm->offsets[i] = i * pdev->len_per_image;
-                       break;
-               }
-#endif
-
                /* V4L2 Layer */
                case VIDIOC_QUERYCAP:
                {
@@ -882,9 +868,7 @@ long pwc_video_do_ioctl(struct file *file, unsigned int cmd, void *arg)
 
                case VIDIOC_STREAMON:
                {
-                       /* WARNING: pwc_try_video_mode() called pwc_isoc_init */
-                       pwc_isoc_init(pdev);
-                       return 0;
+                       return pwc_isoc_init(pdev);
                }
 
                case VIDIOC_STREAMOFF: