The uSDHC command transfer type and uSDHC command argument registers allow a
command to be issued to the card. The uSDHC command, system control, and protocol
control registers allow the users to specify the format of the data and response and to
control the read wait cycle.
There are four 32-bit registers used to store the response from the card in the uSDHC.
The uSDHC reads these four registers to get the command response directly. The uSDHC
uses a fully configurable 128x32-bit FIFO for read and write. The buffer is used as
temporary storage for data being transferred between the host system and the card, and
vice versa. The uSDHC data buffer access register bits hold 32-bit data upon a read or
write transfer.
For receiving data, the steps are as follows:
1. The uSDHC controller generates a DMA request when there are more words
received in the buffer than the amount set in the RD_WML register
2. Upon receiving this request, DMA engine starts transferring data from the uSDHC
FIFO to system memory by reading the data buffer access register.
For transmitting data, the steps are as follows:
1. The uSDHC controller generates a DMA request whenever the amount of the buffer
space exceeds the value set in the WR_WML register.
2. Upon receiving this request, the DMA engine starts moving data from the system
memory to the uSDHC FIFO by writing to the Data Buffer Access Register for a
number of pre-defined bytes.
The read-only uSDHC Present State and Interrupt Status Registers provide uSDHC
operations status, application FIFO status, error conditions, and interrupt status.
When certain events occur, the module has the ability to generate interrupts as well as set
the corresponding Status Register bits. The uSDHC interrupt status enable and signal-
enable registers allow the user to control if these interrupts occur.
29.1.2 Software Operation
The Linux OS contains an MMC bus driver which implements the MMC bus protocols.
The MMC block driver handles the file system read/write calls and uses the low level
MMC host controller interface driver to send the commands to the uSDHC.
The MMC driver is responsible for implementing standard entry points for
init
,
exit
,
request
, and
set_ios
. The driver implements the following functions:
Introduction
i.MX 6Solo/6DualLite Linux Reference Manual, Rev. L3.0.35_4.1.0, 09/2013
214
Freescale Semiconductor, Inc.