Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 11/27/2024
Public
Document Table of Contents

5.8.7.4.3.1. Broadcast CCC Transfer in Master Mode

The programming flow for broadcast CCC transfer in master mode of I3C consists of different phases as shown in the figure below:

Figure 195. Broadcast CCC Transfer in Master Mode
  1. The issue broadcast CCC command phase generates the command with the required broadcast CCC enabled.

    Procedure:

    The following settings are done for the Command and then written to the controller through COMMAND_QUEUE_PORT register.

    The application has to write the following combination of the commands based on the required CCC, with or without data:

    • Only transfer command, if the broadcast CCC does not have data.
    • Transfer command with either Transfer Argument or SDAP, if the broadcast CCC consists of data.

    The following are the required transfer command settings in the COMMAND_QUEUE_PORT register:

    1. Set CP bit to 1.
    2. Write CMD field with broadcast CCC.
    3. Set RnW bit to 1.
  2. Push data to transmit FIFO

    The push data to transmit FIFO phase continuously fills the data to the transmit FIFO based on the command issued in COMMAND_QUEUE_PORT register.

    Procedure:

    The application pushes the data (in Word) to the Tx-FIFO based on the command issued to the COMMAND_QUEUE_PORT register.

    The application can push the data in either of the following ways:

    • PIO mode: The CPU can monitor the threshold status signal (INTR_STATUS[TX_THLD_STS]) and then push the data to the Tx-FIFO through TX_DATA_PORT.
    • DMA mode: The DMA transfers the data as soon as I3C controller requests the DMA through the DMA signals (dma_tx_req, dma_tx_single).
  3. Check response status

    The check response status phase detects the generation of response status and reads it to know the status of the issued transfer.

    Procedure:

    The INTR_STATUS[RESP_READY_STS] interrupt indicates the response available status and that you can read the available response from the RESPONSE_QUEUE_PORT register.