[BUG] USB Host Stack and mixing DMA and PIO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Some USB HOST chip drivers mix DMA and PIO mode. The USB Host core in Linux assumes that data is always DMA'ed, if the dev->dma_mask is non-zero, and will perform automatic cache operations on the data before and after all USB transfers. This works fine with chips like EHCI/OHCI, but breaks completely on chips like MUSB, which mix PIO and DMA. Our simple workaround is to set dev->dma_mask = 0, in the MUSB init code. Else we see regular data loss during loopback tests. We have been requested to make a better fix for this problem. Could the Linux community advice the places we need to patch, which gives us the possibility for the USB Host chip driver to fully manage cache sync/flush calls through a generalized API? The MUSB driver is an OTG driver, setting dev->dma_mask to zero will kill DMA operation in gadget mode, and is not a long term solution for us.

Regard,
-Praveena Nadahally

--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux