9.7.5.9.4 IBI Queue Data Structure

The IBI queue comprises of the interleaved data received from the target device, and the status generated from the I3CC for the respective data slice of IBI or HJ/CRR.

The data portion of the structure comprises the data received from the target device along with the IBI (MDB + other payload bytes if any) or the data received for the Auto command issued for the requesting device. If the data payload size of the IBI goes above the programmed IBI data chunk size, then the I3CC slices the incoming data into multiple chunks and generates an IBI status for each chunk. The last data chunk is indicated as LAST_STATUS=1 in the corresponding IBI status. The following figure shows an example of the IBI queue data structure holding the IBI data and the status for an IBI with non-multiple chunk size data.

Figure 9-223. IBI with Payload Structure (with last data chunk less than programmed data chunk size)

The application reads the IBI queue upon detecting the interrupt status I3CC_PIO_INTR_STATUS.IBI_STATUS_THLD_STAT. The interrupt can be moderated by setting the I3CC_QUEUE_THLD_CTRL.IBI_STATUS_THLD. The first location read always provides the IBI status for the first chunk, which includes the data length of that chunk in bytes. The application can read the data portion of the chunk without waiting for any further interrupt. The number of data reads must be limited to the data length field of the corresponding status.

The following figure shows an example of the IBI queue data structure holding the IBI data and the status for an IBI with exact multiples of the programmed IBI Data Chunk Size.

Figure 9-224. IBI with Payload Structure (with the last chunk equal to the programmed chunk size)

The following figure shows an example of the IBI queue data structure holding only the IBI status. This structure is applicable for all IBIs that do not support the payload, which includes the HJ, the IBI without payload, and the CRR.

Figure 9-225. IBI without Payload Structure