From 34311ecfe9c6d9f7b503406b5e9bcf269ccff558 Mon Sep 17 00:00:00 2001 From: amazingfate Date: Fri, 12 Jan 2024 20:26:13 +0800 Subject: [PATCH] media: rockchip: hdmirx: add VIDIOC_G_PARM --- .../platform/rockchip/hdmirx/rk_hdmirx.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c index 8807525926f33..dfd6b3601fc68 100644 --- a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c +++ b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c @@ -1625,6 +1625,24 @@ static int hdmirx_s_input(struct file *file, void *priv, unsigned int i) return i == 0 ? 0 : -EINVAL; } +static int hdmirx_g_parm(struct file *file, void *priv, + struct v4l2_streamparm *parm) +{ + struct hdmirx_stream *stream = video_drvdata(file); + struct rk_hdmirx_dev *hdmirx_dev = stream->hdmirx_dev; + struct v4l2_device *v4l2_dev = &hdmirx_dev->v4l2_dev; + struct v4l2_fract fps; + + if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) + return -EINVAL; + + fps = v4l2_calc_timeperframe(&hdmirx_dev->timings); + parm->parm.capture.timeperframe.numerator = fps.numerator; + parm->parm.capture.timeperframe.denominator = fps.denominator; + + return 0; +} + static int fcc_xysubs(u32 fcc, u32 *xsubs, u32 *ysubs) { /* Note: cbcr plane bpp is 16 bit */ @@ -2295,6 +2313,7 @@ static const struct v4l2_ioctl_ops hdmirx_v4l2_ioctl_ops = { .vidioc_s_input = hdmirx_s_input, .vidioc_g_edid = hdmirx_get_edid, .vidioc_s_edid = hdmirx_set_edid, + .vidioc_g_parm = hdmirx_g_parm, .vidioc_reqbufs = vb2_ioctl_reqbufs, .vidioc_querybuf = vb2_ioctl_querybuf,