• Mike Frysinger's avatar
    USB: musb: blackfin: work around anomaly 05000450 · 13254307
    Mike Frysinger authored
    DMA mode 1 data corruption anomaly on Blackfin systems.  This issue is
    specific to the Blackfin silicon as the bug appears to be related to the
    connection of the musb ip to the bus/dma fabric.
    
    Data corruption when using USB DMA mode 1. (Issue manager 17-01-0105)
    DMA mode 1 allows large size transfers to generate a single interrupt
    at the end of the entire transfer.  The transfer is split up in packets
    of length specified in the Maximum Packet Size field for that endpoint.
    If the transfer size is not an integer multiple of the Maximum Packet
    Size, a short packet will be present at the end of the transfer.
    
    Under certain conditions this packet may be corrupted in the USB FIFO.
    
    Workaround:
    Use DMA mode 1 to transfer (n* Maximum Packet Size) and schedule DMA
    mode 0 to transfer the short packet.
    
    As an example if your transfer size is 33168 bytes and Maximum Packet
    Size equals 512, schedule [33168 - (33168 mod 512)] in DMA mode 1 and
    the remainder (33168 mod 512) in DMA mode 0.
    Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    13254307
musbhsdma.c 11.6 KB