Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp798051rwl; Thu, 5 Jan 2023 04:52:18 -0800 (PST) X-Google-Smtp-Source: AMrXdXvy3ZhdmJMq41mzvQdSy9d8ju8VXKziMxiQl3+iT9Lj+QtW0gEshd1Gnp9nXY8bbjKEH0mA X-Received: by 2002:a05:6402:3886:b0:491:f4ae:1805 with SMTP id fd6-20020a056402388600b00491f4ae1805mr2641513edb.6.1672923138482; Thu, 05 Jan 2023 04:52:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672923138; cv=none; d=google.com; s=arc-20160816; b=YxTG1jAJelhvQLuUWkeYz5H8EBZxXII05HNGP2tRNyUmr9kmY916L/rW7RwhC/lfsW Au1BNY/Qk5fgBxpKsNYg8+IXuQEX91UyxPdXAhM2bV/YJD/fCGZDTWi9t+deHjXn0z5h YxqSU3y1zyrqt8mNm6gHsS4UC3VcBbRWJ6PjW7glkXuB2cR8CTmTTMLvRmh+N051suUz DUs5577EZCVW9N+UeiV487WdFUPjLdW+RaeS+zFpzuE2wZy7fPgdHzlWmB/VpavtqfTx 0K5Snwqq0Upfg6iY+RYyF7vhO7JKnXAWD32BSFYPpzlpveiSbmdH4ihtJQaX65FfrmJ/ 10UA== 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=CxPAWPdLx+AnYDGFecYmtGAl8s4Zh03V0RGOIrw0ZtU=; b=pls+5Ob3OzhCxt++d/pesJM5CMNzENhSNDPIk26b7D+QWJuS+pf/MrBgoYpNZNvJIR zYXdGntkRWi2O28+QSU7aVP0+XN9MyVl0q4RzF7yOV0oIiIyIsc4gNYQX28LsAsm1+qH wg5BkE+71nRxToRdQiVbsJ3boRri0p5T2u3S6/7C86ptTsCnsRdlsDdKaqUISXstCjUZ T6SatMekKACwP9Yo03JbgCGbOBM4mVum1ALRmpbNKjhO0YfLTuqP9q+4pWAqa4jylhkg UCY9dPUDVABmxBH+vvQT9Th5p5UAyTk6qVLE2RzCLY3WGOVQPwuuqjQEQGMJKGfJViPP vhUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=bgNiT8l+; 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 s8-20020aa7c548000000b004925d3a16d4si1522492edr.129.2023.01.05.04.52.05; Thu, 05 Jan 2023 04:52:18 -0800 (PST) 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=bgNiT8l+; 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 S232452AbjAEMiQ (ORCPT + 55 others); Thu, 5 Jan 2023 07:38:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232319AbjAEMh6 (ORCPT ); Thu, 5 Jan 2023 07:37:58 -0500 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D4124E409 for ; Thu, 5 Jan 2023 04:37:57 -0800 (PST) Received: by mail-pj1-x1029.google.com with SMTP id n65-20020a17090a2cc700b0021bc5ef7a14so1919537pjd.0 for ; Thu, 05 Jan 2023 04:37:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CxPAWPdLx+AnYDGFecYmtGAl8s4Zh03V0RGOIrw0ZtU=; b=bgNiT8l+AWP2NRTl3vL/pq+86ILh2xabfb8ijK9XbEU0gp5PE4RBQk5l11i5HuYK9P 36YyMLlLxTu6q6luLfvpI5h53x7FLoJt+v6mte0L+Qmst5YEue8ZTdJ0806Rm0wz/JRs Qgv52Lv9htyBXg/jghsfZ1beJ34JkSH1D52ZE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CxPAWPdLx+AnYDGFecYmtGAl8s4Zh03V0RGOIrw0ZtU=; b=Cx/kPbJgdTlNoDiekAk/WxMChpEcu8KY/4w7nNwYnWT9sQsXSsCsk3TJZ4s1JkxDlc W0q2LVxvJjeB5uk4hBI3478w3NsV+3wBwlpoYwX0UWX5PTBJYiV3fLtzZNVjUaC4CMJ3 T4dxhLyCcQ/EvrXy4n0kny6xh29NXg62PDe9MGqdsIBVtToEcqnTo/dECNfmLaSFmGNX qSXkWS9SniMJaKt94R1kpjITQVLfIeTy9FIGUO5i/qTJnmQ/oP2RDZoZb1KvnKcNLLyj VdxWt7R6VxLr70dEQLpzTx0pILZ9zT/vuDHT3mk7MOgEX0ykW1ZpW5grUBFZBV76OA2I 0l4A== X-Gm-Message-State: AFqh2koirCawCgv+iLeCAuhsJ47sMZJtG0tTfnQbexZsTn37QuVzXTqV S2xunYkD0PdLm0Fb4ukSEp8qj4a2PmQ82YK9Glc= X-Received: by 2002:a17:903:3289:b0:192:8c20:444c with SMTP id jh9-20020a170903328900b001928c20444cmr32675090plb.12.1672922276315; Thu, 05 Jan 2023 04:37:56 -0800 (PST) Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com. [209.85.214.178]) by smtp.gmail.com with ESMTPSA id t5-20020a170902e84500b001871acf245csm25978213plg.37.2023.01.05.04.37.55 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Jan 2023 04:37:55 -0800 (PST) Received: by mail-pl1-f178.google.com with SMTP id b2so39201835pld.7 for ; Thu, 05 Jan 2023 04:37:55 -0800 (PST) X-Received: by 2002:a17:90a:c984:b0:219:8132:70db with SMTP id w4-20020a17090ac98400b00219813270dbmr4884596pjt.183.1672922274966; Thu, 05 Jan 2023 04:37:54 -0800 (PST) MIME-Version: 1.0 References: <20230105-uvc-gcc5-v1-0-8550de720e82@chromium.org> <20230105-uvc-gcc5-v1-6-8550de720e82@chromium.org> In-Reply-To: <20230105-uvc-gcc5-v1-6-8550de720e82@chromium.org> From: Ricardo Ribalda Date: Thu, 5 Jan 2023 13:37:43 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 6/6] media: uvcvideo: Fix power line control for Lenovo Integrated Camera To: Laurent Pinchart , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Yunke Cao , Sergey Senozhatsky Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-0.5 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,SUBJECT_DRUG_GAP_L autolearn=no 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 Thu, 5 Jan 2023 at 13:33, Ricardo Ribalda wrote: > > The device does not implement the power line control correctly. It is > a UVC 1.5 device, but implements the PLC control as a UVC 1.1 device. > > Add the corresponding control mapping override. > > Bus 003 Device 002: ID 30c9:0093 Lenovo Integrated Camera > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.01 > bDeviceClass 239 Miscellaneous Device > bDeviceSubClass 2 > bDeviceProtocol 1 Interface Association > bMaxPacketSize0 64 > idVendor 0x30c9 > idProduct 0x0093 > bcdDevice 0.07 > iManufacturer 3 Lenovo > iProduct 1 Integrated Camera > iSerial 2 8SSC21J75356V1SR2830069 > bNumConfigurations 1 > > Signed-off-by: Laurent Pinchart I deleted the wrong singed-off-by, This should say Signed-off-by: Ricardo Ribalda If I need to send a new version it will be fixed accordingly. Thanks! > --- > drivers/media/usb/uvc/uvc_ctrl.c | 2 +- > drivers/media/usb/uvc/uvc_driver.c | 16 ++++++++++++++++ > drivers/media/usb/uvc/uvcvideo.h | 1 + > 3 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c > index f559a1ac6e3c..28ef9b2024a1 100644 > --- a/drivers/media/usb/uvc/uvc_ctrl.c > +++ b/drivers/media/usb/uvc/uvc_ctrl.c > @@ -736,7 +736,7 @@ const struct uvc_control_mapping uvc_ctrl_power_line_mapping_limited = { > V4L2_CID_POWER_LINE_FREQUENCY_50HZ), > }; > > -static const struct uvc_control_mapping uvc_ctrl_power_line_mapping_uvc11 = { > +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 37d2b08bc8b2..57c948d47bbf 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -2385,6 +2385,13 @@ static const struct uvc_device_info uvc_ctrl_power_line_limited = { > }, > }; > > +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, > }; > @@ -2964,6 +2971,15 @@ static const struct usb_device_id uvc_ids[] = { > .bInterfaceSubClass = 1, > .bInterfaceProtocol = 0, > .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP) }, > + /* 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, > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h > index 1b2d9f327583..31c33eb0edf5 100644 > --- a/drivers/media/usb/uvc/uvcvideo.h > +++ b/drivers/media/usb/uvc/uvcvideo.h > @@ -748,6 +748,7 @@ 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, > > -- > 2.39.0.314.g84b9a713c41-goog-b4-0.11.0-dev-696ae -- Ricardo Ribalda