[PATCH v2] usb: gadget: dwc2_udc_otg: Fix dwc2_gadget_start() and usb_gadget_register_driver()
Neil Armstrong
narmstrong at baylibre.com
Fri Feb 26 15:10:21 CET 2021
On 17/02/2021 10:17, Patrice Chotard wrote:
> Since commit 8745b9ebccae ("usb: gadget: add super speed support")
> ums was no more functional on platform which use dwc2_udc_otg driver.
>
> This was due to a too restrictive test which checked that the gadget
> driver speed was either FS or HS.
>
> So all gadget driver with max speed set to speed higher than
> HS (SS in case of composite gadget driver in our case) are not
> allowed, which is wrong.
>
> Update the speed test in usb_gadget_register_driver() and in
> dwc2_gadget_start() to allow all gadget driver speed equal or higher
> than FS.
>
> Tested on stm32mp157c-ev1 board.
>
> Fixes: c791c8431c34 ("usb: dwc2: convert driver to DM_USB_GADGET")
>
> Signed-off-by: Patrice Chotard <patrice.chotard at foss.st.com>
>
> ---
>
> Changes in v2:
> - update gadget driver speed test in usb_gadget_register_driver()
> and in dwc2_gadget_start() instead of removing it completely.
>
> drivers/usb/gadget/dwc2_udc_otg.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c
> index ecac80fc11..2f31814442 100644
> --- a/drivers/usb/gadget/dwc2_udc_otg.c
> +++ b/drivers/usb/gadget/dwc2_udc_otg.c
> @@ -248,9 +248,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
>
> debug_cond(DEBUG_SETUP != 0, "%s: %s\n", __func__, "no name");
>
> - if (!driver
> - || (driver->speed != USB_SPEED_FULL
> - && driver->speed != USB_SPEED_HIGH)
> + if (!driver || driver->speed < USB_SPEED_FULL
> || !driver->bind || !driver->disconnect || !driver->setup)
> return -EINVAL;
> if (!dev)
> @@ -320,9 +318,7 @@ static int dwc2_gadget_start(struct usb_gadget *g,
>
> debug_cond(DEBUG_SETUP != 0, "%s: %s\n", __func__, "no name");
>
> - if (!driver ||
> - (driver->speed != USB_SPEED_FULL &&
> - driver->speed != USB_SPEED_HIGH) ||
> + if (!driver || driver->speed < USB_SPEED_FULL ||
> !driver->bind || !driver->disconnect || !driver->setup)
> return -EINVAL;
>
>
Thx for the fix !
Tested-by: Neil Armstrong <narmstrong at baylibre.com>
More information about the U-Boot
mailing list