Please refer to this KBA which explains all about the DMA channel in override mode: DMA Channel in Override Mode in FX3/CX3 - KBA229098
The CY_U3P_DMA_CONS_OVERRIDE mode indicates that the transfer is not yet complete.
You can use the CyU3PDmaChannelWaitForRecvBuffer API to wait for the completion of the transfer and then proceed after a success return from the API.
After the CyU3PDmaChannelSetupRecvBuffer I use CyU3PEventGet to receive the event which is Set by the DMA cb (call back) in response to the CY_U3P_DMA_CB_SEND_CPLT event from the DMA channel. This event is however never send, as the DMA channel is not yet complete. And CyU3PDmaChannelGetStatus reports a prodXferCount of 0. The transfer simply never ends.
Btw I also use CyU3PDmaChannelWaitForRecvBuffer to be sure the DMA channel has completed.
When I use CYU3P_WAIT_FOREVER with this CyU3PEventGet it waits forever and the application hangs.
This only happens after an USB highspeed enumeration.
The strangest thing is that when I perform one dummy DMA transfer of this DMA channel the enumeration to highspeed has no negative effect on this situation, and all additional transfers are performed without any hang situation. Without this dummy DMA transfer the enumeration to highspeed seems to do something causing the unused DMA channel to hang. But the USB enumeration should have no effect on unrelated DMA channels.
So in principal I have a workaround.
Can you please share the .c file where the CyU3PConnectState() API is called?
I have used the FX3SMassStorage reference design (for the Pactron board). So the cyfx3s_msc.c is about the same as the .c file where the CyU3PConnectState() API is called.
What are you looking for, or what do you want to check.
The largest part of the design is propitiatory, so I will not be able to share this.
The issue was resolved by adding a additional state in the State Machine to monitor the DMA thread ready states.