[{"id":3682756,"web_url":"http://patchwork.ozlabs.org/comment/3682756/","msgid":"<c2d737f0-a17e-44e4-8e07-53ce3fa0e543@cherry.de>","list_archive_url":null,"date":"2026-04-27T14:43:36","subject":"Re: [PATCH] rockchip: rk3576: Properly handle USB controller takeover\n from BootROM","submitter":{"id":88462,"url":"http://patchwork.ozlabs.org/api/people/88462/","name":"Quentin Schulz","email":"quentin.schulz@cherry.de"},"content":"Hi Alexey,\n\nOn 4/27/26 2:53 PM, Alexey Charkov wrote:\n> From: Anton Burticica <mouse@ya.ru>\n> \n> When booting via USB download mode (Maskrom), the BootROM leaves the\n> USB3OTG0 controller in an active state. U-Boot must properly reset\n> the controller before reinitializing it for fastboot or other USB\n> gadget functions.\n> \n> Without this change, USB gadget mode commands such as fastboot and ums\n> fail when U-Boot is loaded via Maskrom USB download because the\n> controller state is inconsistent.\n> \n> Signed-off-by: Anton Burticica <mouse@ya.ru>\n> [Removed unrelated changes, adjusted the commit description]\n> Signed-off-by: Alexey Charkov <alchark@flipper.net>\n> ---\n>   arch/arm/mach-rockchip/rk3576/rk3576.c | 18 ++++++++++++++++++\n>   1 file changed, 18 insertions(+)\n> \n> diff --git a/arch/arm/mach-rockchip/rk3576/rk3576.c b/arch/arm/mach-rockchip/rk3576/rk3576.c\n> index c17ba418ced5..84618ad5acb7 100644\n> --- a/arch/arm/mach-rockchip/rk3576/rk3576.c\n> +++ b/arch/arm/mach-rockchip/rk3576/rk3576.c\n> @@ -7,6 +7,8 @@\n>   \n>   #include <dm.h>\n>   #include <misc.h>\n> +#include <linux/bitops.h>\n> +#include <linux/delay.h>\n>   #include <asm/armv8/mmu.h>\n>   #include <asm/arch-rockchip/bootrom.h>\n>   #include <asm/arch-rockchip/hardware.h>\n> @@ -39,6 +41,10 @@\n>   #define USB_GRF_BASE\t\t0x2601E000\n>   #define USB3OTG0_CON1\t\t0x0030\n>   \n> +#define TOP_CRU_BASE\t\t0x27200000\n> +#define TOP_CRU_SOFTRST_CON47\t0x0abc\n> +#define SOFTRST47_ARESETN_USB3OTG0\tBIT(5)\n> +\n>   enum {\n>   \tBROM_BOOTSOURCE_FSPI0 = 3,\n>   \tBROM_BOOTSOURCE_FSPI1_M1 = 6,\n> @@ -189,6 +195,18 @@ int arch_cpu_init(void)\n>   \t */\n>   \twritel(0xffffff00, SYS_SGRF_BASE + SYS_SGRF_SOC_CON20);\n>   \n> +\t/* If the controller was left running by the boot ROM, reset it */\n> +\tif (read_brom_bootsource_id() == BROM_BOOTSOURCE_USB) {\n> +\t\t/* Assert USB3OTG0 reset */\n> +\t\twritel(RK_SETBITS(SOFTRST47_ARESETN_USB3OTG0),\n> +\t\t       TOP_CRU_BASE + TOP_CRU_SOFTRST_CON47);\n> +\t\tudelay(1000);\n> +\t\t/* De-assert USB3OTG0 reset */\n> +\t\twritel(RK_CLRBITS(SOFTRST47_ARESETN_USB3OTG0),\n> +\t\t       TOP_CRU_BASE + TOP_CRU_SOFTRST_CON47);\n> +\t\tudelay(1000);\n> +\t}\n> +\n\nUh... Wouldn't the issue rather be that the U-Boot driver doesn't \nactually reset the device?\n\nCan you try with\n\ndiff --git a/drivers/usb/dwc3/dwc3-generic.c \nb/drivers/usb/dwc3/dwc3-generic.c\nindex 22b9ef0b24e..1b7d845bc75 100644\n--- a/drivers/usb/dwc3/dwc3-generic.c\n+++ b/drivers/usb/dwc3/dwc3-generic.c\n@@ -604,6 +604,9 @@ static int dwc3_glue_reset_init(struct udevice *dev,\n  \t\t * have slower sleep clocks so we'll play it safe.\n  \t\t */\n  \t\tudelay(500);\n+\t} else if (device_is_compatible(dev, \"rockchip,rk3576-dwc3\")) {\n+\t\treset_assert_bulk(&glue->resets);\n+\t\tudelay(1000);\n  \t}\n  \tret = reset_deassert_bulk(&glue->resets);\n  \tif (ret) {\n\nmaybe? Hunch is that every variant of this driver actually needs to do \nthis to avoid to rely on the device being out of reset already, but the \ndelay is likely silicon-implementation-specific? The driver in the Linux \nkernel doesn't actually assert it either before deasserting it, so who \nknows. Adding Marek in Cc.\n\nOtherwise, for sure we do not want to de-assert the signal in the rk3576 \nSoC C file, we don't know if the driver is even built and we should let \nit do it if need be.\n\nCheers,\nQuentin","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=cherry.de header.i=@cherry.de header.a=rsa-sha256\n header.s=selector1 header.b=kUkUoTaW;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=cherry.de","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=cherry.de header.i=@cherry.de header.b=\"kUkUoTaW\";\n\tdkim-atps=neutral","phobos.denx.de; dmarc=pass (p=quarantine dis=none)\n header.from=cherry.de","phobos.denx.de;\n spf=pass smtp.mailfrom=quentin.schulz@cherry.de","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=cherry.de;"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g45t23hVyz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 00:43:54 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 82ADC83C14;\n\tMon, 27 Apr 2026 16:43:44 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id BB6F683693; Mon, 27 Apr 2026 16:43:42 +0200 (CEST)","from PA4PR04CU001.outbound.protection.outlook.com\n (mail-francecentralazlp170130007.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c20a::7])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 9B63483693\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 16:43:40 +0200 (CEST)","from PA4PR04MB7743.eurprd04.prod.outlook.com (2603:10a6:102:b8::20)\n by PA1PR04MB10117.eurprd04.prod.outlook.com (2603:10a6:102:454::13)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr\n 2026 14:43:38 +0000","from PA4PR04MB7743.eurprd04.prod.outlook.com\n ([fe80::9a4e:252f:2fd:97b7]) by PA4PR04MB7743.eurprd04.prod.outlook.com\n ([fe80::9a4e:252f:2fd:97b7%6]) with mapi id 15.20.9846.016; Mon, 27 Apr 2026\n 14:43:38 +0000"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Tvsy/eCp8ZFLCuyd3g1+J8GCjVs06QUQyzAd62lXIyQxW9irlDpruCflogEfcv2tnRsZXZCpE9mq8AIQSJerNBIZ42UR0E1rr1EcHhd6LmDsNUud4xav1tn/X+OeUCI/WV4nQ08FgWx03BuWt+CvFBUOAiZ0BE4JpDuuFJknkxrD7tDtQ05xsnEV7imdISTFeUqo4FDF2V0lvYVhBK0wgNa/rhhb6ECSELmdwgTOL1u4cmumOcmLmgbK1iYFRHdIc/Sc90gb7v6IL/7kCX2TXenRrGQ7yjdRA4ySUv41/4/qmCwMCJKASGDN5xTzHS1IVoXOZAT89QUHZ/K3axWdTw==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=5WbdgS8PTzamevTSQl8Dnq4H/PBGqn4QYupQMJP8JBE=;\n b=APosCFQbYS4G4sY2yvkdpMkwsiOnAwn7WZkMW6vPj4KYLoaZ1Z0+WNmK/VBMDo6JIsNq0Agxzoz6OkUnwU3rIKEUaHox55YRecfDKODNieQyr69F4QymFaC16kt3CE0frtzfwy/sHdPuX8y5G27kRi6t5H+mwa1A0afVSyo9cYS3tk7kC/oTcN2KA9g+Nvkd+eudrtEXiOG7SMn4fB+0nt7uEJIeawv4H02gQbXw+nSJ8X3gKpT7tkQgjUE+ba4he38hBOuUKL83qX+MWUfN7MUr2QMtDoGvOI/mHcmCmkJpCUHw0KF7bFbGg/0PBaJjtXBYXaXzmwAX0JaE9K8c6A==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=cherry.de; dmarc=pass action=none header.from=cherry.de;\n dkim=pass header.d=cherry.de; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=cherry.de;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=5WbdgS8PTzamevTSQl8Dnq4H/PBGqn4QYupQMJP8JBE=;\n b=kUkUoTaWJ7C5/Tqdawr0OurTeAc9s5BTkQ13UVPSgYA+Zx3pmPmU6hAsmdnu5oKinXohZqhnFHO6VZHqaIvYfwn+GiPpX1Bg848bSoVqfpnnqk7xTF3VZ9kjq4BVlKC3p3G+HrMHvvxjo5rU/EaMmkWXXEoGHjZrXa4h1ejKMjc=","Message-ID":"<c2d737f0-a17e-44e4-8e07-53ce3fa0e543@cherry.de>","Date":"Mon, 27 Apr 2026 16:43:36 +0200","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] rockchip: rk3576: Properly handle USB controller takeover\n from BootROM","To":"Alexey Charkov <alchark@flipper.net>, u-boot@lists.denx.de","Cc":"Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>,\n Philipp Tomsich <philipp.tomsich@vrull.eu>,\n Kever Yang <kever.yang@rock-chips.com>, Jonas Karlman <jonas@kwiboo.se>,\n Anton Burticica <mouse@ya.ru>, Marek Vasut <marex@denx.de>","References":"<20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net>","Content-Language":"en-US","From":"Quentin Schulz <quentin.schulz@cherry.de>","In-Reply-To":"<20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-ClientProxiedBy":"VI1PR06CA0122.eurprd06.prod.outlook.com\n (2603:10a6:803:a0::15) To PA4PR04MB7743.eurprd04.prod.outlook.com\n (2603:10a6:102:b8::20)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"PA4PR04MB7743:EE_|PA1PR04MB10117:EE_","X-MS-Office365-Filtering-Correlation-Id":"5ba14ced-e6fc-4186-671f-08dea46b5e15","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|10070799003|376014|366016|1800799024|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info":"\n bmpPM+FVRbRYaC7gYKrpJWnsZI1N/rl0jwhsTi4FM4IMGJn/k4L4Iz8m94tmBUXJ1+xFpnJusAk+XzORKfZV/YjxE7omCcSlfWvwcV0WJQ2iu8/gmsITMvNwIe97StgCM/dDChg5IwLCBw3UFH3WLzTnT0Th+Z9/oLOCQElE+z3Jd9MVAhis6mYEmhnirgM5Mer2gOptyFkTFIDlIbyRRvIe3MfaxdyrSkwjHCxSYKO80wpmmVeByG+7VXLEMcSe+vrqOmnVoJQNZ52R/ZgQ86MKC8A4wixI2XowKvqQYw8iHKOUV7gXe+V/OdWIGre3/KE33AaBgSEDLOG6gXugOrVtqTSaY1/KA8jzxtIv2X+7Ukc15liqguRQaWPsXkr93R+Xe9L783BfBIgtMgPXJ9112C08bTTAATiKeliTq3FK/GOkm6DROZPP5sTOVm13cZWShlws6pFaaEq5wlDhxSDG608OjClrRj2m2NFy9Gumqsm2FIKAeAFEAgYX1T6tzoTnr1CV/k/I40zmRFOUiZZ14pQ+fwSGbsuFCD5aPCGCXWfWeuLf1Jvzvu6sLIr4FEgXMXy5GUnYzHybJhGYegkb8pXX84I6BTOOpA//VTccdFaQkaaFAPNAmtXcXaST3OpE73PlZY1AO8vLMxSSFvIKjYfE16l1Td9xTuAyBgSrYCvGYI6mHmZNcz6FjtyC2UxLef0P/KfxZF4U1d5JmXhYNJGWgzG6fY1lO/bUB84=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:PA4PR04MB7743.eurprd04.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(10070799003)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?Gnrda0dFJfAXCu1rTwSinP3VDge0?=\n\t=?utf-8?q?70chcM1i1Dh7Yg/Rmf9FdOgS967R8H5ApJTm9/FXuUIB+KVBQDSujhaAoIPksh423?=\n\t=?utf-8?q?5EExrJWxqLPAJpKXG02o9eQyNeDKufoQnixuyxS+O2Vt+3xDn6bch/Nn8CT0ZjVbm?=\n\t=?utf-8?q?JMYHN4eJXoLDwpUPwmEMjr4MXnGxFWojRd5oJPcYMPNMaIRz5UV2trQycpTLS7vEN?=\n\t=?utf-8?q?k/KmHrd7eFw28QG87GMVIY4lAs9Rq+adj5/A/Zgy7yi9o6X3GeBGPNWeCofUR4hfE?=\n\t=?utf-8?q?3UqTMu0vnHzuFMj6OPKArTBb7G0Jx7EuS91A0K9LesxDprW4agVDwd5VQSfi/SK2G?=\n\t=?utf-8?q?Vqql19itJkqFNQvKHKb6qWepS9ruyAjwU5vY0qNiH7uIzsCHRPzQoduHypAAnZPwb?=\n\t=?utf-8?q?yDbxaPF4KW8iVCUHucQXj1Aua/WQSSyi6Jat6ljtNEIkU4emeuj9wv4NN+XJJS0B6?=\n\t=?utf-8?q?zZRtqm4dCePqu59gsYtZASZq9xmy1fjgHFBl+3v/R9hRnAp+E0GlJVI5jPz24ioFg?=\n\t=?utf-8?q?AItK0zb3mMtUUNepAAtftyUQ0a8Tw6dOFFpQnmhYvSFcJ10t8+9A5WmyGQ2RCW8qL?=\n\t=?utf-8?q?R3+2ie6baTM7OLOGHN5ncl1o0V4AxV3/K6i6xhEoJlbx9YdrTdQC7YBmT+X+OLLXs?=\n\t=?utf-8?q?rbVAQJUNBsRnymD35CPeWEaOWQNaYxcVam5GTJ2KnGaZgoTOkcoGfYz3kEOsRrSIL?=\n\t=?utf-8?q?K4ziTx53FBG7As0WA19f3IkKba2Mp2I5jmwEAEljXX4Bw7ci9FIYhjobSPYWLQLtY?=\n\t=?utf-8?q?/FHJTbU2ZU/HnTso02+gwiSz2yKzUhC9jWyVNhzNk/d7Tkpv6bwmqbUx8HrdqRC8I?=\n\t=?utf-8?q?Bs5fxjTv8GqhKTdraT4OuRtWb/DMgu5X3vFXvXi7ug2FiyITLjDQsyU6BzqBT8nzn?=\n\t=?utf-8?q?ONtxmV83Zeo3cKYEA9c+z+KgUgh7gV7pTLHipCKL9A1oyhRVlljLjzvLHkE0Z0MXZ?=\n\t=?utf-8?q?SEqOo3rTcZvUoBTbjfYGKn4y51kshzFIdt4yhxrotsBNXFeodIT8CWYJ+A+AeA1po?=\n\t=?utf-8?q?k28q5NHbBFRxwibj5hBIuCtKIU54l7pGs2G3AUcahF25t6UnJEhkxDH9pZ6wpOMS7?=\n\t=?utf-8?q?1cmRJkPiqQyxJHNKxtRTNARS+Kdd4Z8RC/+3k+DZBFXHqb5Ht1eMhEjsioKGdCEeU?=\n\t=?utf-8?q?i+wa7wau1SfIq0xypts5pSJeJuIiBn8Ke2OjZv//BlUrx/NdA3R9rpKMvbt72rXwi?=\n\t=?utf-8?q?sRtTjymX9WR93IMiyvNrjigkkiNnI06DIv0KGdYMN3pMJbs1/Bh4PIdzN7UeZmBmm?=\n\t=?utf-8?q?jZuttH6WShDznfG67oQLtP6XU6BuBPXMUfLWLrkA0pmBZ1azouzqs+G2Az9RhNKA9?=\n\t=?utf-8?q?/eeUGsOesvHPB/yczLKeAVrttIggLhZOR+tfGhJXW22AHqTxlXA2NrpYqEjckr2Eb?=\n\t=?utf-8?q?iG9wtYNm07mjmWNEPYXFPbZbFhCeIlkT2wQeYn/FXkYMIVZfQzKhF+yQ8pBYPEwkx?=\n\t=?utf-8?q?X7qyOj71sNQvFi1W5UIsX85MsI6/i5200chCb1fmyGeTYQwpzfp5O41DzCo2gu8Pz?=\n\t=?utf-8?q?VkLHQYEJNqASmkjlwtl3HFmDJtBcJ77Am0+eY+qfKTyyoaXk/dGJs4EhnuyJy0sRZ?=\n\t=?utf-8?q?RxxC1zbX2FfrJpyfeY2w7UpF/ttXGYHRpfl02cmVCwQRP+b0PEcZ1doOvk0WSC4/+?=\n\t=?utf-8?q?CbUdcAbXn26gFYF0KK5dIyQutJL2621/GEFwpmaQByfiSi3Z6JVYZjN22Er9pZq1v?=\n\t=?utf-8?q?VD/4AHZ0c?=","X-OriginatorOrg":"cherry.de","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 5ba14ced-e6fc-4186-671f-08dea46b5e15","X-MS-Exchange-CrossTenant-AuthSource":"PA4PR04MB7743.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"27 Apr 2026 14:43:38.2486 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"5e0e1b52-21b5-4e7b-83bb-514ec460677e","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n vzlxTgckANO/NtDoxybYzLpIWA8BKtpLHg5b5Niqc43waCrx9OqDjobHoQXLbqdTke/IUeTyE37nnWrn/xZWLywQ/Uu5WHvrznVU3PdpY5U=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PA1PR04MB10117","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"}},{"id":3682829,"web_url":"http://patchwork.ozlabs.org/comment/3682829/","msgid":"<CAKTNdwGo434ShEsP=e=uUAbJzVxfQPPfNPeTxOOqwbuoCyzRjw@mail.gmail.com>","list_archive_url":null,"date":"2026-04-27T16:44:02","subject":"Re: [PATCH] rockchip: rk3576: Properly handle USB controller takeover\n from BootROM","submitter":{"id":92845,"url":"http://patchwork.ozlabs.org/api/people/92845/","name":"Alexey Charkov","email":"alchark@flipper.net"},"content":"Hi Quentin,\n\nOn Mon, Apr 27, 2026 at 6:43 PM Quentin Schulz <quentin.schulz@cherry.de> wrote:\n>\n> Hi Alexey,\n>\n> On 4/27/26 2:53 PM, Alexey Charkov wrote:\n> > From: Anton Burticica <mouse@ya.ru>\n> >\n> > When booting via USB download mode (Maskrom), the BootROM leaves the\n> > USB3OTG0 controller in an active state. U-Boot must properly reset\n> > the controller before reinitializing it for fastboot or other USB\n> > gadget functions.\n> >\n> > Without this change, USB gadget mode commands such as fastboot and ums\n> > fail when U-Boot is loaded via Maskrom USB download because the\n> > controller state is inconsistent.\n> >\n> > Signed-off-by: Anton Burticica <mouse@ya.ru>\n> > [Removed unrelated changes, adjusted the commit description]\n> > Signed-off-by: Alexey Charkov <alchark@flipper.net>\n> > ---\n> >   arch/arm/mach-rockchip/rk3576/rk3576.c | 18 ++++++++++++++++++\n> >   1 file changed, 18 insertions(+)\n> >\n> > diff --git a/arch/arm/mach-rockchip/rk3576/rk3576.c b/arch/arm/mach-rockchip/rk3576/rk3576.c\n> > index c17ba418ced5..84618ad5acb7 100644\n> > --- a/arch/arm/mach-rockchip/rk3576/rk3576.c\n> > +++ b/arch/arm/mach-rockchip/rk3576/rk3576.c\n> > @@ -7,6 +7,8 @@\n> >\n> >   #include <dm.h>\n> >   #include <misc.h>\n> > +#include <linux/bitops.h>\n> > +#include <linux/delay.h>\n> >   #include <asm/armv8/mmu.h>\n> >   #include <asm/arch-rockchip/bootrom.h>\n> >   #include <asm/arch-rockchip/hardware.h>\n> > @@ -39,6 +41,10 @@\n> >   #define USB_GRF_BASE                0x2601E000\n> >   #define USB3OTG0_CON1               0x0030\n> >\n> > +#define TOP_CRU_BASE         0x27200000\n> > +#define TOP_CRU_SOFTRST_CON47        0x0abc\n> > +#define SOFTRST47_ARESETN_USB3OTG0   BIT(5)\n> > +\n> >   enum {\n> >       BROM_BOOTSOURCE_FSPI0 = 3,\n> >       BROM_BOOTSOURCE_FSPI1_M1 = 6,\n> > @@ -189,6 +195,18 @@ int arch_cpu_init(void)\n> >        */\n> >       writel(0xffffff00, SYS_SGRF_BASE + SYS_SGRF_SOC_CON20);\n> >\n> > +     /* If the controller was left running by the boot ROM, reset it */\n> > +     if (read_brom_bootsource_id() == BROM_BOOTSOURCE_USB) {\n> > +             /* Assert USB3OTG0 reset */\n> > +             writel(RK_SETBITS(SOFTRST47_ARESETN_USB3OTG0),\n> > +                    TOP_CRU_BASE + TOP_CRU_SOFTRST_CON47);\n> > +             udelay(1000);\n> > +             /* De-assert USB3OTG0 reset */\n> > +             writel(RK_CLRBITS(SOFTRST47_ARESETN_USB3OTG0),\n> > +                    TOP_CRU_BASE + TOP_CRU_SOFTRST_CON47);\n> > +             udelay(1000);\n> > +     }\n> > +\n>\n> Uh... Wouldn't the issue rather be that the U-Boot driver doesn't\n> actually reset the device?\n>\n> Can you try with\n>\n> diff --git a/drivers/usb/dwc3/dwc3-generic.c\n> b/drivers/usb/dwc3/dwc3-generic.c\n> index 22b9ef0b24e..1b7d845bc75 100644\n> --- a/drivers/usb/dwc3/dwc3-generic.c\n> +++ b/drivers/usb/dwc3/dwc3-generic.c\n> @@ -604,6 +604,9 @@ static int dwc3_glue_reset_init(struct udevice *dev,\n>                  * have slower sleep clocks so we'll play it safe.\n>                  */\n>                 udelay(500);\n> +       } else if (device_is_compatible(dev, \"rockchip,rk3576-dwc3\")) {\n> +               reset_assert_bulk(&glue->resets);\n> +               udelay(1000);\n>         }\n>         ret = reset_deassert_bulk(&glue->resets);\n>         if (ret) {\n>\n> maybe? Hunch is that every variant of this driver actually needs to do\n> this to avoid to rely on the device being out of reset already, but the\n> delay is likely silicon-implementation-specific? The driver in the Linux\n> kernel doesn't actually assert it either before deasserting it, so who\n> knows. Adding Marek in Cc.\n\nThis snippet doesn't work unfortunately, I'm getting the following\n(the same result as without any patches):\n\n=> ums 0 mmc 0\nUMS: LUN 0, dev mmc 0, hwpart 0, sector 0x0, count 0x3a63e00\nrockchip_udphy phy@2b010000: cmn ana lcpll lock timeout\nrockchip_udphy phy@2b010000: failed to init usbdp combophy\nrockchip_udphy phy@2b010000: PHY: Failed to init phy@2b010000: -110.\nrockchip_udphy phy@2b010000: cmn ana lcpll lock timeout\nrockchip_udphy phy@2b010000: failed to init usbdp combophy\nrockchip_udphy phy@2b010000: PHY: Failed to init phy@2b010000: -110.\nNo USB device found\nCouldn't init USB controller.\n\n> Otherwise, for sure we do not want to de-assert the signal in the rk3576\n> SoC C file, we don't know if the driver is even built and we should let\n> it do it if need be.\n\nIndeed, dropping the de-assertion (or rather leaving it to the driver)\nstill gets it to work properly, thanks!\n\nBest regards,\nAlexey","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=flipper.net header.i=@flipper.net header.a=rsa-sha256\n header.s=google header.b=MoZV5GJX;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=flipper.net","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=flipper.net header.i=@flipper.net header.b=\"MoZV5GJX\";\n\tdkim-atps=neutral","phobos.denx.de; dmarc=pass (p=quarantine dis=none)\n header.from=flipper.net","phobos.denx.de;\n spf=pass smtp.mailfrom=alchark@flipper.net"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g48Y33ztrz1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 02:44:23 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 21A9183BC4;\n\tMon, 27 Apr 2026 18:44:20 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 1114683BC4; Mon, 27 Apr 2026 18:44:18 +0200 (CEST)","from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com\n [IPv6:2a00:1450:4864:20::52c])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id B9C1B83AA9\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 18:44:15 +0200 (CEST)","by mail-ed1-x52c.google.com with SMTP id\n 4fb4d7f45d1cf-678a1642a81so5346785a12.0\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 09:44:15 -0700 (PDT)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; t=1777308255; cv=none;\n d=google.com; s=arc-20240605;\n b=Qi7h3/6BXOGX1Oy8JM9vaoOBGncKbeIslt8vpAs7F88MxS0sVvtasS5JndsNiNKtF0\n J2jmywUcK3xYmRaozPvzAJSYl2kG+3TDdFNuWycMXrX+0dL1HMooYNG6vD6IUhxlULtb\n aC9eAuY9z7F9AhHcGYFPrPv60M2Em6M5i1sFxbICQmwNFZqiXh7h2OytIZXY1yFY3L7J\n xCcVOuont6Zou3NjRpaE+4dcPywcd2Rklsgv3sUAorfHt6WhQr1Lv51aZVHvUnNqSKbl\n qloKk5UeIl4YdDLjPtiYgzCLzvbdBfusenvGfyf09TXwDlRvOapxgontT4kuQimSLJ6/\n 3M6Q==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=IcMOk0bQs3fFZ2f1sxpPzneKF9uvZiSLfYZax3BRaX0=;\n fh=+e7v11kZUJPEr6vVUwChYaU7WaWjk8k8IRERu/pygqg=;\n b=iItYbIcB12hyh++Vn5RaF5oA5Bdj3rTNKjjY8xO9f84SOOd50N9GFgP797IqVTh15E\n 8NrW8DLxUDkzDTDRk3cawrZ24qqol/pgXbx3Cj1ACx1DrFrjcq+trQtoWxmgKDmsHwGz\n zhokQqaOTO/QGzdI8tIIIqmRUpdFgFEC7KCSsS9cXzkYAHitVLUnGca1auzSMvxAoRSf\n +2vEJRz1uFqpFWApjeV5OBcNj4B7z2BEecS3zZpB9tgHbkamUFAcbMe0BpGMGRpLbixl\n 7KkHeIXk9dvpsPbEzSl6y/TL1xSczYpW2cjHqie2n7x3BBcAdThWBgkOLKarSSyxabrd\n nZaA==; darn=lists.denx.de","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=flipper.net; s=google; t=1777308255; x=1777913055; darn=lists.denx.de;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=IcMOk0bQs3fFZ2f1sxpPzneKF9uvZiSLfYZax3BRaX0=;\n b=MoZV5GJX+qS4WKhQQXBsgRolA0A9PijimAqBVOzjFmV0GwHFsSiUGatOOPG3w1zQVh\n pb8zYBfAcvGe4b1huiyr5lyWNy3xQYrfG5rG1zy83Mm2Sx9eCGp1W+36nKPKWhSCnvYV\n 9v11o5y9G1xI6+YJztJQsNT5gh9VlNmXAPXa3NJL8vhTiJxC2kjXkNL8b36MANGUBdms\n c5/ZlBZW2MIPdiGGVkZLxY42SZpKgJCzwVdTV1ioKHrHmSsEDOEzrar57ptQeuDgmpoB\n xzy/f7MD+X/WPdb5jrtRObTC3YdpcyJdmBUE15pXtreeBcp5MJcUoIMR99cJlyEoCKNR\n vsng==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777308255; x=1777913055;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=IcMOk0bQs3fFZ2f1sxpPzneKF9uvZiSLfYZax3BRaX0=;\n b=Ab3bkqBCdhaejFGWOn9H/Z1VSJ9gnVnP9joVvUjhsFqAwJBMySnta++XY7Iekrf+9m\n HNNLIB4X/52O757Ardn1+8ZCwB5cnqMHLFegrQH1xZZzdlRvO7A4TP1nx/prRmmilUhD\n BR8LQev7mOj6vW6y5C63E613bOIsFnM1AuxinCKrsagV4JM8fDDygzjLgzY/7uMxs9ng\n TXFC3jNYZi9b7EmWi7sdnz+3Rjw59kFLlxxpkMAF0upz//iEPr5+GvlukyUZ3/yo2b3C\n DV4nko2Pth4UKMw3MTwLxFIUjxpv79beIboB8N8e8acIyVX0Q9gAHgOqOqcNagKWvPry\n wPbQ==","X-Gm-Message-State":"AOJu0Yw1DTXydXJMy7yQS6ihtoB7I0IuQkhGSYR/TqSbL4ZtZ26FL/Q0\n uSlGYvCFkXePvZbxFye7zXSk20ObslrBw1hNvGqt9oob8wGSTPuZv3sK2XKeBMXeioNbfKqEZL1\n hz7GNvI0RrRGwf8gIJHM/yWImTyutk5l4xnLDS522EQ==","X-Gm-Gg":"AeBDieujQ/tWhDJykkH5KFXz8TOTiqeC/S0llmgAXPWqpqkiP+4dMOGOalaZ/1e+XP6\n FBY2UemKA04YOIM3RmKvizI+9rIqg7Pct9/Dw2dvGezh9aNuE5IdJLOsQr04sqYg/sSthvSsTZE\n 9NWwBYVZH3HWd6XdIwZriVS8nSNR/6VVcnJHrKwnLqH+IeGG/fnJvWaWJ+hw8JocMQKSE6/bnlc\n jUs2+qym3QihH9qA7DrptiUEcoFs75No7afxWmUNxD5Ylh9T8hNm7wbpMOXVIzuFav804vfXq0b\n K65EiIi6spJFT9F5VQ==","X-Received":"by 2002:a17:907:7213:b0:bae:5939:e5c8 with SMTP id\n a640c23a62f3a-bae5939e60cmr602879566b.36.1777308254913; Mon, 27 Apr 2026\n 09:44:14 -0700 (PDT)","MIME-Version":"1.0","References":"<20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net>\n <c2d737f0-a17e-44e4-8e07-53ce3fa0e543@cherry.de>","In-Reply-To":"<c2d737f0-a17e-44e4-8e07-53ce3fa0e543@cherry.de>","From":"Alexey Charkov <alchark@flipper.net>","Date":"Mon, 27 Apr 2026 20:44:02 +0400","X-Gm-Features":"AVHnY4IqH_CjNPXihM07AGICUUu0-nhlL_GyR0GkFCbv7o3gg7xNoABv4SuKJoc","Message-ID":"\n <CAKTNdwGo434ShEsP=e=uUAbJzVxfQPPfNPeTxOOqwbuoCyzRjw@mail.gmail.com>","Subject":"Re: [PATCH] rockchip: rk3576: Properly handle USB controller takeover\n from BootROM","To":"Quentin Schulz <quentin.schulz@cherry.de>","Cc":"u-boot@lists.denx.de, Tom Rini <trini@konsulko.com>,\n Simon Glass <sjg@chromium.org>, Philipp Tomsich <philipp.tomsich@vrull.eu>,\n Kever Yang <kever.yang@rock-chips.com>, Jonas Karlman <jonas@kwiboo.se>,\n Anton Burticica <mouse@ya.ru>, Marek Vasut <marex@denx.de>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"}}]