From patchwork Wed Sep 16 13:25:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 1365308 X-Patchwork-Delegate: lukma@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=nhzNFRrN; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Bs0cT3bhQz9sSC for ; Wed, 16 Sep 2020 23:02:17 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7695B8238C; Wed, 16 Sep 2020 15:00:29 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="nhzNFRrN"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 48AF382385; Wed, 16 Sep 2020 15:00:17 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FORGED_SPF_HELO,MSGID_FROM_MTA_HEADER, SPF_HELO_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0625.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe1f::625]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CD61582376 for ; Wed, 16 Sep 2020 15:00:10 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=peng.fan@nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZXhAPZn9K3E3+wZwXS/l8LjMttiRL3xtUORwmfloyt1juftGnUTQsMi4VNwO2WYyjXw2lbiqkK9fm7X4fRj9FCdz9LjaR6JxHmo0ONNcOLlafTP7+LEQq7HPeJXyR0/CG9D0tiED4/SDGk+pMZy9oZ6JjcH/bbb87/3S7+P4Hnq8VP9c5N7QcFgk5iW6Cx71VCI+c+prwbEDpluyyO0G9Bf2g4gjPms/Oj9GKxy+ku3YzZPGlLVo1j5NwVxAg6+XWIvoAKVFam1QCS0+zeHpJz9c1HaQKS+abueRJteMv6c/ikWgTAeolG1KR1zSQ/05z0ekzn444KTqc9r1EK1WTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GGcY5fas4ZNkqB729gyR3dYTrLg8Czozk7FXquHkhms=; b=SA0HOGOb/6o7gnwejl7px7mgIgVW4qhp1W5+qoRI+ob+I24ghUZTJz4dIqdwgWBL3CHFFQ2uMbRtqYlWMaknxRb1pKnvVK+U7r6HbPEZ6rBWaMbSTI04+7ktfCydsKRf+UsGFxX3kCqF4bmbZUWMxVMzzwdLj6Bs/2aFwMNXZPNREvIhOBv4HqOUO/DuyqU2l1PGH89zrNioz34Cdrv8cb0TfiaEbM08Mt/JAWYyLgM+4+lzT4BztRSXTCjDK0qclo1s7MXhzTuST4Mpyw2A4DboqsywF+NwuvM1X8d+oK6UX1b5IlbUTG5sCVJ4VMyRyNNyRdhOde5AhTUq314rKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GGcY5fas4ZNkqB729gyR3dYTrLg8Czozk7FXquHkhms=; b=nhzNFRrNTRPt72m41UO3ZgdDEF7Z3Fwvzq2rOmj0XmvR+MK7JAdOcd0O9ExzPZ1JcjzkgYqKzsvNqFiK1k4k5GIBt73E4w5mJEX73zhwxtEn9p+daGMXTidpWrKcsVIO0JmKmaiOrVTY7VIG/CVxPv2eJspygUGUz6BDoDIqhEQ= Authentication-Results: denx.de; dkim=none (message not signed) header.d=none;denx.de; dmarc=none action=none header.from=nxp.com; Received: from DB6PR0402MB2760.eurprd04.prod.outlook.com (2603:10a6:4:a1::14) by DB6PR0401MB2373.eurprd04.prod.outlook.com (2603:10a6:4:4b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.18; Wed, 16 Sep 2020 13:00:09 +0000 Received: from DB6PR0402MB2760.eurprd04.prod.outlook.com ([fe80::39ff:13b4:4f28:1413]) by DB6PR0402MB2760.eurprd04.prod.outlook.com ([fe80::39ff:13b4:4f28:1413%10]) with mapi id 15.20.3370.019; Wed, 16 Sep 2020 13:00:09 +0000 From: peng.fan@nxp.com To: sbabic@denx.de, lukma@denx.de, marex@denx.de Cc: uboot-imx@nxp.com, u-boot@lists.denx.de, Li Jun , Ye Li , Peter Chen , "faqiang . zhu" , Peng Fan Subject: [PATCH 11/16] usb: fastboot: add super speed support Date: Wed, 16 Sep 2020 21:25:32 +0800 Message-Id: <20200916132537.8313-12-peng.fan@nxp.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200916132537.8313-1-peng.fan@nxp.com> References: <20200916132537.8313-1-peng.fan@nxp.com> X-ClientProxiedBy: SG2PR03CA0131.apcprd03.prod.outlook.com (2603:1096:4:91::35) To DB6PR0402MB2760.eurprd04.prod.outlook.com (2603:10a6:4:a1::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from linux-1xn6.ap.freescale.net (119.31.174.71) by SG2PR03CA0131.apcprd03.prod.outlook.com (2603:1096:4:91::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.5 via Frontend Transport; Wed, 16 Sep 2020 13:00:06 +0000 X-Mailer: git-send-email 2.28.0 X-Originating-IP: [119.31.174.71] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: bfec8661-3663-462c-9ea6-08d85a4070cc X-MS-TrafficTypeDiagnostic: DB6PR0401MB2373: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gY5y51FxktgoRROqr8RNANtZCsnqoO7SFRNdzD9vhTaeLenDkN4QQSLoFTojOTn8xb5DVDAX9PBWDwplJAxcwhVnRoQcTFPllSx9HOp8ogWIzgV79gtIXuS7sIpU+IPUj0wTYqGNxEXtffIGn0p/rbJcIeJWUwC4UvOs1UV6mDQtV+hnzNAzFUk3SJMryYyrA/Lu6rN8KHgz5UplT/kXaP8p9bfMxKfhwEqqoiWfrOLXTV4UYHna/bTyzLR+wiiGZzi8HZcsEfg7zeDPx2B7/hyykG8QvHn8hMZVyLPPBwntEW1WkMuGIPfW7xFIluSuNAdNtvCWXtYzL2dRCkHjgw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0402MB2760.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(366004)(376002)(136003)(39860400002)(396003)(54906003)(6666004)(9686003)(1076003)(6512007)(5660300002)(478600001)(52116002)(36756003)(6506007)(66946007)(26005)(6486002)(16526019)(186003)(956004)(316002)(66556008)(66476007)(2616005)(86362001)(83380400001)(8936002)(2906002)(4326008)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: wrdbR3kBmmFvCWqP0Cy31K/hA2P88k3JMIpPW2W2CjaS+14HlYDPmnOVg+uv2MIUi/6wol1yTvxrQDrlKzXin50vmkKhRmGiTIYBidmhwlQj+qdca4l/Sk4QyIMHvwA0Y6D8mgs7OJc0ktimVadL8wA3luv8hMhE71hF4mrvbhbY3FajaKGswdxkWMXoodxOp/UOQuGltWPwpQkiuQw6guVbjBWdD1FIvBNR43mrhy0UlRwesTETv/axz8KVdutaaLX+Qi/cwEEBsZ4qrffVj52M6ESjWdY4FJ8wQhwy+Z6pqEVoY2BwJ36pKJiU7upzpwrsZgzueAMSkJKj2h22830iZ1fWWUay4m6+cAEDIbg97jIJJUXovgUx3kOrcbADIrRWjeWjCh+utP/QUsV+aVbG/NWlk1TEkTwc+QyWl7e6iG3atbTSv6z09+MDjOfEfT3YRvfpuOodrTNBqvUYEAbnQJSYKaVuZEaO3SKHrzCD8iCsd/sYvqVXsTb2/SAN09KmAx35EYz8sM3+/9aK+iPaxybu/yw0pnvTQErEu50S96iZUZUja8yenCmeOvWdfyevqgxnMZ6GLJ7NlT4Dz6351m6y5i4jae6ghviG1Y8chJCDpSaL9WI7TOhsd9t/VsCnZs5mjlajdLJmojpjUQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfec8661-3663-462c-9ea6-08d85a4070cc X-MS-Exchange-CrossTenant-AuthSource: DB6PR0402MB2760.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2020 13:00:09.2159 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kYIkQast2GOdy8wK0j/oiBcaGLTt4ud7GMUfwgfo80cnjxTfveEeKMT9EYNVARclk3ejz3Y8T4jVVN60jQtvEQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2373 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean From: Li Jun Add super speed EP config. Reviewed-by: Ye Li Reviewed-by: Peter Chen Tested-by: faqiang.zhu Signed-off-by: Li Jun Signed-off-by: Peng Fan --- drivers/usb/gadget/f_fastboot.c | 47 ++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c index e330456390..c2abdd66a8 100644 --- a/drivers/usb/gadget/f_fastboot.c +++ b/drivers/usb/gadget/f_fastboot.c @@ -128,10 +128,45 @@ static struct usb_descriptor_header *fb_hs_function[] = { NULL, }; +/* Super speed */ +static struct usb_endpoint_descriptor ss_ep_in = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = USB_DIR_IN, + .bmAttributes = USB_ENDPOINT_XFER_BULK, + .wMaxPacketSize = cpu_to_le16(1024), +}; + +static struct usb_endpoint_descriptor ss_ep_out = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = USB_DIR_OUT, + .bmAttributes = USB_ENDPOINT_XFER_BULK, + .wMaxPacketSize = cpu_to_le16(1024), +}; + +static struct usb_ss_ep_comp_descriptor fb_ss_bulk_comp_desc = { + .bLength = sizeof(fb_ss_bulk_comp_desc), + .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, +}; + +static struct usb_descriptor_header *fb_ss_function[] = { + (struct usb_descriptor_header *)&interface_desc, + (struct usb_descriptor_header *)&ss_ep_in, + (struct usb_descriptor_header *)&fb_ss_bulk_comp_desc, + (struct usb_descriptor_header *)&ss_ep_out, + (struct usb_descriptor_header *)&fb_ss_bulk_comp_desc, + NULL, +}; + static struct usb_endpoint_descriptor * fb_ep_desc(struct usb_gadget *g, struct usb_endpoint_descriptor *fs, - struct usb_endpoint_descriptor *hs) + struct usb_endpoint_descriptor *hs, + struct usb_endpoint_descriptor *ss) { + if (gadget_is_superspeed(g) && g->speed >= USB_SPEED_SUPER) + return ss; + if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH) return hs; return fs; @@ -219,6 +254,12 @@ static int fastboot_bind(struct usb_configuration *c, struct usb_function *f) f->hs_descriptors = fb_hs_function; } + if (gadget_is_superspeed(gadget)) { + ss_ep_in.bEndpointAddress = fs_ep_in.bEndpointAddress; + ss_ep_out.bEndpointAddress = fs_ep_out.bEndpointAddress; + f->ss_descriptors = fb_ss_function; + } + s = env_get("serial#"); if (s) g_dnl_set_serialnumber((char *)s); @@ -283,7 +324,7 @@ static int fastboot_set_alt(struct usb_function *f, debug("%s: func: %s intf: %d alt: %d\n", __func__, f->name, interface, alt); - d = fb_ep_desc(gadget, &fs_ep_out, &hs_ep_out); + d = fb_ep_desc(gadget, &fs_ep_out, &hs_ep_out, &ss_ep_out); ret = usb_ep_enable(f_fb->out_ep, d); if (ret) { puts("failed to enable out ep\n"); @@ -298,7 +339,7 @@ static int fastboot_set_alt(struct usb_function *f, } f_fb->out_req->complete = rx_handler_command; - d = fb_ep_desc(gadget, &fs_ep_in, &hs_ep_in); + d = fb_ep_desc(gadget, &fs_ep_in, &hs_ep_in, &ss_ep_in); ret = usb_ep_enable(f_fb->in_ep, d); if (ret) { puts("failed to enable in ep\n");