From nobody Wed Nov 16 10:58:42 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NC0Qp2GxBz4hZSP; Wed, 16 Nov 2022 10:58:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NC0Qp1dbVz44Wy; Wed, 16 Nov 2022 10:58:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1668596322; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p53LQxKdZgPFmeJzi8qLF78JXr+ZfS5cHf2Qz8DLDDk=; b=ysGC1735ac5TynQbJxmJtMLevjetF6Vr8TTut8cL6lPzk9i3AeVofmzAkAyRC16WHy0Tta AQGpKVhcHtPs66U2robzvFm4u+dzWFtM3QNyUkqjL1SrbaZ7Odb7M1960zHYRJsiFM8kS7 PIKc7TTqHglZi2CV0DXyfHSm3dGUKW5xSQCBkB4OjxSRCxWOlaWzej0fNLyysf3RQ2Yftd VHZsokG3q93fpzLCC3RHEk6A6XxJ8eIhvsOG6loszp7AwEkFqqqhVzK7xXI5ygzYoW9b8O /L5Qi3m7DCoXuGdyzL8QZf3r+BwcUVSrD9Nk2jna8T/0ugpTrADeLi5B1UBp/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1668596322; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p53LQxKdZgPFmeJzi8qLF78JXr+ZfS5cHf2Qz8DLDDk=; b=P+dloILzIYhkCsAYbtT/yXAQxgOEL2HUMcz5tXfDdDISBIc/2JimN5/FSVbJqEdULJdiHk 0GIeqCff1WRjH3qozoqMtX2VuNsswg1fxJtb5gYTzHXy7WPVoEQhebC3uXtWe3T0o4lz5p xbeYg0HDJjAEG+EgZsqRYHrgWgIEzUdWCQ2TF54xIBi+enoQqLMgMRBXWLzFILhFH0DNB3 7VldMOvb5h6oxHw+S5APJCTY4yeYuqbQHJZBQ4TQOQl8jqdktHWmhjx+i07KRcNp7sfL+s mLeuGq76XysEGyM75X/BIjBN6ztCANMT41cZsx/PBZ/TBCUBj2uRV0qTSzjSpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1668596322; a=rsa-sha256; cv=none; b=pdt8RmCMLQktKCGfy71qFShte3AjMVk76gWUApivRnupIah82KtDIpKvRgYc0zNMNvFqNm h3DUH2TLX/7dXuljL8x3HHyjvZu5O/lMrwLAeKk2qjy4OlkryINZGAGhFMCKVe4kO7vnC1 pPdIh22GFFr2S4ubM10qZFtoRMIX2kZsUi+zLoNoXrtyNwhaq3q8SHk6u2NuB48b2baWaj BgnrhC69rbeiMSfFizuuFQkXnd/yLF0WtbSPH5l8sESsNLp5aW4Ki7vgAKV8GoQ7d27dUB zpd+g0P09qjHKxgdbeDuJ5WBvcCGoK5/aSaXJWDxCIaiwM6Sl2qJYwIZsi8Tng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NC0Qp0hsCzyjR; Wed, 16 Nov 2022 10:58:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2AGAwgQZ094746; Wed, 16 Nov 2022 10:58:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2AGAwgSs094745; Wed, 16 Nov 2022 10:58:42 GMT (envelope-from git) Date: Wed, 16 Nov 2022 10:58:42 GMT Message-Id: <202211161058.2AGAwgSs094745@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: d47f5f2886f0 - main - usb/dwc3: Only force USB2 based on the PHY register and IP version List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d47f5f2886f082281ae6f97dd5fe9440ad31e6d5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=d47f5f2886f082281ae6f97dd5fe9440ad31e6d5 commit d47f5f2886f082281ae6f97dd5fe9440ad31e6d5 Author: Emmanuel Vadot AuthorDate: 2022-11-15 12:54:49 +0000 Commit: Emmanuel Vadot CommitDate: 2022-11-16 10:58:32 +0000 usb/dwc3: Only force USB2 based on the PHY register and IP version We shouldn't force USB2 only based on if we have an external PHY. The internal PHY register tell us what link speed we can acheive and we need to force USB2 only if it cannot do USB3. This is only available after revision 0x290A of the dwc3 IP. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D37394 Fixed: 1331c0f44b6a ("Add support for RockChip RK356X to DWC3 driver.") Sponsored by: Beckhoff Automation GmbH & Co. KG --- sys/dev/usb/controller/dwc3.c | 19 +++++++++++++------ sys/dev/usb/controller/dwc3.h | 5 +++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/sys/dev/usb/controller/dwc3.c b/sys/dev/usb/controller/dwc3.c index 40405927685e..d5e3b3f50a9d 100644 --- a/sys/dev/usb/controller/dwc3.c +++ b/sys/dev/usb/controller/dwc3.c @@ -458,12 +458,19 @@ snps_dwc3_common_attach(device_t dev, bool is_fdt) error = phy_get_by_ofw_name(dev, node, "usb3-phy", &usb3_phy); if (error == 0 && usb3_phy != NULL) phy_enable(usb3_phy); - else { - reg = DWC3_READ(sc, DWC3_GUCTL1); - if (bootverbose) - device_printf(dev, "Forcing USB2 clock only\n"); - reg |= DWC3_GUCTL1_DEV_FORCE_20_CLK_FOR_30_CLK; - DWC3_WRITE(sc, DWC3_GUCTL1, reg); + if (sc->snpsversion == DWC3_IP_ID) { + if (sc->snpsrevision >= 0x290A) { + uint32_t hwparams3; + + hwparams3 = DWC3_READ(sc, DWC3_GHWPARAMS3); + if (DWC3_HWPARAMS3_SSPHY(hwparams3) == DWC3_HWPARAMS3_SSPHY_DISABLE) { + reg = DWC3_READ(sc, DWC3_GUCTL1); + if (bootverbose) + device_printf(dev, "Forcing USB2 clock only\n"); + reg |= DWC3_GUCTL1_DEV_FORCE_20_CLK_FOR_30_CLK; + DWC3_WRITE(sc, DWC3_GUCTL1, reg); + } + } } snps_dwc3_configure_phy(sc, node); skip_phys: diff --git a/sys/dev/usb/controller/dwc3.h b/sys/dev/usb/controller/dwc3.h index c69672072209..fd61d1129df3 100644 --- a/sys/dev/usb/controller/dwc3.h +++ b/sys/dev/usb/controller/dwc3.h @@ -110,6 +110,11 @@ #define DWC3_GUSB3PIPECTL0_DELAYP1TRANS (1 << 18) #define DWC3_GUSB3PIPECTL0_SUSPENDUSB3 (1 << 17) +#define DWC3_HWPARAMS3_SSPHY(x) (x & 0x3) +#define DWC3_HWPARAMS3_SSPHY_DISABLE 0 +#define DWC3_HWPARAMS3_SSPHY_GEN1 1 +#define DWC3_HWPARAMS3_SSPHY_GEN2 2 + #define DWC3_GTXFIFOSIZ(x) (0xc300 + 0x4 * (x)) #define DWC3_GRXFIFOSIZ(x) (0xc380 + 0x4 * (x)) #define DWC3_GEVNTADRLO0 0xc400