On Fri, 4 May 2007, [ISO-8859-15] Dirk Försterling wrote: > Alan Stern wrote: > > The patch below should help verify some of the assumptions in the driver. > > If they turn out to be wrong then we'll know where to look. If they turn > > out to be right... then we'll be no better off. > > Here's the dmesg outpout where the new messages come up. From my > limited understanding, this seems to mean that the expected problem does > NOT show up here, does it?
No, no -- just the opposite! What should happen is that the "Start ASS" message should always say 0 and the "End ASS" message should always say 8000. > hub 1-0:1.0: port 1, status 0501, change 0001, 480 Mb/s > hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x501 > ehci_hcd 0000:00:13.2: port 1 high speed > ehci_hcd 0000:00:13.2: GetStatus port 1 status 001005 POWER sig=se0 PE CONNECT > usb 1-1: new high speed USB device using ehci_hcd and address 3 > Start ASS: 0 > End ASS: 8000 Those two are okay. > ehci_hcd 0000:00:13.2: port 1 high speed > ehci_hcd 0000:00:13.2: GetStatus port 1 status 001005 POWER sig=se0 PE CONNECT > Start ASS: 8000 > End ASS: 8000 > Start ASS: 8000 The two Start messages here are wrong. It could be because the hardware needs a longer delay, or it could be because the hardware is malfunctioning. Try using this patch instead of the other one. It will increase the length of the relevant delay. If the problem persists then it is most likely a hardware bug. Alan Stern Index: usb-2.6/drivers/usb/host/ehci-q.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ehci-q.c +++ usb-2.6/drivers/usb/host/ehci-q.c @@ -794,7 +794,8 @@ static void qh_link_async (struct ehci_h if (!(cmd & CMD_ASE)) { /* in case a clear of CMD_ASE didn't take yet */ (void)handshake(ehci, &ehci->regs->status, - STS_ASS, 0, 150); + STS_ASS, 0, 2050); +printk("Start ASS: %x\n", ehci_readl(ehci, &ehci->regs->status) & STS_ASS); cmd |= CMD_ASE | CMD_RUN; ehci_writel(ehci, cmd, &ehci->regs->command); ehci_to_hcd(ehci)->state = HC_STATE_RUNNING; @@ -1026,6 +1027,7 @@ static void start_unlink_async (struct e if (ehci_to_hcd(ehci)->state != HC_STATE_HALT && !ehci->reclaim) { /* ... and CMD_IAAD clear */ +printk("End ASS: %x\n", ehci_readl(ehci, &ehci->regs->status) & STS_ASS); ehci_writel(ehci, cmd & ~CMD_ASE, &ehci->regs->command); wmb (); ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Linux-usb-users@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-users