[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