Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp519635iog; Fri, 17 Jun 2022 08:01:44 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uu89+YVRKTMFJR8TwmGuK7/8SSI7X1K0E/BQyk4W7cLn5VvxaSmkbGAtOGQ1PF1IzZ7dly X-Received: by 2002:a05:6402:3490:b0:42f:b592:f364 with SMTP id v16-20020a056402349000b0042fb592f364mr13035686edc.66.1655478103916; Fri, 17 Jun 2022 08:01:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655478103; cv=none; d=google.com; s=arc-20160816; b=0uAdJ7R7qgJQSyyLGaDluOAQ7l2o1pzBLmNr/v0zXiOLf6YlkgKPkLPVkc+doFw1Ur rq1qoJF1Ye2w/UlpiBqSuTt1vJeY7RibpEhOOeJ1t+vYCjliy3gi3m4M+01odUUH20xF ebB4W4ZYBfUFytTDAdYj3r6k675yOjKB+dUahW4rxY2QGVNnnavJOJQrHH3iMY+K9bpG g7L0n57HOmiSaPTOEi0sfcWuKhpFOElmUyKP2g5OlpkLmP4vPO4e5pR0GaXwY1SzQpDb rrdGGOf8DLALrtPPFTeJHLqx+ZVqU3HDwgA9qe3qNGKdE0mRMuPj6xUYEhovv6F+Nskp jRcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=tePk6gE5EYzJMX/tVHM22VabenFCCZzFf7vAI0EWFyQ=; b=xWRb2WzA2+BiGHT2zzS5vKWZQXIi4Fh5DPn+ONdL6TdB3ABpIbeN45cduyuoWh5zWz sXSxrCsNj8gnmEOtpMsxcqKF/4qVq1TtaKn6w4+is/2EdqNnN16H4rEUDm9sPaDAibSb 4qjGGGJRjbwW4TYbyNGZSEmCYFoUTKMWsTvqOF+XLSVSnoicPomR1lCDCXmf2HqqyJ9o YHW6P500qKg0rIBHLNf8MMWhwP3IBmRq2SwI7NQNX/V2XHuKJsvCakXBe+kjND+4Wc0+ IYM5M0M3te/OGmsI7XKRGzBvuKBP8nR4kE+TCwcAEuXI2job/0IGEOsmZp4iQ5L5Lx0f qenw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=f5hyNmqW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gb42-20020a170907962a00b00718bfe860a4si859550ejc.41.2022.06.17.08.01.06; Fri, 17 Jun 2022 08:01:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=f5hyNmqW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380506AbiFQOTN (ORCPT + 99 others); Fri, 17 Jun 2022 10:19:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234827AbiFQOTL (ORCPT ); Fri, 17 Jun 2022 10:19:11 -0400 Received: from mail-ot1-x336.google.com (mail-ot1-x336.google.com [IPv6:2607:f8b0:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A959FD99 for ; Fri, 17 Jun 2022 07:19:10 -0700 (PDT) Received: by mail-ot1-x336.google.com with SMTP id e67-20020a9d01c9000000b0060c221b1420so3232207ote.0 for ; Fri, 17 Jun 2022 07:19:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=tePk6gE5EYzJMX/tVHM22VabenFCCZzFf7vAI0EWFyQ=; b=f5hyNmqWNRMe3j9n+pN11Udlu0j4Pxrkm9doO4qpEDrgCp2LMEJpeKjJnhvEMoBykv mrnDW+Y6LSOAorzIJ36ZX23qdkkPfIbn6PzUk3rIp2X5xCB7qZ69RdjcREwn259JqVxK i3xNSP/PMZ68LxuVUefX8PIhY+mfDQQS17OMw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tePk6gE5EYzJMX/tVHM22VabenFCCZzFf7vAI0EWFyQ=; b=jQtlSr77nnRIh4XIr45kOMqUQPp+CWGJoutpbROYDwRx+KB/TBjBMgbENlSwUxgWvv 9JCZXB+ljH5V6bv3XhjhGvCPdyVAN1nVLYixT74Balz9QtkNxawetjfv5eq6putp5haw a2iUWX3eLR8xtl99GJ0jFtJWVo2VJhe2wn9Nd5Cjk7pLX+/hYjQXy3dDmNG6DcuQuBHP xw849ttGJxmSEf2+zF36uGSoENOktNpZg6hsk/Zpc/7IwGVefc347jsqKVvoE6ANYG/t S9tvl04N3RoTyld/nvYe3/qK1nMPEgyLqm+qqpJpib4789xNnvC8dPbhZaC4Zb3sR+nb 1LpQ== X-Gm-Message-State: AJIora8EvWz6Y0Fd+hdnxCex+sfk0RPgq+TzAz8tLEwvMy73JC6euPam CIJYUdGwuG6L5qcd3ojZBOWn8EYqKPwUxpkP X-Received: by 2002:a9d:d87:0:b0:60b:f52b:f762 with SMTP id 7-20020a9d0d87000000b0060bf52bf762mr4055479ots.127.1655475549771; Fri, 17 Jun 2022 07:19:09 -0700 (PDT) Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com. [209.85.167.177]) by smtp.gmail.com with ESMTPSA id c83-20020aca3556000000b0032b99637366sm2508348oia.25.2022.06.17.07.19.08 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 17 Jun 2022 07:19:09 -0700 (PDT) Received: by mail-oi1-f177.google.com with SMTP id i25so5559730oii.7 for ; Fri, 17 Jun 2022 07:19:08 -0700 (PDT) X-Received: by 2002:aca:38c6:0:b0:32f:2477:2ec6 with SMTP id f189-20020aca38c6000000b0032f24772ec6mr10407782oia.66.1655475548200; Fri, 17 Jun 2022 07:19:08 -0700 (PDT) MIME-Version: 1.0 References: <20220617103645.71560-1-ribalda@chromium.org> <20220617103645.71560-5-ribalda@chromium.org> In-Reply-To: From: Ricardo Ribalda Date: Fri, 17 Jun 2022 16:18:57 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v7 4/8] media: uvcvideo: Limit power line control for Quanta UVC Webcam To: Laurent Pinchart Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, tfiga@chromium.org, senozhatsky@chromium.org, yunkec@google.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Laurent On Fri, 17 Jun 2022 at 16:02, Laurent Pinchart wrote: > > Hi Ricardo, > > Thank you for the patch. Thank you :) > > On Fri, Jun 17, 2022 at 12:36:41PM +0200, Ricardo Ribalda wrote: > > The device does not implement the power line control correctly. Add a > > corresponding control mapping override. > > > > Bus 001 Device 003: ID 0408:3090 Quanta Computer, Inc. USB2.0 HD UVC WebCam > > Device Descriptor: > > bLength 18 > > bDescriptorType 1 > > bcdUSB 2.00 > > bDeviceClass 239 Miscellaneous Device > > bDeviceSubClass 2 > > bDeviceProtocol 1 Interface Association > > bMaxPacketSize0 64 > > idVendor 0x0408 Quanta Computer, Inc. > > idProduct 0x3090 > > bcdDevice 0.04 > > iManufacturer 3 Quanta > > iProduct 1 USB2.0 HD UVC WebCam > > iSerial 2 0x0001 > > bNumConfigurations 1 > > > > Signed-off-by: Ricardo Ribalda > > Signed-off-by: Laurent Pinchart > > --- > > drivers/media/usb/uvc/uvc_driver.c | 35 ++++++++++++++++++++++++++++++ > > 1 file changed, 35 insertions(+) > > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > > index 6c86faecbea2..4fb07084f1c0 100644 > > --- a/drivers/media/usb/uvc/uvc_driver.c > > +++ b/drivers/media/usb/uvc/uvc_driver.c > > @@ -2643,6 +2643,32 @@ MODULE_PARM_DESC(timeout, "Streaming control requests timeout"); > > * Driver initialization and cleanup > > */ > > > > +static const struct uvc_menu_info power_line_frequency_controls_limited[] = { > > + { 0, "Invalid" }, > > + { 1, "50 Hz" }, > > + { 2, "60 Hz" }, > > +}; > > It's not nice to have to include the first item in the array, but we > can't fix that without modifying uvc_menu_info, which we can't do as > it's part of the UAPI. Let's keep it as-is, but I would then expose the > uvc_menu_info array from uvc_ctrl.c instead of duplicating it here. Instead of that, what about using the values from v4l2_ctrl_get_menu() ? We will still provide a fallback in case the control is not standard. Let me implement that in the next version and see what you think about it. Regards! > > > + > > +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, > > + .size = 2, > > + .offset = 0, > > + .v4l2_type = V4L2_CTRL_TYPE_MENU, > > + .data_type = UVC_CTRL_DATA_TYPE_ENUM, > > + .menu_info = power_line_frequency_controls_limited, > > + .menu_min = 1, > > + .menu_count = ARRAY_SIZE(power_line_frequency_controls_limited), > > +}; > > + > > +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_quirk_probe_minmax = { > > .quirks = UVC_QUIRK_PROBE_MINMAX, > > }; > > @@ -2673,6 +2699,15 @@ 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 }, > > /* LogiLink Wireless Webcam */ > > { .match_flags = USB_DEVICE_ID_MATCH_DEVICE > > | USB_DEVICE_ID_MATCH_INT_INFO, > > -- > Regards, > > Laurent Pinchart -- Ricardo Ribalda