[U-Boot] usb EHCI failing with 'EHCI fail timeout STD_ASS reset'
Dan Lykowski
lykowdk at gmail.com
Thu Apr 8 17:04:46 CEST 2010
Hi everyone,
I've seen this question posted a few times in the past with no answer.
Since I was having the same problem, I thought I would share the solution I
came up with.
I'll try to provide a patch if I can get my mess cleaned up.
After some digging, I was able to see the EHCI HC getting a Master Abort
over the PCI bus.
It turns out that some.. all??.. PCI EHCI controllers have 64-bits for the
buffer registers in the qTD structure.
See Appendix B in the EHCI specification.
This is what I changed the qTD structure to.
/* Queue Element Transfer Descriptor (qTD). */
struct qTD {
uint32_t qt_next;
uint32_t qt_altnext;
uint32_t qt_token;
uint32_t qt_buffer[5];
uint32_t qt_buffer_hi[5];
uint32_t unused[3];
};
Adding the qt_buffer_hi array, realigning the buffers on 32-byte boundries,
and filling qt_buffer_hi with zeros when qt_buffer is being filled fixes the
problem.
Thanks,
Dan Lykowski
More information about the U-Boot
mailing list