AT91RM9200 and possibly other ARM targets are broken in
8-current after recent commit (more)
Mark Tinguely
tinguely at casselton.net
Tue Apr 22 17:08:23 UTC 2008
> I've found a new issue :-(
>
> The OHCI driver does not work in 8-current when using the USB P4 project. I
> get garbage data when I do USB transfers. I suspect that there is something
> wrong with the cache flush and invalidate stuff in relation to bus_dma. I
> have carefully reviewed the OHCI driver and it uses the "bus_dmamap_sync"
> function properly.
>
> Using my USB patchset to build the same USB code on 7-current does not yield
> these problems.
>
> I see that there has been a lot of changes to "sys/arm/arm/pmap.c" for
> example.
I quickly looked at the new_usb_1_7_3 code and noticed that it should be
allocation memory with BUS_DMA_COHERENT flag set. What this means is
after the memory is allocated, a new, non-cachable VM address is allocated
and used in the place of the original address.
I *think* this new address lives in DMA S/G lists and should not be mapped
into an address space except to temporarily to copy data in/out. I will
assume this assumption is incorrect and look through the pmap code all over
again.
> Do you have a clue about what is causing this ?
>
> --HPS
>
> Output from 7-current:
>
> usb0: 12Mbps Full Speed USB v1.0
> uhub0: <Atmel OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usb0
> uhub0: 2 ports with 2 removable, self powered
> uplcom0: <Prolific Technology Inc. USB-Serial Controller D, class 0/0, rev
> 1.10/4.00, addr 2> on usb0
> usbd_alloc_device: set address 3 failed (ignored)
> usbd_alloc_device: getting device descriptor at addr 3 failed!
> uhub0:uhub_reattach_port: could not allocate new device!
> mmc0: setting transfer rate to 30.000MHz
>
> Output from 8-current:
>
> uplcom0: <???????? ????????, class 0/0, rev 1.10/4.00, addr 2> on usb1
> uplcom0: failed to set configuration, error=USBD_ERR_SHORT_XFER
> device_attach: uplcom0 attach returned 6
There are two clues of short transfers - could that be a clue?
1) attach's descriptor string is only 17 character rather than
expected 48 - and the 17 characters are not Unicode.
2) set configuration has a USBD_ERR_SHORT_XFER error.
I don't know if turning on USB debug printing will give more clues.
I will look through the pmap code and see if I can chase up something.
--Mark.
More information about the freebsd-arm
mailing list