EZ-USB FX3 Technical Reference Manual, Document Number: 001-76074 Rev. *F 223
Storage Ports
data by a card. This feature is optional for an SDIO or combo card. However, if an SDIO or combo supports read-wait, all
functions and any memory will support read-wait. For more details, refer to the SDIO specification. Any card that supports
suspend-resume will also support read-wait.
The CyU3PSdioReadWaitEnable API is used to enable read-wait on the SDIO bus. This function triggers read-wait on a card
that supports the feature using the DAT[2] of the SDIO data bus. It is enabled by setting the bit SDMMC_CS.
SDIO_READ_WAIT_EN.
9.6.6.2 Suspend-Resume Feature
Within a multifunction SDIO or a combo card, there are multiple devices (I/O and memory) that share access to the SD bus.
To allow sharing of access to the host among multiple devices, SDIO and combo cards can implement the optional concept of
suspend-resume. If a card supports suspend-resume, the host may temporarily halt a data transfer operation to one function
or memory (suspend) to free the bus for a higher priority transfer to a different function or memory. Once this higher priority
transfer is complete, the original transfer is restarted where it left off (resume). Support of suspend-resume is optional on a
per-card basis. If suspend-resume is implemented, it will be supported by the memory (if any) of a combo card and all I/O
functions except function 0. Note that the host can suspend multiple transactions and resume them in any order desired. I/O
function 0 does not support suspend-resume.
The CyU3PSdioSuspendResumeFunction API is used to suspend or resume the specified SDIO function. Suspend-resume
needs to be supported by the card to which these calls are being addressed. Support for suspend-resume can be ascertained
by looking at the SBS bit of the card's card capability register. When the function is resumed, it also checks if any data is
available.
9.6.6.3 SD3.0 Host Tuning Feature
SD3.0 supports the tuning feature to find the optimal sampling point in the host during the SDR50, SDR104, and DDR104
modes of operation. CMD19 is the special command that is used in SD3.0 for starting the tuning operation. SDR104 and
DDR104 are not supported in FX3S. The host generally supports two types of sampling:
â– Fixed sampling: SDR-FD-SDR signaling, fixed delay (can't use tuning). This method is available up to only 100-MHz
frequency.
â– Variable sampling: SDR-VD-SDR signaling, variable delay (uses tuning block). The CMD19 is used by the host to read the
tuning block.
The arguments of the CMD19 are zero, and response R1 is defined for this command. The card sends a 64-byte block of data
on the DAT[3:0] lines with predefined CRC bits. This data is used by the host to compare with a predefined tuning block
pattern and to increment the sampling control block by one step. Per the specification, there can be 40 executions of CMD19
in no more than 150 ms. CMD19 always returns a 64-byte tuning pattern sent by the card. After the CPU sets up the SIB
sockets, command transmission is initiated and completed in the same manner as described in 9.5.1.5 Sending SD/MMC/
SDIO Commands on page 206. Receipt of the 64-byte tuning pattern is indicated by the block received interrupt
(SDMMC_INTR.BLOCKS_RECEIVED). The host verifies the data integrity of the tuning block and adjusts its sampling point
accordingly. For register descriptions, refer to SDMMC_DLL_CTRL register on page 659.
The tuning can be implemented as follows. The SIB has registers for selecting the CMD and data phase values in the
SDMMC DLL control register. Increment these values from 0 until a point where the tuning data reception does not lead to a
CRC16 error. When the phase values exceed the maximum possible value (15), all 16 phase values possible have returned
CRC16 errors and hence a fatal error is reported.