We’re developing an application under DM3730 Torpedo Module with the Linux3.0 kernel that reads data from a USB based board (class ACM) at a rate of200.000 bytes/second. We've observed that a 'kworker' thread consumes manyCPU and we are looking which are the possibilities to optimize the code. Oneof the things we want to improve is communication process, so we’d like toask you some questions: - Do you know if linux use DMA to receive/send data from/to a USB device? Ifso how can we activate it? - The memory reserved for DMA buffers could be increased using a linuxparameter?- Any other suggestion to reduce the consume of CPU? Could be possible tomake DSP to carry directly this task? Could you send us some information(some doc, example project, DSP driver, etc… ) that can help us?Thank you and best regards
DM3730 hsusb0 does have DMA and same is available at drivers/usb/musb/musbhsdma.c. You should enable this in kernel config.
Ajay
If my reply answers your question then please click on the green button "Verify Answer"
Ajay,
With hsusb0, are you referring to ISP1760? How I should enable? the current configuration is:
CONFIG_NEED_DMA_MAP_STATE=yCONFIG_HAVE_DMA_API_DEBUG=yCONFIG_HAVE_GENERIC_DMA_COHERENT=yCONFIG_ARM_DMA_MEM_BUFFERABLE=yCONFIG_ZONE_DMA_FLAG=0CONFIG_SCSI_DMA=yCONFIG_VIDEOBUF_DMA_CONTIG=yCONFIG_USB_INVENTRA_DMA=yCONFIG_MUSB_USE_SYSTEM_DMA_WORKAROUND=y# CONFIG_USB_TI_CPPI_DMA is not set# CONFIG_DMADEVICES is not set# CONFIG_DMA_API_DEBUG is not setCONFIG_HAS_DMA=y
Any help is appreciated.
Joaquim Duran
Duran,
The config is CONFIG_USB_INVENTRA_DMA which can be enabeld from Drivers->USB support-> Inventra and let "Disable DMA" to be not selected.
I've tested in the kernel that the changes that you suggested ware already done:
CONFIG_USB_MUSB_HDRC_HCD=y# CONFIG_MUSB_PIO_ONLY is not set# CONFIG_USB_UX500_DMA is not setCONFIG_USB_INVENTRA_DMA=yCONFIG_MUSB_USE_SYSTEM_DMA_WORKAROUND=y# CONFIG_USB_TI_CPPI_DMA is not set
The problem here is that when I connect the acquisition board to the OMAP board, it is connected using a USB connector, no the mini-USB of the OTG, so the USB root is ISP1763 processor and not the MUSB. ISP1763 is the replacement to ISP1507 from OMAP reference board. The ISP1763 has no option about DMA in the linux kernel.
I'll connect the acquisition board to the OTG and I'll test if it improves the performance.