• David Brownell's avatar
    USB: PS3: Fix EHCI ISO transfer bug · 30bf54e6
    David Brownell authored
    This adds a workaround for an issue reported with ISO transfers
    on some EHCI controllers, most recently with VIA KT800 and PS3
    EHCI silicon.
    
    The issue is that the silicon doesn't necessarily seem to be done
    using ISO DMA descriptors (itd, sitd) when it marks them inactive.
    (One theory is that the ill-defined mechanism where hardware caches
    periodic transfer descriptors isn't invalidating their state...)
    With such silicon, quick re-use of those descriptors makes trouble.
    Waiting until the next frame seems to be a sufficient workaround.
    
    This patch ensures that the relevant descriptors aren't available
    for immediate re-use.  It does so by not recycling them until after
    issuing the completion callback which would reuse them by enqueueing
    an URB and thus (re)allocating ISO DMA descriptors.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Acked-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
    Cc: Masashi Kimoto <Masashi_Kimoto@hq.scei.sony.co.jp>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    30bf54e6
ehci-sched.c 58.8 KB