media: zoran: disable output
authorCorentin Labbe <clabbe@baylibre.com>
Fri, 25 Sep 2020 18:30:47 +0000 (20:30 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 1 Oct 2020 08:00:32 +0000 (10:00 +0200)
Zoran is picky about jpeg data it accepts. At least it seems to not support COM and APPn.
So until a way to filter data will be done, disable output.

Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/zoran/zoran_card.c
drivers/staging/media/zoran/zoran_driver.c

index fed368ba6fd1d631d9c27039b14f406e5de0b48a..dbdb1c4b051587670cab4d531c2a5eb3c0ca1c3e 100644 (file)
@@ -963,6 +963,8 @@ static int zr36057_init(struct zoran *zr)
        *zr->video_dev = zoran_template;
        zr->video_dev->v4l2_dev = &zr->v4l2_dev;
        zr->video_dev->lock = &zr->lock;
+       zr->video_dev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE;
+
        strscpy(zr->video_dev->name, ZR_DEVNAME(zr), sizeof(zr->video_dev->name));
        /*
         * It's not a mem2mem device, but you can both capture and output from one and the same
index e962fc6c1f9f82b47adc1fb9e57bc6876ea3b960..43f7c0c0287616aaa73f3a6495c30943a88ba2d9 100644 (file)
@@ -1082,8 +1082,7 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability
        strscpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card));
        strscpy(cap->driver, "zoran", sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", pci_name(zr->pci_dev));
-       cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
-                          V4L2_CAP_VIDEO_OUTPUT;
+       cap->device_caps = zr->video_dev->device_caps;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
 }
@@ -2221,6 +2220,11 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma)
        return res;
 }
 
+/*
+ * Output is disabled temporarily
+ * Zoran is picky about jpeg data it accepts. At least it seems to unsupport COM and APPn.
+ * So until a way to filter data will be done, disable output.
+ */
 static const struct v4l2_ioctl_ops zoran_ioctl_ops = {
        .vidioc_querycap                    = zoran_querycap,
        .vidioc_s_selection                 = zoran_s_selection,
@@ -2228,9 +2232,9 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = {
        .vidioc_enum_input                  = zoran_enum_input,
        .vidioc_g_input                     = zoran_g_input,
        .vidioc_s_input                     = zoran_s_input,
-       .vidioc_enum_output                 = zoran_enum_output,
+/*     .vidioc_enum_output                 = zoran_enum_output,
        .vidioc_g_output                    = zoran_g_output,
-       .vidioc_s_output                    = zoran_s_output,
+       .vidioc_s_output                    = zoran_s_output,*/
        .vidioc_g_fbuf                      = zoran_g_fbuf,
        .vidioc_s_fbuf                      = zoran_s_fbuf,
        .vidioc_g_std                       = zoran_g_std,
@@ -2244,13 +2248,13 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = {
        .vidioc_streamon                    = zoran_streamon,
        .vidioc_streamoff                   = zoran_streamoff,
        .vidioc_enum_fmt_vid_cap            = zoran_enum_fmt_vid_cap,
-       .vidioc_enum_fmt_vid_out            = zoran_enum_fmt_vid_out,
+/*     .vidioc_enum_fmt_vid_out            = zoran_enum_fmt_vid_out,*/
        .vidioc_g_fmt_vid_cap               = zoran_g_fmt_vid_cap,
-       .vidioc_g_fmt_vid_out               = zoran_g_fmt_vid_out,
+/*     .vidioc_g_fmt_vid_out               = zoran_g_fmt_vid_out,*/
        .vidioc_s_fmt_vid_cap               = zoran_s_fmt_vid_cap,
-       .vidioc_s_fmt_vid_out               = zoran_s_fmt_vid_out,
+/*     .vidioc_s_fmt_vid_out               = zoran_s_fmt_vid_out,*/
        .vidioc_try_fmt_vid_cap             = zoran_try_fmt_vid_cap,
-       .vidioc_try_fmt_vid_out             = zoran_try_fmt_vid_out,
+/*     .vidioc_try_fmt_vid_out             = zoran_try_fmt_vid_out,*/
        .vidioc_subscribe_event             = v4l2_ctrl_subscribe_event,
        .vidioc_unsubscribe_event           = v4l2_event_unsubscribe,
 };