Hi,Alan
                I debug the usb host driver (linux 2.6.10) for ehci today.
                and got some infomation:
                1/the max_packet_size for __ep0in__ is 8. 
                        (sometimes driver can't go through the "GET_DESCRIPTOR 
request " in hub.c: hub_port_init();
                         while max_packet_size is 0.)
        2/the USBCMD is ___10b09___ ,USBSTS is ___8488___,before submit async;
                  USBCMD is ___10b29___ ,USBSTS is ___8489___,and then USBSTS 
is 84a8,if urb was done sucessfully.
              USBCMD is ___10b29___ ,USBSTS is ___8a88___,and driver 
hang(___what is it doing that time?___).  if not sucessfully.
                          then if i plug out the usb cable from host controller,
              I get USBCMD is ___10b29___ ,USBSTS is ___840e___,qTD- >token 
:babble error & host halt error. 

                          a)I am not very clearly about reclaim bit in USBSTS 
reg . 
              b)and i got the sense that the  USBSTS ___8a88__ status occured 
after timeout_kill(),which does unlink_async .

        so,i come to this point that: 
              why host driver will timeout (timeout value was set in 
usb_control_msg())? that means the host driver can't complete
        the async schedule in time.if the URBs were still not given back to 
driver ,why? 
                        
                          thanks your reply!

                best regards
        

------------------  
JackRain
2006-12-19

-------------------------------------------------------------
发件人:Alan Stern
发送日期:2006-12-19 01:38:59
收件人:JackRain
抄送:linux-usb-users
主题:Re: [Linux-usb-users] EHCI usb host debug

On Mon, 18 Dec 2006, JackRain wrote:

> Hi,all
> 
>  I am working on usb host controller ,which implements EHCI .
>         the problem is the host couldn't identify the usb device sometimes.
>         for example,the first time the usb device plugged in the usb host can 
> be identified.
>         but couldn't the twice ,or serval times later.
> 
>         the main error is :  babble error,which can be seen by the EHCI qTD- 
> >token :  0x00070d50
>         and I get -ECONNRESET in ehci_urb_done();        
>         also the debug msg in   "ehci-q.c :   ep0in status -104 len 24/31."  
> display in console 
>  right after i plug out the device.

That doesn't make sense.  The driver would not return that error code if 
there really was a Babble error.

>         I have serval questions:
>  1/the babble error ,defined in EHCI /UHCI spec that it was cause by device 
> sends more data than host expects.
>           why it happens when it is "24/31" (host gets short packet data) ?

You didn't mention what type of endpoint this was for or what the 
maxpacket value was.  If the maxpacket was 8 then 24/31 does not indicate 
a short packet was received.  And if the device then sent a fourth packet 
containing 8 bytes, it would show up as a Babble error.

>         2/what hardware issue cause the babble error ? maybe i can modify 
> hardware pheriphal to improve usb signal.

If you're working on the host controller, then you're in a good position
to find out what's wrong with it.  You can't expect us to know more than
you do when you're right there with the hardware.

Alan Stern
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to