9.7.5.9.5 IBI Notification Control

The I3CC generates an IBI response only for the received IBIs for which an ACK response is sent. Optionally, the response generation for the NACK’ed IBIs is enabled by setting the appropriate Reject Notify Control (see IBI Response and Notify Controls).

When the Hot-Join Reject Notify Control is set to ‘1’, the I3CC notifies the application by generating an IBI response when a valid Hot-Join request is received for which a NACK response was sent followed by a broadcast Auto Disable CCC command.

Assuming the CRR Reject Notify Control is set to ‘1’, the I3CC notifies the application by generating an IBI response when a valid CRR is received, for which a NACK response is sent, followed by a directed Auto Disable CCC command to the requesting target device.

When the IBI Reject Notify Control is set to ‘1’, the I3CC notifies the application by generating an IBI response when a valid IBI request is received, for which a NACK response is sent followed by a directed Auto Disable CCC command to the requesting target device.

When an unsupported/Invalid IBI (CRR, HJ/RnW=1) or an IBI from an unknown target device (no valid entry in DAT) is received, the I3CC responds with NACK regardless of Reject Notify Control and notifies the application. The I3CC does not issue any Auto Disable command in this case.

If the IBI Status Queue is full when any non-IBI request is detected, the I3CC continues to provide the I3CC_SCL clock to receive the IBI ID and responds with NACK at the end (But does not issue DISEC CCC). This allows the requesting target to re-attempt the IBI on the next START condition or upon detecting a bus available period

If the IBI Data Queue is full when an IBI request is detected, the I3CC continues to provide I3CC_SCL clock to receive the IBI ID and enters to clock stall state during the ACK space of the IBI ID until a free space is available in the IBI Data Queue. If the IBI Data Queue goes full in the middle of an IBI data reception (ACK’ed IBI), the I3CC stalls the I3CC_SCL clock by driving low until a free space is available to start accepting further bytes.

To avoid IBI Status and Data Queues becoming full, it is important to drain Status and Data from IBI queue as soon as they become available. Hence, set the IBI Status threshold be to ‘0’. This ensures that as soon as the first status from an IBI is available in the IBI queue, the application is notified through IBI Status Threshold Met interrupt.