dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports
authorJean-Jacques Hiblot <jjhiblot@ti.com>
Sat, 15 Dec 2018 16:43:27 +0000 (17:43 +0100)
committerMarek Vasut <marex@denx.de>
Thu, 10 Jan 2019 17:52:51 +0000 (18:52 +0100)
dfu, fastbot and other usb gadget commands take the USB port index as a
parameter. Currently this index is assigned in the order of the driver
bindings.
Changing this behavior using the SEQ_ALIAS feature. This option assign to
the device a SEQ number based on its alias (if it exists)

To use it we must set the DM_UC_FLAG_SEQ_ALIAS flag and follow the existing
naming convention: use "usb" for the name of the gadget UCLASS_DRIVER
(same as for the UCLASS_USB).

If no alias is provided, then the index falls back to the order in which
the bindings took place.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reported-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Tested-by: Sam Protsenko <semen.protsenko@linaro.org>
drivers/usb/gadget/udc/udc-uclass.c

index 062051857a9aaa7aa9ae7e76149908e202ffab21..e9f8f5f246300dbdb53abcb0b70b5e8e70fea33b 100644 (file)
@@ -20,7 +20,7 @@ int usb_gadget_initialize(int index)
                return -EINVAL;
        if (dev_array[index])
                return 0;
-       ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, index, &dev);
+       ret = uclass_get_device_by_seq(UCLASS_USB_GADGET_GENERIC, index, &dev);
        if (!dev || ret) {
                pr_err("No USB device found\n");
                return -ENODEV;
@@ -54,5 +54,6 @@ int usb_gadget_handle_interrupts(int index)
 
 UCLASS_DRIVER(usb_gadget_generic) = {
        .id             = UCLASS_USB_GADGET_GENERIC,
-       .name           = "usb_gadget_generic",
+       .name           = "usb",
+       .flags          = DM_UC_FLAG_SEQ_ALIAS,
 };