From: Anders Roxell <anders.roxell@linaro.org>
To: u-boot@lists.denx.de, marex@denx.de
Cc: mkorpershoek@kernel.org, ilias.apalodimas@linaro.org,
trini@konsulko.com, michal.simek@amd.com, alchark@flipper.net,
jerome.forissier@arm.com,
Jens Wiklander <jens.wiklander@linaro.org>,
Anders Roxell <anders.roxell@linaro.org>,
Marek Vasut <marek.vasut+usb@mailbox.org>,
Lukasz Majewski <lukma@denx.de>,
u-boot@lists.u-boot-project.org
Subject: [PATCH v6 45/87] usb: dwc3: import from kernel v6.0
Date: Fri, 21 Aug 2026 10:47:21 +0200 [thread overview]
Message-ID: <20260821084829.2070426-46-anders.roxell@linaro.org> (raw)
In-Reply-To: <20260821084829.2070426-1-anders.roxell@linaro.org>
From: Jens Wiklander <jens.wiklander@linaro.org>
Sync Linux kernel dwc3 changes from v5.19 to v6.0.
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.19..v6.0
Commits imported:
91062e663b26 usb: dwc3: core: leave default DMA if the controller does not support 64-bit DMA
040f2dbd2010 usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop
e3fafbd8e365 usb: dwc3: qcom: fix wakeup implementation
d2ac7bef95c9 usb: dwc3: fix PHY disable sequence
07903626d988 usb: dwc3: core: Do not perform GCTL_CORE_SOFTRESET during bootup
5e76ee96be8f usb: dwc3: ep0: Properly handle setup_packet_pending scenario in data stage
8affe37c525d usb: dwc3: gadget: fix high speed multiplier setting
23385cec5f35 usb: dwc3: gadget: refactor dwc3_repare_one_trb
babfcd947eba usb: dwc3: gadget: fix a kernel-doc warning
ad44cf402486 usb: dwc3: document async_callbacks field
649f5c842ba3 usb: dwc3: core: Host wake up support from system suspend
afbd04e66e5d usb: dwc3: core: Deprecate GCTL.CORESOFTRESET
fb119dcb97f4 Revert "usb: dwc3: Remove the checks of -ENOSYS"
d1b39dd5819a usb: dwc3: Fix a repeated word checkpatch warning
ca80ca61863f usb: dwc3: Fix bare use of unsigned checkpatch warning
df22ecc41b54 usb: dwc3: Remove the checks of -ENOSYS
3497b9a5c8c3 usb: dwc3: add power down scale setting
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
---
drivers/usb/dwc3/core.c | 87 ++++++++++++++++++++++----------
drivers/usb/dwc3/core.h | 3 ++
drivers/usb/dwc3/ep0.c | 9 +++-
drivers/usb/dwc3/gadget.c | 101 +++++++++++++++++---------------------
4 files changed, 119 insertions(+), 81 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 573421984948..d0237b30c9be 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -158,8 +158,13 @@ static void __dwc3_set_mode(struct work_struct *work)
break;
}
- /* For DRD host or device mode only */
- if (dwc->desired_dr_role != DWC3_GCTL_PRTCAP_OTG) {
+ /*
+ * When current_dr_role is not set, there's no role switching.
+ * Only perform GCTL.CoreSoftReset when there's DRD role switching.
+ */
+ if (dwc->current_dr_role && ((DWC3_IP_IS(DWC3) ||
+ DWC3_VER_IS_PRIOR(DWC31, 190A)) &&
+ dwc->desired_dr_role != DWC3_GCTL_PRTCAP_OTG)) {
reg = dwc3_readl(dwc->regs, DWC3_GCTL);
reg |= DWC3_GCTL_CORESOFTRESET;
dwc3_writel(dwc->regs, DWC3_GCTL, reg);
@@ -426,7 +431,7 @@ static void dwc3_free_one_event_buffer(struct dwc3 *dwc,
* otherwise ERR_PTR(errno).
*/
static struct dwc3_event_buffer *dwc3_alloc_one_event_buffer(struct dwc3 *dwc,
- unsigned length)
+ unsigned int length)
{
struct dwc3_event_buffer *evt;
@@ -469,7 +474,7 @@ static void dwc3_free_event_buffers(struct dwc3 *dwc)
* Returns 0 on success otherwise negative errno. In the error case, dwc
* may contain some buffers allocated but not all which were requested.
*/
-static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
+static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned int length)
{
struct dwc3_event_buffer *evt;
@@ -828,15 +833,16 @@ static void dwc3_core_exit(struct dwc3 *dwc)
{
dwc3_event_buffers_cleanup(dwc);
+ usb_phy_set_suspend(dwc->usb2_phy, 1);
+ usb_phy_set_suspend(dwc->usb3_phy, 1);
+ phy_power_off(dwc->usb2_generic_phy);
+ phy_power_off(dwc->usb3_generic_phy);
+
usb_phy_shutdown(dwc->usb2_phy);
usb_phy_shutdown(dwc->usb3_phy);
phy_exit(dwc->usb2_generic_phy);
phy_exit(dwc->usb3_generic_phy);
- usb_phy_set_suspend(dwc->usb2_phy, 1);
- usb_phy_set_suspend(dwc->usb3_phy, 1);
- phy_power_off(dwc->usb2_generic_phy);
- phy_power_off(dwc->usb3_generic_phy);
dwc3_clk_disable(dwc);
reset_control_assert(dwc->reset);
}
@@ -1029,6 +1035,37 @@ static void dwc3_set_incr_burst_type(struct dwc3 *dwc)
dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, cfg);
}
+static void dwc3_set_power_down_clk_scale(struct dwc3 *dwc)
+{
+ u32 scale;
+ u32 reg;
+
+ if (!dwc->susp_clk)
+ return;
+
+ /*
+ * The power down scale field specifies how many suspend_clk
+ * periods fit into a 16KHz clock period. When performing
+ * the division, round up the remainder.
+ *
+ * The power down scale value is calculated using the fastest
+ * frequency of the suspend_clk. If it isn't fixed (but within
+ * the accuracy requirement), the driver may not know the max
+ * rate of the suspend_clk, so only update the power down scale
+ * if the default is less than the calculated value from
+ * clk_get_rate() or if the default is questionably high
+ * (3x or more) to be within the requirement.
+ */
+ scale = DIV_ROUND_UP(clk_get_rate(dwc->susp_clk), 16000);
+ reg = dwc3_readl(dwc->regs, DWC3_GCTL);
+ if ((reg & DWC3_GCTL_PWRDNSCALE_MASK) < DWC3_GCTL_PWRDNSCALE(scale) ||
+ (reg & DWC3_GCTL_PWRDNSCALE_MASK) > DWC3_GCTL_PWRDNSCALE(scale*3)) {
+ reg &= ~(DWC3_GCTL_PWRDNSCALE_MASK);
+ reg |= DWC3_GCTL_PWRDNSCALE(scale);
+ dwc3_writel(dwc->regs, DWC3_GCTL, reg);
+ }
+}
+
/**
* dwc3_core_init - Low-level initialization of DWC3 Core
* @dwc: Pointer to our controller context structure
@@ -1105,6 +1142,9 @@ static int dwc3_core_init(struct dwc3 *dwc)
if (ret)
goto err1;
+ /* Set power down scale of suspend_clk */
+ dwc3_set_power_down_clk_scale(dwc);
+
/* Adjust Frame Length */
dwc3_frame_length_adjustment(dwc);
@@ -1712,12 +1752,6 @@ static int dwc3_probe(struct platform_device *pdev)
dwc3_get_properties(dwc);
- if (!dwc->sysdev_is_parent) {
- ret = dma_set_mask_and_coherent(dwc->sysdev, DMA_BIT_MASK(64));
- if (ret)
- return ret;
- }
-
dwc->reset = devm_reset_control_array_get_optional_shared(dev);
if (IS_ERR(dwc->reset))
return PTR_ERR(dwc->reset);
@@ -1783,6 +1817,13 @@ static int dwc3_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, dwc);
dwc3_cache_hwparams(dwc);
+ if (!dwc->sysdev_is_parent &&
+ DWC3_GHWPARAMS0_AWIDTH(dwc->hwparams.hwparams0) == 64) {
+ ret = dma_set_mask_and_coherent(dwc->sysdev, DMA_BIT_MASK(64));
+ if (ret)
+ goto disable_clks;
+ }
+
spin_lock_init(&dwc->lock);
mutex_init(&dwc->mutex);
@@ -1839,16 +1880,16 @@ err5:
dwc3_debugfs_exit(dwc);
dwc3_event_buffers_cleanup(dwc);
- usb_phy_shutdown(dwc->usb2_phy);
- usb_phy_shutdown(dwc->usb3_phy);
- phy_exit(dwc->usb2_generic_phy);
- phy_exit(dwc->usb3_generic_phy);
-
usb_phy_set_suspend(dwc->usb2_phy, 1);
usb_phy_set_suspend(dwc->usb3_phy, 1);
phy_power_off(dwc->usb2_generic_phy);
phy_power_off(dwc->usb3_generic_phy);
+ usb_phy_shutdown(dwc->usb2_phy);
+ usb_phy_shutdown(dwc->usb3_phy);
+ phy_exit(dwc->usb2_generic_phy);
+ phy_exit(dwc->usb3_generic_phy);
+
dwc3_ulpi_exit(dwc);
err4:
@@ -1943,7 +1984,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
dwc3_core_exit(dwc);
break;
case DWC3_GCTL_PRTCAP_HOST:
- if (!PMSG_IS_AUTO(msg)) {
+ if (!PMSG_IS_AUTO(msg) && !device_may_wakeup(dwc->dev)) {
dwc3_core_exit(dwc);
break;
}
@@ -2004,7 +2045,7 @@ static int dwc3_resume_common(struct dwc3 *dwc, pm_message_t msg)
spin_unlock_irqrestore(&dwc->lock, flags);
break;
case DWC3_GCTL_PRTCAP_HOST:
- if (!PMSG_IS_AUTO(msg)) {
+ if (!PMSG_IS_AUTO(msg) && !device_may_wakeup(dwc->dev)) {
ret = dwc3_core_init_for_resume(dwc);
if (ret)
return ret;
@@ -2081,8 +2122,6 @@ static int dwc3_runtime_suspend(struct device *dev)
if (ret)
return ret;
- device_init_wakeup(dev, true);
-
return 0;
}
@@ -2091,8 +2130,6 @@ static int dwc3_runtime_resume(struct device *dev)
struct dwc3 *dwc = dev_get_drvdata(dev);
int ret;
- device_init_wakeup(dev, false);
-
ret = dwc3_resume_common(dwc, PMSG_AUTO_RESUME);
if (ret)
return ret;
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 81c486b3941c..4fe4287dc934 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -231,6 +231,7 @@
/* Global Configuration Register */
#define DWC3_GCTL_PWRDNSCALE(n) ((n) << 19)
+#define DWC3_GCTL_PWRDNSCALE_MASK GENMASK(31, 19)
#define DWC3_GCTL_U2RSTECN BIT(16)
#define DWC3_GCTL_RAMCLKSEL(x) (((x) & DWC3_GCTL_CLK_MASK) << 6)
#define DWC3_GCTL_CLK_BUS (0)
@@ -1086,6 +1087,8 @@ struct dwc3_scratchpad_array {
* @dis_u1_entry_quirk: set if link entering into U1 state needs to be disabled.
* @dis_u2_entry_quirk: set if link entering into U2 state needs to be disabled.
* @dis_rxdet_inp3_quirk: set if we disable Rx.Detect in P3
+ * @async_callbacks: if set, indicate that async callbacks will be used.
+ *
* @dis_u2_freeclk_exists_quirk : set if we clear u2_freeclk_exists
* in GUSB2PHYCFG, specify that USB2 PHY doesn't
* provide a free-running PHY clock.
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 5d642660fd15..197af63f8d05 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -239,6 +239,8 @@ void dwc3_ep0_stall_and_restart(struct dwc3 *dwc)
dwc3_gadget_giveback(dep, req, -ECONNRESET);
}
+ dwc->eps[0]->trb_enqueue = 0;
+ dwc->eps[1]->trb_enqueue = 0;
dwc->ep0state = EP0_SETUP_PHASE;
dwc3_ep0_out_start(dwc);
}
@@ -473,7 +475,7 @@ static int dwc3_ep0_handle_device(struct dwc3 *dwc,
case USB_DEVICE_REMOTE_WAKEUP:
break;
/*
- * 9.4.1 says only only for SS, in AddressState only for
+ * 9.4.1 says only for SS, in AddressState only for
* default control pipe
*/
case USB_DEVICE_U1_ENABLE:
@@ -1140,6 +1142,11 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
if (dwc->ep0_next_event != DWC3_EP0_NRDY_STATUS)
return;
+ if (dwc->setup_packet_pending) {
+ dwc3_ep0_stall_and_restart(dwc);
+ return;
+ }
+
dwc->ep0state = EP0_STATUS_PHASE;
if (dwc->delayed_status) {
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 0d89dfa6eef5..eca945feeec3 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -657,6 +657,7 @@ static int dwc3_gadget_set_ep_config(struct dwc3_ep *dep, unsigned int action)
/**
* dwc3_gadget_calc_tx_fifo_size - calculates the txfifo size value
* @dwc: pointer to the DWC3 context
+ * @mult: multiplier to be used when calculating the fifo_size
*
* Calculates the size value based on the equation below:
*
@@ -1182,17 +1183,49 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
return trbs_left;
}
-static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb,
- dma_addr_t dma, unsigned int length, unsigned int chain,
- unsigned int node, unsigned int stream_id,
- unsigned int short_not_ok, unsigned int no_interrupt,
- unsigned int is_last, bool must_interrupt)
+/**
+ * dwc3_prepare_one_trb - setup one TRB from one request
+ * @dep: endpoint for which this request is prepared
+ * @req: dwc3_request pointer
+ * @trb_length: buffer size of the TRB
+ * @chain: should this TRB be chained to the next?
+ * @node: only for isochronous endpoints. First TRB needs different type.
+ * @use_bounce_buffer: set to use bounce buffer
+ * @must_interrupt: set to interrupt on TRB completion
+ */
+static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
+ struct dwc3_request *req, unsigned int trb_length,
+ unsigned int chain, unsigned int node, bool use_bounce_buffer,
+ bool must_interrupt)
{
+ struct dwc3_trb *trb;
+ dma_addr_t dma;
+ unsigned int stream_id = req->request.stream_id;
+ unsigned int short_not_ok = req->request.short_not_ok;
+ unsigned int no_interrupt = req->request.no_interrupt;
+ unsigned int is_last = req->request.is_last;
struct dwc3 *dwc = dep->dwc;
struct usb_gadget *gadget = dwc->gadget;
enum usb_device_speed speed = gadget->speed;
- trb->size = DWC3_TRB_SIZE_LENGTH(length);
+ if (use_bounce_buffer)
+ dma = dep->dwc->bounce_addr;
+ else if (req->request.num_sgs > 0)
+ dma = sg_dma_address(req->start_sg);
+ else
+ dma = req->request.dma;
+
+ trb = &dep->trb_pool[dep->trb_enqueue];
+
+ if (!req->trb) {
+ dwc3_gadget_move_started_request(req);
+ req->trb = trb;
+ req->trb_dma = dwc3_trb_dma_offset(dep, trb);
+ }
+
+ req->num_trbs++;
+
+ trb->size = DWC3_TRB_SIZE_LENGTH(trb_length);
trb->bpl = lower_32_bits(dma);
trb->bph = upper_32_bits(dma);
@@ -1232,10 +1265,10 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb,
unsigned int mult = 2;
unsigned int maxp = usb_endpoint_maxp(ep->desc);
- if (length <= (2 * maxp))
+ if (req->request.length <= (2 * maxp))
mult--;
- if (length <= maxp)
+ if (req->request.length <= maxp)
mult--;
trb->size |= DWC3_TRB_SIZE_PCM1(mult);
@@ -1309,50 +1342,6 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb,
trace_dwc3_prepare_trb(dep, trb);
}
-/**
- * dwc3_prepare_one_trb - setup one TRB from one request
- * @dep: endpoint for which this request is prepared
- * @req: dwc3_request pointer
- * @trb_length: buffer size of the TRB
- * @chain: should this TRB be chained to the next?
- * @node: only for isochronous endpoints. First TRB needs different type.
- * @use_bounce_buffer: set to use bounce buffer
- * @must_interrupt: set to interrupt on TRB completion
- */
-static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
- struct dwc3_request *req, unsigned int trb_length,
- unsigned int chain, unsigned int node, bool use_bounce_buffer,
- bool must_interrupt)
-{
- struct dwc3_trb *trb;
- dma_addr_t dma;
- unsigned int stream_id = req->request.stream_id;
- unsigned int short_not_ok = req->request.short_not_ok;
- unsigned int no_interrupt = req->request.no_interrupt;
- unsigned int is_last = req->request.is_last;
-
- if (use_bounce_buffer)
- dma = dep->dwc->bounce_addr;
- else if (req->request.num_sgs > 0)
- dma = sg_dma_address(req->start_sg);
- else
- dma = req->request.dma;
-
- trb = &dep->trb_pool[dep->trb_enqueue];
-
- if (!req->trb) {
- dwc3_gadget_move_started_request(req);
- req->trb = trb;
- req->trb_dma = dwc3_trb_dma_offset(dep, trb);
- }
-
- req->num_trbs++;
-
- __dwc3_prepare_one_trb(dep, trb, dma, trb_length, chain, node,
- stream_id, short_not_ok, no_interrupt, is_last,
- must_interrupt);
-}
-
static bool dwc3_needs_extra_trb(struct dwc3_ep *dep, struct dwc3_request *req)
{
unsigned int maxp = usb_endpoint_maxp(dep->endpoint.desc);
@@ -2550,9 +2539,6 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
is_on = !!is_on;
- if (dwc->pullups_connected == is_on)
- return 0;
-
dwc->softconnect = is_on;
/*
@@ -2577,6 +2563,11 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
return 0;
}
+ if (dwc->pullups_connected == is_on) {
+ pm_runtime_put(dwc->dev);
+ return 0;
+ }
+
if (!is_on) {
ret = dwc3_gadget_soft_disconnect(dwc);
} else {
--
2.53.0
next prev parent reply other threads:[~2026-08-21 13:15 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260821084829.2070426-1-anders.roxell@linaro.org>
2026-08-21 8:46 ` [PATCH v6 01/87] usb: host: re-import xhci-ext-caps.h from kernel v6.16 Anders Roxell
2026-08-21 19:44 ` Tom Rini
2026-08-22 4:22 ` Marek Vasut
2026-08-23 18:44 ` Anders Roxell
2026-08-23 18:59 ` Tom Rini
2026-08-23 19:08 ` Anders Roxell
2026-08-23 20:57 ` Tom Rini
2026-08-21 8:46 ` [PATCH v6 02/87] usb: dwc3: restore to original v3.19-rc1 kernel import Anders Roxell
2026-08-21 8:46 ` [PATCH v6 03/87] usb: dwc3: import from kernel v3.19 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 04/87] usb: dwc3: import from kernel v4.0 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 05/87] usb: dwc3: import from kernel v4.1 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 06/87] usb: dwc3: import from kernel v4.2 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 07/87] usb: dwc3: import from kernel v4.3 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 08/87] usb: dwc3: import from kernel v4.4 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 09/87] usb: dwc3: import from kernel v4.5 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 10/87] usb: dwc3: import from kernel v4.6 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 11/87] usb: dwc3: import from kernel v4.7 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 12/87] usb: dwc3: import from kernel v4.8 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 13/87] usb: dwc3: import from kernel v4.9 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 14/87] usb: dwc3: import from kernel v4.10 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 15/87] usb: dwc3: import from kernel v4.11 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 16/87] usb: dwc3: import from kernel v4.12 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 17/87] usb: dwc3: import from kernel v4.13 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 18/87] usb: dwc3: import from kernel v4.14 Anders Roxell
2026-08-24 8:54 ` Mattijs Korpershoek
2026-08-21 8:46 ` [PATCH v6 19/87] usb: dwc3: import from kernel v4.15 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 20/87] usb: dwc3: import from kernel v4.16 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 21/87] usb: dwc3: import from kernel v4.17 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 22/87] usb: dwc3: import from kernel v4.18 Anders Roxell
2026-08-21 8:46 ` [PATCH v6 23/87] usb: dwc3: import from kernel v4.19 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 24/87] usb: dwc3: import from kernel v4.20 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 25/87] usb: dwc3: import from kernel v5.0 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 26/87] usb: dwc3: import from kernel v5.1 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 27/87] usb: dwc3: import from kernel v5.2 Anders Roxell
2026-08-24 8:57 ` Mattijs Korpershoek
2026-08-21 8:47 ` [PATCH v6 28/87] usb: dwc3: import from kernel v5.3 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 29/87] usb: dwc3: import from kernel v5.4 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 30/87] usb: dwc3: import from kernel v5.5 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 31/87] usb: dwc3: import from kernel v5.6 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 32/87] usb: dwc3: import from kernel v5.7 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 33/87] usb: dwc3: import from kernel v5.8 Anders Roxell
2026-08-24 8:59 ` Mattijs Korpershoek
2026-08-21 8:47 ` [PATCH v6 34/87] usb: dwc3: import from kernel v5.9 Anders Roxell
2026-08-24 9:00 ` Mattijs Korpershoek
2026-08-21 8:47 ` [PATCH v6 35/87] usb: dwc3: import from kernel v5.10 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 36/87] usb: dwc3: import from kernel v5.11 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 37/87] usb: dwc3: import from kernel v5.12 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 38/87] usb: dwc3: import from kernel v5.13 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 39/87] usb: dwc3: import from kernel v5.14 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 40/87] usb: dwc3: import from kernel v5.15 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 41/87] usb: dwc3: import from kernel v5.16 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 42/87] usb: dwc3: import from kernel v5.17 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 43/87] usb: dwc3: import from kernel v5.18 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 44/87] usb: dwc3: import from kernel v5.19 Anders Roxell
2026-08-21 8:47 ` Anders Roxell [this message]
2026-08-21 8:47 ` [PATCH v6 46/87] usb: dwc3: import from kernel v6.1 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 47/87] usb: dwc3: import from kernel v6.2 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 48/87] usb: dwc3: import from kernel v6.3 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 49/87] usb: dwc3: import from kernel v6.4 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 50/87] usb: dwc3: import from kernel v6.5 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 51/87] usb: dwc3: import from kernel v6.6 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 52/87] usb: dwc3: import from kernel v6.7 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 53/87] usb: dwc3: import from kernel v6.8 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 54/87] usb: dwc3: import from kernel v6.9 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 55/87] usb: dwc3: import from kernel v6.10 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 56/87] usb: dwc3: import from kernel v6.11 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 57/87] usb: dwc3: import from kernel v6.12 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 58/87] usb: dwc3: import from kernel v6.13 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 59/87] usb: dwc3: import from kernel v6.14 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 60/87] usb: dwc3: import from kernel v6.15 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 61/87] usb: dwc3: import from kernel v6.16 Anders Roxell
2026-08-21 8:47 ` [PATCH v6 62/87] usb: gadget: re-import epautoconf.c " Anders Roxell
2026-08-21 8:47 ` [PATCH v6 63/87] usb: udc: re-import udc-core.c " Anders Roxell
2026-08-21 8:47 ` [PATCH v6 64/87] dm: add helpers needed by the resynced DWC3 code Anders Roxell
2026-08-21 8:47 ` [PATCH v6 65/87] usb: phy: add the usb_phy " Anders Roxell
2026-08-21 8:47 ` [PATCH v6 66/87] usb: gadget: adapt the gadget API after the resync Anders Roxell
2026-08-21 8:47 ` [PATCH v6 67/87] usb: gadget: udc: make udc-core build in u-boot Anders Roxell
2026-08-21 8:47 ` [PATCH v6 68/87] usb: dwc3: make the core driver " Anders Roxell
2026-08-21 8:47 ` [PATCH v6 69/87] usb: dwc3: bring back the samsung usb phy driver Anders Roxell
2026-08-21 8:47 ` [PATCH v6 70/87] usb: dwc3: make gadget and ep0 build in u-boot Anders Roxell
2026-08-21 8:47 ` [PATCH v6 71/87] usb: gadget: udc: enable async callbacks on bind Anders Roxell
2026-08-21 8:47 ` [PATCH v6 72/87] usb: dwc3: ep0: flush and invalidate cache around ep0 transfers Anders Roxell
2026-08-21 8:47 ` [PATCH v6 73/87] usb: dwc3: make the am62 glue build in u-boot Anders Roxell
2026-08-21 8:47 ` [PATCH v6 74/87] usb: gadget: ci_udc: move to the udc-core registration Anders Roxell
2026-08-21 8:47 ` [PATCH v6 75/87] usb: gadget: ci_udc: set endpoint capabilities Anders Roxell
2026-08-21 8:47 ` [PATCH v6 76/87] usb: gadget: dwc2_udc_otg: fix up after the resync Anders Roxell
2026-08-21 8:47 ` [PATCH v6 77/87] usb: gadget: fix up the function drivers " Anders Roxell
2026-08-21 8:47 ` [PATCH v6 78/87] usb: gadget: fix up the last UDC " Anders Roxell
2026-08-21 8:47 ` [PATCH v6 79/87] usb: gadget: atmel_usba_udc: set endpoint capabilities Anders Roxell
2026-08-21 8:47 ` [PATCH v6 80/87] usb: gadget: at91_udc: register with udc-core Anders Roxell
2026-08-21 8:47 ` [PATCH v6 81/87] usb: gadget: at91_udc: set endpoint capabilities Anders Roxell
2026-08-21 8:47 ` [PATCH v6 82/87] usb: musb-new: fix up after the resync Anders Roxell
2026-08-21 8:47 ` [PATCH v6 83/87] usb: musb-new: set endpoint capabilities Anders Roxell
2026-08-21 8:48 ` [PATCH v6 84/87] usb: mtu3: fix up after the resync Anders Roxell
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=20260821084829.2070426-46-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+usb@mailbox.org \
--cc=marex@denx.de \
--cc=michal.simek@amd.com \
--cc=mkorpershoek@kernel.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--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.