From fa10887d376f097b87f1ee361701c84b27c709aa Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Tue, 7 Aug 2012 16:26:32 +0300 Subject: [PATCH] --- yaml --- r: 325983 b: refs/heads/master c: 660fa8863d2623b733d7977a56e2990437abcbdb h: refs/heads/master i: 325981: 2fc6ab36f55d0ccccbeeafe20620d8744448e9c5 325979: 8a2805e98c9a93f3981c1fda03674d15dffffb75 325975: a937cd43ca3f9a5583491cb1dfb132c674723641 325967: dd2d75a8c8f89b50da88293d9bc055ef5baca551 325951: 02fd5592a231790d4496bd0195c734a149b77f76 v: v3 --- [refs] | 2 +- trunk/drivers/usb/musb/musb_gadget.c | 34 ++++++++++++---------------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index 9ff39109e5ff..61a28980974d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a04d46d02e0c511dabb3c0a29286811a00d12b10 +refs/heads/master: 660fa8863d2623b733d7977a56e2990437abcbdb diff --git a/trunk/drivers/usb/musb/musb_gadget.c b/trunk/drivers/usb/musb/musb_gadget.c index 7fb060d91282..d0b87e7b4abf 100644 --- a/trunk/drivers/usb/musb/musb_gadget.c +++ b/trunk/drivers/usb/musb/musb_gadget.c @@ -722,6 +722,7 @@ static void rxstate(struct musb *musb, struct musb_request *req) struct dma_controller *c; struct dma_channel *channel; int use_dma = 0; + int transfer_size; c = musb->dma_controller; channel = musb_ep->dma; @@ -742,35 +743,30 @@ static void rxstate(struct musb *musb, struct musb_request *req) csr | MUSB_RXCSR_DMAMODE); musb_writew(epio, MUSB_RXCSR, csr); + transfer_size = min(request->length - request->actual, + channel->max_len); + musb_ep->dma->desired_mode = 1; + } else { if (!musb_ep->hb_mult && musb_ep->hw_ep->rx_double_buffered) csr |= MUSB_RXCSR_AUTOCLEAR; csr |= MUSB_RXCSR_DMAENAB; musb_writew(epio, MUSB_RXCSR, csr); - } - if (request->actual < request->length) { - int transfer_size = 0; - if (use_mode_1) { - transfer_size = min(request->length - request->actual, - channel->max_len); - musb_ep->dma->desired_mode = 1; - } else { - transfer_size = min(request->length - request->actual, + transfer_size = min(request->length - request->actual, (unsigned)fifo_count); - musb_ep->dma->desired_mode = 0; - } - - use_dma = c->channel_program( - channel, - musb_ep->packet_sz, - channel->desired_mode, - request->dma - + request->actual, - transfer_size); + musb_ep->dma->desired_mode = 0; } + use_dma = c->channel_program( + channel, + musb_ep->packet_sz, + channel->desired_mode, + request->dma + + request->actual, + transfer_size); + if (use_dma) return; }