Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp987391rdh; Fri, 27 Oct 2023 01:03:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFaFoespKC3Kz/n/GAuPYKMUgqYotwkRlc4VRTRfvxwdExXCZXubwxRkl9ZA5i0ZR+R4Bfm X-Received: by 2002:a05:6870:312:b0:1e9:b025:cf88 with SMTP id m18-20020a056870031200b001e9b025cf88mr2768515oaf.36.1698393824453; Fri, 27 Oct 2023 01:03:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698393824; cv=none; d=google.com; s=arc-20160816; b=rctdoR/95vqoQlOQShlhVSQOT7xiuo9LunAH1Wlcm9RtVTAECufceWXhifbBVWFGIJ 1z6UwPbMgV2RO0OPzQqtkDJoQ1gIdAZjTVttLJYXsFnxIaOaSztaR3O7gpT3DBxHzwpf ex9pkwAIvtqrGVUNhyceKflzW0KWt5rA0l8NMjVV6I6b29OLaQY319PLDQ+hZnPGU6bz VwBf92GqHaCjAjnY/FkLF8zAYon3Af6ym48rLGKAXjEW41fhW5Q2Oeni9hnuJ3a1RrS3 tCszlVrAYZH8Pwxa4JqvbyCcpVMY+1Si5jDqDiadADqs9j7Kuj7nlV3fK+dk0TJCQtOP J/gA== 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=vWuIWjyD8FpOyJ465PS+ot0AEoXFcoupoMnqIbD1IWI=; fh=qjJCI7yJJTH/lMjv/ve+3MiIhqqe1cl9l4yne5ihVdk=; b=bvdqpshVv/W3NF3UCh6mDm/5x0g4CQL9omMvhQFdeX96hYISbOdxsfmDGQc0wT7WcK t33aDzfAutC1G5unGhBBhu6Qnym2Z4SbmbjefIr62FyUOX/vojKI8gl1RLY1rrtodtXG Bj3gxpjMd+iocl2Uk4u2o+lIgRYfrBJzsrO9AZpu9LeMfSHD6d1H6OAzwGurQVTdy9gI 3M4OvFcwU09+QwoLNKMUQsCXD0yKLLAPWKgnhj9lMLQq0O296ZH84DoL/l0OeC/aJxbE iJnKetp2YFAGDm5NaXc/7bYBgVh+XEx/hqCP/AYfBmFH7KXFOeULpFpf0xkrLwnF1A+U GDgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=EQZwmdMU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id 206-20020a250fd7000000b00da07267941esi1758064ybp.296.2023.10.27.01.03.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Oct 2023 01:03:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=EQZwmdMU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 2D722809AFCF; Fri, 27 Oct 2023 01:03:38 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235074AbjJ0IDX (ORCPT + 99 others); Fri, 27 Oct 2023 04:03:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235076AbjJ0IDQ (ORCPT ); Fri, 27 Oct 2023 04:03:16 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 173F31BD; Fri, 27 Oct 2023 01:03:11 -0700 (PDT) Received: from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi [213.243.189.158]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 20AA6669; Fri, 27 Oct 2023 10:02:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1698393776; bh=XBUsbRDaPiyitopG0DEbk3R5O/2FPzd2BnU2ptaoZPs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=EQZwmdMUSDW0XXeU9cMmkQdVq93futIpC+O3rvEz084T6zswzJWyxuh44A7+620NS aLc5HB0p5v5X2Z5MGHwkxoE/JpFpThV3N8Th2oqk6PYhEvdJF1eH/9477cpAHCx5dZ 8ewJAsoI1fMBzjRRcLjW9PQEPC1yD3phZGqSs71g= Date: Fri, 27 Oct 2023 11:03:15 +0300 From: Laurent Pinchart To: Shuzhen Wang Cc: balbi@kernel.org, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] usb: gadget: uvc: Add missing initialization of ssp config descriptor Message-ID: <20231027080315.GK26306@pendragon.ideasonboard.com> References: <14ceb63f-1769-4025-ad90-c38112dfec79@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <14ceb63f-1769-4025-ad90-c38112dfec79@google.com> X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Fri, 27 Oct 2023 01:03:38 -0700 (PDT) Hi Shuzhen, Thank you for the patch. On Thu, Oct 26, 2023 at 12:29:02PM -0700, Shuzhen Wang wrote: > In case the uvc gadget is super speed plus, the corresponding config > descriptor wasn't initialized. As a result, the host will not recognize > the devices when using super speed plus connection. > > This patch initializes them to super speed descriptors. > > Signed-off-by: Shuzhen Wang Reviewed-by: Laurent Pinchart > --- > drivers/usb/gadget/function/f_uvc.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c > index faa398109431..786379f1b7b7 100644 > --- a/drivers/usb/gadget/function/f_uvc.c > +++ b/drivers/usb/gadget/function/f_uvc.c > @@ -516,6 +516,7 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed) > void *mem; > > switch (speed) { > + case USB_SPEED_SUPER_PLUS: > case USB_SPEED_SUPER: > uvc_control_desc = uvc->desc.ss_control; > uvc_streaming_cls = uvc->desc.ss_streaming; > @@ -564,7 +565,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed) > bytes += uvc_interrupt_ep.bLength + uvc_interrupt_cs_ep.bLength; > n_desc += 2; > > - if (speed == USB_SPEED_SUPER) { > + if (speed == USB_SPEED_SUPER || > + speed == USB_SPEED_SUPER_PLUS) { > bytes += uvc_ss_interrupt_comp.bLength; > n_desc += 1; > } > @@ -619,7 +621,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed) > > if (uvc->enable_interrupt_ep) { > UVC_COPY_DESCRIPTOR(mem, dst, &uvc_interrupt_ep); > - if (speed == USB_SPEED_SUPER) > + if (speed == USB_SPEED_SUPER || > + speed == USB_SPEED_SUPER_PLUS) > UVC_COPY_DESCRIPTOR(mem, dst, &uvc_ss_interrupt_comp); > > UVC_COPY_DESCRIPTOR(mem, dst, &uvc_interrupt_cs_ep); > @@ -795,6 +798,13 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) > goto error; > } > > + f->ssp_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_SUPER_PLUS); > + if (IS_ERR(f->ssp_descriptors)) { > + ret = PTR_ERR(f->ssp_descriptors); > + f->ssp_descriptors = NULL; > + goto error; > + } > + > /* Preallocate control endpoint request. */ > uvc->control_req = usb_ep_alloc_request(cdev->gadget->ep0, GFP_KERNEL); > uvc->control_buf = kmalloc(UVC_MAX_REQUEST_SIZE, GFP_KERNEL); -- Regards, Laurent Pinchart