Hi,

fighting with a storage deivce which babbles bady under certian error contitions, I stumbled over the open issue with VIA Chips + Babble (they freeze internally).
Somwhere along 2.5.15 the alternate uhci driver got a watchdog feature to reanimate dead uhci's. The two 2.4 uhci's and the remaining 2.6 uhci_hcd don't have this feature at all, right ?


IIRC somwhere in 2001 JE objected to the Watchdog solution, untill we know ow MS handles this.
My guess is that they have a blacklist and do a complete reset after babble on blacklisted chips.


I did following hack, which solves the problem in a rather ugly way:
... uhci_map_status(...)
{
...
if (status & TD_CTRL_BABBLE){ /* Babble */
// disable root-hub processing ?
start_hc(s);
// reenable rh ?
return -EOVERFLOW;
}
...
}
Ofcourse all connected devices are re-enumerated. But afterwards things go on well.


If we assume that a babble kills the hc, we should be able to do the reset any time after, right ?

Any ideas / anybody had any contact to VIA in the meantime ?

- sda


p.s.
babble logs:
Oct 21 18:19:21 ice kernel: usb-storage: queuecommand() called
Oct 21 18:19:21 ice kernel: usb-storage: *** thread awakened.
Oct 21 18:19:21 ice kernel: usb-storage: Command READ_10 (10 bytes)
Oct 21 18:19:21 ice kernel: usb-storage: 28 60 00 00 13 88 00 00 fe 00 78 cf
Oct 21 18:19:21 ice kernel: usb-storage: Bulk command S 0x43425355 T 0x92 Trg 0 LUN 3 L 130048 F 128 CL 10
Oct 21 18:19:21 ice kernel: usb-storage: Bulk command transfer result=0
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_transfer_partial(): xfer 4096 bytes
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_bulk_msg() returned 0 xferred 4096/4096
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_transfer_partial(): transfer complete
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_transfer_partial(): xfer 4096 bytes
Oct 21 18:19:21 ice kernel: usb-uhci.c: interrupt, status 2, frame# 1354
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_bulk_msg() returned -32 xferred 3072/4096
Oct 21 18:19:21 ice kernel: usb-storage: clearing endpoint halt for pipe 0xc0008380
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_clear_halt: attempting to clear endpoint=129
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_clear_halt: result=0
Oct 21 18:19:21 ice kernel: usb-storage: usb_stor_transfer_partial(): unknown error
Oct 21 18:19:21 ice kernel: usb-storage: Bulk data transfer result 0x2
Oct 21 18:19:21 ice kernel: usb-storage: Attempting to get CSW...
Oct 21 18:19:21 ice kernel: usb-storage: Bulk status result = -75 <<------ BABBLE
Oct 21 18:19:21 ice kernel: usb-storage: -- transport indicates error, resetting
...now the bus goes dead...
Oct 21 18:19:21 ice kernel: Bulk reset requested
Oct 21 18:19:21 ice kernel: usb_stor_Bulk_reset: Tring usb_reset_device...
Oct 21 18:19:21 ice kernel: hub.c/usb_reset_device(): usb_hub_port_reset(,3,,10)
Oct 21 18:19:21 ice kernel: hub.c/usb_hub_port_reset()
Oct 21 18:19:22 ice kernel: usb_control/bulk_msg: timeout
Oct 21 18:19:23 ice kernel: usb_control/bulk_msg: timeout
Oct 21 18:19:23 ice kernel: hub.c: usb_hub_port_status (2) failed (err = -110)
Oct 21 18:19:23 ice kernel: hub.c/usb_hub_port_wait_reset() - error reading port status.
Oct 21 18:19:23 ice kernel: port 4 of hub 2 not enabled, trying reset again...
Oct 21 18:19:24 ice kernel: usb_control/bulk_msg: timeout
Oct 21 18:19:25 ice kernel: usb_control/bulk_msg: timeout




-------------------------------------------------------
This SF.net email is sponsored by OSDN developer relations
Here's your chance to show off your extensive product knowledge
We want to know what you know. Tell us and you have a chance to win $100
http://www.zoomerang.com/survey.zgi?HRPT1X3RYQNC5V4MLNSV3E54
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to