I am attempting to run something very similar to the cx3uvcov5640 example on a tegra tx1 host with one caveat, bulk mode transfer at the 5mp res at 15 fps does not reliably come across the pipe even with individual host controllers per camera on the pci bus. The temporary fix was to cut the frame rate to 7.5 by discarding every other frame. I am doing this by calling CyU3PDmaMultiChannelDiscardBuffer instead of commit then keeping track of when I need to toggle the gpif pins, this works on x86 and arm if I use gstreamer and display the image. If I use a fakesink and do not display and just read I get a bunch of CY_U3P_ERROR_INVALID_SEQUENCE errors on both the commitbuffer and discardbuffer calls only when running on arm. When running on x86 it works fine. Does anyone have any suggestions where I should start tracking this error down?
INVALID_SEQUENCE is got by CommitBuffer API when the Buffer there is no filled buffer in the DMA Channel or when not when the prevously filled buffers are not committed. Please make sure that you call these APIs inside the DMA Callback (upon producer event) or after calling the GetBuffer API.
- Madhu Sudhan