linux/drivers/usb/dwc2
Douglas Anderson 17dd5b642d usb: dwc2: host: Add a delay before releasing periodic bandwidth
We'd like to be able to use HCD_BH in order to speed up the dwc2 host
interrupt handler quite a bit.  However, according to the kernel doc for
usb_submit_urb() (specifically the part about "Reserved Bandwidth
Transfers"), we need to keep a reservation active as long as a device
driver keeps submitting.  That was easy to do when we gave back the URB
in the interrupt context: we just looked at when our queue was empty and
released the reserved bandwidth then.  ...but now we need a little more
complexity.

We'll follow EHCI's lead in commit 9118f9eb4f ("USB: EHCI: improve
interrupt qh unlink") and add a 5ms delay.  Since we don't have a whole
timer infrastructure in dwc2, we'll just add a timer per QH.  The
overhead for this is very small.

Note that the dwc2 scheduler is pretty broken (see future patches to fix
it).  This patch attempts to replicate all old behavior and just add the
proper delay.

Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
2016-03-04 15:14:41 +02:00
..
core_intr.c usb: dwc2: host: Clear interrupts before handling them 2015-12-15 09:12:41 -06:00
core.c usb: dwc2: host: fix split transfer schedule sequence 2016-03-04 15:14:40 +02:00
core.h usb: dwc2: host: Add scheduler tracing 2016-03-04 15:14:41 +02:00
debug.h usb: dwc2: move debugfs code to a separate file 2015-04-29 15:18:25 -05:00
debugfs.c usb: dwc2: Use platform endianness when accessing registers 2015-09-27 10:54:31 -05:00
gadget.c usb: dwc2: gadget: Repair DSTS register decoding 2015-12-22 12:03:05 -06:00
hcd_ddma.c usb: dwc2: host: Always add to the tail of queues 2016-03-04 15:14:40 +02:00
hcd_intr.c usb: dwc2: host: Add scheduler tracing 2016-03-04 15:14:41 +02:00
hcd_queue.c usb: dwc2: host: Add a delay before releasing periodic bandwidth 2016-03-04 15:14:41 +02:00
hcd.c usb: dwc2: host: fix split transfer schedule sequence 2016-03-04 15:14:40 +02:00
hcd.h usb: dwc2: host: Add a delay before releasing periodic bandwidth 2016-03-04 15:14:41 +02:00
hw.h usb: dwc2: host: fix descriptor list address masking 2015-12-15 09:12:41 -06:00
Kconfig usb: dwc2: USB_DWC2 should depend on HAS_DMA 2016-02-20 20:23:02 -08:00
Makefile usb: dwc2: remove dwc2_platform.ko 2015-04-29 15:20:11 -05:00
pci.c usb: dwc2: pci: Add device mode to the dwc2-pci driver 2015-03-11 15:08:17 -05:00
platform.c usb: dwc2: host: Set host_rx_fifo_size to 525 for rk3066 2016-03-04 15:14:39 +02:00