This issue with slavefifo and I2C is because of making the GPIO  which is the I2C_SDA as an Output GPIO.
To avoid this issue, you can try the following:
1.) In the IO matrix config, change the gpioSimpleEn = 0 and also enable I2C as below:
io_cfg.useI2C = CyTrue;
io_cfg.gpioSimpleEn = 0; //remove the 0x08000000 and set to 0
2.) In CyFxSlFifoApplnInit(), you can either comment out the entire GPIO config structure or change the GPIO number as follows:
CyU3PDeviceGpioOverride (45, CyTrue);
/* Configure GPIO 59 as output */
gpioConfig.outValue = CyTrue;
gpioConfig.driveLowEn = CyTrue;
gpioConfig.driveHighEn = CyTrue;
gpioConfig.inputEn = CyFalse;
gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR;
apiRetStatus = CyU3PGpioSetSimpleConfig(45, &gpioConfig);
This will make GPIO as an output and also change the CyU3PGpioSetValue (59, CyFalse); to CyU3PGpioSetValue (45, CyFalse); in CyFxSlFifoApplnStart() function.
The status flag will now be applicable to GPIO instead of GPIO.
I have tested it on my end and the device is enumerating properly.
Thank you very much for your reply.
I tried the changes you suggested and the device still does not enumerate as long as I set the useI2C to true. Here attached is the cyfxslfinisync.c with the changes you mentioned. Maybe you can tell me what I have done wrong.
Or can you attach the file with your changes here so that I can give it a try?
cyfxslfifosync.c.zip 7.0 K
Please find the attached .c file with the above-said modifications and the device is enumerating as expected on my end.
Please test it on your end and let me know if you are still facing issues.
cyfxslfifosync.c.zip 7.1 K
Now it works. Thank you very much for your help.
The issue I had is that I didn't change the following line:
io_cfg.gpioSimpleEn = 0;//0x08000000;