usb: udc-uclass: Fixed problem when no alias is defined in DT
authorJean-Jacques Hiblot <jjhiblot@ti.com>
Thu, 24 Jan 2019 14:44:53 +0000 (15:44 +0100)
committerMarek Vasut <marex@denx.de>
Sat, 16 Mar 2019 12:29:43 +0000 (13:29 +0100)
commit 801f1fa442 "dm: usb: udc: Use SEQ_ALIAS to index the USB gadget
ports" changed the way the udevice if found. It uses the alias to find
a udevice for a given USB port number. In the commit log it was stated
that if no alias is provided, the bind order will be used instead. However
it doesn't work. Fixing this by adding a call to uclass_get_device() if
uclass_get_device_by_seq() fails.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Tested-by: Vignesh R <vigneshr@ti.com>
drivers/usb/gadget/udc/udc-uclass.c

index 8d7864797a71dacf2dd137e1e8e11284c3f16cb6..3053ccf7d970cbeb585bdde762ac126bf9f474ed 100644 (file)
@@ -23,8 +23,11 @@ int usb_gadget_initialize(int index)
                return 0;
        ret = uclass_get_device_by_seq(UCLASS_USB_GADGET_GENERIC, index, &dev);
        if (!dev || ret) {
-               pr_err("No USB device found\n");
-               return -ENODEV;
+               ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, index, &dev);
+               if (!dev || ret) {
+                       pr_err("No USB device found\n");
+                       return -ENODEV;
+               }
        }
        dev_array[index] = dev;
        return 0;