Skip to content
  • Marek Vasut's avatar
    usb: Keep async schedule running only across mass storage xfers · 404ffa62
    Marek Vasut authored
    
    
    Rather than keeping the asynchronous schedule running always, keep it
    running only across USB mass storage transfers for now, as it seems
    that keeping it running all the time interferes with certain control
    transfers during device enumeration.
    
    Note that running the async schedule all the time should not be an
    issue, especially on EHCI HCD, as that one implements most of the
    transfers using async schedule.
    
    Note that we have usb_disable_asynch(), which however is utterly broken.
    The usb_disable_asynch() blocks the USB core from doing async transfers
    by setting a global flag. The async schedule should however be disabled
    per USB controller. Moreover, setting a global flag does not prevent the
    controller from using the async schedule, which e.g. the EHCI HCD does.
    
    This patch implements additional callback to the controller, which
    permits it to lock the async schedule and keep it running across
    multiple transfers. Once the schedule is unlocked, it must also be
    disabled. This thus prevents the async schedule from running outside
    of the USB mass storage transfers.
    
    Signed-off-by: default avatarMarek Vasut <marek.vasut+renesas@gmail.com>
    Cc: Lukasz Majewski <lukma@denx.de>
    Cc: Tom Rini <trini@konsulko.com>
    404ffa62