Hello, Rodolfo Giometti wrote:
I'm trying to implement support for USB host into u-boot. I initialized the USB controller just as linux does, the EDs and the TDs look like good in memory but the controller seems not well reading them and on the bus I see random USB messages... I think that there could be some problem on memory coherency... some suggestion?
Be sure to set Config0.OD (bit 19), it's proven to fix the USB-related lockups on Au1500 at least. See arch/mips/common/cputable.c for the CPU steppings where it must be set to mask various errata. Also, try to disable USB controller's DMA coherency in the USB enable register (there's a related errata in all Au1xx0 family) -- the Linux driver doesn't do this though, and this shouldn't matter unless you're modifying USB buffers on the fly. :-) Also, note that this magic bit may be write only, so make sure it's set on every write to CP0 Config0 reg. See this patch:
http://www.linux-mips.org/archives/linux-mips/2006-03/msg00243.html
Thanks, Rodolfo
WBR, Sergei