Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

5.1.7.10.1. Transmit DMA Channel

On getting an AXI error response, the TX DMA channel sets its fatal bus error interrupt status (FBE bits of DMA_CH(#i)_Status register), goes into ERROR state and gracefully terminates any ongoing packet transfer immediately, and tags that packet to have a CRC error. It also accepts and drops the rest of the packet or next packet scheduled for fetching from the system memory before the bus error event. Next, it goes into the STOP state after setting the DMA stopped interrupt status bits (TPS bits of DMA_CH(#i)_Status register). The sbd_intr_o interrupt is generated if the corresponding interrupts are enabled in the DMA_CH(#i)_Interrupt_Enable register.

The software driver flow for the TX DMA channel bus error recovery is as follows:

  1. Wait for the FBE interrupt (FBE bit of DMA_CH(#i)_Status register)
  2. Wait till the DMA receives the stopped interrupt. (TPS bits of DMA_CH(#i)_Status register)
  3. Fix the root cause of the bus error.
  4. Service the FBE and TPS interrupts and clear those interrupts by writing DMA_CH(#i)_Status register.
  5. Issue a soft reset by setting the SWR field of the DMA_Mode register and wait until the SWR field is cleared.
  6. You are allowed to re-configure the DMA for new PBLs, and new ring length.
  7. You must program the new list address.
  8. Start the DMA by setting ST of DMA_CH0_Tx_Control register.
Note: Step 6 initiates the descriptor list. The descriptors that would have been fetched before the bus error event are ignored by EMAC.