[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <nvyplkcl74rpe7zl2vprfztaivlmwvrsrwyrqw7lbvbeij5ubt@4dehnb7j6ona>
Date: Thu, 13 Feb 2025 18:56:45 +0530
From: Jai Luthra <jai.luthra@...ux.dev>
To: Yemike Abhilash Chandra <y-abhilashchandra@...com>
Cc: linux-media@...r.kernel.org, linux-kernel@...r.kernel.org,
devicetree@...r.kernel.org, mripard@...nel.org, mchehab@...nel.org, robh@...nel.org,
krzk+dt@...nel.org, conor+dt@...nel.org, devarsht@...com, vaishnav.a@...com,
r-donadkar@...com, u-kumar1@...com
Subject: Re: [RFC PATCH 3/3] media: ti: j721e-csi2rx: Add support for
VIDIOC_LOG_STATUS
Hi Abhilash,
On Wed, Feb 12, 2025 at 06:42:44PM +0530, Yemike Abhilash Chandra wrote:
> The VIDIOC_LOG_STATUS ioctl outputs the current status of a device to the
> kernel log. When this ioctl is called on a video device, the current
> implementation queries the log status for all connected subdevices in the
> media pipeline.
>
What is the benefit of doing this for a video node? The user can directly
check the status on the cdns-csi2rx subdev for CSI errors.
As far as I understand, the video node corresponds to a particular stream, but
the cdns-csi2rx source pad is shared for all video nodes, so it will report
the total errors seen for all video nodes in multi-camera scenarios.
This approach will also give you v4l2 control handler status from a few
sensors (like OV5640) that implement the ioctl using
v4l2_ctrl_subdev_log_status(), which is probably just noise for the case where
a user wants to check for stream errors.
> Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@...com>
> ---
> drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
> index 6412a00be8ea..946704458fee 100644
> --- a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
> +++ b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
> @@ -377,6 +377,15 @@ static int ti_csi2rx_enum_framesizes(struct file *file, void *fh,
> return 0;
> }
>
> +static int ti_csi2rx_log_status(struct file *file, void *fh)
> +{
> + struct ti_csi2rx_dev *csi = video_drvdata(file);
> +
> + v4l2_device_call_all(&csi->v4l2_dev, 0, core, log_status);
> +
> + return 0;
> +}
> +
> static const struct v4l2_ioctl_ops csi_ioctl_ops = {
> .vidioc_querycap = ti_csi2rx_querycap,
> .vidioc_enum_fmt_vid_cap = ti_csi2rx_enum_fmt_vid_cap,
> @@ -393,6 +402,7 @@ static const struct v4l2_ioctl_ops csi_ioctl_ops = {
> .vidioc_expbuf = vb2_ioctl_expbuf,
> .vidioc_streamon = vb2_ioctl_streamon,
> .vidioc_streamoff = vb2_ioctl_streamoff,
> + .vidioc_log_status = ti_csi2rx_log_status,
> };
>
> static const struct v4l2_file_operations csi_fops = {
> --
> 2.34.1
>
Thanks,
Jai
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists