From: Anders Roxell <anders.roxell@linaro.org>
To: u-boot@lists.u-boot-project.org
Cc: marek.vasut@mailbox.org, trini@konsulko.com,
ilias.apalodimas@linaro.org, michal.simek@amd.com, lukma@denx.de,
alchark@flipper.net, jerome.forissier@arm.com,
Jens Wiklander <jens.wiklander@linaro.org>,
Simon Glass <sjg@chromium.org>,
Anders Roxell <anders.roxell@linaro.org>,
Mattijs Korpershoek <mkorpershoek@kernel.org>
Subject: [PATCH v7 27/63] usb: dwc3: import from kernel v5.2
Date: Mon, 24 Aug 2026 17:26:58 +0200 [thread overview]
Message-ID: <20260824152734.159794-28-anders.roxell@linaro.org> (raw)
In-Reply-To: <20260824152734.159794-1-anders.roxell@linaro.org>
From: Jens Wiklander <jens.wiklander@linaro.org>
Sync Linux kernel dwc3 changes from v5.1 to v5.2.
The following files are preserved across the import:
Makefile Kconfig dwc3-meson-g12a.c dwc3-meson-gxl.c dwc3-omap.c
dwc3-uniphier.c dwc3-generic.h dwc3-generic.c dwc3-generic-sti.c
dwc3-layerscape.c ti_usb_phy.c
Skipping unused files:
debugfs.c drd.c dwc3-exynos.c dwc3-haps.c dwc3-imx8mp.c dwc3-keystone.c
dwc3-octeon.c dwc3-of-simple.c dwc3-pci.c dwc3-qcom.c dwc3-qcom-legacy.c
dwc3-rtk.c dwc3-st.c dwc3-xilinx.c host.c trace.c trace.h ulpi.c
Note that this is a raw import and doesn't build.
A fixup commit at the end of the series fixes that.
List of commits: git log --oneline v5.1..v5.2
Commits imported:
2e487d280525 usb: dwc3: Rename DWC3_DCTL_LPM_ERRATA
8d791929b2fb usb: dwc3: Fix default lpm_nyet_threshold value
dd24f9b604d3 usb: dwc3: debug: Print GET_STATUS(device) tracepoint
b873e2d0ea1e usb: dwc3: Do core validation early on probe
c729969b2b69 usb: dwc3: gadget: Set lpm_capable
41a91c606e7d usb: dwc3: move synchronize_irq() out of the spinlock protected block
75ecb9dd56a7 usb: dwc3: Free resource immediately after use
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
---
drivers/usb/dwc3/core.c | 18 +++++++++++-------
drivers/usb/dwc3/core.h | 3 +--
drivers/usb/dwc3/debug.h | 3 +++
drivers/usb/dwc3/gadget.c | 5 ++---
4 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index a1b126f90261..4aff1d8dbc4f 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -828,6 +828,7 @@ static void dwc3_set_incr_burst_type(struct dwc3 *dwc)
ret = device_property_read_u32_array(dev,
"snps,incr-burst-type-adjustment", vals, ntype);
if (ret) {
+ kfree(vals);
dev_err(dev, "Error to get property\n");
return;
}
@@ -846,6 +847,8 @@ static void dwc3_set_incr_burst_type(struct dwc3 *dwc)
incrx_mode = INCRX_BURST_MODE;
}
+ kfree(vals);
+
/* Enable Undefined Length INCR Burst and Enable INCRx Burst */
cfg &= ~DWC3_GSBUSCFG0_INCRBRST_MASK;
if (incrx_mode)
@@ -893,12 +896,6 @@ static int dwc3_core_init(struct dwc3 *dwc)
u32 reg;
int ret;
- if (!dwc3_core_is_valid(dwc)) {
- dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n");
- ret = -ENODEV;
- goto err0;
- }
-
/*
* Write Linux Version Code to our GUID register so it's easy to figure
* out which kernel version a bug was found.
@@ -1218,7 +1215,7 @@ static void dwc3_get_properties(struct dwc3 *dwc)
u8 tx_max_burst_prd;
/* default to highest possible threshold */
- lpm_nyet_threshold = 0xff;
+ lpm_nyet_threshold = 0xf;
/* default to -3.5dB de-emphasis */
tx_de_emphasis = 1;
@@ -1426,6 +1423,11 @@ static int dwc3_probe(struct platform_device *pdev)
dwc->regs = regs;
dwc->regs_size = resource_size(&dwc_res);
+ if (!dwc3_core_is_valid(dwc)) {
+ dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n");
+ return -ENODEV;
+ }
+
dwc3_get_properties(dwc);
dwc->reset = devm_reset_control_get_optional_shared(dev, NULL);
@@ -1600,6 +1602,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
spin_lock_irqsave(&dwc->lock, flags);
dwc3_gadget_suspend(dwc);
spin_unlock_irqrestore(&dwc->lock, flags);
+ synchronize_irq(dwc->irq_gadget);
dwc3_core_exit(dwc);
break;
case DWC3_GCTL_PRTCAP_HOST:
@@ -1632,6 +1635,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
spin_lock_irqsave(&dwc->lock, flags);
dwc3_gadget_suspend(dwc);
spin_unlock_irqrestore(&dwc->lock, flags);
+ synchronize_irq(dwc->irq_gadget);
}
dwc3_otg_exit(dwc);
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 1528d395b156..f19cbeb01087 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -406,8 +406,7 @@
#define DWC3_DCTL_TRGTULST_SS_INACT (DWC3_DCTL_TRGTULST(6))
/* These apply for core versions 1.94a and later */
-#define DWC3_DCTL_LPM_ERRATA_MASK DWC3_DCTL_LPM_ERRATA(0xf)
-#define DWC3_DCTL_LPM_ERRATA(n) ((n) << 20)
+#define DWC3_DCTL_NYET_THRES(n) (((n) & 0xf) << 20)
#define DWC3_DCTL_KEEP_CONNECT BIT(19)
#define DWC3_DCTL_L1_HIBER_EN BIT(18)
diff --git a/drivers/usb/dwc3/debug.h b/drivers/usb/dwc3/debug.h
index 6759a7efd8d5..068259fdfb0c 100644
--- a/drivers/usb/dwc3/debug.h
+++ b/drivers/usb/dwc3/debug.h
@@ -250,6 +250,9 @@ static inline void dwc3_decode_get_status(__u8 t, __u16 i, __u16 l, char *str,
size_t size)
{
switch (t & USB_RECIP_MASK) {
+ case USB_RECIP_DEVICE:
+ snprintf(str, size, "Get Device Status(Length = %d)", l);
+ break;
case USB_RECIP_INTERFACE:
snprintf(str, size, "Get Interface Status(Intf = %d, Length = %d)",
i, l);
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index e293400cc6e9..d67655384eb2 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2863,7 +2863,7 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc)
"LPM Erratum not available on dwc3 revisions < 2.40a\n");
if (dwc->has_lpm_erratum && dwc->revision >= DWC3_REVISION_240A)
- reg |= DWC3_DCTL_LPM_ERRATA(dwc->lpm_nyet_threshold);
+ reg |= DWC3_DCTL_NYET_THRES(dwc->lpm_nyet_threshold);
dwc3_writel(dwc->regs, DWC3_DCTL, reg);
} else {
@@ -3301,6 +3301,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.sg_supported = true;
dwc->gadget.name = "dwc3-gadget";
dwc->gadget.is_otg = dwc->dr_mode == USB_DR_MODE_OTG;
+ dwc->gadget.lpm_capable = true;
/*
* FIXME We might be setting max_speed to <SUPER, however versions
@@ -3384,8 +3385,6 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
dwc3_disconnect_gadget(dwc);
__dwc3_gadget_stop(dwc);
- synchronize_irq(dwc->irq_gadget);
-
return 0;
}
--
2.53.0
next prev parent reply other threads:[~2026-08-24 16:45 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 15:26 [PATCH v7 00/63] usb: dwc3: part 1, reset and import from Linux v6.16 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 01/63] usb: host: re-import xhci-ext-caps.h from kernel v6.16 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 02/63] usb: dwc3: restore to original v3.19-rc1 kernel import Anders Roxell
2026-08-24 15:26 ` [PATCH v7 03/63] usb: dwc3: import from kernel v3.19 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 04/63] usb: dwc3: import from kernel v4.0 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 05/63] usb: dwc3: import from kernel v4.1 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 06/63] usb: dwc3: import from kernel v4.2 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 07/63] usb: dwc3: import from kernel v4.3 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 08/63] usb: dwc3: import from kernel v4.4 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 09/63] usb: dwc3: import from kernel v4.5 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 10/63] usb: dwc3: import from kernel v4.6 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 11/63] usb: dwc3: import from kernel v4.7 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 12/63] usb: dwc3: import from kernel v4.8 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 13/63] usb: dwc3: import from kernel v4.9 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 14/63] usb: dwc3: import from kernel v4.10 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 15/63] usb: dwc3: import from kernel v4.11 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 16/63] usb: dwc3: import from kernel v4.12 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 17/63] usb: dwc3: import from kernel v4.13 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 18/63] usb: dwc3: import from kernel v4.14 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 19/63] usb: dwc3: import from kernel v4.15 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 20/63] usb: dwc3: import from kernel v4.16 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 21/63] usb: dwc3: import from kernel v4.17 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 22/63] usb: dwc3: import from kernel v4.18 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 23/63] usb: dwc3: import from kernel v4.19 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 24/63] usb: dwc3: import from kernel v4.20 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 25/63] usb: dwc3: import from kernel v5.0 Anders Roxell
2026-08-24 15:26 ` [PATCH v7 26/63] usb: dwc3: import from kernel v5.1 Anders Roxell
2026-08-24 15:26 ` Anders Roxell [this message]
2026-08-24 15:26 ` [PATCH v7 28/63] usb: dwc3: import from kernel v5.3 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 29/63] usb: dwc3: import from kernel v5.4 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 30/63] usb: dwc3: import from kernel v5.5 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 31/63] usb: dwc3: import from kernel v5.6 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 32/63] usb: dwc3: import from kernel v5.7 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 33/63] usb: dwc3: import from kernel v5.8 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 34/63] usb: dwc3: import from kernel v5.9 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 35/63] usb: dwc3: import from kernel v5.10 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 36/63] usb: dwc3: import from kernel v5.11 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 37/63] usb: dwc3: import from kernel v5.12 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 38/63] usb: dwc3: import from kernel v5.13 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 39/63] usb: dwc3: import from kernel v5.14 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 40/63] usb: dwc3: import from kernel v5.15 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 41/63] usb: dwc3: import from kernel v5.16 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 42/63] usb: dwc3: import from kernel v5.17 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 43/63] usb: dwc3: import from kernel v5.18 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 44/63] usb: dwc3: import from kernel v5.19 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 45/63] usb: dwc3: import from kernel v6.0 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 46/63] usb: dwc3: import from kernel v6.1 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 47/63] usb: dwc3: import from kernel v6.2 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 48/63] usb: dwc3: import from kernel v6.3 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 49/63] usb: dwc3: import from kernel v6.4 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 50/63] usb: dwc3: import from kernel v6.5 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 51/63] usb: dwc3: import from kernel v6.6 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 52/63] usb: dwc3: import from kernel v6.7 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 53/63] usb: dwc3: import from kernel v6.8 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 54/63] usb: dwc3: import from kernel v6.9 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 55/63] usb: dwc3: import from kernel v6.10 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 56/63] usb: dwc3: import from kernel v6.11 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 57/63] usb: dwc3: import from kernel v6.12 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 58/63] usb: dwc3: import from kernel v6.13 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 59/63] usb: dwc3: import from kernel v6.14 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 60/63] usb: dwc3: import from kernel v6.15 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 61/63] usb: dwc3: import from kernel v6.16 Anders Roxell
2026-08-24 15:27 ` [PATCH v7 62/63] usb: gadget: re-import epautoconf.c " Anders Roxell
2026-08-24 15:27 ` [PATCH v7 63/63] usb: udc: re-import udc-core.c " Anders Roxell
2026-09-11 10:39 ` [PATCH v7 00/63] usb: dwc3: part 1, reset and import from Linux v6.16 Love Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260824152734.159794-28-anders.roxell@linaro.org \
--to=anders.roxell@linaro.org \
--cc=alchark@flipper.net \
--cc=ilias.apalodimas@linaro.org \
--cc=jens.wiklander@linaro.org \
--cc=jerome.forissier@arm.com \
--cc=lukma@denx.de \
--cc=marek.vasut@mailbox.org \
--cc=michal.simek@amd.com \
--cc=mkorpershoek@kernel.org \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.u-boot-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.