[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANiDSCur8zys_CSZC9+-QdD0U556A7HLLdSN8mJuOpXm+Ls8Wg@mail.gmail.com>
Date: Mon, 16 Jun 2025 20:30:08 +0200
From: Ricardo Ribalda <ribalda@...omium.org>
To: Laurent Pinchart <laurent.pinchart@...asonboard.com>, Hans de Goede <hdegoede@...hat.com>,
Hans Verkuil <hans@...erkuil.nl>, Mauro Carvalho Chehab <mchehab@...nel.org>
Cc: linux-media@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4 5/5] media: uvcvideo: Use prio state from v4l2_device
Hello All
On Mon, 16 Jun 2025 at 17:24, Ricardo Ribalda <ribalda@...omium.org> wrote:
>
> Currently, a UVC device can have multiple chains, and each chain maintains
> its own priority state. While this behavior is technically correct for UVC,
> uvcvideo is the *only* V4L2 driver that does not utilize the priority state
> defined within `v4l2_device`.
>
> This patch modifies uvcvideo to use the `v4l2_device` priority state. While
> this might not be strictly "correct" for uvcvideo's multi-chain design, it
> aligns uvcvideo with the rest of the V4L2 drivers, providing "correct enough"
> behavior and enabling code cleanup in v4l2-core. Also, multi-chain
> devices are extremely rare, they are typically implemented as two
> independent usb devices.
As the cover letter says, this last patch 5/5 is a RFC. We can decide
if it is worth to keep it or not.
The pros is that we can do some cleanup in the core, the cons is that
it might break kAPI.
I checked in the debian sourcecode and I could only find a user of
PRIORITY for dvb and was optional.
>
> Signed-off-by: Ricardo Ribalda <ribalda@...omium.org>
> ---
> drivers/media/usb/uvc/uvc_driver.c | 2 --
> drivers/media/usb/uvc/uvcvideo.h | 1 -
> 2 files changed, 3 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index accfb4ca3c72cb899185ddc8ecf4e29143d58fc6..e3795e40f14dc325e5bd120f5f45b60937841641 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -1728,7 +1728,6 @@ static struct uvc_video_chain *uvc_alloc_chain(struct uvc_device *dev)
> INIT_LIST_HEAD(&chain->entities);
> mutex_init(&chain->ctrl_mutex);
> chain->dev = dev;
> - v4l2_prio_init(&chain->prio);
>
> return chain;
> }
> @@ -2008,7 +2007,6 @@ int uvc_register_video_device(struct uvc_device *dev,
> vdev->fops = fops;
> vdev->ioctl_ops = ioctl_ops;
> vdev->release = uvc_release;
> - vdev->prio = &stream->chain->prio;
> vdev->queue = &queue->queue;
> vdev->lock = &queue->mutex;
> if (type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
> diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> index 3e6d2d912f3a1cfcf63b2bc8edd3f86f3da305db..5ed9785d59c698cc7e0ac69955b892f932961617 100644
> --- a/drivers/media/usb/uvc/uvcvideo.h
> +++ b/drivers/media/usb/uvc/uvcvideo.h
> @@ -354,7 +354,6 @@ struct uvc_video_chain {
> * uvc_fh.pending_async_ctrls
> */
>
> - struct v4l2_prio_state prio; /* V4L2 priority state */
> u32 caps; /* V4L2 chain-wide caps */
> u8 ctrl_class_bitmap; /* Bitmap of valid classes */
> };
>
> --
> 2.50.0.rc1.591.g9c95f17f64-goog
>
--
Ricardo Ribalda
Powered by blists - more mailing lists