On Tue, Jul 13, 2004 at 06:41:19PM -0700, Bill Randle wrote: > I search this list, as well as the developer's list, but didn't > see anything appropriate regarding the problems I'm having with a > Philips isp1561 USB hub. [If I missed it, please enlighten me!] > > I have a Peritek Argus graphics board that contains 5 pci devices > and two pci-pci bridges, with one of the devices a Philips isp1561. > Linux (kernel 2.6.3-13mdk) detects the usb hub and the devices > connected to it (on board usb audio) and extern usb mouse & keyboard. > The problem is, once X starts, the mouse and keyboard lockup shortly > thereafter. The error message in /var/log/messages is: > > Jul 12 19:41:29 frc735 kernel: ohci_hcd 0000:04:04.0: OHCI Unrecoverable > Error, disabled > Jul 12 19:41:29 frc735 kernel: ohci_hcd 0000:04:04.0: HC died; cleaning > up > Jul 12 19:41:29 frc735 kernel: usb 2-1: USB disconnect, address 3 > Jul 12 19:41:29 frc735 kernel: ohci_hcd 0000:04:04.0: leak ed ded93040 > (#2) state 0 (has tds) > Jul 12 19:41:29 frc735 kernel: ohci_hcd 0000:04:04.0: leak ed ded93080 > (#4) state 0 (has tds) > Jul 12 19:41:31 frc735 kernel: ohci_hcd 0000:04:04.1: OHCI Unrecoverable > Error, disabled > Jul 12 19:41:31 frc735 kernel: ohci_hcd 0000:04:04.1: HC died; cleaning > up > Jul 12 19:41:31 frc735 kernel: usb 3-1: USB disconnect, address 2 > Jul 12 19:41:31 frc735 kernel: ohci_hcd 0000:04:04.1: leak ed c169e0c0 > (#2) state 0 (has tds) > Jul 12 19:41:31 frc735 kernel: usb 3-2: USB disconnect, address 3 > Jul 12 19:41:31 frc735 kernel: ohci_hcd 0000:04:04.1: leak ed c169e080 > (#6) state 0 (has tds) > Jul 12 19:41:31 frc735 kernel: usbaudio: unregister dsp 14,3 > Jul 12 19:41:31 frc735 kernel: usbaudio: unregister mixer 14,0 > Jul 12 19:41:31 frc735 kernel: usbaudio: unregister mixer 14,16 > > The board architecture looks like this: > > | 33/66 Mhz 33 Mhz > |--------[ bridge 1 ]--|---[ bridge 2 ]-----|-isp1561 usb---|- usb audio > | | | | > pci |---T2R4 graphics #1 | |- usb keybd > bus |---T2R4 graphics #2 | |- usb mse > |--bt878 #1 > |--bt878 #2 > > Here are the messages printed during boot up: > > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/usb.c: registered new > driver hidJul 12 12:37:55 frc735 kernel: drivers/usb/input/hid-core.c: > v2.0:USB HID core driver > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/message.c: error getting > string descriptor 0 (error=-110) > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/message.c: error getting > string descriptor 0 (error=-110) > Jul 12 12:37:55 frc735 kernel: input: USB HIDBP Keyboard 05a4:9760 on > usb-0000:04:04.0-1 > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/usb.c: registered new > driver usbkbd > Jul 12 12:37:55 frc735 kernel: drivers/usb/input/usbkbd.c: :USB HID Boot > Protocol keyboard driver > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/message.c: error getting > string descriptor 0 (error=-110) > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/message.c: error getting > string descriptor 0 (error=-110) > Jul 12 12:37:55 frc735 kernel: input: USB HIDBP Mouse 05a4:9760 on > usb-0000:04:04.0-1 > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/usb.c: registered new > driver usbmouse > Jul 12 12:37:55 frc735 kernel: drivers/usb/input/usbmouse.c: v1.6:USB > HID Boot Protocol mouse driver > Jul 12 12:37:55 frc735 kernel: hub 4-0:1.0: USB hub found > Jul 12 12:37:55 frc735 kernel: hub 4-0:1.0: 4 ports detected > Jul 12 12:37:55 frc735 kernel: hub 3-0:1.0: connect-debounce failed, > port 1 disabled > Jul 12 12:37:55 frc735 kernel: usb 3-1: new low speed USB device using > address 2Jul 12 12:37:55 frc735 kernel: input: USB HID v1.10 Mouse > [Logitech USB-PS/2 Optical Mouse] on usb-0000:04:04.1-1 > Jul 12 12:37:55 frc735 kernel: usb 3-2: new full speed USB device using > address 3 > Jul 12 12:37:55 frc735 kernel: drivers/usb/input/hid-core.c: ctrl urb > status -32 received > Jul 12 12:37:55 frc735 kernel: input: USB HID v1.00 Device [Micronas > UAC3556B] on usb-0000:04:04.1-2 > Jul 12 12:37:55 frc735 kernel: usb 2-1: USB disconnect, address 2 > Jul 12 12:37:55 frc735 kernel: usbaudio: device 3 audiocontrol interface > 0 has 1 input and 1 output AudioStreaming interfaces > Jul 12 12:37:55 frc735 kernel: usbaudio: valid input sample rate 6400 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid input sample rate 48000 > Jul 12 12:37:55 frc735 kernel: usbaudio: device 3 interface 2 altsetting > 1: format 0x00000040 sratelo 6400 sratehi 48000 attributes 0x01 > Jul 12 12:37:55 frc735 partmon: > Jul 12 12:37:55 frc735 kernel: usbaudio: valid input sample rate 6400 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid input sample rate 48000 > Jul 12 12:37:55 frc735 kernel: usbaudio: device 3 interface 2 altsetting > 2: format 0x00000010 sratelo 6400 sratehi 48000 attributes 0x01 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid input sample rate 6400 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid input sample rate 48000 > Jul 12 12:37:55 frc735 kernel: usbaudio: device 3 interface 2 altsetting > 3: format 0x80000010 sratelo 6400 sratehi 48000 attributes 0x01 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid output sample rate 6400 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid output sample rate 48000 > Jul 12 12:37:55 frc735 kernel: usbaudio: device 3 interface 1 altsetting > 1: format 0x00000010 sratelo 6400 sratehi 48000 attributes 0x01 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid output sample rate 6400 > Jul 12 12:37:55 frc735 kernel: usbaudio: valid output sample rate 48000 > Jul 12 12:37:55 frc735 kernel: usbaudio: device 3 interface 1 altsetting > 2: format 0x80000010 sratelo 6400 sratehi 48000 attributes 0x01 > Jul 12 12:37:55 frc735 kernel: usbaudio: registered dsp 14,3 > Jul 12 12:37:55 frc735 kernel: usbaudio: registered mixer 14,0 > Jul 12 12:37:55 frc735 kernel: usbaudio: registered mixer 14,16 > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/usb.c: registered new > driver audio > Jul 12 12:37:55 frc735 kernel: drivers/usb/class/audio.c: v1.0.0:USB > Audio Class driver > Jul 12 12:37:55 frc735 kernel: drivers/usb/core/usb.c: registered new > driver snd-usb-audio > Jul 12 12:37:55 frc735 kernel: usb 2-1: new low speed USB device using > address 3Jul 12 12:37:55 frc735 kernel: input: USB HID v1.00 Keyboard > [ORTEK ORTEK USB Combo Keyboard] on usb-0000:04:04.0-1 > Jul 12 12:37:55 frc735 kernel: input,hiddev0: USB HID v1.00 Device > [ORTEK ORTEK USB Combo Keyboard] on usb-0000:04:04.0-1 > > Does anyone have any ideas what's going on or how to fix it? Are there > usb driver updates since 2.6.3 that might fix it?
Some versions of the philips isp1561 have a few bugs which need software workarounds. 1) The isp1561 accepts PCI burst writes to the register file, although it does not handle them properly. Workaround is to avoid PCI burst writes to the register file by adding dummy reads. 2) The isp1561 fails to transfer data correctly if you do a control transfer of 1 byte and the buffer is aligned on a 4K boundary. I have some patches for an older kernel version which solved the problems in my case. You might have to adapt them to a more recent kernel version. Cheers, Peter (p2).
--- linux-2.5.44/drivers/usb/host/ohci-hcd.c 2002-10-19 12:01:10.000000000 +0200
+++ linux-2.5.44-isp1561/drivers/usb/host/ohci-hcd.c 2003-06-27 12:07:35.000000000
+0200
@@ -530,6 +530,7 @@
struct ohci_hcd *ohci = hcd_to_ohci (hcd);
struct ohci_regs *regs = ohci->regs;
int ints;
+ volatile int dummy;
/* we can eliminate a (slow) readl() if _only_ WDH caused this irq */
if ((ohci->hcca->done_head != 0)
@@ -581,6 +582,7 @@
spin_unlock (&ohci->lock);
writel (ints, ®s->intrstatus);
+ dummy=readl (®s->revision);
writel (OHCI_INTR_MIE, ®s->intrenable);
}
--- linux-2.5.44/drivers/usb/core/devio.c 2002-10-19 12:01:54.000000000 +0200
+++ linux-2.5.44-isp1561/drivers/usb/core/devio.c 2003-06-27 12:50:59.000000000
+0200
@@ -537,22 +537,22 @@
return -EINVAL;
}
i = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), ctrl.bRequest,
ctrl.bRequestType,
- ctrl.wValue, ctrl.wIndex, tbuf, ctrl.wLength,
tmo);
+ ctrl.wValue, ctrl.wIndex, tbuf+4, ctrl.wLength,
tmo);
if ((i > 0) && ctrl.wLength) {
- if (copy_to_user(ctrl.data, tbuf, ctrl.wLength)) {
+ if (copy_to_user(ctrl.data, tbuf+4, ctrl.wLength)) {
free_page((unsigned long)tbuf);
return -EFAULT;
}
}
} else {
if (ctrl.wLength) {
- if (copy_from_user(tbuf, ctrl.data, ctrl.wLength)) {
+ if (copy_from_user(tbuf+4, ctrl.data, ctrl.wLength)) {
free_page((unsigned long)tbuf);
return -EFAULT;
}
}
i = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), ctrl.bRequest,
ctrl.bRequestType,
- ctrl.wValue, ctrl.wIndex, tbuf, ctrl.wLength,
tmo);
+ ctrl.wValue, ctrl.wIndex, tbuf+4, ctrl.wLength,
tmo);
}
free_page((unsigned long)tbuf);
if (i<0) {
signature.asc
Description: Digital signature
