Hi Marek,

Thank you for the patch.

On dim., juin 09, 2024 at 23:32, Marek Vasut <[email protected]> 
wrote:

> The bcdDevice field is defined as
> |Device release number in binary-coded decimal
> in the USB 2.0 specification. We use this field to distinguish the UDCs
> from each other. In theory this could be used on the host side to apply
> certain quirks if the "special" UDC in combination with this gadget is
> used. This hasn't been done as far as I am aware. In practice it would
> be better to fix the UDC driver before shipping since a later release
> might not need this quirk anymore.
>
> This patch converts this gadget to use the U-Boot version instead of a
> random 2 or 3 plus the UDC number. Linux stopped using this functionality
> in 2012, remove it from U-Boot as well.
>
> Matching Linux kernel commit:
> ed9cbda63d45 ("usb: gadget: remove usb_gadget_controller_number()")
>
> Signed-off-by: Marek Vasut <[email protected]>

Reviewed-by: Mattijs Korpershoek <[email protected]>
Tested-by: Mattijs Korpershoek <[email protected]> # on vim3

> ---
> Cc: Alexander Sverdlin <[email protected]>
> Cc: Felipe Balbi <[email protected]>
> Cc: Lukasz Majewski <[email protected]>
> Cc: Mattijs Korpershoek <[email protected]>
> Cc: Nishanth Menon <[email protected]>
> Cc: Simon Glass <[email protected]>
> Cc: Thinh Nguyen <[email protected]>
> Cc: Tom Rini <[email protected]>
> Cc: [email protected]
> ---
>  drivers/usb/gadget/ether.c | 17 +++--------------
>  1 file changed, 3 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
> index b8b29d399b1..e76464e121b 100644
> --- a/drivers/usb/gadget/ether.c
> +++ b/drivers/usb/gadget/ether.c
> @@ -22,8 +22,8 @@
>  #include <malloc.h>
>  #include <memalign.h>
>  #include <linux/ctype.h>
> +#include <version.h>
>  
> -#include "gadget_chips.h"
>  #include "rndis.h"
>  
>  #include <dm.h>
> @@ -1998,19 +1998,8 @@ static int eth_bind(struct usb_gadget *gadget)
>               rndis = 0;
>       }
>  
> -     gcnum = usb_gadget_controller_number(gadget);
> -     if (gcnum >= 0)
> -             device_desc.bcdDevice = cpu_to_le16(0x0300 + gcnum);
> -     else {
> -             /*
> -              * can't assume CDC works.  don't want to default to
> -              * anything less functional on CDC-capable hardware,
> -              * so we fail in this case.
> -              */
> -             pr_err("controller '%s' not recognized",
> -                     gadget->name);
> -             return -ENODEV;
> -     }
> +     gcnum = (U_BOOT_VERSION_NUM << 4) | U_BOOT_VERSION_NUM_PATCH;
> +     device_desc.bcdDevice = cpu_to_le16(gcnum);
>  
>       /*
>        * If there's an RNDIS configuration, that's what Windows wants to
> -- 
> 2.43.0

Reply via email to