Vendor Specific Directed Read CCC’s
The Target mode supports simultaneous Vendor Specific directed read CCC transfers by providing multiple Extended Commands and their related Transmit Buffers. Each extended command is mapped to its own extended Transmit Buffer to hold the CCC data to be returned for the incoming Vendor Specific directed read CCCs.
Program the extended command registers for the Vendor Specific CCC code and its defining byte (if any), which are used by the Target to match the incoming Vendor Specific CCC from the Controller and respond accordingly. The data structure of the Extended Command is in Extended Transmit Command Data Structure.
The data transmission for a vendor-specific directed read CCC is initiated by issuing a TX transfer command. The TX transfer command can be issued by writing to the Extended Command register (I3CxEXTCMDy).
The Target responds to a Vendor Specific directed read address with ACK when all the following conditions are met:
- The vendor-specific CCC and defining byte received from the Controller are matched with the programmed values in one of the I3CxEXTCMDy registers.
- The extended TX FIFO corresponding to the programmed and matched I3CxEXTCMDy is non-empty.
- The response queue is not full, and it has some space to hold the response for the current vendor-specific read transfer.
To determine under which condition the NACK occurred, the Target provides further information as follows:
- An additional interrupt, I3C1INTSTA [READREQSTA], is asserted when there is no valid command in the Command Queue.
- The I3CxCLTCCCSTAT [DATNTRDY] bit is set when the Extended TX FIFO corresponding to the programmed and matched I3CxEXTCMDy is empty.
- The I3CxCLTCCCSTAT [DATNTRDY] bit is also set if the response queue is full.
Once the read address is acknowledged with ACK (accepted), the Target expects the application to provide enough data in the Extended TX FIFO to avoid underrun conditions. It is recommended to program enough data in the corresponding I3CxEXTTXDATy before programming the command in its equivalent I3CxEXTCMDy register. Vendor-specific CCC's command structure does not consist of a data length. Hence, the Extended TX FIFO being empty is considered the transfer end.
Once the TX Command is programmed in the I3CxEXTCMDy, the command is valid for only one Vendor Specific CCC Read transfer. You are expected to program I3CxEXTCMDy and I3CxEXTTXDATy again for the next Vendor Specific CCC transfer after receiving the response for the previously programmed command.
If the data length of the Vendor Specific CCC read transfer is more than the configured Extended FIFO buffer depth, it is expected that the application will monitor whether half the space is available through I3CxEXTyzBSTA registers and program the subsequent data to be transmitted by the Target.
You can program up to four TX commands at a time to respond to the incoming Vendor Specific read CCC transfers.
As Vendor Specific CCC transfers are pre-agreed transfers between the Controller and Target, the Target application is expected to program the Extended Transmit buffers with the exact amount of data that can be processed by the Controller. If the Controller terminates Vendor Specific read transfers early, the Extended Transmit buffer of the corresponding command should be flushed by the Target application through the I3CxETXQRSTCON register to continue with programming new TX command data.
