From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Ricardo Ribalda <ribalda@chromium.org>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 5/7] media: uvcvideo: Remove PLF device quirking
Date: Mon, 17 Jun 2024 02:05:29 +0300 [thread overview]
Message-ID: <20240616230529.GC4782@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20240610-billion-v2-5-38e861475f85@chromium.org>
Hi Ricardo,
Thank you for the patch.
On Mon, Jun 10, 2024 at 11:09:56PM +0000, Ricardo Ribalda wrote:
> We can use heuristics to figure out the proper range of the control
> instead of quirking every single device.
>
> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/media/usb/uvc/uvc_ctrl.c | 4 +-
> drivers/media/usb/uvc/uvc_driver.c | 122 -------------------------------------
> drivers/media/usb/uvc/uvcvideo.h | 2 -
> 3 files changed, 2 insertions(+), 126 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
> index efc46f53ac81..d74019cb27fe 100644
> --- a/drivers/media/usb/uvc/uvc_ctrl.c
> +++ b/drivers/media/usb/uvc/uvc_ctrl.c
> @@ -459,7 +459,7 @@ static void uvc_ctrl_set_rel_speed(struct uvc_control_mapping *mapping,
> data[first+1] = min_t(int, abs(value), 0xff);
> }
>
> -const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited = {
> +static const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited = {
> .id = V4L2_CID_POWER_LINE_FREQUENCY,
> .entity = UVC_GUID_UVC_PROCESSING,
> .selector = UVC_PU_POWER_LINE_FREQUENCY_CONTROL,
> @@ -471,7 +471,7 @@ const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited = {
> V4L2_CID_POWER_LINE_FREQUENCY_50HZ),
> };
>
> -const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11 = {
> +static const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11 = {
> .id = V4L2_CID_POWER_LINE_FREQUENCY,
> .entity = UVC_GUID_UVC_PROCESSING,
> .selector = UVC_PU_POWER_LINE_FREQUENCY_CONTROL,
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index bbd90123a4e7..5f689fee60a9 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -2383,20 +2383,6 @@ MODULE_PARM_DESC(timeout, "Streaming control requests timeout");
> * Driver initialization and cleanup
> */
>
> -static const struct uvc_device_info uvc_ctrl_power_line_limited = {
> - .mappings = (const struct uvc_control_mapping *[]) {
> - &uvc_ctrl_power_line_mapping_limited,
> - NULL, /* Sentinel */
> - },
> -};
> -
> -static const struct uvc_device_info uvc_ctrl_power_line_uvc11 = {
> - .mappings = (const struct uvc_control_mapping *[]) {
> - &uvc_ctrl_power_line_mapping_uvc11,
> - NULL, /* Sentinel */
> - },
> -};
> -
> static const struct uvc_device_info uvc_quirk_probe_minmax = {
> .quirks = UVC_QUIRK_PROBE_MINMAX,
> };
> @@ -2427,33 +2413,6 @@ static const struct uvc_device_info uvc_quirk_force_y8 = {
> * though they are compliant.
> */
> static const struct usb_device_id uvc_ids[] = {
> - /* Quanta USB2.0 HD UVC Webcam */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x0408,
> - .idProduct = 0x3090,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> - /* Quanta USB2.0 HD UVC Webcam */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x0408,
> - .idProduct = 0x4030,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> - /* Quanta USB2.0 HD UVC Webcam */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x0408,
> - .idProduct = 0x4034,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = UVC_PC_PROTOCOL_15,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> /* LogiLink Wireless Webcam */
> { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> @@ -2583,42 +2542,6 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE) },
> - /* Chicony EasyCamera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x04f2,
> - .idProduct = 0xb5eb,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> - /* Chicony Electronics Co., Ltd Integrated Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x04f2,
> - .idProduct = 0xb67c,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = UVC_PC_PROTOCOL_15,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_uvc11 },
> - /* Chicony EasyCamera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x04f2,
> - .idProduct = 0xb6ba,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> - /* Chicony EasyCamera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x04f2,
> - .idProduct = 0xb746,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
> { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> @@ -3003,51 +2926,6 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP) },
> - /* SunplusIT Inc HD Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x2b7e,
> - .idProduct = 0xb752,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = UVC_PC_PROTOCOL_15,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_uvc11 },
> - /* Lenovo Integrated Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x30c9,
> - .idProduct = 0x0093,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = UVC_PC_PROTOCOL_15,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_uvc11 },
> - /* Sonix Technology USB 2.0 Camera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x3277,
> - .idProduct = 0x0072,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> - /* Acer EasyCamera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x5986,
> - .idProduct = 0x1172,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> - /* Acer EasyCamera */
> - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> - | USB_DEVICE_ID_MATCH_INT_INFO,
> - .idVendor = 0x5986,
> - .idProduct = 0x1180,
> - .bInterfaceClass = USB_CLASS_VIDEO,
> - .bInterfaceSubClass = 1,
> - .bInterfaceProtocol = 0,
> - .driver_info = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> /* Intel D410/ASR depth camera */
> { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> index fa0396dd5b35..4df02a40c74f 100644
> --- a/drivers/media/usb/uvc/uvcvideo.h
> +++ b/drivers/media/usb/uvc/uvcvideo.h
> @@ -753,8 +753,6 @@ int uvc_status_start(struct uvc_device *dev, gfp_t flags);
> void uvc_status_stop(struct uvc_device *dev);
>
> /* Controls */
> -extern const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited;
> -extern const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11;
> extern const struct v4l2_subscribed_event_ops uvc_ctrl_sub_ev_ops;
>
> int uvc_query_v4l2_ctrl(struct uvc_video_chain *chain,
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2024-06-16 23:05 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-10 23:09 [PATCH v2 0/7] media: uvc: Probe PLF limits at start-up Ricardo Ribalda
2024-06-10 23:09 ` [PATCH v2 1/7] media: uvcvideo: Allow custom control mapping Ricardo Ribalda
2024-06-16 23:06 ` Laurent Pinchart
2024-06-10 23:09 ` [PATCH v2 2/7] media: uvcvideo: Refactor Power Line Frequency limit selection Ricardo Ribalda
2024-06-16 23:03 ` Laurent Pinchart
2024-06-10 23:09 ` [PATCH v2 3/7] media: uvcvideo: Probe the PLF characteristics Ricardo Ribalda
2024-06-16 23:04 ` Laurent Pinchart
2024-06-10 23:09 ` [PATCH v2 4/7] media: uvcvideo: Cleanup version-specific mapping Ricardo Ribalda
2024-06-10 23:09 ` [PATCH v2 5/7] media: uvcvideo: Remove PLF device quirking Ricardo Ribalda
2024-06-16 23:05 ` Laurent Pinchart [this message]
2024-06-10 23:09 ` [PATCH v2 6/7] media: uvcvideo: Remove mappings form uvc_device_info Ricardo Ribalda
2024-06-16 23:05 ` Laurent Pinchart
2024-06-10 23:09 ` [PATCH v2 7/7] media: uvcvideo: Replace get_mapping with filter_mapping Ricardo Ribalda
2024-06-16 22:17 ` Laurent Pinchart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240616230529.GC4782@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=ribalda@chromium.org \
--cc=senozhatsky@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.