rv1126-uboot/drivers/usb
Marek Vasut db0e15c2c3 UPSTREAM: usb: ehci-hcd: Keep async schedule running
Profiling the EHCI driver shows a significant performance problem in
ehci_submit_async(). Specifically, this function keeps enabling and
disabling async schedule back and forth for every single transaction.
However, enabling/disabling the async schedule does not take effect
immediatelly, but instead may take up to 1 mS (8 uFrames) to complete.

This impacts USB storage significantly, esp. since the recent reduction
of maximum transfer size to support more USB storage devices. This in
turn results in sharp increase in the number of ehci_submit_async()
calls. Since one USB storage BBB transfer does three such calls and
the maximum transfer size is 120 kiB, the overhead is 6 mS per 120 kiB,
which is unacceptable.

However, this overhead can be removed simply by keeping the async
schedule running. Specifically, the first transfer starts the async
schedule and then each and every subsequent transfer only adds a new
QH into that schedule, waits until the QH is completed and does NOT
disable the async schedule. The async schedule is stopped only by
shutting down the controller, which must happen before moving out
of U-Boot, otherwise the controller will corrupt memory.

Change-Id: I33a5eccac2579be09c5f1c9385ae245e680bc125
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
(cherry picked from commit 02b0e1a36c5bc20174299312556ec4e266872bd6)
2020-01-07 17:25:02 +08:00
..
common UPSTREAM: usb: common: add support to get maximum speed from dt 2020-01-07 17:24:51 +08:00
dwc3 UPSTREAM: dwc3: flush cache only if there is a buffer attached to a request 2020-01-07 17:25:02 +08:00
emul UPSTREAM: usb: Add nonblock argument to submit_int_msg 2020-01-07 17:25:00 +08:00
eth UPSTREAM: usb: composite: Move bitmap related operations to ./include/linux/bitmap.h 2020-01-07 17:24:55 +08:00
gadget UPSTREAM: gadget: f_thor: properly enable 3rd endpoint defined by the protocol 2020-01-07 17:25:02 +08:00
host UPSTREAM: usb: ehci-hcd: Keep async schedule running 2020-01-07 17:25:02 +08:00
musb UPSTREAM: usb: musb_hcd: fix compilation error 2020-01-07 17:25:01 +08:00
musb-new UPSTREAM: usb: Add nonblock argument to submit_int_msg 2020-01-07 17:25:00 +08:00
phy UPSTREAM: usb: xhci: move xhci.h to include usb 2020-01-07 17:25:01 +08:00
ulpi UPSTREAM: usb: ulpi: kconfig: Remove meaningless choice default 2020-01-07 17:24:47 +08:00
Kconfig UPSTREAM: usb: Don't enable CONFIG_SPL_DM_USB for non-DM SPL 2020-01-07 17:24:55 +08:00