summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBin Liu <b-liu@ti.com>2015-08-24 15:28:37 -0500
committerSasha Levin <sasha.levin@oracle.com>2015-12-02 23:24:46 -0500
commit111bbf69b6dde18e07c82803012bcd798f21de06 (patch)
treed8094241a9828293f06d318c316af1de77d83e9c /drivers
parent7059616548ef5443e3cf70fa3befdc3d4f9c2da1 (diff)
usb: musb: fix cppi channel teardown for isoch transfer
[ Upstream commit b431ba8803666e56c1d178a421b3cbc36e8d3d33 ] After a few iterations of start/stop UVC camera streaming, the streaming stops. This patch adds 250us delay in the cppi channel abort path to let cppi drain properly. Using 50us delay seems to be too aggressive, some webcams are still broken. 250us is the original value used in TI 3.2 kernel. Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/musb/musb_cppi41.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/musb/musb_cppi41.c b/drivers/usb/musb/musb_cppi41.c
index 6afbd0dedec6..8dfd86771fac 100644
--- a/drivers/usb/musb/musb_cppi41.c
+++ b/drivers/usb/musb/musb_cppi41.c
@@ -543,6 +543,9 @@ static int cppi41_dma_channel_abort(struct dma_channel *channel)
} else {
cppi41_set_autoreq_mode(cppi41_channel, EP_MODE_AUTOREQ_NONE);
+ /* delay to drain to cppi dma pipeline for isoch */
+ udelay(250);
+
csr = musb_readw(epio, MUSB_RXCSR);
csr &= ~(MUSB_RXCSR_H_REQPKT | MUSB_RXCSR_DMAENAB);
musb_writew(epio, MUSB_RXCSR, csr);