Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp739266pxb; Thu, 21 Jan 2021 20:05:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxcmDHDgeoHy1UAzMw4Rm3kKJEiLRZPTNs3gpUeh1BF3z6QZepJrriQ4dII1YHRYp/2Ts0Y X-Received: by 2002:aa7:d88e:: with SMTP id u14mr1707006edq.72.1611288307892; Thu, 21 Jan 2021 20:05:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611288307; cv=none; d=google.com; s=arc-20160816; b=phmUeD2TgXLfJ6zBa+0/lamsqintnT9I52Kvhwely+SOp6f0C7r7klX7q6ylQqol7T R5qbkzPyMUTPJqSM90YgcC/vnEct+O+FfO6RZweXOTbX/QOaONMPAFXryPuf3hYAKSJr NuHQRMwBAdnnAeMj/KK248SFF+1yP7LA6BBiNsIgSRD0PlkgMrIa1pEaRKRBeSmcfKC0 alDylekY1VSp61CA6UwalC5RJ+bzpwoNDtYxxOV5pMQwa+RCtP7882OVRrRr4o5eMWsP r/eEKGarQasq11FgMR3gFly9FrZcTRDmrpBN/FxxQiNdNUm+L/DPCDluGQcZT7OI9CuE xLLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dmarc-filter:sender:dkim-signature; bh=eanmwdBiHTkc3FQfzz+OzW0CKv0pDb17uFWWX2u0Sow=; b=Br9S15j+fa/nLJpWX1cmD+QUz0S0zh6D5FKVrIWfWnl6uWP1S98XRirRxh4JhTX7x3 EAy26ednrQA64YigVDfhMDpIx7KFTGSwP2uqxetoEjVX7YtQTr0zqZIDiIHDKPMJJZJJ cKc7o2VMgFtdTLa0h3Dv92OiXB0EVfZrUctkU1SAD2JSLYIRbi/hFpGWcLHbkHSKe7FG msdWVj3d9Y1GGYrySvxMVnwXkJ7SsKIPmbfx2AAC6IFvk7B+W5HAs5Fb8/ujlq8kQ7tt SwLg3lF+w3Mreaya7IITfw9iUYWFfRFxS/Qu/WLu+ma1qQlJ0whFSomj4Xpk51hOpLG7 fWJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=nda6mIGL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h10si2542996ejy.307.2021.01.21.20.04.43; Thu, 21 Jan 2021 20:05:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=nda6mIGL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726794AbhAVECi (ORCPT + 99 others); Thu, 21 Jan 2021 23:02:38 -0500 Received: from a1.mail.mailgun.net ([198.61.254.60]:47035 "EHLO a1.mail.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726711AbhAVECd (ORCPT ); Thu, 21 Jan 2021 23:02:33 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1611288132; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=eanmwdBiHTkc3FQfzz+OzW0CKv0pDb17uFWWX2u0Sow=; b=nda6mIGLcY6NpiucLcOLWDk25F1J8q7hTtYwylOiME5CIgY1qN90hQIsNadaJ21rOikuzwji 1fqDqddxiawRwTjEwvH1j4DVKurcPeWA9rw4+sG+y56XM1+GMP2YV6OoJO2QVM5/Gnsx6TMN CZ053EVUCRZ4XusR3yEI4WKWLKo= X-Mailgun-Sending-Ip: 198.61.254.60 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n04.prod.us-east-1.postgun.com with SMTP id 600a4e2a2c36b2106d36497e (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Fri, 22 Jan 2021 04:01:46 GMT Sender: wcheng=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 0EDF7C43461; Fri, 22 Jan 2021 04:01:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id 1B850C433C6; Fri, 22 Jan 2021 04:01:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 1B850C433C6 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: balbi@kernel.org, gregkh@linuxfoundation.org, robh+dt@kernel.org, agross@kernel.org, bjorn.andersson@linaro.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, peter.chen@nxp.com, jackp@codeaurora.org, Wesley Cheng Subject: [PATCH v6 1/4] usb: gadget: udc: core: Introduce check_config to verify USB configuration Date: Thu, 21 Jan 2021 20:01:37 -0800 Message-Id: <1611288100-31118-2-git-send-email-wcheng@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1611288100-31118-1-git-send-email-wcheng@codeaurora.org> References: <1611288100-31118-1-git-send-email-wcheng@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some UDCs may have constraints on how many high bandwidth endpoints it can support in a certain configuration. This API allows for the composite driver to pass down the total number of endpoints to the UDC so it can verify it has the required resources to support the configuration. Signed-off-by: Wesley Cheng --- drivers/usb/gadget/udc/core.c | 9 +++++++++ include/linux/usb/gadget.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 4173acd..469962f 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -1003,6 +1003,15 @@ int usb_gadget_ep_match_desc(struct usb_gadget *gadget, } EXPORT_SYMBOL_GPL(usb_gadget_ep_match_desc); +int usb_gadget_check_config(struct usb_gadget *gadget, unsigned long ep_map) +{ + if (!gadget->ops->check_config) + return 0; + + return gadget->ops->check_config(gadget, ep_map); +} +EXPORT_SYMBOL_GPL(usb_gadget_check_config); + /* ------------------------------------------------------------------------- */ static void usb_gadget_state_work(struct work_struct *work) diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index ee04ef2..8393fa8 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -328,6 +328,7 @@ struct usb_gadget_ops { struct usb_ep *(*match_ep)(struct usb_gadget *, struct usb_endpoint_descriptor *, struct usb_ss_ep_comp_descriptor *); + int (*check_config)(struct usb_gadget *gadget, unsigned long ep_map); }; /** @@ -607,6 +608,7 @@ int usb_gadget_connect(struct usb_gadget *gadget); int usb_gadget_disconnect(struct usb_gadget *gadget); int usb_gadget_deactivate(struct usb_gadget *gadget); int usb_gadget_activate(struct usb_gadget *gadget); +int usb_gadget_check_config(struct usb_gadget *gadget, unsigned long ep_map); #else static inline int usb_gadget_frame_number(struct usb_gadget *gadget) { return 0; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project