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