• David Brownell's avatar
    USB: omap_udc: workaround dma_free_coherent() bogosity · 8a3c1f57
    David Brownell authored
    Various fixes to omap_udc, noted with some recent testing:
    
     - Cope with some SMP-induced braindamage in ARM's dma_{alloc,free}_coherent()
       implementation: alloc() can be called with IRQs blocked, but since late
       last year that's no longer true for free().  This resolves really NASTY
       problems with logspamming via WARN_ON(), indicating N-page leaks.
    
     - Be more correct in handling GET_STATUS request for RECIP_ENDPOINT ... the
       previous code only handled RECIP_INTERFACE, this version should be correct
       except for (sigh) bulk/interrupt endpoints.
    
     - Provide a better name for the function reporting whether the board has
       vbus sensing wired up.
    
    GET_STATUS requests for endpoint status still acts strangely though, at least
    given one flakey host doesn't always ack the first DATA packet, then the packet
    that gets retransmitted doesn't have data!
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    8a3c1f57
omap_udc.c 79.9 KB