On Thu, 18 Mar 2004, Malcolm Blaney wrote:

> I changed the console log level, and checked the output from 2.6.2
> again. It prints more than I managed to get from dmesg before, so
> thought I better make the correction. On plugging in a usb device,
> before it hangs I actually get:
> drivers/usb/host/uhci-hcd.c: c400: wakeup_hc
> hub 1-0:1.0: port 1, status 101, change 1, 12 Mb/s
> hub 1-0:1.0: debounce: port 1: delay 100ms stable 4 status 0x101
> hub 1-0:1.0: new USB device on port 1, assigned address 2
> 
> Using your patch with the 2.6.4 kernel I get:
> uhci irq status: 0x24
> usb 1-1: new full speed USB device using address 2
> uhci enqueue: ce1eb5a0
> uhci fsbr enabled

All right.  The patch below might help track down even more precisely 
where the problem starts.

Alan Stern


===== uhci-hcd.c 1.97 vs edited =====
--- 1.97/drivers/usb/host/uhci-hcd.c    Wed Mar 17 14:16:48 2004
+++ edited/drivers/usb/host/uhci-hcd.c  Mon Mar 22 12:51:52 2004
@@ -756,7 +756,11 @@
        if ((!(urb->transfer_flags & URB_NO_FSBR)) && !urbp->fsbr) {
                urbp->fsbr = 1;
                if (!uhci->fsbr++ && !uhci->fsbrtimeout)
+                       printk(KERN_INFO "Before enabling uhci fsbr\n");
                        uhci->skel_term_qh->link = 
cpu_to_le32(uhci->skel_hs_control_qh->dma_handle) | UHCI_PTR_QH;
+                       printk(KERN_INFO "Immediately after enabling uhci fsbr\n");
+                       mdelay(3);
+                       printk(KERN_INFO "3 ms after enabling uhci fsbr\n");
        }
 
        spin_unlock_irqrestore(&uhci->frame_list_lock, flags);
@@ -1449,6 +1453,7 @@
        struct urb *eurb;
        int bustime;
 
+       printk(KERN_INFO "uhci enqueue: %p\n", urb);
        spin_lock_irqsave(&uhci->urb_list_lock, flags);
 
        if (urb->status != -EINPROGRESS)        /* URB already unlinked! */
@@ -1639,6 +1644,7 @@
        unsigned long flags;
        struct urb_priv *urbp;
 
+       printk(KERN_INFO "uhci dequeue: %p\n", urb);
        spin_lock_irqsave(&uhci->urb_list_lock, flags);
        urbp = urb->hcpriv;
        if (!urbp)                      /* URB was never linked! */
@@ -1756,6 +1762,7 @@
        if (!uhci->fsbr && uhci->fsbrtimeout && time_after_eq(jiffies, 
uhci->fsbrtimeout)) {
                uhci->fsbrtimeout = 0;
                uhci->skel_term_qh->link = UHCI_PTR_TERM;
+               printk(KERN_INFO "uhci fsbr disabled\n");
        }
 
        /* Poll for and perform state transitions */
@@ -1874,6 +1881,7 @@
         * "HC Halted" status bit is persistent: it is RO, not R/WC.
         */
        status = inw(io_addr + USBSTS);
+       printk(KERN_INFO "uhci irq status: 0x%x\n", status);
        if (!(status & ~USBSTS_HCH))    /* shared interrupt, not mine */
                return IRQ_NONE;
        outw(status, io_addr + USBSTS);         /* Clear it */



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to