On Wed, 26 May 2004, Alexander Kulakov wrote:
> Alan Stern wrote:
>
> >Your log didn't give me any great new ideas... Clearly the device works
> >okay with the usb-uhci driver in 2.4 but not the uhci-hcd driver in 2.6.
> >Have you tried the uhci driver in 2.4 as well?
> >
> >Also, do you have any other USB devices you can try plugging in to that
> >same port?
> >
> >
> Alan
>
> uhci driver doesn't work either.
This is just a shot in the dark. It's a patch for 2.6.6, addressing the
only significant difference I could see between the uhci and usb-uhci
drivers. Maybe it will make a difference, who knows?
If this doesn't work... In 2.6.6, look in the file
drivers/usb/core/usb.c. Around line 1124 you should see this:
wait_ms(10); /* Let the SET_ADDRESS settle */
Try changing the 10 to something larger, like 20, or 50, or 100.
Alan Stern
===== drivers/usb/host/uhci-hcd.c 1.110 vs edited =====
--- 1.110/drivers/usb/host/uhci-hcd.c Wed May 19 19:41:50 2004
+++ edited/drivers/usb/host/uhci-hcd.c Tue Jun 1 15:03:26 2004
@@ -2004,6 +2010,10 @@
outw(USBCMD_RS | USBCMD_CF | USBCMD_MAXP, io_addr + USBCMD);
uhci->hcd.state = USB_STATE_RUNNING;
+
+ /* Enable PIRQ */
+ pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP,
+ USBLEGSUP_DEFAULT);
}
/*
@@ -2054,15 +2064,16 @@
uhci->io_addr = (unsigned long) hcd->regs;
+ /* Kick BIOS off this hardware and disable PIRQ */
+ pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, 0);
+
/* Turn off all interrupts */
outw(0, uhci->io_addr + USBINTR);
- /* Maybe kick BIOS off this hardware. Then reset, so we won't get
- * interrupts from any previous setup.
+ /* Reset the entire controller and the USB bus, to wipe out any
+ * previous configuration.
*/
reset_hc(uhci);
- pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP,
- USBLEGSUP_DEFAULT);
return 0;
}
@@ -2324,7 +2335,7 @@
* At this point, we're guaranteed that no new connects can be made
* to this bus since there are no more parents
*/
-
+ pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, 0);
reset_hc(uhci);
spin_lock_irq(&uhci->schedule_lock);
@@ -2376,6 +2387,8 @@
outl(uhci->fl->dma_handle, uhci->io_addr + USBFLBASEADD);
outw(USBINTR_TIMEOUT | USBINTR_RESUME | USBINTR_IOC |
USBINTR_SP, uhci->io_addr + USBINTR);
+ pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP,
+ USBLEGSUP_DEFAULT);
uhci->resume_detect = 1;
} else {
reset_hc(uhci);
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel