2 Replies Latest reply on Oct 11, 2017 8:48 AM by gavinj_2594476

    CyU3PMipicsiInit returning CY_U3P_ERROR_FAILURE

    gavinj_2594476

      Hi,

       

      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.

       

      Thanks!

        • 1. Re: CyU3PMipicsiInit returning CY_U3P_ERROR_FAILURE
          srdr

          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 */

          CyU3PReturnStatus_t

          CyU3PMipicsiInit (

            void)

          {

            CyU3PReturnStatus_t status = CY_U3P_SUCCESS;

           

            if(glMipiBlockInitialized)

            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
            gavinj_2594476

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