{"id":2228830,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2228830/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.1/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net>","date":"2026-04-27T12:53:22","name":"rockchip: rk3576: Properly handle USB controller takeover from BootROM","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"223da595ef91373dcf7d4c93bda3b8d8da5a70ce","submitter":{"id":92845,"url":"http://patchwork.ozlabs.org/api/1.1/people/92845/?format=json","name":"Alexey Charkov","email":"alchark@flipper.net"},"delegate":{"id":93623,"url":"http://patchwork.ozlabs.org/api/1.1/users/93623/?format=json","username":"kevery","first_name":"Kever","last_name":"Yang","email":"ykai007@gmail.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net/mbox/","series":[{"id":501643,"url":"http://patchwork.ozlabs.org/api/1.1/series/501643/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=501643","date":"2026-04-27T12:53:22","name":"rockchip: rk3576: Properly handle USB controller takeover from BootROM","version":1,"mbox":"http://patchwork.ozlabs.org/series/501643/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2228830/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2228830/checks/","tags":{},"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=mldP7OtF;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; 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=\"mldP7OtF\";\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 [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g43R26XJMz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 22:53:50 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id E0BA283693;\n\tMon, 27 Apr 2026 14:53:46 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id EDB5E83AA9; Mon, 27 Apr 2026 14:53:44 +0200 (CEST)","from mail-wr1-x435.google.com (mail-wr1-x435.google.com\n [IPv6:2a00:1450:4864:20::435])\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 CE68880433\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 14:53:42 +0200 (CEST)","by mail-wr1-x435.google.com with SMTP id\n ffacd0b85a97d-43cff5dafc3so8194320f8f.1\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 05:53:42 -0700 (PDT)","from alchark-surface.localdomain (bba-86-98-192-109.alshamil.net.ae.\n [86.98.192.109]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43fe4e3a7b4sm74890468f8f.22.2026.04.27.05.53.39\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 27 Apr 2026 05:53:41 -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","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=flipper.net; s=google; t=1777294422; x=1777899222; darn=lists.denx.de;\n h=cc:to:message-id:content-transfer-encoding:mime-version:subject\n :date:from:from:to:cc:subject:date:message-id:reply-to;\n bh=1NGtbkZOvJd4iwTIDW3/TB+bnqplu5MnmlgFpLTkS4A=;\n b=mldP7OtFZFDcTm+3wC+PwMIFzTk8ATgwIXgoKje4yBBRvAyt5furIDsc/awekgMH7t\n uDdGNre2O+huR4HBFNbIr3PqtgBQDjedADwG79eyYo+2IBey45wy2Zhjlm6liMXBtAZQ\n /NGkWUJ4tSYxoITs1tjAC5RQaLkYkFjbVFYHdjd3C0uhk2taWZYT6YyGfRpO2ir/8ncJ\n wVRUJBTUNhK1xszrj4PJ+Ge/2WPuGbTlxzCaG2c6LfOy62h6Q4D0DJIHdImpkblfugSX\n Sj/2ZiJ5mVoMC0Ev7pXnA8p2ZgiaKgclIfgBhnYN0gwr7tPCCNOR9Y3vIUGfFb4nsYqz\n rA0A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777294422; x=1777899222;\n h=cc:to:message-id:content-transfer-encoding:mime-version:subject\n :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=1NGtbkZOvJd4iwTIDW3/TB+bnqplu5MnmlgFpLTkS4A=;\n b=CcuKweblTUucjWxy0D8NZrGfv5aRyVYmWYEseAQqSyz9tHqisBX6w8mmKNbWJWrMRR\n HXtAe0EVRQkguF/ddia+vaargdCHvSNdpAnhF/wjtQPctzKhLDJf4QoQ22tWrE1ANWcS\n Z/sZrU+wbXL3zDORA0c+pjDHbxn7VMjzX0AiS1+OHS3RDgq2Cv6BK2Xt9EAFYHAheITc\n 9FwtDfq6CfJBksUxJ0rTYFeKrSu4TSMpeBo4ugtGrTAWPrUb7DwKUsc/WUFgz9EUvHGR\n maCtYUxtFLQfJ/BpqX5wDSUFK6suj3Cg7x5hzPA8FKZFL9DQdFHoH7WvaqiyM0QWBq6w\n RPQw==","X-Gm-Message-State":"AOJu0Yx2H9YBrkrdmIisUG6r1++F6f6eYkrK7RGWeiHgqB3hhOjBAjub\n 3eAicjVq/6CDmDEFU5m+5O633zujE2pnJi1S88HjjMfoYX38+3HW4YOrKeDmaGT+oc4Uctca52o\n LQwH2","X-Gm-Gg":"AeBDietRoImOjpFVUNJ4j+T3iAogBq5y0yx3K/iG3Dhwfew2avwP5ABBSvQgUpMRZUX\n FXiRCrrI+fO5fzsApsAfqm/cKbP4Bz09aibCLb8W8sVleWuMNqvEpfx9zecA057EH3akfDc/m+L\n 72x4hviryNYogZv/q+VuAfQpDv8YS5JOgdlQ/ALFhYfWpEoXRioywCJ18ebD0yDwYpyX8n5ZIaM\n iGWXRFASpNdOpknDb7rHRmA71GKti5ghnuhh+nJ17NszaoeFXcyIxtky9A2Yqx2ophcY/x3/v7o\n XD7D4yJSBB02EZwlz/GAtK1KNFOhSgzqlXVTU/gi3DxK4Ii8udklcdSOP2j+hll32O18GhZHWl4\n P8SL92Q07rFeD/n/1C+GtDVNmQt+/KnKc94vXx0gIqoXjCuAZ0QsGlQGZekWMIUrZgcx1VV7PLc\n DhpmIfOJOV7bQ7zZj52pl5tOrPBA2RAyFOB9/RJa59jwc6xmqB8M6jZ72ujnhoT4cAwZG6jvsNs\n m/VZZe+4mKdrS7m","X-Received":"by 2002:a05:6000:40cb:b0:43e:aa43:243 with SMTP id\n ffacd0b85a97d-43fe3e24eaamr68659859f8f.43.1777294421784;\n Mon, 27 Apr 2026 05:53:41 -0700 (PDT)","From":"Alexey Charkov <alchark@flipper.net>","Date":"Mon, 27 Apr 2026 16:53:22 +0400","Subject":"[PATCH] rockchip: rk3576: Properly handle USB controller takeover\n from BootROM","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260427-rk3576-usb-gadget-v1-1-982fd1de08db@flipper.net>","X-B4-Tracking":"v=1; b=H4sIAEFc72kC/x3MQQ5AMBBA0avIrE1SQytcRSzQaU0kSItIxN01l\n m/x/wORg3CENnsg8CVRtjWhyDOY5mH1jGKTgRQZVVGNYSl1bfCMI/rBej6wcUZpamxZEEPq9sB\n O7v/Z9e/7AcxX/jVjAAAA","X-Change-ID":"20260427-rk3576-usb-gadget-9f60529d312e","To":"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>, Alexey Charkov <alchark@flipper.net>","X-Mailer":"b4 0.14.3","X-Developer-Signature":"v=1; a=openpgp-sha256; l=2259; i=alchark@flipper.net;\n h=from:subject:message-id; bh=x5QZoKCT7SF4HRdQNrsHLyrK41+s/8Dz9gNQg9SVD8Y=;\n b=owGbwMvMwCW2adGNfoHIK0sZT6slMWS+jwn4VXC/KNSw8+GnOKFK/nbj0GnHo/vdpfqOJ2ibe\n Wc+dTvXMZGFQYyLwVJMkWXutyW2U434Zu3y8PgKM4eVCWSItEgDAxCwMPDlJuaVGukY6ZlqG+oZ\n GukY6xgxcHEKwFT/cWb4H8Q+I2vLvFdF3xYLyc7hKHupn2FW13UiInT1/fBY9f9czgz/NN7MnB5\n eM0nmi30Rx2728/MMrs/OXFnFyy0r+ld7r1QHHwA=","X-Developer-Key":"i=alchark@flipper.net; a=openpgp;\n fpr=9DF6A43D95320E9ABA4848F5B2A2D88F1059D4A5","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"},"content":"From: Anton Burticica <mouse@ya.ru>\n\nWhen booting via USB download mode (Maskrom), the BootROM leaves the\nUSB3OTG0 controller in an active state. U-Boot must properly reset\nthe controller before reinitializing it for fastboot or other USB\ngadget functions.\n\nWithout this change, USB gadget mode commands such as fastboot and ums\nfail when U-Boot is loaded via Maskrom USB download because the\ncontroller state is inconsistent.\n\nSigned-off-by: Anton Burticica <mouse@ya.ru>\n[Removed unrelated changes, adjusted the commit description]\nSigned-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\n---\nbase-commit: 9f61fd5b80a43ae20ba115e3a2933d47d720ab82\nchange-id: 20260427-rk3576-usb-gadget-9f60529d312e\n\nBest regards,","diff":"diff --git a/arch/arm/mach-rockchip/rk3576/rk3576.c b/arch/arm/mach-rockchip/rk3576/rk3576.c\nindex 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 \t/* Disable USB3OTG0 U3 port, later enabled by USBDP PHY driver */\n \twritel(0xffff0188, USB_GRF_BASE + USB3OTG0_CON1);\n \n","prefixes":[]}