Hi Marek,

Thank you for the patch.

On mer., mars 19, 2025 at 23:07, Marek Vasut <ma...@denx.de> wrote:

> The UUU tool excepts the interrupt-in endpoint to be ep1in, otherwise
> it crashes. This is a result of the previous hard-coded EP setup in
> drivers/usb/gadget/epautoconf.c which did special-case EP allocation
> for SPL builds, and which was since converted to this callback, but
> without the special-case EP allocation in SPL part.
>
> This reinstates the SPL part in an isolated manner, only for NXP iMX
> SoCs, only for SPL builds, and only for the ep1in interrupt-in endpoint.
>
> Fixes: 1918b8010c32 ("usb: dwc3: gadget: Convert epautoconf workaround to 
> match_ep callback")
> Signed-off-by: Marek Vasut <ma...@denx.de>
> ---
> Cc: Alexander Sverdlin <alexander.sverd...@siemens.com>
> Cc: Felipe Balbi <felipe.ba...@linux.intel.com>
> Cc: Lukasz Majewski <lu...@denx.de>
> Cc: Marek Vasut <ma...@denx.de>
> Cc: Mattijs Korpershoek <mkorpersh...@baylibre.com>
> Cc: Neil Armstrong <neil.armstr...@linaro.org>
> Cc: Thinh Nguyen <thinh.ngu...@synopsys.com>
> Cc: Tom Rini <tr...@konsulko.com>
> Cc: u-boot@lists.denx.de
> ---
> NOTE: This should go into master as a bugfix.
> ---
>  drivers/usb/dwc3/gadget.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)

Good catch. I'll submit this to u-boot-dfu (for master)

Reviewed-by: Mattijs Korpershoek <mkorpersh...@baylibre.com>

>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index e5a383407a2..477ecd02098 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -1631,8 +1631,25 @@ usb_ep *dwc3_gadget_match_ep(struct usb_gadget *gadget,
>               return dwc3_find_ep(gadget, "ep1in");
>       if (usb_endpoint_is_bulk_out(desc))
>               return dwc3_find_ep(gadget, "ep2out");
> -     if (usb_endpoint_is_int_in(desc))
> +     if (usb_endpoint_is_int_in(desc)) {
> +             /*
> +              * Special workaround for NXP UUU tool in SPL.
> +              *
> +              * The tool excepts the interrupt-in endpoint to be ep1in,
> +              * otherwise it crashes. This is a result of the previous
> +              * hard-coded EP setup in drivers/usb/gadget/epautoconf.c
> +              * which did special-case EP allocation for SPL builds,
> +              * and which was since converted to this callback, but
> +              * without the special-case EP allocation in SPL part.
> +              *
> +              * This reinstates the SPL part in an isolated manner,
> +              * only for NXP iMX SoCs, only for SPL builds, and only
> +              * for the ep1in interrupt-in endpoint.
> +              */
> +             if (IS_ENABLED(CONFIG_MACH_IMX) && IS_ENABLED(CONFIG_XPL_BUILD))
> +                     return dwc3_find_ep(gadget, "ep1in");
>               return dwc3_find_ep(gadget, "ep3in");
> +     }
>  
>       return NULL;
>  }
> -- 
> 2.47.2

Reply via email to