I2C can't read from FT201XS
The datasheet shows an I2C restart between the (general call + MTP address command) phase and the (slave + MTP address bytes) phase, and again between the (general call + MTP transfer command) and the (slave + data bytes), but your code performs a stop and then a start in each of these cases.

Your abstraction layer is too high, you need to either use the low-level I2C actions for this, or else add a parameter to i2c_send to inhibit the STOP action at the end.