This patch adds a hook to enable us to call a custom function when
booting from USB

Signed-off-by: Simon-Pierre Allaire <[email protected]>
---

Changes for v2:
        - Added description of the patch

 drivers/usb/host/usb-uclass.c     |  7 ++++++-
 drivers/usb/musb-new/musb_uboot.c | 13 +++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index 611ea97a72..e1ea21970c 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -243,6 +243,7 @@ int usb_init(void)
        struct udevice *bus;
        struct uclass *uc;
        int count = 0;
+       void *ctrl;
        int ret;
 
        asynch_allowed = 1;
@@ -256,7 +257,11 @@ int usb_init(void)
        uclass_foreach_dev(bus, uc) {
                /* init low_level USB */
                printf("USB%d:   ", count);
-               count++;
+               ret = usb_lowlevel_init(count, USB_INIT_HOST, &ctrl);
+               if (ret == -ENODEV)     /* No such device. */
+                       puts("Port not available.\n");
+               else
+                       count++;
 
 #ifdef CONFIG_SANDBOX
                /*
diff --git a/drivers/usb/musb-new/musb_uboot.c 
b/drivers/usb/musb-new/musb_uboot.c
index 9c8cc6e584..5540640d6d 100644
--- a/drivers/usb/musb-new/musb_uboot.c
+++ b/drivers/usb/musb-new/musb_uboot.c
@@ -303,6 +303,19 @@ int usb_lowlevel_init(int index, enum usb_init_type init, 
void **controller)
 #endif /* !CONFIG_IS_ENABLED(DM_USB) */
 
 #if CONFIG_IS_ENABLED(DM_USB)
+
+int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
+{
+       int ret;
+
+       ret = board_usb_init(index, init);
+       if (ret != 0) {
+               puts("Failed to initialize board for USB\n");
+               return ret;
+       }
+       return 0;
+}
+
 static int musb_submit_control_msg(struct udevice *dev, struct usb_device 
*udev,
                                   unsigned long pipe, void *buffer, int length,
                                   struct devrequest *setup)
-- 
2.30.2

Reply via email to