3 Replies Latest reply on Oct 23, 2017 2:53 PM by gavinj_2594476

    CyU3PMipicsiInit returning CY_U3P_ERROR_FAILURE




      I was wondering what circumstances would cause CyU3PMipicsiInit to return CY_U3P_ERROR_FAILURE? Our firmware works perfectly fine on the e-con systems dev board, but on our new board the above error occurs.



        • 1. Re: CyU3PMipicsiInit returning CY_U3P_ERROR_FAILURE

          You can check the source code of the CyU3PMipicsiInit here.

          We do I2C Writes and Reads in a few functions called in the CyU3PMipicsiInit.

          In this case, we suspect that CY_U3P_ERROR_FAILURE is due to failure of I2C writes and Reads.


          Can you please check whether the I2C Lines are connected properly? Are there proper Pull-Ups on the lines?

          Please cross check the schematic of your board with e-con dev board or AN70707: AN70707 - EZ-USB® FX3™/FX3S™ Hardware Design Guidelines and Schematic Checklist | Cypress Semiconductor


          You can find this in the cyu3mipicsi.c file provided with SDK (Default path: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\fx3_sdk_1_3_3_src\fx3_sdk_1_3_3_src\sdk\firmware\src\mipicsi)


          /* Initiailize the MIPI-CSI block. The GPIO and I2C blocks need to have been initiailized prior to calling this function */


          CyU3PMipicsiInit (



            CyU3PReturnStatus_t status = CY_U3P_SUCCESS;



            return CY_U3P_SUCCESS;


            /* Check if the device has Mipi CSI Support CX2/CX3 and set a flag */

            if (!(CyFx3DevIsMipicsiSupported()))


            return CY_U3P_ERROR_NOT_SUPPORTED;



            /* Setup number of Mipi lanes on the part based on PartInfo.*/

            glPartMipiLanes = CyFx3DevGetMipiLaneCount ();


            /* Code to Initialize the Reset line GPIO pin goes here. */

            status = CyU3PMipicsiSetupBlockResetGpio ();

            if (status != CY_U3P_SUCCESS)

            return status;


            /* Hard Reset the Mipi CSI Block by calling MipiReset with the param for hard reset*/

            /* Also reads and validates the ID register on the MIPI block and sets the CXRES

            * andCXSHUTDOWN lines to DRIVE LOW*/

            status = CyU3PMipicsiReset (CY_U3P_CSI_HARD_RST);

            if (status != CY_U3P_SUCCESS)

            return status;




            /* Enable MIPI block errors*/

            status = CyU3PMipicsiEnableMipiErrors ();

            if (status != CY_U3P_SUCCESS)

            return status;


            glIsMipiBlockActive = CyTrue;

            status = CyU3PMipicsiSleep();


            return status;



          • 2. Re: CyU3PMipicsiInit returning CY_U3P_ERROR_FAILURE

            Great thanks so much! This is perfect to help us track the issue down...

            • 3. Re: CyU3PMipicsiInit returning CY_U3P_ERROR_FAILURE

              We fixed the issue in I2C hardware implementation. Thanks for the guidance!