linux/drivers/usb/musb
Bin Liu 68fe05e2a4 usb: musb: fix tx fifo flush handling
Here are a few changes in musb_h_tx_flush_fifo().

- It has been observed that sometimes (if not always) musb is unable
  to flush tx fifo during urb dequeue when disconnect a device. But
  it seems to be harmless, since the tx fifo flush is done again in
  musb_ep_program() when re-use the hw_ep.

  But the WARN() floods the console in the case when multiple tx urbs
  are queued, so change it to dev_WARN_ONCE().

- applications could queue up many tx urbs, then the 1ms delay could
  causes minutes of delay in device disconnect. So remove it to get
  better user experience. The 1ms delay does not help the flushing
  anyway.

- cleanup the debug code - related to lastcsr.

----
Note: The tx fifo flush issue has been observed during device disconnect
on AM335x.

To reproduce the issue, ensure tx urb(s) are queued when unplug the usb
device which is connected to AM335x usb host port.

I found using a usb-ethernet device and running iperf (client on AM335x)
has very high chance to trigger the problem.

Better to turn on dev_dbg() in musb_cleanup_urb() with CPPI enabled to
see the issue when aborting the tx channel.

Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2015-11-17 11:35:48 -06:00
..
am35x.c usb: musb: am35x: fix build warnings 2015-05-27 12:29:57 -05:00
blackfin.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
blackfin.h
cppi_dma.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
cppi_dma.h
da8xx.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
davinci.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
davinci.h
jz4740.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
Kconfig usb: musb: Allow building in all the DMA code 2015-08-03 09:48:35 -05:00
Makefile usb: musb: sunxi: Add support for the Allwinner sunxi musb controller 2015-07-29 09:59:20 -05:00
musb_am335x.c usb: musb: Fix panic upon musb_am335x module removal 2014-06-27 10:53:06 -05:00
musb_core.c usb: musb: core: fix order of arguments to ulpi write callback 2015-11-16 10:15:42 -06:00
musb_core.h usb: musb: core: add common method of getting vbus status 2015-10-16 10:26:22 -05:00
musb_cppi41.c usb: musb: fix cppi channel teardown for isoch transfer 2015-09-21 14:42:36 -05:00
musb_debug.h
musb_debugfs.c usb: musb: add softconnect for host mode 2015-05-07 13:49:23 -05:00
musb_dma.h usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
musb_dsps.c usb: common: of_usb_get_dr_mode to usb_get_dr_mode 2015-09-27 10:54:31 -05:00
musb_gadget_ep0.c usb: musb: gadget: use common is_selfpowered 2015-01-29 10:35:43 -06:00
musb_gadget.c usb: musb: gadget: fix build break by adding missing 'break' 2015-08-07 09:25:46 -05:00
musb_gadget.h usb: musb: add Kconfig options for HOST, GAGDET or DUAL_ROLE modes 2013-05-28 19:22:23 +03:00
musb_host.c usb: musb: fix tx fifo flush handling 2015-11-17 11:35:48 -06:00
musb_host.h usb: musb: fix prototype for musb_port_reset 2013-12-20 15:05:43 -06:00
musb_io.h usb: musb: Make busctl_offset an io-op rather then a define 2015-05-26 10:46:54 -05:00
musb_regs.h usb: musb: Make busctl_offset an io-op rather then a define 2015-05-26 10:46:54 -05:00
musb_virthub.c usb: musb: host: rely on port_mode to call musb_start() 2015-07-06 12:34:07 -05:00
musbhsdma.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
musbhsdma.h usb: musb: remove generic_interrupt 2012-11-06 15:32:13 +02:00
omap2430.c usb: musb: omap2430: Fix regression caused by driver core change 2015-10-28 10:16:04 -07:00
omap2430.h usb: start using the control module driver 2013-01-25 12:27:24 +02:00
sunxi.c musb: sunxi: Make sunxi musb glue work without MUSB_PIO_ONLY 2015-10-09 16:35:00 -05:00
tusb6010_omap.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
tusb6010.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
tusb6010.h usb: musb: Fix up DMA related macros 2015-05-07 13:35:46 -05:00
ux500_dma.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
ux500.c usb: musb: ux500: Fix module autoload for OF platform driver 2015-09-14 10:14:54 -05:00