All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] usb: musb: Fix DMA for host mode
@ 2016-02-08 22:15 Joshua Henderson
  2016-02-08 22:15 ` [PATCH v2 2/2] usb: musb: Fix DMA desired mode for Mentor DMA engine Joshua Henderson
  2016-02-09 11:06 ` [PATCH v2 1/2] usb: musb: Fix DMA for host mode Sergei Shtylyov
  0 siblings, 2 replies; 4+ messages in thread
From: Joshua Henderson @ 2016-02-08 22:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Cristian Birsan, Joshua Henderson, Felipe Balbi,
	Greg Kroah-Hartman, linux-usb

From: Cristian Birsan <cristian.birsan@microchip.com>

Commit ac33cdb16681 ("usb: musb: Remove ifdefs for musb_host_rx in
musb_host.c part5") introduces a problem setting DMA host mode.

This commit fixes the done condition that advances the musb schedule.
Without this patch the the msub_advance_schedule() is called immediately
after receiving an endpoint rx interrupt without waiting for the dma
transfer to complete. As a consequence when the dma complete interrupt
arrives the in_qh member of hw_ep is already null an the musb_host_rx()
exits on !urb error case.

Signed-off-by: Cristian Birsan <cristian.birsan@microchip.com>
Signed-off-by: Joshua Henderson <joshua.henderson@microchip.com>
---
Changes since v1:
	- Don't add unecessary new variable. Just correct done.
---
 drivers/usb/musb/musb_host.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 795a45b..6bef86f 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -2006,9 +2006,15 @@ void musb_host_rx(struct musb *musb, u8 epnum)
 			done = musb_rx_dma_in_inventra_cppi41(c, hw_ep, qh,
 							      urb, xfer_len,
 							      iso_err);
-			if (done)
+			if (done) {
+				/* Don't call msub_advance_schedule()
+				 * immediately after receiving an endpoint RX
+				 * interrupt without waiting for the DMA
+				 * transfer to complete.
+				 */
+				done = false;
 				goto finish;
-			else
+			} else
 				dev_err(musb->controller, "error: rx_dma failed\n");
 		}
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-02-09 11:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-08 22:15 [PATCH v2 1/2] usb: musb: Fix DMA for host mode Joshua Henderson
2016-02-08 22:15 ` [PATCH v2 2/2] usb: musb: Fix DMA desired mode for Mentor DMA engine Joshua Henderson
2016-02-09 11:14   ` Sergei Shtylyov
2016-02-09 11:06 ` [PATCH v2 1/2] usb: musb: Fix DMA for host mode Sergei Shtylyov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.