usb: musb: fix reset issue with full speed device
authorAjay Kumar Gupta <ajay.gupta@ti.com>
Tue, 13 Dec 2011 05:02:42 +0000 (10:32 +0530)
committerFelipe Balbi <balbi@ti.com>
Wed, 14 Dec 2011 07:32:51 +0000 (09:32 +0200)
TXMAXP register is not getting programmed correctly for a full speed device
as can_bulk_split() have been removed by
"0662481: usb: musb: disable double buffering when it's broken" patch.

Adding back the case for can_bulk_split() to fix the reset message seen with
a full speed stick.

Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_host.c

index 60ddba8066ea201181b0b6ce3c69a847eafc618a..79cb0af779fa07dac0702ee9b2b2d43e0a22b738 100644 (file)
@@ -774,6 +774,10 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
                        if (musb->double_buffer_not_ok)
                                musb_writew(epio, MUSB_TXMAXP,
                                                hw_ep->max_packet_sz_tx);
+                       else if (can_bulk_split(musb, qh->type))
+                               musb_writew(epio, MUSB_TXMAXP, packet_sz
+                                       | ((hw_ep->max_packet_sz_tx /
+                                               packet_sz) - 1) << 11);
                        else
                                musb_writew(epio, MUSB_TXMAXP,
                                                qh->maxpacket |