Messages like this, devoted to programming issues, generally belong on the 
linux-usb-devel mailing list.  Relatively few developers follow 
linux-usb-users.

Alan Stern

P.S.: Have you checked to see whether this problem has already been 
resolved in 2.6.9-rc1?


---------- Forwarded message ----------
Date: Fri, 3 Sep 2004 21:44:16 -0500 (EST)
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: [Linux-usb-users] OHCI bug introduced in 2.6.7-rc1

With these ingredients:
  HP OfficeJet 4110 printer/scanner combo
  hpoj 0.91 (hpoj.sourceforge.net)
  SiS OHCI controller
  libsane 1.0.7-4 (debian package)
  libusb-0.1-4 1:0.1.5-4 (debian package)

Since 2.6.7-rc1, the scanner stopped working. Attempting to use it results in
this stuff being logged:

usb 1-1: usbfs: USBDEVFS_BULK failed ep 0x85 len 4096 ret -110
hub 1-0:1.0: port 1 disabled by hub (EMI?), re-enabling...
usb 1-1: usbfs: USBDEVFS_BULK failed ep 0x85 len 4096 ret -110
usb 1-1: USB disconnect, address 2

The first line repeats several times, then the last few lines come, it all
happens very quickly.

There is an odd workaround: if I unload and reload ohci_hcd, it works.
ohci_hcd must be loaded twice before it will work.

I traced the bug to the periodic_reinit() function in drivers/usb/host/ohci.h,
and sprinkled it with printk's, which revealed that on the first module load,
ohci->fminterval is 0xbff82edf, and on the second load it is 0x27782edf.

>From there, I followed the trail to hc_reset() in
drivers/usb/host/ohci-hcd.c, where ohci->fminterval gets initialized.
Sprinkling that one with printk's, I found that the difference comes from the
following line:

  temp = ohci_readl (&ohci->regs->fminterval);

On the first module load, temp is 0xbff82edf. On the second module load, it
is 0x00002edf.

Replacing the first line of periodic_reinit() by its counterpart from 2.6.6
fixes the bug:

  /*GOOD:*/
  writel ((((6 * (FI - 210)) / 7) << 16) | FI, &ohci->regs->fminterval);
  /*BAD:*/
  /*writel (ohci->fminterval, &ohci->regs->fminterval);*/

This was a rough one... I discovered the unload-reload workaround by applying
the 2.6.7-rc1 piece-by-piece, reloading the modules after recompiling them,
without knowing that I needed to reboot in order to trigger the bug again.



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&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