AR# 47537


Zynq-7000 SoC, SDIO - ADMA2 Read Corrupts Data That Was Written Using PIO Mode


If the controller writes data using PIO mode and later reads the data using ADMA2 mode, the controller fails to send an Auto CMD12 (stop request) during the DMA process and the read FIFO fills up with incorrect data.

Fixed in PS version 2.0 and later. Does not affect production silicon.

This can be avoided by either selecting SDMA mode (instead of ADMA2 mode) when using PIO mode writes or by not using PIO mode to write data.



Minor. Refer to the Impact Details below.


The two-step work-around is described in the Work-around Details below.

Configurations Affected:

Systems that use the SDIO controller.

Device Revision(s) Affected:Fixed in PS version 2.0 and later. Refer to (Xilinx Answer 47916) - Zynq-7000 SoC Silicon Revision Differences

Impact Details

If the SD Host controller writes the data to the SD card in the PIO mode and later tries to read the data from the SD card in ADMA2 mode, the Host controller will fail to send Auto CMD12 (stop request) to the SD card. Consequently, the internal FIFOs in the SD Host controller will fill up with incorrect data.

Work-around Details

There are two work-arounds for this issue:

  • SD host driver should configure the dma_select mode to 2b00 when PIO writes are being performed. The driver can switch the dma_select mode to 2b10 for ADMA2 read operations.
  • Do not perform any PIO writes and always use ADMA2 write/read operations. The throughput from the PIO writes/reads is less than what is achieved through ADMA2 operations.

Linked Answer Records

Master Answer Records

Answer Number Answer Title Version Found Version Resolved
47916 Zynq-7000 AP SoC Devices - Silicon Revision Differences N/A N/A
AR# 47537
Date 05/23/2018
Status Active
Type Design Advisory
People Also Viewed