/* general endpoint setup */
                if (epnum) {
                        /* flush all old state, set default */
-                       musb_h_tx_flush_fifo(hw_ep);
+                       /*
+                        * We could be flushing valid
+                        * packets in double buffering
+                        * case
+                        */
+                       if (!hw_ep->tx_double_buffered)
+                               musb_h_tx_flush_fifo(hw_ep);
 
                        /*
                         * We must not clear the DMAMODE bit before or in
                                        );
                        csr |= MUSB_TXCSR_MODE;
 
-                       if (usb_gettoggle(urb->dev, qh->epnum, 1))
-                               csr |= MUSB_TXCSR_H_WR_DATATOGGLE
-                                       | MUSB_TXCSR_H_DATATOGGLE;
-                       else
-                               csr |= MUSB_TXCSR_CLRDATATOG;
+                       if (!hw_ep->tx_double_buffered) {
+                               if (usb_gettoggle(urb->dev, qh->epnum, 1))
+                                       csr |= MUSB_TXCSR_H_WR_DATATOGGLE
+                                               | MUSB_TXCSR_H_DATATOGGLE;
+                               else
+                                       csr |= MUSB_TXCSR_CLRDATATOG;
+                       }
 
                        musb_writew(epio, MUSB_TXCSR, csr);
                        /* REVISIT may need to clear FLUSHFIFO ... */