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. 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? Thanks, Raghavendra ------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
You might want to ask this question to the USB experts on the linux-usb ML - linux-usb@vger.kernel.org HTH, -mandeep On Tue, Jul 1, 2014 at 10:10 PM, Raghavendra <arrao@cdac.in> 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.
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?
Thanks, Raghavendra
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ]
This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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
On Tue, Jul 01, 2014 at 10:29:39PM -0700, Greg KH wrote:
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?
Also, you _have_ read the USB DMA documentation, right? What about the documentation in this area is unclear? thanks, greg k-h
On Wednesday 02 July 2014 11:02 AM, Greg KH wrote:
On Tue, Jul 01, 2014 at 10:29:39PM -0700, Greg KH wrote:
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? Also, you _have_ read the USB DMA documentation, right?
What about the documentation in this area is unclear? Yes, I have read the documentation and its fine. I am mostly concerned about the all the heavy lifting happening in the background.
thanks,
greg k-h
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
On Wed, Jul 02, 2014 at 11:32:47AM +0530, Raghavendra wrote:
On Wednesday 02 July 2014 11:02 AM, Greg KH wrote:
On Tue, Jul 01, 2014 at 10:29:39PM -0700, Greg KH wrote:
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? Also, you _have_ read the USB DMA documentation, right?
What about the documentation in this area is unclear? Yes, I have read the documentation and its fine. I am mostly concerned about the all the heavy lifting happening in the background.
Why? What exactly are you "concerned" about? What hardware controller? Is something not working properly? greg k-h
On Wednesday 02 July 2014 11:42 AM, Greg KH wrote:
On Wed, Jul 02, 2014 at 11:32:47AM +0530, Raghavendra wrote:
On Wednesday 02 July 2014 11:02 AM, Greg KH wrote:
On Tue, Jul 01, 2014 at 10:29:39PM -0700, Greg KH wrote:
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? Also, you _have_ read the USB DMA documentation, right?
What about the documentation in this area is unclear? Yes, I have read the documentation and its fine. I am mostly concerned about the all the heavy lifting happening in the background. Why? What exactly are you "concerned" about? What hardware controller? Is something not working properly? Everything is fine. This is more of a theoretical understanding.
greg k-h
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
On Wed, Jul 02, 2014 at 11:39:36AM +0530, Raghavendra wrote:
On Wednesday 02 July 2014 11:42 AM, Greg KH wrote:
On Wed, Jul 02, 2014 at 11:32:47AM +0530, Raghavendra wrote:
On Wednesday 02 July 2014 11:02 AM, Greg KH wrote:
On Tue, Jul 01, 2014 at 10:29:39PM -0700, Greg KH wrote:
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? Also, you _have_ read the USB DMA documentation, right?
What about the documentation in this area is unclear? Yes, I have read the documentation and its fine. I am mostly concerned about the all the heavy lifting happening in the background. Why? What exactly are you "concerned" about? What hardware controller? Is something not working properly? Everything is fine. This is more of a theoretical understanding.
The code is there for your theoretical research :)
On Wednesday 02 July 2014 11:55 AM, Greg KH wrote:
On Wed, Jul 02, 2014 at 11:39:36AM +0530, Raghavendra wrote:
On Wednesday 02 July 2014 11:42 AM, Greg KH wrote:
On Wed, Jul 02, 2014 at 11:32:47AM +0530, Raghavendra wrote:
On Wednesday 02 July 2014 11:02 AM, Greg KH wrote:
On Tue, Jul 01, 2014 at 10:29:39PM -0700, Greg KH wrote:
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? Also, you _have_ read the USB DMA documentation, right?
What about the documentation in this area is unclear? Yes, I have read the documentation and its fine. I am mostly concerned about the all the heavy lifting happening in the background. Why? What exactly are you "concerned" about? What hardware controller? Is something not working properly? Everything is fine. This is more of a theoretical understanding. The code is there for your theoretical research :) Ok thanks Greg. I shall look forward to it.
Regards, Raghavendra ------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
Hi Raghavendra, In my case, we used USB host design from opencore. And the driver (I don't know where it came from. it's similar to sl811-hcd.c from cypress) writes or reads the data to /from the USB host. Not using DMA. I think if the USB host has DMA capability, tha pio read/write should be chnaged to triggering DMA. http://lxr.free-electrons.com/source/drivers/usb/host/sl811-hcd.c see line 234. Chan 보낸 사람 : "Raghavendra" <arrao@cdac.in> 보낸 날짜 : 2014-07-02 14:20:42 ( +09:00 ) 받는 사람 : kernelnewbies <Kernelnewbies@kernelnewbies.org> 참조 : 제목 : DMA over USB 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. 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? Thanks, Raghavendra ------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. ------------------------------------------------------------------------------------------------------------------------------- _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Wednesday 02 July 2014 11:05 AM, Chan Kim wrote:
Hi Raghavendra, In my case, we used USB host design from opencore. And the driver (I don't know where it came from. it's similar to sl811-hcd.c from cypress) writes or reads the data to /from the USB host. Not using DMA. I think if the USB host has DMA capability, tha pio read/write should be chnaged to triggering DMA. http://lxr.free-electrons.com/source/drivers/usb/host/sl811-hcd.c see line 234. Chan
보낸 사람 : "Raghavendra" <arrao@cdac.in> 보낸 날짜 : 2014-07-02 14:20:42 ( +09:00 ) 받는 사람 : kernelnewbies <Kernelnewbies@kernelnewbies.org> 참조 : 제목 : DMA over USB
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.
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?
Thanks, Raghavendra
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ]
This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Thanks Chan. ------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
participants (4)
-
Chan Kim -
Greg KH -
Mandeep Sandhu -
Raghavendra