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