Issuing DMA commands from the PPE

To enqueue a DMA command from the PPE, access the MFC Command-Parameter Registers in this sequence:

  1. Write the LS address to the MFC_LSA register.
  2. Write the effective address high and low parts to the MFC_EAH and MFC_EAL registers.
  3. Write the transfer size and tag ID to the MFC_Size and MFC_TagID registers.
  4. Write the class ID and command opcode to the MFC_ClassID_CMD registers.
  5. Read the MFC_CMDStatus register to determine the success or failure of the attempt to enqueue a DMA command.

The least-significant 2 bits of the command status value returned from the read of the MFC_CMDStatus register indicate the success or error of the attempt to enqueue a DMA. The values of these two bits have the following meanings:

In the case of insufficient space, software could wait for space to become available before attempting the DMA transfer again, or software could simply continue attempting to enqueue the DMA until successful.