On Mon, Apr 06, 2020 at 02:29:44PM +0200, Marek Vasut wrote: > 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: Marek Vasut <marek.vasut+rene...@gmail.com> > Cc: Lukasz Majewski <lu...@denx.de> > Cc: Tom Rini <tr...@konsulko.com>
Tested-by: Tom Rini <tr...@konsulko.com> [omap3_beagle, previously failing] -- Tom
signature.asc
Description: PGP signature