RE: [PATCH 1/2] USB: musb-gadget: enable autoclear for OUT transfer in both DMA 0 and DMA 1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tom.leiming@xxxxxxxxx wrote:
> 
> From: Ming Lei <tom.leiming@xxxxxxxxx>
> 
> This patch fixes one bugs of OUT transfer in double buffer case:
> 
> -the current code only enable autoclear for dma mode 1, and not
> for dma mode 0
> 
> Without this patch, test #5 of usbtest can't be passed if we
> configure musb as g_zero and use fifo mode 3 to enable double
> buffer mode.
> 
> With this patch and the following patch(fix dma length),
> on my beagle B5, test#5(queued bulk out) may go beyond
> 18Mbyte/s(seems dma mode 0 is quicker in double buffer case)
> if musb is configured as g_zero and fifo mode 3 is taken, follows
> the test command:
> 
>     #./testusb -D DEV_NAME -c 1024 -t 5 -s 32768 -g 8   [1]
> 
> Also I have tested this patch can't make g_ether broken.
> 
> [1],
>     -source of testusb : tools/usb/testusb.c under linux kernel;
> 
> Signed-off-by: Ming Lei <tom.leiming@xxxxxxxxx>
> Cc: Anand Gadiyar <gadiyar@xxxxxx>
> Cc: Mike Frysinger <vapier@xxxxxxxxxx>
> Cc: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx>

I'm not 100% sure why not having autoclear was causing a failure
with double-buffering enabled. I'd like this patch to be tested
more on OMAP as well as on Blackfin/Davinci.

I'll need time to study MUSB specs again to understand this,
so I'll skip acking this patch and let Felipe/Sergei/Mike/Ajay
take a look.

Thanks for taking the time to debug this - if this patch series
makes double buffering work reliably, that's a very good boost
to throughput.

- Anand

> ---
>  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 e0bd1c1..c0dfec4 100644
> --- a/drivers/usb/musb/musb_gadget.c
> +++ b/drivers/usb/musb/musb_gadget.c
> @@ -645,9 +645,9 @@ static void rxstate(struct musb *musb, struct musb_request *req)
>  	 */
>  
>  				csr |= MUSB_RXCSR_DMAENAB;
> -#ifdef USE_MODE1
>  				if (!musb_ep->hb_mult)
>  					csr |= MUSB_RXCSR_AUTOCLEAR;
> +#ifdef USE_MODE1
>  				/* csr |= MUSB_RXCSR_DMAMODE; */
>  
>  				/* this special sequence (enabling and then
> -- 
> 1.6.2.5
> 
> --
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux