]> git.sur5r.net Git - u-boot/blobdiff - drivers/usb/host/ehci-hcd.c
powerpc/85xx: Add ULPI and UTMI USB Phy support for P1010/P1014
[u-boot] / drivers / usb / host / ehci-hcd.c
index 6eb38a4131f0ed83c905f21af4237b3bfbb2b5a8..2197119cf7d656c5c97fdd44b93217e2d3a21faf 100644 (file)
@@ -319,6 +319,7 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
        uint32_t endpt, token, usbsts;
        uint32_t c, toggle;
        uint32_t cmd;
+       int timeout;
        int ret = 0;
 
        debug("dev=%p, pipe=%lx, buffer=%p, length=%d, req=%p\n", dev, pipe,
@@ -447,6 +448,7 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
        /* Wait for TDs to be processed. */
        ts = get_timer(0);
        vtd = td;
+       timeout = USB_TIMEOUT_MS(pipe);
        do {
                /* Invalidate dcache */
                ehci_invalidate_dcache(&qh_list);
@@ -454,7 +456,12 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
                if (!(token & 0x80))
                        break;
                WATCHDOG_RESET();
-       } while (get_timer(ts) < CONFIG_SYS_HZ);
+       } while (get_timer(ts) < timeout);
+
+       /* Check that the TD processing happened */
+       if (token & 0x80) {
+               printf("EHCI timed out on TD - token=%#x\n", token);
+       }
 
        /* Disable async schedule. */
        cmd = ehci_readl(&hcor->or_usbcmd);