usb: Keep async schedule running only across mass storage xfers

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+renesas@gmail.com>
Cc: Lukasz Majewski <lukma@denx.de>
Cc: Tom Rini <trini@konsulko.com>
33 jobs for async in 110 minutes and 14 seconds (queued for 17 minutes and 8 seconds)
latest
Status Job ID Name Coverage
  Testsuites
passed #72597
all
Build envtools

00:00:26

passed #72596
all
Build tools-only

00:00:26

passed #72595
all
Check for configs without MAINTAINERS entry

00:00:23

passed #72598
all
Run binman, buildman, dtoc and patman testsuites

00:01:02

passed #72591
all
cppcheck

00:07:29

passed #72592
all
grep TODO/FIXME/HACK

00:00:30

passed #72593
all
htmldocs

00:00:31

passed #72594
all
sloccount

00:00:44

 
  Test.Py
passed #72602
all
evb-ast2500 test.py

00:00:53

passed #72606
all
integratorcp_cm926ejs test.py

00:00:50

passed #72613
all
qemu-ppce500 test.py

00:00:50

passed #72614
all
qemu-riscv64 test.py

00:01:12

passed #72615
all
qemu-x86 test.py

00:01:33

passed #72616
all
qemu-x86_64 test.py

00:01:27

passed #72607
all
qemu_arm test.py

00:01:33

passed #72608
all
qemu_arm64 test.py

00:01:30

passed #72609
all
qemu_mips test.py

00:00:51

passed #72611
all
qemu_mips64 test.py

00:00:51

passed #72612
all
qemu_mips64el test.py

00:00:51

passed #72610
all
qemu_mipsel test.py

00:00:50

passed #72599
all
sandbox test.py

00:03:34

passed #72600
all
sandbox with clang test.py

00:03:33

passed #72603
all
sandbox_flattree test.py

00:01:09

passed #72601
all
sandbox_spl test.py

00:01:04

passed #72604
all
vexpress_ca15_tc2 test.py

00:00:52

passed #72605
all
vexpress_ca9x4 test.py

00:00:55

passed #72618
all
xilinx_versal_virt test.py

00:00:53

passed #72619
all
xtfpga test.py

00:00:50

passed #72617
all
zynq_zc702 test.py

00:00:56

 
  World Build
failed #72620
all
build all 32bit ARM platforms

00:46:19

failed #72621
all
build all 64bit ARM platforms

00:32:32

failed #72622
all
build all PowerPC platforms

00:13:56

failed #72623
all
build all other platforms

00:15:01

 
Name Stage Failure
failed
build all other platforms World Build
w+arch/mips/dts/pic32mzda_sk.dtb: Warning (interrupts_property): /sdhci@1f8ec000: Missing interrupt-parent
w+arch/mips/dts/pic32mzda_sk.dtb: Warning (interrupts_property): /ethernet@1f882000: Missing interrupt-parent
w+arch/mips/dts/pic32mzda_sk.dtb: Warning (interrupts_property): /musb@1f8e3000: Missing interrupt-parent
w+arch/sh/dts/sh7751-r2dplus.dtb: Warning (reg_format): /pci@fe200000:reg: property has invalid length (16 bytes) (#address-cells == 2, #size-cells == 1)
w+arch/sh/dts/sh7751-r2dplus.dtb: Warning (avoid_default_addr_size): /pci@fe200000: Relying on default #address-cells value
w+arch/sh/dts/sh7751-r2dplus.dtb: Warning (avoid_default_addr_size): /pci@fe200000: Relying on default #size-cells value
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit code 128
failed
build all PowerPC platforms World Build
+v2019.10 release.
+This board does not use CONFIG_DM_SPI_FLASH. Please update
+the board to use CONFIG_SPI_FLASH before the v2019.07 release.
+This board does not use CONFIG_DM_VIDEO Please update
+the board to use CONFIG_DM_VIDEO before the v2019.07 release.
+This board does use CONFIG_LIBATA but has CONFIG_AHCI not
+enabled. Please update the storage controller driver to use
+CONFIG_AHCI before the v2019.07 release.
ERROR: Job failed: exit code 128
failed
build all 64bit ARM platforms World Build
w+arch/arm/dts/armada-xp-maxbcm.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@2: Relying on default #size-cells value
w+arch/arm/dts/armada-xp-maxbcm.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@3: Relying on default #address-cells value
w+arch/arm/dts/armada-xp-maxbcm.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@3: Relying on default #size-cells value
w+arch/arm/dts/armada-xp-theadorable.dtb: Warning (reg_format): /soc/internal-regs/mdio/ethernet-phy@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
w+arch/arm/dts/armada-xp-theadorable.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@0: Relying on default #address-cells value
w+arch/arm/dts/armada-xp-theadorable.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@0: Relying on default #size-cells value
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit code 128
failed
build all 32bit ARM platforms World Build
w+arch/arm/dts/armada-xp-maxbcm.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@2: Relying on default #size-cells value
w+arch/arm/dts/armada-xp-maxbcm.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@3: Relying on default #address-cells value
w+arch/arm/dts/armada-xp-maxbcm.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@3: Relying on default #size-cells value
w+arch/arm/dts/armada-xp-theadorable.dtb: Warning (reg_format): /soc/internal-regs/mdio/ethernet-phy@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
w+arch/arm/dts/armada-xp-theadorable.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@0: Relying on default #address-cells value
w+arch/arm/dts/armada-xp-theadorable.dtb: Warning (avoid_default_addr_size): /soc/internal-regs/mdio/ethernet-phy@0: Relying on default #size-cells value
w+arch/arm/dts/s5pc1xx-smdkc100.dtb: Warning (interrupts_property): /serial@ec000000: Missing interrupt-parent
w+arch/arm/dts/stv0991.dtb: Warning (clocks_property): /spi@80203000:clocks: Could not get phandle node for (cell 0)
ERROR: Job failed: exit code 128