CyU3PDmaChannelSetSuspend on active, but non-busy, USB egress socket?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

I am trying to use the DMA suspend/resume API  to work around the FX3 silicon bug that causes incorrect PIDs to go out on ZLPs for high-bandwidth isochronous endpoints (http://www.cypress.com/?app=forum&id=167&rID=62980). This is for UVC, so the DMA channel is configured as TYPE_MANUAL.

In my DMA callback, at a point where I know there are no packets pending for USB transmission (i.e. the video stream has temporarily "bottomed out" and there is a risk of ZLPs being sent), I call

   CyU3PDmaChannelSetSuspend( CY_U3P_DMA_SCK_SUSP_NONE, CY_U3P_DMA_SCK_SUSP_CUR_BUF)

Based on the API documentation I expect to receive a DMA callback of type CY_U3P_DMA_CB_CONS_SUSP, but one never comes.

Is it not possible to suspend a MANUAL socket that is active but effectively idle? Does the HW require a DMA buffer to be committed before it will honor the suspend request? The documentation is fuzzy on this point, and I don't see any examples relating to DMA suspend/resume.

0 Likes
1 Reply
Anonymous
Not applicable

Please create a tech support case to get more details related to CyU3PDmaChannelSetSuspend API.

   

Thanks,

   

sai krishna.

0 Likes