I use the case testusb -a -t 1 -s 4096 -c 10 and find there is no ZLP after a transfer(4096 bytes), I use the Mentor's own DMA (CONFIG_USB_INVENTRA_DMA). but when just use PIO, there is ZLP. In the musb_host_tx, the transfer will end with the case } else if (dma && urb->transfer_buffer_length == qh->offset) { done = true; and don't check the URB_ZERO_PACKET like PIO. please correct me if I am wrong. 2, Why clear the RX toggle bit every time enable a endpoint? In the function musb_ep_program, when endpoint is IN, it will do musb_rx_reinit-->musb_h_flush_rxfifo and force clear the RXCSR's toggle bit(MUSB_RXCSR_CLRDATATOG), this may cause data toggle mismatch. and In my SOC, it will break the transfer, because the SOC will silently discard the data if there is a data toggle mismatch. 3, Is it possible for sharing the same irq line between MUSB and DMA? My SOC shares the two interrupt with same irq line, so I fix the request_irq with the flag IRQF_SHARED. I do some basic test, seems it works, but I am not so sure, please give me some advice. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html