|
@@ -895,7 +895,14 @@ static int musb_gadget_enable(struct usb_ep *ep,
|
|
/* REVISIT if can_bulk_split(), use by updating "tmp";
|
|
/* REVISIT if can_bulk_split(), use by updating "tmp";
|
|
* likewise high bandwidth periodic tx
|
|
* likewise high bandwidth periodic tx
|
|
*/
|
|
*/
|
|
- musb_writew(regs, MUSB_TXMAXP, tmp);
|
|
|
|
|
|
+ /* 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.
|
|
|
|
+ */
|
|
|
|
+ if (musb->hwvers < MUSB_HWVERS_2000)
|
|
|
|
+ musb_writew(regs, MUSB_TXMAXP, hw_ep->max_packet_sz_tx);
|
|
|
|
+ else
|
|
|
|
+ musb_writew(regs, MUSB_TXMAXP, tmp);
|
|
|
|
|
|
csr = MUSB_TXCSR_MODE | MUSB_TXCSR_CLRDATATOG;
|
|
csr = MUSB_TXCSR_MODE | MUSB_TXCSR_CLRDATATOG;
|
|
if (musb_readw(regs, MUSB_TXCSR)
|
|
if (musb_readw(regs, MUSB_TXCSR)
|
|
@@ -925,7 +932,13 @@ static int musb_gadget_enable(struct usb_ep *ep,
|
|
/* REVISIT if can_bulk_combine() use by updating "tmp"
|
|
/* REVISIT if can_bulk_combine() use by updating "tmp"
|
|
* likewise high bandwidth periodic rx
|
|
* likewise high bandwidth periodic rx
|
|
*/
|
|
*/
|
|
- musb_writew(regs, MUSB_RXMAXP, tmp);
|
|
|
|
|
|
+ /* 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, tmp);
|
|
|
|
|
|
/* force shared fifo to OUT-only mode */
|
|
/* force shared fifo to OUT-only mode */
|
|
if (hw_ep->is_shared_fifo) {
|
|
if (hw_ep->is_shared_fifo) {
|