On Wed, Jul 02, 2014 at 10:40:21AM +0530, Raghavendra wrote:
Hello,
I have a query regarding DMA(Direct Memory Access) for the usb devices.
The understanding of DMA actions over PCI is straight forward. PCI devices support bus mastering capability, such that the PCI devices could take the ownership of the bus and perform access to the memory directly, and a software support exists for the same in Linux.
As far as USB devices are concerned, they don’t have the bus mastering capability like the PCI devices. But the USB URB structure have a field named 'dma_addr_t transfer_dma', used for DMA access. The USB driver allocate the DMA buffers coherently and pass the DMA address to the URBs during its initialization. As far as Linux is concerned, how the DMA action being taking place for USB devices. As per my understanding, the USB host controller is taking care of the DMA operations. But I require a little more insight into it.
Why, what exactly are you concerned about? What are you trying to do?
Further more, if it is possible for the USB devices, then can this support be also extended towards low-end protocols such as I2C or SPI?
It depends on your controller chips for those busses, if they support DMA or not. greg k-h