Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp7243449rwl; Fri, 30 Dec 2022 05:52:52 -0800 (PST) X-Google-Smtp-Source: AMrXdXv8o3Z8W6bvoYvpqXD4+ovMTUZ+WOhvoWmQJNZuXIn2b2ekhMkOmQirDlnY9pqCmX161Hug X-Received: by 2002:a17:906:8d0f:b0:7c1:7c38:f079 with SMTP id rv15-20020a1709068d0f00b007c17c38f079mr15566124ejc.71.1672408372623; Fri, 30 Dec 2022 05:52:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672408372; cv=none; d=google.com; s=arc-20160816; b=a3ID7r4nQ9I43pkzTzZHAKA6swDChCo/OjgW3LC5S7h07LGsWF3bOCkof7nm/mjJv0 mWkrDnzDxkY1ohhLpXxk3DP+HWGNHVLw97fzhuj9KZhli+J2IW6LDJ3ZdXtjYHl+Ntb/ ZDcgKpChWcHmDKR0mq7S9yv2FQnUpIMU/kcarBYEiyUxhp/zSvjwTRCBmzWf6Kat0jAG FFuO83MvX7XKQBiuoJmaU++hh6vkEJfUGgYFllLvvoW5VZ8+KHDWiUMcHknGoCBzbDLu z5ZS2cmc3ujhGjmFTpYbWf3E22yk7g7vWQmv9u1InMvC6ZxdotdCYksGqlhPrxL2CIjs yWgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=K8yf84nV9ZkdsID2Afk0Im4rrvHVjaU3r1UHxt3CAYA=; b=SeS36CGvoXnxEJS1WZqaCzf0cFDcLonZGo4o9KYClX2DjaYqRgG/3eaDseLTUKPqHX 5KmFEl1WaAl/K0dJx9RdwMwalGIYKskNPN+2APYuqYrfNOcfiGGY40nMjtvKNW8zCtBu 7vWKjeZcMtNQ2wpiGpLp4mS+RHP82ywGi03K5VM5fdsA2qAHXK0f9uQfNcc3Dkqq+pmU 2TLSEVYNc2kFW8SuSJ8l4HuiJ6mWHZFFyt3+KIo31ImWTlduiLLk+yoRJQdWnVqKEoNT 440wCwezxEW65ULrUUCSczqiEB4gL1+sCP41uu46ORfcB5K+pOGDA1+jwVdNaxocMFkf kD9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=wo6fCuey; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dt13-20020a170907728d00b0078d550c0272si17952084ejc.269.2022.12.30.05.52.38; Fri, 30 Dec 2022 05:52:52 -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 (test mode) header.i=@ideasonboard.com header.s=mail header.b=wo6fCuey; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235064AbiL3Nky (ORCPT + 63 others); Fri, 30 Dec 2022 08:40:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235048AbiL3Nks (ORCPT ); Fri, 30 Dec 2022 08:40:48 -0500 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 847AB1035; Fri, 30 Dec 2022 05:40:47 -0800 (PST) Received: from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi [213.243.189.158]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id DBC638B9; Fri, 30 Dec 2022 14:40:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1672407646; bh=jUJe1fVvQCMktRfUj7CaQSfXa5sGAtCdcley5MZCF6U=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wo6fCueyiCZ2RsOmtvsAN21vqr2WN4CQontp8wlMqgr4FNnJlzyHUnqbXAfOwCaHh /gNPj3nmMpshBsxN8giXH/BtnCs7JPh28ZGf5aXlQlPpeFHtJbDQ1p4dRiaAnnYCXF TJklmHRJyKO3FF/b/Ji36WMVekqEyFFOD159Aeaw= Date: Fri, 30 Dec 2022 15:40:41 +0200 From: Laurent Pinchart To: Ricardo Ribalda Cc: Mauro Carvalho Chehab , "hn.chen" , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH RESEND v2 2/8] media: uvc: Allow quirking by entity guid Message-ID: References: <20220920-resend-hwtimestamp-v2-0-0d7978a817cc@chromium.org> <20220920-resend-hwtimestamp-v2-2-0d7978a817cc@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20220920-resend-hwtimestamp-v2-2-0d7978a817cc@chromium.org> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS 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 Ricardo, Thank you for the patch. On Fri, Dec 02, 2022 at 06:02:42PM +0100, Ricardo Ribalda wrote: > When an IP is shared by multiple devices its erratas will be shared by > all of them. Instead of creating a long list of device quirks, or > waiting for the users to report errors in their hardware lets add a > routine to add quirks based on the entity guid. I'm not thrilled by this. An entity is not an "IP". Quirks are needed to handle issues with particular firmware versions on particular devices. The same entity GUID can be used by different devices running different firmware versions, some that would require a quirk and some that wouldn't. > Tested-by: HungNien Chen > Signed-off-by: Ricardo Ribalda > --- > drivers/media/usb/uvc/uvc_driver.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index 9c05776f11d1..c63ecfd4617d 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -1493,6 +1493,28 @@ static int uvc_parse_control(struct uvc_device *dev) > return 0; > } > > +static const struct uvc_entity_quirk { > + u8 guid[16]; > + u32 quirks; > +} uvc_entity_quirk[] = { > +}; > + > +static void uvc_entity_quirks(struct uvc_device *dev) > +{ > + struct uvc_entity *entity; > + int i; unsigned int > + > + list_for_each_entry(entity, &dev->entities, list) { > + for (i = 0; i < ARRAY_SIZE(uvc_entity_quirk); i++) { > + if (memcmp(entity->guid, uvc_entity_quirk[i].guid, > + sizeof(entity->guid)) == 0) { > + dev->quirks |= uvc_entity_quirk[i].quirks; > + break; > + } > + } > + } > +} > + > /* ----------------------------------------------------------------------------- > * Privacy GPIO > */ > @@ -2452,6 +2474,9 @@ static int uvc_probe(struct usb_interface *intf, > goto error; > } > > + /* Apply entity based quirks */ > + uvc_entity_quirks(dev); > + > dev_info(&dev->udev->dev, "Found UVC %u.%02x device %s (%04x:%04x)\n", > dev->uvc_version >> 8, dev->uvc_version & 0xff, > udev->product ? udev->product : "", > -- Regards, Laurent Pinchart