Why does the DisplayPort sink fail to complete an AUX to IIC (I2C) write that is greater than six bytes?
This is a known issue with the DisplayPort v2.1, 2.2, and 2.3 cores. This issue has been resolved in the DisplayPort v3.1 core.
To work around this issue, users will need to do the following using the write status command:
The Write to IIC (I2C) sequence must be as follows:
- Issue a Write Command (any length from 1 to 16)
- Irrespective of the response from Write (except NACK), issue a write_status with MOT command to the same device address.
- Repeat the same write_status command until a NACK response is received or until the number of bytes written is one less than the requested length.
- Issue a 1 byte EDID READ - this is a dummy command which will clear the state machine to IDLE state.
- Continue normal operations
- Write Burst -> On NACK exit -> Else go to Step 2 ->
- Repeat Write Status with MOT until NACK is received or the number of bytes written is one less than the requested length to the same IIC (I2C)->
- Issue Read to EDID 1 byte ->
Please see (Xilinx Answer 33258) for a detailed list of LogiCORE IP DisplayPort Release Notes and Known Issues.