Tegra XUDC in Jetson TX2 supports DMA transfer of block size 4MB at a time

Currently working on Jetson TX2 and requirement is to transfer data using bulk transfer mode from Jetson TX2 to PC application using USB 2.0 as device mode in GadgetFS file system. Currently DMA in jetson TX2 supports MAX buffer size transfer of 4MB. So whether this limit can be increased?

Also in XUDC driver of kernel XUDC_TRB_MAX_BUFFER_SIZE is 65536 and max packet size is 64 which limit maximum data transfer at a time as 65536*64 = 4MB

So our requirement is to transfer 15MB atb a time. So whether these limits can be increased by modifying the max limits in the driver of XUDC.

Please find attached TRM screen shot which says maximum capabilities of DMA transfer.

64 is XUDC_TRANSFER_RING_SIZE and does not mean it caps limitation to 4MB if you continuously transfer data. do you hit any issue in continuous data transfer?


Thank you for the reply.
Our requirement is to transfer 15MB data from device to PC. But with current 4MB limitations it transfer 15MB data in multiple 4MB slots and it’s taking more time as we have time limitations.

So can we do continuous transfer of 15MB data aat a time?
If so, what changes we have to do achieve that?

It should be fine to extend XUDC_TRANSFER_RING_SIZE. For your usecase, you may try 256.

We tried with ring size of 256, after we came across write error saying can not allocate memory. Is there any other changes required?
We want to transfer 15MB at a time from device to PC.

Please share steps(kernel patch, test app, steps) that we can reproduce the cannot-allocate-memory issue on r32.1.