^

AR# 47537 Zynq-7000, 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.

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.

Impact:

Minor. Refer to the Impact Details below.

Work-around:

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: Refer to (Xilinx Answer 47916) - Design Advisory Master Answer Record for Zynq-7000 Devices



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.
AR# 47537
Date Created 05/23/2012
Last Updated 08/15/2012
Status Active
Type Design Advisory
Devices
  • Zynq-7000
Feed Back