Commit 954f340f authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] Set vfl_dir for all display or m2m drivers

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Acked-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: default avatarSakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 5c77879f
...@@ -222,6 +222,9 @@ static int ivtv_prep_dev(struct ivtv *itv, int type) ...@@ -222,6 +222,9 @@ static int ivtv_prep_dev(struct ivtv *itv, int type)
s->vdev->num = num; s->vdev->num = num;
s->vdev->v4l2_dev = &itv->v4l2_dev; s->vdev->v4l2_dev = &itv->v4l2_dev;
if (ivtv_stream_info[type].v4l2_caps &
(V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_SLICED_VBI_OUTPUT))
s->vdev->vfl_dir = VFL_DIR_TX;
s->vdev->fops = ivtv_stream_info[type].fops; s->vdev->fops = ivtv_stream_info[type].fops;
s->vdev->ctrl_handler = itv->v4l2_dev.ctrl_handler; s->vdev->ctrl_handler = itv->v4l2_dev.ctrl_handler;
s->vdev->release = video_device_release; s->vdev->release = video_device_release;
......
...@@ -1055,6 +1055,10 @@ zr36057_init (struct zoran *zr) ...@@ -1055,6 +1055,10 @@ zr36057_init (struct zoran *zr)
memcpy(zr->video_dev, &zoran_template, sizeof(zoran_template)); memcpy(zr->video_dev, &zoran_template, sizeof(zoran_template));
zr->video_dev->parent = &zr->pci_dev->dev; zr->video_dev->parent = &zr->pci_dev->dev;
strcpy(zr->video_dev->name, ZR_DEVNAME(zr)); strcpy(zr->video_dev->name, ZR_DEVNAME(zr));
/* It's not a mem2mem device, but you can both capture and output from
one and the same device. This should really be split up into two
device nodes, but that's a job for another day. */
zr->video_dev->vfl_dir = VFL_DIR_M2M;
err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]); err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]);
if (err < 0) if (err < 0)
goto exit_free; goto exit_free;
......
...@@ -1639,6 +1639,7 @@ static void coda_fw_callback(const struct firmware *fw, void *context) ...@@ -1639,6 +1639,7 @@ static void coda_fw_callback(const struct firmware *fw, void *context)
dev->vfd.release = video_device_release_empty, dev->vfd.release = video_device_release_empty,
dev->vfd.lock = &dev->dev_mutex; dev->vfd.lock = &dev->dev_mutex;
dev->vfd.v4l2_dev = &dev->v4l2_dev; dev->vfd.v4l2_dev = &dev->v4l2_dev;
dev->vfd.vfl_dir = VFL_DIR_M2M;
snprintf(dev->vfd.name, sizeof(dev->vfd.name), "%s", CODA_NAME); snprintf(dev->vfd.name, sizeof(dev->vfd.name), "%s", CODA_NAME);
video_set_drvdata(&dev->vfd, dev); video_set_drvdata(&dev->vfd, dev);
......
...@@ -1633,6 +1633,7 @@ static __devinit int init_vpbe_layer(int i, struct vpbe_display *disp_dev, ...@@ -1633,6 +1633,7 @@ static __devinit int init_vpbe_layer(int i, struct vpbe_display *disp_dev,
vbd->minor = -1; vbd->minor = -1;
vbd->v4l2_dev = &disp_dev->vpbe_dev->v4l2_dev; vbd->v4l2_dev = &disp_dev->vpbe_dev->v4l2_dev;
vbd->lock = &vpbe_display_layer->opslock; vbd->lock = &vpbe_display_layer->opslock;
vbd->vfl_dir = VFL_DIR_TX;
if (disp_dev->vpbe_dev->current_timings.timings_type & if (disp_dev->vpbe_dev->current_timings.timings_type &
VPBE_ENC_STD) { VPBE_ENC_STD) {
......
...@@ -1745,6 +1745,7 @@ static __init int vpif_probe(struct platform_device *pdev) ...@@ -1745,6 +1745,7 @@ static __init int vpif_probe(struct platform_device *pdev)
*vfd = vpif_video_template; *vfd = vpif_video_template;
vfd->v4l2_dev = &vpif_obj.v4l2_dev; vfd->v4l2_dev = &vpif_obj.v4l2_dev;
vfd->release = video_device_release; vfd->release = video_device_release;
vfd->vfl_dir = VFL_DIR_TX;
snprintf(vfd->name, sizeof(vfd->name), snprintf(vfd->name, sizeof(vfd->name),
"VPIF_Display_DRIVER_V%s", "VPIF_Display_DRIVER_V%s",
VPIF_DISPLAY_VERSION); VPIF_DISPLAY_VERSION);
......
...@@ -980,6 +980,7 @@ static struct video_device deinterlace_videodev = { ...@@ -980,6 +980,7 @@ static struct video_device deinterlace_videodev = {
.ioctl_ops = &deinterlace_ioctl_ops, .ioctl_ops = &deinterlace_ioctl_ops,
.minor = -1, .minor = -1,
.release = video_device_release, .release = video_device_release,
.vfl_dir = VFL_DIR_M2M,
}; };
static struct v4l2_m2m_ops m2m_ops = { static struct v4l2_m2m_ops m2m_ops = {
......
...@@ -999,6 +999,7 @@ static const struct v4l2_file_operations m2mtest_fops = { ...@@ -999,6 +999,7 @@ static const struct v4l2_file_operations m2mtest_fops = {
static struct video_device m2mtest_videodev = { static struct video_device m2mtest_videodev = {
.name = MEM2MEM_NAME, .name = MEM2MEM_NAME,
.vfl_dir = VFL_DIR_M2M,
.fops = &m2mtest_fops, .fops = &m2mtest_fops,
.ioctl_ops = &m2mtest_ioctl_ops, .ioctl_ops = &m2mtest_ioctl_ops,
.minor = -1, .minor = -1,
......
...@@ -877,6 +877,7 @@ static struct video_device emmaprp_videodev = { ...@@ -877,6 +877,7 @@ static struct video_device emmaprp_videodev = {
.ioctl_ops = &emmaprp_ioctl_ops, .ioctl_ops = &emmaprp_ioctl_ops,
.minor = -1, .minor = -1,
.release = video_device_release, .release = video_device_release,
.vfl_dir = VFL_DIR_M2M,
}; };
static struct v4l2_m2m_ops m2m_ops = { static struct v4l2_m2m_ops m2m_ops = {
......
...@@ -1951,6 +1951,7 @@ static int __init omap_vout_setup_video_data(struct omap_vout_device *vout) ...@@ -1951,6 +1951,7 @@ static int __init omap_vout_setup_video_data(struct omap_vout_device *vout)
vfd->fops = &omap_vout_fops; vfd->fops = &omap_vout_fops;
vfd->v4l2_dev = &vout->vid_dev->v4l2_dev; vfd->v4l2_dev = &vout->vid_dev->v4l2_dev;
vfd->vfl_dir = VFL_DIR_TX;
mutex_init(&vout->lock); mutex_init(&vout->lock);
vfd->minor = -1; vfd->minor = -1;
......
...@@ -1342,6 +1342,7 @@ int omap3isp_video_init(struct isp_video *video, const char *name) ...@@ -1342,6 +1342,7 @@ int omap3isp_video_init(struct isp_video *video, const char *name)
case V4L2_BUF_TYPE_VIDEO_OUTPUT: case V4L2_BUF_TYPE_VIDEO_OUTPUT:
direction = "input"; direction = "input";
video->pad.flags = MEDIA_PAD_FL_SOURCE; video->pad.flags = MEDIA_PAD_FL_SOURCE;
video->video.vfl_dir = VFL_DIR_TX;
break; break;
default: default:
......
...@@ -804,6 +804,7 @@ int fimc_register_m2m_device(struct fimc_dev *fimc, ...@@ -804,6 +804,7 @@ int fimc_register_m2m_device(struct fimc_dev *fimc,
vfd->minor = -1; vfd->minor = -1;
vfd->release = video_device_release; vfd->release = video_device_release;
vfd->lock = &fimc->lock; vfd->lock = &fimc->lock;
vfd->vfl_dir = VFL_DIR_M2M;
snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id); snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id);
video_set_drvdata(vfd, fimc); video_set_drvdata(vfd, fimc);
......
...@@ -680,6 +680,7 @@ static struct video_device g2d_videodev = { ...@@ -680,6 +680,7 @@ static struct video_device g2d_videodev = {
.ioctl_ops = &g2d_ioctl_ops, .ioctl_ops = &g2d_ioctl_ops,
.minor = -1, .minor = -1,
.release = video_device_release, .release = video_device_release,
.vfl_dir = VFL_DIR_M2M,
}; };
static struct v4l2_m2m_ops g2d_m2m_ops = { static struct v4l2_m2m_ops g2d_m2m_ops = {
......
...@@ -1392,6 +1392,7 @@ static int s5p_jpeg_probe(struct platform_device *pdev) ...@@ -1392,6 +1392,7 @@ static int s5p_jpeg_probe(struct platform_device *pdev)
jpeg->vfd_encoder->release = video_device_release; jpeg->vfd_encoder->release = video_device_release;
jpeg->vfd_encoder->lock = &jpeg->lock; jpeg->vfd_encoder->lock = &jpeg->lock;
jpeg->vfd_encoder->v4l2_dev = &jpeg->v4l2_dev; jpeg->vfd_encoder->v4l2_dev = &jpeg->v4l2_dev;
jpeg->vfd_encoder->vfl_dir = VFL_DIR_M2M;
ret = video_register_device(jpeg->vfd_encoder, VFL_TYPE_GRABBER, -1); ret = video_register_device(jpeg->vfd_encoder, VFL_TYPE_GRABBER, -1);
if (ret) { if (ret) {
......
...@@ -1048,6 +1048,7 @@ static int s5p_mfc_probe(struct platform_device *pdev) ...@@ -1048,6 +1048,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
vfd->release = video_device_release, vfd->release = video_device_release,
vfd->lock = &dev->mfc_mutex; vfd->lock = &dev->mfc_mutex;
vfd->v4l2_dev = &dev->v4l2_dev; vfd->v4l2_dev = &dev->v4l2_dev;
vfd->vfl_dir = VFL_DIR_M2M;
snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_DEC_NAME); snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_DEC_NAME);
dev->vfd_dec = vfd; dev->vfd_dec = vfd;
ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0); ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0);
......
...@@ -1081,6 +1081,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev, ...@@ -1081,6 +1081,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev,
.minor = -1, .minor = -1,
.release = mxr_vfd_release, .release = mxr_vfd_release,
.fops = &mxr_fops, .fops = &mxr_fops,
.vfl_dir = VFL_DIR_TX,
.ioctl_ops = &mxr_ioctl_ops, .ioctl_ops = &mxr_ioctl_ops,
}; };
strlcpy(layer->vfd.name, name, sizeof(layer->vfd.name)); strlcpy(layer->vfd.name, name, sizeof(layer->vfd.name));
......
...@@ -1320,6 +1320,7 @@ static const struct video_device sh_vou_video_template = { ...@@ -1320,6 +1320,7 @@ static const struct video_device sh_vou_video_template = {
.ioctl_ops = &sh_vou_ioctl_ops, .ioctl_ops = &sh_vou_ioctl_ops,
.tvnorms = V4L2_STD_525_60, /* PAL only supported in 8-bit non-bt656 mode */ .tvnorms = V4L2_STD_525_60, /* PAL only supported in 8-bit non-bt656 mode */
.current_norm = V4L2_STD_NTSC_M, .current_norm = V4L2_STD_NTSC_M,
.vfl_dir = VFL_DIR_TX,
}; };
static int __devinit sh_vou_probe(struct platform_device *pdev) static int __devinit sh_vou_probe(struct platform_device *pdev)
......
...@@ -1722,6 +1722,8 @@ static int uvc_register_video(struct uvc_device *dev, ...@@ -1722,6 +1722,8 @@ static int uvc_register_video(struct uvc_device *dev,
vdev->v4l2_dev = &dev->vdev; vdev->v4l2_dev = &dev->vdev;
vdev->fops = &uvc_fops; vdev->fops = &uvc_fops;
vdev->release = uvc_release; vdev->release = uvc_release;
if (stream->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
vdev->vfl_dir = VFL_DIR_TX;
strlcpy(vdev->name, dev->name, sizeof vdev->name); strlcpy(vdev->name, dev->name, sizeof vdev->name);
/* Set the driver data before calling video_register_device, otherwise /* Set the driver data before calling video_register_device, otherwise
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment