DIS=B_0x0, CRACK=B_0x0, IBIACK=B_0x0, SUSP=B_0x0, IBIDEN=B_0x0
I3C device 3 characteristics register
DA | assigned I3C dynamic address to target x (when the I3C is acting as controller) When the I3C is acting as controller, this field should be written by software to store the 7-bit dynamic address that the controller sends via a broadcast ENTDAA or a direct SETNEWDA CCC which has been acknowledged by the target x. Writing to this field has no impact when the read field I3C_DEVRx.DIS=1. |
IBIACK | IBI request acknowledge (when the I3C is acting as controller) When the I3C is acting as controller, this bit is written by software to define the acknowledge policy to be applied on the I3C bus on the reception of a IBI request from target x:
0 (B_0x0): an IBI request from target x is to be NACKed 1 (B_0x1): an IBI request (with 7-bit dynamic address DA[6:0]) from target x is to be ACKed |
CRACK | controller-role request acknowledge (when the I3C is acting as controller) When the I3C is acting as controller, this bit is written by software to define the acknowledge policy to be applied on the I3C bus on the reception of a controller-role request from target x: After the NACK, the message continues as initially programmed (the target is aware of the NACK and can emit another controller-role request later on)
0 (B_0x0): a controller-role request from target x is to be NACKed 1 (B_0x1): a controller-role request (with 7-bit dynamic address DA[6:0]) from target x is to be ACKed |
IBIDEN | IBI data enable (when the I3C is acting as controller) When the I3C is acting as controller, this bit should be written by software to store the BCR[2] bit as received from the target x during broadcast ENTDAA or direct GETBCR CCC via the received I3C_RDR. Writing to this field has no impact when the read field I3C_DEVRx.DIS=1. 0 (B_0x0): no data byte follows the acknowledged IBI from target x 1 (B_0x1): the mandatory data byte MDB[7:0] follows the acknowledged IBI from target x |
SUSP | suspend/stop I3C transfer on received IBI (when the I3C is acting as controller) When the I3C is acting as controller, this bit is used to receive an IBI from target x with pending read notification feature (i.e. with received MDB[7:5]=3’b101). If this bit is set, when an IBI is received (i.e. I3C_EVR.IBIF=1), a Stop is emitted on the I3C bus and the C-FIFO is automatically flushed by hardware; to avoid a next private read communication issue if a previous private read message to the target x was stored in the C-FIFO. 0 (B_0x0): I3C transfer is not stopped and C-FIFO is not flushed 1 (B_0x1): I3C transfer is stopped and C-FIFO is flushed on a received IBI request from target x |
DIS | DA[6:0] write disabled (when the I3C is acting as controller) When the I3C is acting as controller, once that software set IBIACK=1 or CRACK=1, this read bit is set by hardware (i.e. DIS=1) to lock the configured DA[6:0] and IBIDEN values. Then, to be able to next modify DA[6:0] or IBIDEN, the software must wait for this field DIS to be de-asserted by hardware (i.e. polling on DIS=0) before modifying these two assigned values to the target x. Indeed, the target may be requesting an IBI or a controller-role meanwhile the controller intends to modify DA[6:0] or IBIDEN. 0 (B_0x0): write to I3C_DEVRx.DA[7:0] and to I3C_DEVRx.IBIDEN is allowed 1 (B_0x1): write I3C_DEVRx.DA[7:0] and to I3C_DEVRx.IBIDEN is disabled/locked |