I am using the LPC5536-EVK as an I3C Master and can successfully receive IBI events. However, Section 5.1.6.2.2 in the I3C Basic Specification v1.1.1 (or Section 4.3.6.2.2 in I3C Basic Specification v1.2) defines Pending Read Notification. After reviewing fsl_i3c.c in the LPC55S36 SDK, I believe this feature is not implemented. I would like to know if the NXP SDK development team has any plans to add this feature in a future release.
Pending Read Notification (excerpt from the specification):
Target Devices that support In-Band Interrupt requests may also implement support for a particular Pending Read Notification contract, by which they may inform the Controller that there is data to be read for a specific purpose.
...
To signal a Pending Read Notification, the Target shall send an IBI with a Mandatory Data Byte value for which the first three bits (i.e., Interrupt Group Identifier) match 3’b101.
...
Once the IBI and its MDB has been serviced and accepted, the Controller is obligated to initiate a subsequent Private Read request to the Target, to read the data that has been made available and ready for this Private Read request. The Controller may do this immediately after the IBI has been serviced, or it may do this at a later time.
...
The transfer format for Pending Read Notification can be referenced in the following document, specifically Figure 6 – MCTP over I3C packet transfer format: I3C Target to I3C Controller:
Management Component Transport Protocol 7 (MCTP) I3C Transport Binding Specification
From the transfer format, it can be seen that Pending Read Notification essentially means that after the Master receives an IBI event, it then sends a Private Read to the corresponding Slave. Between these operations, either a STOP + START sequence or a Repeated START can be used.
With the current SDK, the STOP + START sequence is possible (equivalent to calling Read inside i3c_callback). However, the current SDK does not support performing this operation as a Repeated START.