This patch doesn't apply to the .36 stable tree
If someone wants it applied there, please email the backport
to [email protected]

thanks,

greg k-h

> commit: 31c9909b512aa4c97cffc40627c255070fe0bc78
> From: Ming Lei <[email protected]>
> Date: Tue, 19 Oct 2010 19:08:25 -0500
> Subject: [PATCH] USB: musb: gadget: fix MUSB_TXMAXP and MUSB_RXMAXP 
> configuration
> 
> Commit 9f445cb29918dc488b7a9a92ef018599cce33df7[USB: musb: disable
> double buffering for older RTL versions] tries to disable double
> buffer mode by writing endpoint hw max packet size to TXMAP/RXMAP.
> 
> First the approach can break full speed and cause overflow problems.
> We should always set those registers with the actual max packet size
> from endpoint descriptor.
> 
> Second, the problem describe by commit 
> 9f445cb29918dc488b7a9a92ef018599cce33df7
> was caused by musb gadget driver; nothing to do with RTL revision as
> originaly suspected.
> 
> The real fix to the problem is to always use actual max packet
> size from endpoint descriptor to config TXMAP/RXMAP registers.
> 
> Cc: Cliff Cai <[email protected]>
> Cc: David Brownell <[email protected]>
> Cc: Anand Gadiyar <[email protected]>
> Cc: Mike Frysinger <[email protected]>
> Cc: Sergei Shtylyov <[email protected]>
> Cc: [email protected]
> Signed-off-by: Ming Lei <[email protected]>
> Signed-off-by: Felipe Balbi <[email protected]>
> ---
>  drivers/usb/musb/musb_gadget.c |   13 +++----------
>  1 files changed, 3 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
> index ba22e4a..f37b859 100644
> --- a/drivers/usb/musb/musb_gadget.c
> +++ b/drivers/usb/musb/musb_gadget.c
> @@ -926,13 +926,9 @@ static int musb_gadget_enable(struct usb_ep *ep,
>                * likewise high bandwidth periodic tx
>                */
>               /* Set TXMAXP with the FIFO size of the endpoint
> -              * to disable double buffering mode. Currently, It seems that 
> double
> -              * buffering has problem if musb RTL revision number < 2.0.
> +              * to disable double buffering mode.
>                */
> -             if (musb->hwvers < MUSB_HWVERS_2000)
> -                     musb_writew(regs, MUSB_TXMAXP, hw_ep->max_packet_sz_tx);
> -             else
> -                     musb_writew(regs, MUSB_TXMAXP, musb_ep->packet_sz | 
> (musb_ep->hb_mult << 11));
> +             musb_writew(regs, MUSB_TXMAXP, musb_ep->packet_sz | 
> (musb_ep->hb_mult << 11));
>  
>               csr = MUSB_TXCSR_MODE | MUSB_TXCSR_CLRDATATOG;
>               if (musb_readw(regs, MUSB_TXCSR)
> @@ -968,10 +964,7 @@ static int musb_gadget_enable(struct usb_ep *ep,
>               /* Set RXMAXP with the FIFO size of the endpoint
>                * to disable double buffering mode.
>                */
> -             if (musb->hwvers < MUSB_HWVERS_2000)
> -                     musb_writew(regs, MUSB_RXMAXP, hw_ep->max_packet_sz_rx);
> -             else
> -                     musb_writew(regs, MUSB_RXMAXP, musb_ep->packet_sz | 
> (musb_ep->hb_mult << 11));
> +             musb_writew(regs, MUSB_RXMAXP, musb_ep->packet_sz | 
> (musb_ep->hb_mult << 11));
>  
>               /* force shared fifo to OUT-only mode */
>               if (hw_ep->is_shared_fifo) {
> 
> _______________________________________________
> stable mailing list
> [email protected]
> http://linux.kernel.org/mailman/listinfo/stable

_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to