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]

Reply via email to