Message ID | 20220404163533.707508-2-p.zabel@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/7] media: coda: set output buffer bytesused to appease v4l2-compliance | expand |
Le lundi 04 avril 2022 à 18:35 +0200, Philipp Zabel a écrit : > Use v4l2_disable_ioctl() to disable the VIDIOC_TRY_ENCODER_CMD and > VIDIOC_ENCODER_CMD ioctls on decoder video devices and the > VIDIOC_TRY_DECODER_CMD and VIDIOC_DECODER_CMD ioctls on encoder > video devices. > > This allows to drop the coda_try_encoder/decoder_cmd() functions > and to use v4l2_m2m_ioctl_try_encoder/decoder_cmd() directly. > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Nice cleanup. Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > --- > .../media/platform/chips-media/coda-common.c | 38 ++++++------------- > 1 file changed, 12 insertions(+), 26 deletions(-) > > diff --git a/drivers/media/platform/chips-media/coda-common.c b/drivers/media/platform/chips-media/coda-common.c > index 6d2989504b33..dc75133b0ead 100644 > --- a/drivers/media/platform/chips-media/coda-common.c > +++ b/drivers/media/platform/chips-media/coda-common.c > @@ -1091,17 +1091,6 @@ static int coda_s_selection(struct file *file, void *fh, > } > } > > -static int coda_try_encoder_cmd(struct file *file, void *fh, > - struct v4l2_encoder_cmd *ec) > -{ > - struct coda_ctx *ctx = fh_to_ctx(fh); > - > - if (ctx->inst_type != CODA_INST_ENCODER) > - return -ENOTTY; > - > - return v4l2_m2m_ioctl_try_encoder_cmd(file, fh, ec); > -} > - > static void coda_wake_up_capture_queue(struct coda_ctx *ctx) > { > struct vb2_queue *dst_vq; > @@ -1120,7 +1109,7 @@ static int coda_encoder_cmd(struct file *file, void *fh, > struct vb2_v4l2_buffer *buf; > int ret; > > - ret = coda_try_encoder_cmd(file, fh, ec); > + ret = v4l2_m2m_ioctl_try_encoder_cmd(file, fh, ec); > if (ret < 0) > return ret; > > @@ -1149,17 +1138,6 @@ static int coda_encoder_cmd(struct file *file, void *fh, > return 0; > } > > -static int coda_try_decoder_cmd(struct file *file, void *fh, > - struct v4l2_decoder_cmd *dc) > -{ > - struct coda_ctx *ctx = fh_to_ctx(fh); > - > - if (ctx->inst_type != CODA_INST_DECODER) > - return -ENOTTY; > - > - return v4l2_m2m_ioctl_try_decoder_cmd(file, fh, dc); > -} > - > static bool coda_mark_last_meta(struct coda_ctx *ctx) > { > struct coda_buffer_meta *meta; > @@ -1216,7 +1194,7 @@ static int coda_decoder_cmd(struct file *file, void *fh, > bool wakeup; > int ret; > > - ret = coda_try_decoder_cmd(file, fh, dc); > + ret = v4l2_m2m_ioctl_try_decoder_cmd(file, fh, dc); > if (ret < 0) > return ret; > > @@ -1498,9 +1476,9 @@ static const struct v4l2_ioctl_ops coda_ioctl_ops = { > .vidioc_g_selection = coda_g_selection, > .vidioc_s_selection = coda_s_selection, > > - .vidioc_try_encoder_cmd = coda_try_encoder_cmd, > + .vidioc_try_encoder_cmd = v4l2_m2m_ioctl_try_encoder_cmd, > .vidioc_encoder_cmd = coda_encoder_cmd, > - .vidioc_try_decoder_cmd = coda_try_decoder_cmd, > + .vidioc_try_decoder_cmd = v4l2_m2m_ioctl_try_decoder_cmd, > .vidioc_decoder_cmd = coda_decoder_cmd, > > .vidioc_g_parm = coda_g_parm, > @@ -2904,6 +2882,14 @@ static int coda_register_device(struct coda_dev *dev, int i) > v4l2_disable_ioctl(vfd, VIDIOC_G_CROP); > v4l2_disable_ioctl(vfd, VIDIOC_S_CROP); > > + if (dev->devtype->vdevs[i]->type == CODA_INST_ENCODER) { > + v4l2_disable_ioctl(vfd, VIDIOC_DECODER_CMD); > + v4l2_disable_ioctl(vfd, VIDIOC_TRY_DECODER_CMD); > + } else { > + v4l2_disable_ioctl(vfd, VIDIOC_ENCODER_CMD); > + v4l2_disable_ioctl(vfd, VIDIOC_TRY_ENCODER_CMD); > + } > + > ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0); > if (!ret) > v4l2_info(&dev->v4l2_dev, "%s registered as %s\n",
diff --git a/drivers/media/platform/chips-media/coda-common.c b/drivers/media/platform/chips-media/coda-common.c index 6d2989504b33..dc75133b0ead 100644 --- a/drivers/media/platform/chips-media/coda-common.c +++ b/drivers/media/platform/chips-media/coda-common.c @@ -1091,17 +1091,6 @@ static int coda_s_selection(struct file *file, void *fh, } } -static int coda_try_encoder_cmd(struct file *file, void *fh, - struct v4l2_encoder_cmd *ec) -{ - struct coda_ctx *ctx = fh_to_ctx(fh); - - if (ctx->inst_type != CODA_INST_ENCODER) - return -ENOTTY; - - return v4l2_m2m_ioctl_try_encoder_cmd(file, fh, ec); -} - static void coda_wake_up_capture_queue(struct coda_ctx *ctx) { struct vb2_queue *dst_vq; @@ -1120,7 +1109,7 @@ static int coda_encoder_cmd(struct file *file, void *fh, struct vb2_v4l2_buffer *buf; int ret; - ret = coda_try_encoder_cmd(file, fh, ec); + ret = v4l2_m2m_ioctl_try_encoder_cmd(file, fh, ec); if (ret < 0) return ret; @@ -1149,17 +1138,6 @@ static int coda_encoder_cmd(struct file *file, void *fh, return 0; } -static int coda_try_decoder_cmd(struct file *file, void *fh, - struct v4l2_decoder_cmd *dc) -{ - struct coda_ctx *ctx = fh_to_ctx(fh); - - if (ctx->inst_type != CODA_INST_DECODER) - return -ENOTTY; - - return v4l2_m2m_ioctl_try_decoder_cmd(file, fh, dc); -} - static bool coda_mark_last_meta(struct coda_ctx *ctx) { struct coda_buffer_meta *meta; @@ -1216,7 +1194,7 @@ static int coda_decoder_cmd(struct file *file, void *fh, bool wakeup; int ret; - ret = coda_try_decoder_cmd(file, fh, dc); + ret = v4l2_m2m_ioctl_try_decoder_cmd(file, fh, dc); if (ret < 0) return ret; @@ -1498,9 +1476,9 @@ static const struct v4l2_ioctl_ops coda_ioctl_ops = { .vidioc_g_selection = coda_g_selection, .vidioc_s_selection = coda_s_selection, - .vidioc_try_encoder_cmd = coda_try_encoder_cmd, + .vidioc_try_encoder_cmd = v4l2_m2m_ioctl_try_encoder_cmd, .vidioc_encoder_cmd = coda_encoder_cmd, - .vidioc_try_decoder_cmd = coda_try_decoder_cmd, + .vidioc_try_decoder_cmd = v4l2_m2m_ioctl_try_decoder_cmd, .vidioc_decoder_cmd = coda_decoder_cmd, .vidioc_g_parm = coda_g_parm, @@ -2904,6 +2882,14 @@ static int coda_register_device(struct coda_dev *dev, int i) v4l2_disable_ioctl(vfd, VIDIOC_G_CROP); v4l2_disable_ioctl(vfd, VIDIOC_S_CROP); + if (dev->devtype->vdevs[i]->type == CODA_INST_ENCODER) { + v4l2_disable_ioctl(vfd, VIDIOC_DECODER_CMD); + v4l2_disable_ioctl(vfd, VIDIOC_TRY_DECODER_CMD); + } else { + v4l2_disable_ioctl(vfd, VIDIOC_ENCODER_CMD); + v4l2_disable_ioctl(vfd, VIDIOC_TRY_ENCODER_CMD); + } + ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0); if (!ret) v4l2_info(&dev->v4l2_dev, "%s registered as %s\n",
Use v4l2_disable_ioctl() to disable the VIDIOC_TRY_ENCODER_CMD and VIDIOC_ENCODER_CMD ioctls on decoder video devices and the VIDIOC_TRY_DECODER_CMD and VIDIOC_DECODER_CMD ioctls on encoder video devices. This allows to drop the coda_try_encoder/decoder_cmd() functions and to use v4l2_m2m_ioctl_try_encoder/decoder_cmd() directly. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- .../media/platform/chips-media/coda-common.c | 38 ++++++------------- 1 file changed, 12 insertions(+), 26 deletions(-)