39 lines
1.6 KiB
Diff
39 lines
1.6 KiB
Diff
From ba59a0812ba0e223bd0af8f4dea6c971b6289696 Mon Sep 17 00:00:00 2001
|
|
From: Anand Gadiyar <gadiyar-l0cyMroinI0@public.gmane.org>
|
|
Date: Thu, 2 Apr 2009 12:07:08 -0700
|
|
Subject: [PATCH] musb: use dma mode 1 for TX if transfer size equals maxpacket (v2)
|
|
|
|
Currently, with Inventra DMA, we use Mode 0 if transfer size is less
|
|
than or equal to the endpoint's maxpacket size. This requires that
|
|
we explicitly set TXPKTRDY for that transfer.
|
|
|
|
However the musb_g_tx code will not set TXPKTRDY twice if the last
|
|
transfer is exactly equal to maxpacket, even if request->zero is set.
|
|
Using Mode 1 will solve this; a better fix might be in musb_g_tx().
|
|
|
|
Without this change, musb will not correctly send out a ZLP if the
|
|
last transfer is the maxpacket size and request->zero is set.
|
|
|
|
Signed-off-by: Anand Gadiyar <gadiyar-l0cyMroinI0@public.gmane.org>
|
|
Signed-off-by: David Brownell <dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
|
|
---
|
|
drivers/usb/musb/musb_gadget.c | 2 +-
|
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
|
|
index bc197b2..e8f920c 100644
|
|
--- a/drivers/usb/musb/musb_gadget.c
|
|
+++ b/drivers/usb/musb/musb_gadget.c
|
|
@@ -310,7 +310,7 @@ static void txstate(struct musb *musb, struct musb_request *req)
|
|
/* setup DMA, then program endpoint CSR */
|
|
request_size = min(request->length,
|
|
musb_ep->dma->max_len);
|
|
- if (request_size <= musb_ep->packet_sz)
|
|
+ if (request_size < musb_ep->packet_sz)
|
|
musb_ep->dma->desired_mode = 0;
|
|
else
|
|
musb_ep->dma->desired_mode = 1;
|
|
--
|
|
1.6.0.4
|
|
|