[PATCH 1/2] usb: dwc3: gadget: Don't send unintended link state change
Mattijs Korpershoek
mkorpershoek at kernel.org
Wed Jan 14 12:09:17 CET 2026
Hi Chris,
Thank you for the patch and sorry for the review delay. I was on
vacation and a bit swamped when coming back.
On Tue, Dec 23, 2025 at 17:13, Chris Morgan <macroalpha82 at gmail.com> wrote:
> From: Chris Morgan <macromorgan at hotmail.com>
>
> DCTL.ULSTCHNGREQ is a write-only field. When doing a read-modify-write
> to DCTL, the driver must make sure that there's no unintended link state
> change request from whatever is read from DCTL.ULSTCHNGREQ. Set link
> state change to no-action when the driver writes to DCTL.
>
> Note that this patch was submitted upstream in Linux in 2020 [1],
> and I've confirmed I need it in U-Boot to enable gadget mode.
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/drivers/usb/dwc3?id=5b738211fb59e114727381d07c647a77c0010996
>
> Signed-off-by: Thinh Nguyen <thinhn at synopsys.com>
> Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
> ---
> drivers/usb/dwc3/gadget.c | 20 +++++++++-----------
> drivers/usb/dwc3/gadget.h | 14 ++++++++++++++
> 2 files changed, 23 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 2b01113d54c..24ae0c232f6 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -62,7 +62,7 @@ int dwc3_gadget_set_test_mode(struct dwc3 *dwc, int mode)
> return -EINVAL;
> }
>
> - dwc3_writel(dwc->regs, DWC3_DCTL, reg);
> + dwc3_gadget_dctl_write_safe(dwc, reg);
>
> return 0;
> }
> @@ -1396,7 +1396,7 @@ static int dwc3_gadget_set_selfpowered(struct usb_gadget *g,
> static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on, int suspend)
> {
> u32 reg;
> - u32 timeout = 500;
> + u32 timeout = 2000;
This change (timeout increase) is not part of patch you linked in [1]
Can you either drop this or move this to a separate patch, explaining
why it's needed?
>
More information about the U-Boot
mailing list