On Wed, Apr 19, 2000 at 07:58:42PM +0000, Mikael Nystr�m wrote:
> Apr 19 19:11:37 veiron kernel: usb-uhci.c: interrupt, status 3, frame#
> 1600
> Apr 19 19:11:37 veiron kernel: usb-uhci-debug.h: TD @
> c1e618a0/01E618A0, MaxLen=00 DT1 EP=3 Dev=2 PID=( IN ) buf=0797ecde
> Apr 19 19:11:37 veiron kernel: usb-uhci-debug.h: Len=00 e3 SPD IOC
> Stalled Babble
> Apr 19 19:11:37 veiron kernel: usb-uhci-debug.h: Link points to TD @
> 01e61560, Breadth first
Aaah... Babble. So the camera wants to send more data than the host
requests. This seems to be a problem of the camera itself. Only one byte
is requested, but the camera tries to send more. There are a few other
devices that exhibit this behavior.
> Repeated severel times (just the frame# differs).
>
> /proc/bus/usb/devices
> T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
> B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
> D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
> P: Vendor=0000 ProdID=0000 Rev= 0.00
> S: Product=USB UHCI Root Hub
> S: SerialNumber=e000
> C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
> I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
> E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
> T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
> D: Ver= 1.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=32 #Cfgs= 1
> P: Vendor=04a9 ProdID=3043 Rev= 0.01
> S: Manufacturer=Canon Inc.
> S: Product=PowerShot S20
> C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=100mA
> I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbscanner
> E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
> E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
> E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl= 96ms
^^
The scanner driver asks for one byte, but the endpoint size is 64. Maybe the
camera likes not other requestsize. For a very quick and dirty hack
you can try to increase the request size in scanner.c to 64 (about line 731):
FILL_INT_URB(&scn->scn_irq, dev,
usb_rcvintpipe(dev, have_intr),
&scn->button, 1, irq_scanner, scn,
// endpoint[(int)have_intr].bInterval);
250);
should be
FILL_INT_URB(&scn->scn_irq, dev,
usb_rcvintpipe(dev, have_intr),
&scn->button,endpoint[(int)have_intr].wMaxPacketSize,
irq_scanner, scn,
// endpoint[(int)have_intr].bInterval);
250);
You also have to change scanner.h (about line 53) to
unsigned char button; /* Front panel buffer */
char safetybuffer[64]; /* if really 64 bytes arrive */
> However I tried the "alternative" driver uhci.c, and it works with no
> problem, not even the "delay" exist when I try to shutdown the camera:
<...>
> I'll be very happy if anyone can help me finding out why my camera
> dislike the usb-uhci driver, where do I start?
I'm 99% certain that uhci.o also has this problem, but simply doesn't print
the error message.
--
Bye
Georg Acher, [EMAIL PROTECTED]
http://www.in.tum.de/~acher/
"Oh no, not again !" The bowl of petunias
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]