SWRU626 December 2025 CC3501E , CC3551E
Table 20-12 lists the memory-mapped registers for the SDMMC registers. All register offset addresses not listed in Table 20-12 should be considered as reserved locations and the register contents should not be modified.
| Offset | Acronym | Register Name | Section |
|---|---|---|---|
| 110h | SYSCFG | System Configuration | Section 20.4.1 |
| 114h | SYSSTA | Module Status | Section 20.4.2 |
| 124h | CSRE | Status Error Detection | Section 20.4.3 |
| 128h | SYSTEST | System Test Control | Section 20.4.4 |
| 12Ch | CON | SD Configuration | Section 20.4.5 |
| 130h | PWCNT | Power Delay Counter | Section 20.4.6 |
| 200h | SDMASA | DMA System Address | Section 20.4.7 |
| 204h | BLK | Transfer Size Configuration | Section 20.4.8 |
| 208h | ARG | Command Argument | Section 20.4.9 |
| 20Ch | CMD | Command Transfer Control | Section 20.4.10 |
| 210h | RSP10 | Command Response Register | Section 20.4.11 |
| 214h | RSP32 | Command Response Upper | Section 20.4.12 |
| 218h | RSP54 | Command Response Bits | Section 20.4.13 |
| 21Ch | RSP76 | Response Data 4 | Section 20.4.14 |
| 220h | DATA | Data Buffer | Section 20.4.15 |
| 224h | PSTATE | Controller Status | Section 20.4.16 |
| 228h | HCTL | Host Control Settings | Section 20.4.17 |
| 22Ch | SYSCTL | Clock and Timeout | Section 20.4.18 |
| 230h | STAT | Interrupt Status | Section 20.4.19 |
| 234h | IE | Interrupt Enable | Section 20.4.20 |
| 238h | ISE | Interrupt Signal Enable | Section 20.4.21 |
| 23Ch | AC12 | Auto Command 12 Error | Section 20.4.22 |
| 240h | CAPA | Controller Capabilities | Section 20.4.23 |
| 248h | CURCAPA | Current Capabilities | Section 20.4.24 |
| 250h | FE | Force Error Interrupt | Section 20.4.25 |
| 2FCh | REV | Version Information | Section 20.4.26 |
| 1040h | TPSEL | Test Port Selection | Section 20.4.27 |
| 1048h | DMAMODE | DMA Mode Configuration | Section 20.4.28 |
| 1050h | DMAIND | DMA Trigger Selection | Section 20.4.29 |
| 1054h | CLKSEL | Memory Clock Selection | Section 20.4.30 |
| 10E0h | EVTMODE | Event Mode | Section 20.4.31 |
| 10FCh | DESC | Module Identification Register | Section 20.4.32 |
| 1100h | SDMMCSTAT | Status Register | Section 20.4.33 |
| 1110h + formula | BUFIF_y | Buffer Interface | Section 20.4.34 |
| 4000h | CLKCFG | Primary Configuration | Section 20.4.35 |
Complex bit access types are encoded to fit into small table cells. Table 20-13 shows the codes that are used for access types in this section.
| Access Type | Code | Description |
|---|---|---|
| Read Type | ||
| R | R | Read |
| Write Type | ||
| W | W | Write |
| Reset or Default Value | ||
| -n | Value after reset or the default value | |
| Register Array Variables | ||
| i,j,k,l,m,n | When these variables are used in a register name, an offset, or an address, they refer to the value of a register array where the register is part of a group of repeating registers. The register groups form a hierarchical structure and the array is represented with a formula. | |
| y | When this variable is used in a register name, an offset, or an address it refers to the value of a register array. | |
SYSCFG is shown in Table 20-14.
Return to the Summary Table.
This register allows controlling various parameters of the OCP interface.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-14 | RESERVED | R | 0h | Reserved |
| 13-12 | RESERVED | R | 0h | Reserved |
| 11-10 | RESERVED | R | 0h | Reserved |
| 9-8 | RESERVED | R | 0h | Reserved |
| 7-5 | RESERVED | R | 0h | Reserved |
| 4-3 | RESERVED | R | 0h | Reserved |
| 2 | RESERVED | R | 0h | Reserved |
| 1 | SOFTRST | R/W | 0h | Software reset. The bit is automatically reset by the hardware. During reset, it always returns 0. |
| 0 | RESERVED | R | 0h | Reserved |
SYSSTA is shown in Table 20-15.
Return to the Summary Table.
This register provides status information about the module excluding the interrupt status information.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | RSTDONE | R | 0h | Internal Reset Monitoring
Note: The debounce clock , the interface clock and the functional clock must be provided to the SDMMC host controller to allow the internal reset monitoring.
|
CSRE is shown in Table 20-16.
Return to the Summary Table.
Card Status Response Error Detection This register enables the host controller to detect card status errors of response type R1, R1b for all cards and of R5, R5b and R6 response for cards types SD or SDIO. When a bit SD_SD_CSRE[i] is set to 1, if the corresponding bit at the same position in the response RSP10[i] is set to 1, the host controller indicates a card error (SD_STAT.CERR bit) interrupt status to avoid the host driver reading the response register (RSP10). No automatic card error detection for autoCMD12 is implemented; the host system has to check autoCMD12 response register (RSP76) for possible card errors.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | STA | R/W | 0h | Card status response error
|
SYSTEST is shown in Table 20-17.
Return to the Summary Table.
SDMMC System Test Register This register is used to control the signals that connect to I/O pins when the module is configured in system test (SD_SYSTEST) mode for boundary connectivity verification. In SD_SYSTEST mode, a write into SD_CMD register will not start a transfer.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | R | 0h | Reserved |
| 16 | OBI | R | 0h | Out-Of-Band Interrupt (OBI) data value Note: Out-Of-Band Interrupt (OBI) is not supported. |
| 15 | SDCD | R | 0h | Card detect input signal (SDCD) data value
|
| 14 | SDWP | R | 0h | Write protect input signal (SDWP) data value
|
| 13 | WAKD | R/W | 0h | Wake request output signal data value
|
| 12 | SSB | R/W | 0h | Set status bit
This bit must be cleared prior attempting to clear a status bit of the interrupt status register (SD_STAT).
|
| 11 | D7D | R/W | 0h | DAT7 input/output signal data value
|
| 10 | D6D | R/W | 0h | DAT6 input/output signal data value
|
| 9 | D5D | R/W | 0h | DAT5 input/output signal data value
|
| 8 | D4D | R/W | 0h | DAT4 input/output signal data value
|
| 7 | D3D | R/W | 0h | DAT3 input/output signal data value
|
| 6 | D2D | R/W | 0h | DAT2 input/output signal data value
|
| 5 | D1D | R/W | 0h | DAT1 input/output signal data value
|
| 4 | D0D | R/W | 0h | DAT0 input/output signal data value
|
| 3 | DDIR | R/W | 0h | Control of the DAT[7:0] pins direction
|
| 2 | CDAT | R/W | 0h | CMD input/output signal data value
|
| 1 | CDIR | R/W | 0h | Control of the CMD pin direction
|
| 0 | MCKD | R/W | 0h | MMC clock output signal data value
|
CON is shown in Table 20-18.
Return to the Summary Table.
SDMMC Configuration Register. This register is used: - to select the functional mode or the SYSTEST mode for any card. - to send an initialization sequence to any card. - to enable the detection on DAT[1] of a card interrupt for SDIO cards only. and also to configure : - specific data and command transfers for MMC cards only. - the parameters related to the card detect and write protect input signals.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-22 | RESERVED | R | 0h | Reserved |
| 21 | SDMALNE | R/W | 0h | Peripheral DMA Level/Edge Request
The waveform of the DMA request can be configured either edge sensitive with early de-assertion on first access to SD_DATA register or late de-assertion, request remains active until last allowed data written into SD_DATA.
|
| 20 | REVERVED | R/W | 0h | DMA Master or Slave selection Note: these bit fields are *not used*, since the IP not support MDMA. |
| 19 | RESERVED | R/W | 0h | Dual Data Rate mode Note: these bit fields are *not used*, Only Standard mode is supported. |
| 18-17 | RESERVED | R/W | 0h | Note: these bit fields are *not used*. |
| 16 | CLKEXTFREE | R/W | 0h | External clock free running
This register is used to maintain card clock out of transfer transaction to enable peripheral module (for example to generate a synchronous interrupt on mmc_dat[1] ).
The Clock will be maintained only if SD_SYSCTL.CEN bit is set.
|
| 15 | PADEN | R/W | 0h | Control Power for MMC Lines.
Note: Power control is not supported using this bit.
|
| 14 | OBIE | R/W | 0h | Out-of-Band Interrupt Enable.
Note: The Out-of-Band (OBI) interrupt is not supported.
|
| 13 | OBIP | R/W | 0h | Out-of-Band Interrupt Polarity
Note: The Out-of-Band (OBI) interrupt is not supported.
|
| 12 | CEATA | R/W | 0h | CE-ATA control mode (MMC cards compliant with CE-ATA)
This bit is used to indicate that next commands are considered as specific CE-ATA commands that potentially use 'command completion' features.
|
| 11 | CTPL | R/W | 0h | Control Power for DAT[1] line
MMC and SD cards:
By default, this bit is set to 0 and the host controller automatically disables all the input buffers outside of a transaction to minimize the leakage current.
SDIO cards:
When this bit is set to 1, the host controller automatically disables all the input buffers except the buffer of DAT[1] outside of a transaction in order to detect asynchronous card interrupt on DAT[1] line and minimize the leakage current of the buffers.
|
| 10-9 | DVAL | R/W | 3h | Debounce filter value (all cards)
This register is used to define a debounce period to filter the card detect input signal (SDCD).
The usage of the card detect input signal (SDCD) is optional and depends on the system integration and the type of the connector housing that accommodates the card.
|
| 8 | WPP | R/W | 0h | Write protect polarity
For SD and SDIO cards only
This bit selects the active level of the write protect input signal (SDWP).
The usage of the write protect input signal (SDWP) is optional and depends on the system integration and the type of the connector housing that accommodates the card.
|
| 7 | CDP | R/W | 0h | Card detect polarity
All cards
This bit selects the active level of the card detect input signal (SDCD).
The usage of the card detect input signal (SDCD) is optional and depends on the system integration and the type of the connector housing that accommodates the card.
|
| 6 | MIT | R/W | 0h | MMC interrupt command (MMC cards only).
This bit must be set to 1, when the next write access to the command register (SD_CMD) is for writing a MMC interrupt command (CMD40) requiring the command timeout detection to be disabled for the command response.
|
| 5 | DW8 | R/W | 0h | 8-bit mode MMC select (MMC cards only)
For SD/SDIO cards, this bit must be cleared to 0.
For MMC card, this bit must be set following a valid SWITCH command (CMD6) with the correct value and extend CSD index written in the argument.
Prior to this command, the MMC card configuration register (CSD and EXT_CSD) must be verified for compliancy with MMC standard specification.
|
| 4 | MODE | R/W | 0h | Mode select (all cards)
This bit selects the functional mode.
|
| 3 | STR | R/W | 0h | Stream command (MMC cards only)
This bit must be set to 1 only for the stream data transfers (read or write) of the adtc commands.
Stream read is a class 1 command (CMD11READ_DAT_UNTIL_STOP).
Stream write is a class 3 command (CMD20WRITE_DAT_UNTIL_STOP).
|
| 2 | HR | R/W | 0h | Broadcast host response (MMC cards only)
This register is used to force the host to generate a 48-bit response for bc command type.
It can be used to terminate the interrupt mode by generating a CMD40 response by the core.
In order to have the host response to be generated in open drain mode, the IO must be configured accordingly in EXT_IOMUX.
When SD_CON.CEATA bit is set to 1 and SD_ARG cleared to 0, when writing the value of 0 into SD_CMD register, the host controller performs a 'command completion signal disable' token (i.e., mmc_cmd line held to 0 during 47 cycles followed by a 1).
|
| 1 | INIT | R/W | 0h | Send initialization stream (all cards)
When this bit is set to 1, and the card is idle, an initialization sequence is sent to the card.
An initialization sequence consists of setting the mmc_cmd line to 1 during 80 clock cycles.
The initialization sequence is mandatory - but it is not required to do it through this bit - this bit makes it easier.
Clock divider should be set to ensure that 80 clock periods are greater than 1ms.
Note: In this mode, there is no command sent to the card and no response is expected.
A command complete interrupt will be generated once the initialization sequence is completed.
|
| 0 | OD | R/W | 0h | Card open drain mode
This bit must be set to 1 for MMC card commands 1, 2, 3 and 40, and if the MMC card bus is operating in open-drain mode during the response phase to the command sent. Typically, during card identification mode when the card is either in idle, ready or ident state.
It is also necessary to set this bit to 1, for a broadcast host response (see Broadcast host response register SD_CON.HR).
|
PWCNT is shown in Table 20-19.
Return to the Summary Table.
SDMMC Power counter register This register is used to program a MMC counter to delay command transfers after activating the PAD power, this value depends on PAD characteristics and voltage.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | Reserved |
| 15-0 | NUMDEL | R/W | 0h | Power counter
This register is used to introduce a delay between the PAD ACTIVE pin assertion and the command issued.
0h = No additional delay added
1h = TCF delay (card clock period)
2h = TCF x 2 delay (card clock period)
FFFEh = TCF x 65534 delay (card clock period)
FFFFh = TCF x 65535 delay (card clock period)
|
SDMASA is shown in Table 20-20.
Return to the Summary Table.
DMA System Address This register contains the system memory address for a SDMA transfer. When the Host Controller stops a SDMA transfer, this register shall point to the system address of the next contiguous data position. It can be accessed only if no transaction is executing (i.e., after a transaction has stopped). Read operations during transfers may return an invalid value. The Host Driver shall initialize this register before starting a SDMA transaction. After SDMA has stopped, the next system address of the next contiguous data position can be read from this register. The SDMA transfer waits at the every boundary specified by the Host SDMA Buffer Boundary in the Block Size register. The Host Controller generates DMA Interrupt to request the Host Driver to update this register. The Host Driver sets the next system address of the next data position to this register. When the most upper byte of this register (003h) is written, the Host Controller restarts the SDMA transfer. When restarting SDMA by the Resume command or by setting Continue Request in the Block Gap Control register, the Host Controller shall start at the next contiguous address stored here in the SDMA System Address register.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | ADDR | R/W | 0h | SDMA System Address register
|
BLK is shown in Table 20-21.
Return to the Summary Table.
Transfer Length Configuration Register BLEN is the block size register. NBLK is the block count register. This register shall be used for any card.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | NBLK | R/W | 0h | Block count for current transfer
This register is enabled when Block count Enable (SD_CMD.BCE bit) is set to 1 and is valid only for multiple block transfers.
Setting the block count to 0 results no data blocks being transferred.
Note: The host controller decrements the block count after each block transfer and stops when the count reaches zero.
This register can be accessed only if no transaction is executing (i.e., after a transaction has stopped). Read operations during transfers may return an invalid value and write operation will be ignored.
0h = Stop count
1h = 1 block
2h = 2 blocks
FFFFh = 65535 blocks
|
| 15-11 | RESERVED | R | 0h | Reserved |
| 10-0 | BLEN | R/W | 0h | Transfer block size
This register is enabled when Block Count Enable (SD_CMD.BCE) is set to 1 and is valid only for multiple block transfers. It specifies the block size for block data transfers.
Read operations during transfers may return an invalid value, and write operations are ignored.
0h = No data transfer
1h = 1 byte block length
2h = 2 bytes block length
3h = 3 bytes block length
1FFh = 511 bytes block length
200h = 512 bytes block length
3FFh = 1023 bytes block length
400h = 1024 bytes block length
|
ARG is shown in Table 20-22.
Return to the Summary Table.
Command argument register This register contains command argument specified as bit 39-8 of Command-Format. These registers must be initialized prior to sending the command itself to the card (write action into the register SD_CMD register). Only exception is for a command index specifying stuff bits in arguments, making a write unnecessary.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | CMDARG | R/W | 0h | Command argument
|
CMD is shown in Table 20-23.
Return to the Summary Table.
Command and data transfer register This register configures the data and command transfers. A write into the most significant byte send the command. A write into SD_CMD[15:0] during data transfer has no effect. This register can be used for any card. In SYSTEST mode, a write to the SD_CMD register will not start a transfer.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-30 | RESERVED | R | 0h | Reserved |
| 29-24 | IDX | R/W | 0h | Command index
Binary encoded value from 0 to 63 specifying the command number to send to card.
Examples:
- INDEX = 7h, sends CMD7 to the card
- INDEX = 29h, sends CMD41 to the card
|
| 23-22 | CMDTYP | R/W | 0h | Command type
This bitfield specifies three types of special commands:
- Suspend
- Resume
- Abort
The bitfield is cleared to 0 for all other commands.
|
| 21 | DP | R/W | 0h | Data present select
This register indicates that data is present and DAT line(s) shall be used.
It must be cleared to 0 in the following conditions:
- Command using only CMD line
- Command with no data transfer but using busy signal on DAT[0] line
- Resume command
|
| 20 | CICE | R/W | 0h | Command Index check enable
If this bit is set to 1, the host checks the index field in the response to see if it has the same value as the command index. If it is not, it is reported as a Command Index Error.
If this bit is set to 0, the Index field is not checked.
|
| 19 | CCCE | R/W | 0h | Command CRC check enable
If this bit is set to 1, the host checks the CRC field in the response. If an error is detected, it is reported as a Command CRC Error.
If this bit is set to 0, the CRC field is not checked.
|
| 18 | RESERVED | R | 0h | Reserved |
| 17-16 | RSPTYPE | R/W | 0h | Response type
This bits defines the response type of the command.
|
| 15-6 | RESERVED | R | 0h | Reserved |
| 5 | MSBS | R/W | 0h | Multi/Single block select
This bit must be set to 1 for data transfer in case of multi block command.
For any others command this bit must be cleared to 0.
|
| 4 | DDIR | R/W | 0h | Data transfer Direction Select
This bit defines the data transfer direction
|
| 3-2 | ACEN | R/W | 0h | Auto CMD Enable
This field determines use of auto command functions.
There are two methods to stop Multiple-block read and write operation
(1) Auto CMD12 Enable
When this field is set to 01b, the Host Controller issues CMD12 automatically when last block transfer is completed. Auto CMD12 error is indicated to the Auto CMD Error Status register. The Host Driver shall not set this bit if the command does not require CMD12. In particular, secure commands defined in the Part 3 File Security specification do not require CMD12.
(2) Auto CMD23 Enable
When this bit field is set to 10b, the Host Controller issues a CMD23 automatically before issuing a command specified in the Command Register. The Host Controller Version 3.00 and later shall support this function. The following conditions are required to use the Auto CMD23.
- Auto CMD23 Supported (Host Controller Version is 3.00 or later)
- A memory card that supports CMD23 (SCR[33]=1)
- If DMA is used, it shall be ADMA.
- Only when CMD18 or CMD25 is issued
(Note, the Host Controller does not check command index.)
Auto CMD23 can be used with or without ADMA. By writing the Command register, the Host Controller issues a CMD23 first and then issues a command specified by the Command Index in Command register. If response errors of CMD23 are detected, the second command is not issued. A CMD23 error is indicated in the Auto CMD Error Status register. 32-bit block count value for CMD23 is set to SDMA System Address / Argument 2 register.
|
| 1 | BCE | R/W | 0h | Block Count Enable
This bit is used to enable the Block count register, which is only relevant for multiple block transfers.
When this bit is 0, the Block Count register is disabled, which is useful in executing an infinite transfer.
|
| 0 | DE | R/W | 0h | DMA enable
DMA can be enabled only if DMA Support bit in the Capabilities register is set. If this bit is set to 1, a DMA operation starts when the host writes to the upper byte of Command register (00Fh).
|
RSP10 is shown in Table 20-24.
Return to the Summary Table.
Response register 10 This 32-bit register holds bits positions [31:0] of command response type R1, R1b, R2, R3, R4, R5, R5b or R6.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RSP1 | R | 0h | Command Response [31:16]
|
| 15-0 | RSP0 | R | 0h | Command Response [15:0]
|
RSP32 is shown in Table 20-25.
Return to the Summary Table.
Response register 32 This 32-bit register holds bits positions [63:32] of command response type R2.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RSP3 | R | 0h | Command Response [63:48]
|
| 15-0 | RSP2 | R | 0h | Command Response [47:32]
|
RSP54 is shown in Table 20-26.
Return to the Summary Table.
Response register 54 This 32-bit register holds bits positions [95:64] of command response type R2.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RSP5 | R | 0h | Command Response [95:80]
|
| 15-0 | RSP4 | R | 0h | Command Response [79:64]
|
RSP76 is shown in Table 20-27.
Return to the Summary Table.
Response register 76 This 32-bit register holds bits positions [127:96] of command response type R2.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RSP7 | R | 0h | Command Response [127:112]
|
| 15-0 | RSP6 | R | 0h | Command Response [111:96]
|
DATA is shown in Table 20-28.
Return to the Summary Table.
Data register This register is the 32-bit entry point of the buffer for read or write data transfers. The buffer size is 32bits x 256 (1024 bytes). Bytes within a word are stored and read in little endian format. This buffer can be used as two 512 byte buffers to transfer data efficiently without reducing the throughput. Sequential and contiguous access is necessary to increment the pointer correctly. Random or skipped access is not allowed. If the local host accesses this register byte-wise or 16bit-wise, the least significant byte (bits [7:0]) must always be written/read first. The update of the buffer address is done on the most significant byte write.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | VAL | R/W | 0h | Buffer data register
In functional mode (SD_CON.MODE = FUNC):
- a read access to this register is allowed only when the buffer read enable status is set to 1 (SD_PSTATE.BREN), otherwise a bad access (SD_STAT.BADA) is signaled.
- a write access to this register is allowed only when the buffer write enable status is set to 1 (SD_PSTATE.BWEN), otherwise a bad access (SD_STAT.BADA) is signaled and the data is not written.
|
PSTATE is shown in Table 20-29.
Return to the Summary Table.
SDMMC controller status register The host can get the status of the SDMMC controller from this 32-bit read only register.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-25 | RESERVED | R | 0h | Reserved |
| 24 | CLEV | R | 0h | Command line signal level
This status is used to check the CMD line level to recover from errors, and for debugging.
|
| 23-20 | DLEV | R | 0h | DATA line 0 to 3 signal level
Bit 3 reflects DATA[3] signal level.
Bit 2 reflects DATA[2] signal level.
Bit 1 reflects DATA[1] signal level.
Bit 0 reflects DATA[0] signal level.
This status is used to check DAT line level to recover from errors, and for debugging.
This is especially useful in detecting the busy signal level from DAT[0].
|
| 19 | WP | R | 0h | Write Protect
This bit reflects the write protect input pin (SDWP) level.
|
| 18 | CDPL | R | 0h | Card Detect Pin Level
This bit reflects the inverse value of the card detect input pin (SDCD).
|
| 17 | CSS | R | 0h | Card State Stable
This bit is used for testing.
It is set to 1 only when Card Detect Pin Level is stable (SD_PSTATE.CPDL).
Debouncing is performed on the card detect input pin (SDCD) to detect card stability.
This bit is not affected by software reset.
|
| 16 | CINS | R | 0h | Card inserted
This bit is the debounced value of the card detect input pin (SDCD).
An inactive to active transition of the card detect input pin (SDCD) will generate a card insertion interrupt (SD_STAT.CINS).
An active to inactive transition of the card detect input pin (SDCD) will generate a card removal interrupt (SD_STAT.REM).
This bit is not affected by a software reset.
|
| 15-12 | RESERVED | R | 0h | Reserved |
| 11 | BRE | R | 0h | Buffer read enable
This bit is used for non-DMA read transfers.
This read only flag indicates that valid data exists in the host side buffer status. If this bit is 1, readable data exists in the buffer.
A change of this bit from 1 to 0 occurs when all the block data is read from the buffer.
A change of this bit from 0 to 1 occurs when all the block data is ready in the buffer and generates the Buffer Read Ready Interrupt.
|
| 10 | BWE | R | 0h | Buffer write enable
This status is used for non-DMA write transfers.
This read only flag indicates if space is available for write data. If this bit is 1, data can be written to the buffer.
A change of this bit from 1 to 0 occurs when all the block data is written to the buffer.
A change of this bit from 0 to 1 occurs when top of block data can be written to the buffer and generates the Buffer Write Ready Interrupt.
|
| 9 | RTA | R | 0h | Read transfer active (SD mode only)
This status is used for detecting completion of a read transfer.
This bit is set to 1 for either of the following conditions:
- After the end bit of the read command
- When writing a 1 to continue Request in the Block Gap Control register to restart a read transfer
This bit is cleared to 0 for either of the following conditions:
- When the last data block as specified by block length is transferred to the system.
- When all valid data blocks have been transferred to the system and no current block transfers are being sent as a result of the Stop At Block Gap Request set to 1. A transfer complete interrupt is generated when this bit changes to 0.
|
| 8 | WTA | R | 0h | Write transfer active
This status indicates a write transfer active. If this bit is 0, it means no valid write data exists.
This bit is set in either of the following cases:
- After the end bit of the write command.
- When writing a 1 to Continue Request in the Block Gap Control register to restart a write transfer.
This bit is cleared in either of the following cases:
- After getting the CRC status of the last data block as specified by the transfer count (Single or Multiple)
- After getting a CRC status of any block where data transmission is about to be stopped by a Stop At Block Gap Request. During a write transaction, a Block Gap Event interrupt is generated when this bit is changed to 0, as a result of the Stop At Block Gap Request being set. This status is useful for the host to determine when to issue commands during write busy.
|
| 7-3 | RESERVED | R | 0h | Reserved |
| 2 | DLA | R | 0h | DATA Line Active (SD Mode only)
This bit indicates whether one of the DATA lines on SD bus is in use.
|
| 1 | DATI | R | 0h | Command Inhibit (DAT) (SD Mode Only)
This status bit is generated if either the DAT Line Active or the Read transfer Active is set to 1. If this bit is 0, it indicates the host can issue the next SD command. Commands with busy signal belong to Command Inhibit (DAT) (ex. R1b, R5b type).
Changing from 1 to 0 generates a Transfer Complete interrupt.
Note: The SD Host Driver can save registers in the range of 000-00Dh for a suspend transaction after this bit has changed from 1 to 0.
|
| 0 | CMDI | R | 0h | Command Inhibit (CMD) (SD Mode Only)
If this bit is 0, it indicates the CMD line is not in use and the host can issue a SD command using the CMD line. This bit is set immediately after the Command register (00Fh) is written. This bit is cleared when the command response is received. Even if the Command Inhibit (DAT) is set to 1, Commands using only the CMD line can be issued if this bit is 0. Changing from 1 to 0 generates a Command complete interrupt. If the host cannot issue the command because of a command conflict error or because of Command Not Issued By Auto CMD12 Error, this bit shall remain 1 and the Command Complete is not set. Status issuing Auto CMD12 is not read from this bit.
Auto CMD12 and Auto CMD23 consist of two responses. In this case, this bit is not cleared by the response of CMD12 or CMD23 but cleared by the response of a read/write command. Status issuing Auto CMD12 is not read from this bit. So if a command is issued during Auto CMD12 operation, Host Controller shall manage to issue two commands: CMD12 and a command set by Command register.
|
HCTL is shown in Table 20-30.
Return to the Summary Table.
Host Control Register This register defines the host controls to set power, wakeup and transfer parameters. SD_HCTL[31:24] = Wakeup control SD_HCTL[23:16] = Block gap control SD_HCTL[15:8] = Power control SD_HCTL[7:0] = Host control
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-28 | RESERVED | R | 0h | Reserved |
| 27 | RESERVED | R | 0h | Reserved |
| 26 | RESERVED | R | 0h | Reserved |
| 25 | RESERVED | R | 0h | Reserved |
| 24 | RESERVED | R | 0h | Reserved |
| 23-20 | RESERVED | R | 0h | Reserved |
| 19 | IBG | R/W | 0h | Interrupt block at gap
This bit is valid only in 4-bit mode of SDIO card to enable interrupt detection in the interrupt cycle at block gap for a multiple block transfer.
For MMC cards and for SD card this bit should be cleared to 0.
|
| 18 | RWC | R/W | 0h | Read wait control
The read wait function is optional only for SDIO cards.
If the card supports read wait, this bit must be enabled, then requesting a stop at block gap (SD_HCTL.SBGR) generates a read wait period after the current end of block.
Note: If read wait is not supported it may cause a conflict on mmc_dat line.
|
| 17 | CR | R/W | 0h | Continue request
This bit is used to restart a transaction that was stopped by requesting a stop at block gap (SD_HCTL[16] SBGR bit).
Set this bit to 1 restarts the transfer.
The bit is automatically cleared to 0 by the host controller when transfer has restarted, that is, mmc_dat line is active (SD_PSTATE.DLA) or transferring data (SD_PSTATE.WTA).
The Stop at block gap request must be disabled (SD_HCTL[16]
SBGR bit =0) before setting this bit.
|
| 16 | SBGR | R/W | 0h | Stop at block gap request
This bit is used to stop executing a transaction at the next block gap.
The transfer can restart with a continue request (SD_HCTL.CR) or during a suspend/resume sequence.
In case of read transfer, the card must support read wait control.
In case of write transfer, the host driver must set this bit after all block data written.
Until the transfer completion (SD_STAT.TC bit set to 1), the host driver must leave this bit set to 1. If this bit is set, the local host may not write to the data register (DATA).
|
| 15-12 | RESERVED | R | 0h | Reserved |
| 11-9 | SDVS | R/W | 0h | SD bus voltage select (All cards).
The host driver should set these bits to select the voltage level for the card according to the voltage supported by the system (SD_CAPA[26] VS18 bit, SD_CAPA[25] VS30 bit, SD_CAPA[24] VS33 bit) before starting a transfer.
|
| 8 | SDBP | R/W | 0h | SD bus power.
Before setting this bit, the host driver shall select the SD bus voltage (SD_HCTL[11:9] SDVS bits).
If the host controller detects the No card state, this bit is automatically cleared to 0.
If the module is power off, a write in the command register (SD_CMD) will not start the transfer.
A write to this bit has no effect if the selected SD bus voltage is not supported according to capability register (SD_CAPA[26] VS18 bit, SD_CAPA[25] VS30 bit or SD_CAPA[24] VS33 bit).
|
| 7 | CDSS | R/W | 0h | Card Detect Signal Selection
This bit selects the source for the card detection.
When the source for the card detection is switched, the Card insertion and removal interrupts should be disabled to avoid unexpected interrupts.
In Card Detect Test Level mode, the card insertion and removal signal can be controlled by SD_HCTL.CDTL.
|
| 6 | CDTL | R/W | 0h | Card Detect Test Level
This bit is only functional when the Card Detect Signal Selection selects the Card Detect Test Level mode (SD_HCTL.CDSS = 1).
|
| 5 | RESERVED | R | 0h | Reserved |
| 4-3 | RESERVED | R | 0h | Reserved |
| 2 | HSPE | R/W | 0h | High Speed Enable
Before setting this bit, the Host Driver shall check the High Speed Support in the Capabilities register.
If this bit is cleared to 0 (default), the Host Controller outputs CMD line and DAT lines at the falling edge of the SD Clock.
If this bit is set to 1, the Host Controller outputs CMD line and DAT lines at the rising edge of the SD Clock.
|
| 1 | DTW | R/W | 0h | Data transfer width
This bit must be set following a valid SET_BUS_WIDTH command (ACMD6) with the value written in bit 1 of the argument.
Prior to this command, the SD card configuration register (SCR) must be verified for the supported bus width by the SD card.
|
| 0 | RESERVED | R | 0h | Reserved |
SYSCTL is shown in Table 20-31.
Return to the Summary Table.
SD System Control Register This register defines the system controls clock frequency management and data timeout. SD_SYSCTL[23:16] = Timeout control SD_SYSCTL[15:0] = Clock control
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-27 | RESERVED | R | 0h | Reserved |
| 26 | SRD | R/W | 0h | Software reset for mmc_dat line
This bit is set to 1 for reset and released to 0 when completed.
Note: This subreset should not to be used by software, as it can lead to unexpected side-effects. Reset of the SDMMC module should always be through GPRCM.RSTCTL.RESETASSERT
|
| 25 | SRC | R/W | 0h | Software reset for mmc_cmd line
This bit is set to 1 for reset and released to 0 when completed.
Note: This subreset should not to be used by software, as it can lead to unexpected side-effects. Reset of the SDMMC module should always be through GPRCM.RSTCTL.RESETASSERT
|
| 24 | SRA | R/W | 0h | Software reset for all
This bit is set to 1 for reset, and released to 0 when completed.
Note: This subreset should not to be used by software, as it can lead to unexpected side-effects. Reset of the SDMMC module should always be through GPRCM.RSTCTL.RESETASSERT
|
| 23-20 | RESERVED | R | 0h | Reserved |
| 19-16 | DTO | R/W | 0h | Data timeout counter value and busy timeout
This value determines the interval to detect mmc_dat lines timeouts.
The host driver needs to set this bitfield based on:
- the maximum read access time (NAC) (Refer to the SD Specification Part1 Physical Layer)
- the data read access time values (TAAC and NSAC) in the card specific data register (CSD) of the card
- the timeout clock base frequency (SD_CAPA.TCF)
If the card does not respond within the specified number of cycles, a data timeout error occurs (SD_STAT.DTO).
The Data timeout counter can also be used to check busy duration, to generate busy timeout for commands with busy response or for busy programming during a write command.
Timeout on CRC status is generated if no CRC token is present after a block write.
0h = TCF x 213
1h = TCF x 214
Eh = TCF x 227
Fh = Reserved
|
| 15-6 | CLKD | R/W | 0h | Clock frequency select
This bitfield defines the ratio between a reference clock frequency (system dependent) and the output clock frequency on the mmc_clk pin of the memory card (MMC, SD, or SDIO).
0h = Clock Ref bypass
1h = Clock Ref bypass
2h = Clock Ref / 2
3h = Clock Ref / 3
3FFh = Clock Ref / 1023
|
| 5-3 | RESERVED | R | 0h | Reserved |
| 2 | CEN | R/W | 0h | Card clock enable
This bit controls the clock to the card.
|
| 1 | ICS | R | 0h | Internal clock stable (status)
This bit indicates that the internal clock is stable
|
| 0 | ICE | R/W | 0h | Internal clock enable
This bit controls the internal clock activity. In very low power state, the internal clock is stopped.
Note: The activity of the debounce clock (used for wake-up events) and the interface clock (used for reads and writes to the module register map) are not affected by this register.
|
STAT is shown in Table 20-32.
Return to the Summary Table.
The interrupt status regroups all the status of the module internal events that can generate an interrupt. SD_STAT[31:16] = Error Interrupt Status SD_STAT[15:0] = Normal Interrupt Status The error bits are located in the upper 16 bits of the SD_STAT register. All bits are cleared by writing a 1 to them. Additionally, bits 15 and 8 serve as special error bits. These cannot be cleared by writing a 1 to them. Bit 15 (ERRI) is automatically cleared when the error causing to ERRI to be set is handled. (that is, when bits 31:16 are cleared, bit 15 will be automatically cleared). Bit 8 (CIRQ) is cleared by writing a 0 to SD_IE[8] (masking the interrupt) and servicing the interrupt.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-30 | RESERVED | R | 0h | Reserved |
| 29 | BADA | R/W | 0h | Bad access to data space.
This bit is set automatically to indicate a bad access to buffer when not allowed: During a read access to the data register (SD_DATA) while buffer reads are not allowed (SD_PSTATE[11] BRE bit =0).
During a write access to the data register (SD_DATA) while buffer writes are not allowed (SD_PSTATE[10] BWE bit=0).
0h (W) = Status bit unchanged
0h (R) = No interrupt
1h (W) = Status is cleared.
1h (R) = Bad access
|
| 28 | CERR | R/W | 0h | Card error.
This bit is set automatically when there is at least one error in a response of type R1, R1b, R6, R5 or R5b.
Only bits referenced as type E (error) in status field in the response can set a card status error.
An error bit in the response is flagged only if corresponding bit in card status response error SD_CSRE in set.
There is no card error detection for autoCMD12 command.
The host driver shall read SD_RSP76 register to detect error bits in the command response.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Card error
|
| 27-25 | RESERVED | R | 0h | Reserved |
| 24 | ACE | R/W | 0h | Auto CMD12 error.
This bit is set automatically when one of the bits in Auto CMD12 Error status register has changed from 0 to 1.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = AutoCMD12 error
|
| 23 | RESERVED | R | 0h | Reserved |
| 22 | DEB | R/W | 0h | Data End Bit error.
This bit is set automatically when detecting a 0 at the end bit position of read data on mmc_dat line or at the end position of the CRC status in write mode.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Data end bit error
|
| 21 | DCRC | R/W | 0h | Data CRC Error.
This bit is set automatically when there is a CRC16 error in the data phase response following a block read command or if there is a 3-bit CRC status different of a position "010" token during a block write command.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Data CRC error
|
| 20 | DTO | R/W | 0h | Data timeout error.
This bit is set automatically according to the following conditions:
Busy timeout for R1b, R5b response type.
Busy timeout after write CRC status.
Write CRC status timeout.
Read data timeout.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Time out
|
| 19 | CIE | R/W | 0h | Command index error.
This bit is set automatically when response index differs from corresponding command index previously emitted.
It depends on the enable bit (SD_CMD[20] CICE).
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Command index error
|
| 18 | CEB | R/W | 0h | Command end bit error.
This bit is set automatically when detecting a 0 at the end bit position of a command response.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Command end bit error
|
| 17 | CCRC | R/W | 0h | Command CRC error.
This bit is set automatically when there is a CRC7 error in the command response depending on the enable bit (SD_CMD[19] CCCE).
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Command CRC error
|
| 16 | CTO | R/W | 0h | Command timeout error.
This bit is set automatically when no response is received within 64 clock cycles from the end bit of the command.
For commands that reply within 5 clock cycles - the timeout is still detected at 64 clock cycles.
0h (W) = Status bit unchanged
0h (R) = No error
1h (W) = Status is cleared.
1h (R) = Time Out
|
| 15 | ERRI | R | 0h | Error interrupt.
If any of the bits in the Error Interrupt Status register (SD_STAT [31:16]) are set, then this bit is set to 1.
Therefore the host driver can efficiently test for an error by checking this bit first.
Writes to this bit are ignored.
0h (R) = No interrupt
1h (R) = Error interrupt event(s) occurred
|
| 14-10 | RESERVED | R | 0h | Reserved |
| 9 | OBI | R/W | 0h | Out-of-band interrupt (This interrupt is only useful for MMC card).
Note: Out-of-band interrupt (OBI) is not supported.
|
| 8 | CIRQ | R | 0h | Card interrupt.
This bit is only used for SD and SDIO cards.
In 1-bit mode, interrupt source is asynchronous (can be a source of asynchronous wake-up).
In 4-bit mode, interrupt source is sampled during the interrupt cycle.
In CE-ATA mode, interrupt source is detected when the card drives mmc_cmd line to zero during one cycle after data transmission end.
All modes above are fully exclusive.
The controller interrupt must be clear by setting SD_IE[8] CIRQ_ENABLE to 0, then the host driver must start the interrupt service with card (clearing card interrupt status) to remove card interrupt source.
Otherwise the Controller interrupt will be reasserted as soon as SD_IE[8] CIRQ_ENABLE is set to 1.
Writes to this bit are ignored.
0h (R) = No card interrupt
1h (R) = Generate card interrupt
|
| 7 | CREM | R/W | 0h | Card Removal.
This bit is set automatically when SD_PSTATE[CINS] changes from 1 to 0.
A clear of this bit doesn't affect Card inserted present state (SD_PSTATE[CINS]).
0h (W) = Status bit unchanged
0h (R) = Card State stable or debouncing
1h (W) = Status is cleared
1h (R) = Card Removed
|
| 6 | CINS | R/W | 0h | Card Insertion.
This bit is set automatically when SD_PSTATE[CINS] changes from 0 to 1.
A clear of this bit doesn't affect Card inserted present state (SD_PSTATE[CINS]).
0h (W) = Status bit unchanged
0h (R) = Card State stable or debouncing
1h (W) = Status is cleared.
1h (R) = Card inserted
|
| 5 | BRR | R/W | 0h | Buffer read ready.
This bit is set automatically during a read operation to the card (see class 2 - block oriented read commands) when one block specified by the SD_BLK [10:0] BLEN bit field is completely written in the buffer.
It indicates that the memory card has filled out the buffer and that the local host needs to empty the buffer by reading it.
Note: If the DMA receive-mode is enabled, this bit is never set instead a DMA receive request to the main DMA controller of the system is generated.
0h (W) = Status bit unchanged
0h (R) = Not ready to read buffer
1h (W) = Status is cleared.
1h (R) = Ready to read buffer
|
| 4 | BWR | R/W | 0h | Buffer write ready.
This bit is set automatically during a write operation to the card (see class 4 - block oriented write command) when the host can write a complete block as specified by SD_BLK [10:0] BLEN.
It indicates that the memory card has emptied one block from the buffer and that the local host is able to write one block of data into the buffer.
Note: If the DMA transmit mode is enabled, this bit is never set instead, a DMA transmit request to the main DMA controller of the system is generated.
0h (W) = Status bit unchanged
0h (R) = Not ready to write buffer
1h (W) = Status is cleared.
1h (R) = Ready to write buffer
|
| 3 | DMA | R/W | 0h | DMA Interrupt
This status is set when an interrupt is required after the data transfer is complete.
|
| 2 | BGE | R/W | 0h | Block gap event.
When a stop at block gap is requested (SD_HCTL[16] SBGR bit), this bit is automatically set when transaction is stopped at the block gap during a read or write operation.
0h (W) = Status bit unchanged
0h (R) = No block gap event
1h (W) = Status is cleared
1h (R) = Transaction stopped at block gap
|
| 1 | TC | R/W | 0h | Transfer completed.
This bit is always set when a read/write transfer is completed or between two blocks when the transfer is stopped due to a stop at block gap request (SD_HCTL[16] SBGR bit).
0h (W) = Status bit unchanged
0h (R) = No transfer complete
1h (W) = Status is cleared
1h (R) = Data transfer complete
|
| 0 | CC | R/W | 0h | Command complete.
This bit is set when a 1-to-0 transition occurs in the register command inhibit (SD_PSTATE[0] CMDI bit)
0h (W) = Status bit unchanged
0h (R) = No command complete
1h (W) = Status is cleared
1h (R) = Command complete
|
IE is shown in Table 20-33.
Return to the Summary Table.
This register allows to enable/disable the module to set status bits on an event-by-event basis. SD_IE[31:16] = Error Interrupt Status Enable SD_IE[15:0] = Normal Interrupt Status Enable
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-30 | RESERVED | R | 0h | Reserved |
| 29 | BADAEN | R/W | 0h | Bad access to data space interrupt enable
|
| 28 | CERREN | R/W | 0h | Card error interrupt enable
|
| 27 | RESERVED | R | 0h | Reserved |
| 26 | NOUSE1 | R/W | 0h | No use
Note: Writing values other than 0 might produce undesired results.
Always set this bits to 0.
|
| 25 | ADMAEEN | R/W | 0h | ADMA Error Status Enable
Note: This functionality is not supported, since MADMA_EN is set to 0 in the design.
|
| 24 | ACEEN | R/W | 0h | Auto CMD12 error interrupt enable
|
| 23 | RESERVED | R | 0h | Reserved |
| 22 | DEBEN | R/W | 0h | Data end bit error interrupt enable
|
| 21 | DCRCEN | R/W | 0h | Data CRC error interrupt enable
|
| 20 | DTOEN | R/W | 0h | Data timeout error interrupt enable
|
| 19 | CIEEN | R/W | 0h | Command index error interrupt enable
|
| 18 | CEBEN | R/W | 0h | Command end bit error interrupt enable
|
| 17 | CCRCEN | R/W | 0h | Command CRC error interrupt enable
|
| 16 | CTOEN | R/W | 0h | Command timeout error interrupt enable
|
| 15 | NULL | R | 0h | Fixed to 0.
The host driver shall control error interrupts using the Error Interrupt Signal Enable register.
Writes to this bit are ignored.
|
| 14-11 | RESERVED | R | 0h | Reserved |
| 10 | NOUSE0 | R/W | 0h | No use
Note: Writing values other than 0 might produce undesired results.
Always set this bits to 0.
|
| 9 | OBIEN | R/W | 0h | Out-of-band interrupt enable
A write to this register when SD_CON[14] OBIE is cleared to 0 is ignored.
Note: The OBI functionallity is not supported!
|
| 8 | CIRQEN | R/W | 0h | Card interrupt enable.
A clear of this bit also clears the corresponding status bit.
During 1-bit mode, if the interrupt routine does not remove the source of a card interrupt in the SDIO card, the status bit is reasserted when this bit is set to 1.
|
| 7 | CREMEN | R/W | 0h | Card Removal interrupt Enable
|
| 6 | CINSEN | R/W | 0h | Card Insertion interrupt Enable
|
| 5 | BRREN | R/W | 0h | Buffer read ready interrupt enable
|
| 4 | BWREN | R/W | 0h | Buffer write ready interrupt enable
|
| 3 | DMAEN | R/W | 0h | DMA interrupt enable
|
| 2 | BGEEN | R/W | 0h | Block gap event interrupt enable
|
| 1 | TCEN | R/W | 0h | Transfer completed interrupt enable
|
| 0 | CCEN | R/W | 0h | Command completed interrupt enable
|
ISE is shown in Table 20-34.
Return to the Summary Table.
This register allows to enable/disable the module internal interrupt signaling on an event-by-event basis. SD_ISE[31:16] = Error Interrupt Signal Enable SD_ISE[15:0] = Normal Interrupt Signal Enable
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-30 | RESERVED | R | 0h | Reserved |
| 29 | BADASEN | R/W | 0h | Bad access to data space interrupt enable
|
| 28 | CERRSEN | R/W | 0h | Card error interrupt signal status enable
|
| 27 | RESERVED | R | 0h | Reserved |
| 26 | NOUSE1 | R/W | 0h | No use
Note: Writing values other than 0 might produce undesired results.
Always set this bit to 0.
|
| 25 | ADMAESEN | R/W | 0h | ADMA Error Signal Enable
Note: This functionality is not supported, since MADMA_EN is set to 0 in the design.
|
| 24 | ACESEN | R/W | 0h | Auto CMD12 error signal status enable
|
| 23 | RESERVED | R | 0h | Reserved |
| 22 | DEBSEN | R/W | 0h | Data end bit error signal status enable
|
| 21 | DCRCSEN | R/W | 0h | Data CRC error signal status enable
|
| 20 | DTOSEN | R/W | 0h | Data timeout error signal status enable
|
| 19 | CIESEN | R/W | 0h | Command index error signal status enable
|
| 18 | CEBSEN | R/W | 0h | Command end bit error signal status enable
|
| 17 | CCRCSEN | R/W | 0h | Command CRC error signal status enable
|
| 16 | CTOSEN | R/W | 0h | Command timeout error signal status enable
|
| 15 | NULL | R | 0h | Fixed to 0.
The host driver shall control error interrupts using the Error Interrupt Signal Enable register.
Writes to this bit are ignored.
|
| 14-11 | RESERVED | R | 0h | Reserved |
| 10 | NOUSE0 | R/W | 0h | No use
Note: Writing values other than 0 might produce undesired results.
Always set this bit to 0.
|
| 9 | OBISEN | R/W | 0h | Out-of-band interrupt signal status enable.
A write to this register when SD_CON[14] OBIE is cleared to 0 is ignored.
Note: The OBI functionallity is not supported!
|
| 8 | CIRQSEN | R/W | 0h | Card interrupt signal status enable.
A clear of this bit also clears the corresponding status bit.
During 1-bit mode, if the interrupt routine does not remove the source of a card interrupt in the SDIO card, the status bit is reasserted when this bit is set to 1.
|
| 7 | CREMSEN | R/W | 0h | Card Removal signal status enable
|
| 6 | CINSSEN | R/W | 0h | Card Insertion signal status enable.
|
| 5 | BRRSEN | R/W | 0h | Buffer read ready signal status enable
|
| 4 | BWRSEN | R/W | 0h | Buffer write ready signal status enable
|
| 3 | DMASEN | R/W | 0h | DMA signal status enable
|
| 2 | BGESEN | R/W | 0h | Block gap event signal status enable
|
| 1 | TCSEN | R/W | 0h | Transfer completed signal status enable
|
| 0 | CCSEN | R/W | 0h | Command completed signal status enable
|
AC12 is shown in Table 20-35.
Return to the Summary Table.
SD_AC12 Error register The host driver may determine which of the errors cases related to Auto CMD12 has occurred by checking this SD_AC12 register when an auto CMD12 error interrupt occurs. This register is valid only when auto CMD12 is enabled (SD_CMD.ACEN) and auto CMD12Error (SD_STAT.ACE) is set to 1. These bits are automatically reset when starting a new adtc command with data.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31 | NOUSE1 | R/W | 0h | No use
Note: Writing values other than 0 might produce undesired results.
Always set this bit to 0.
|
| 30 | AIEN | R/W | 0h | Asynchronous Interrupt Enable
This bit can be set to 1 if a card supports asynchronous interrupts and Asynchronous Interrupt Support is set to 1 in the Capabilities register. Asynchronous interrupt is effective when DAT[1] interrupt is used in 4-bit SD mode (and zero is set to Interrupt Pin Select in the Shared Bus Control register). If this bit is set to 1, the Host Driver can stop the SDCLK during asynchronous interrupt period to save power. During this period, the Host Controller continues to deliver the Card Interrupt to the host when it is asserted by the Card.
|
| 29-24 | RESERVED | R | 0h | Reserved |
| 23-22 | NOUSE0 | R/W | 0h | No use
Note: Writing values other than 0 might produce undesired results.
Always set this bit to 0.
|
| 21-20 | DSSEL | R/W | 0h | Driver Strength Select
Host Controller output driver in 1.8V signaling is selected by this bit. In 3.3V signaling, this field is not effective. This field can be set depends on Driver Type A, C and D support bits in the Capabilities register.
|
| 19 | V1P8SEN | R/W | 0h | 1.8V Signaling Enable
This bit controls voltage regulator for I/O cell. 3.3V is supplied to the card regardless of signaling voltage.
Setting this bit from 0 to 1 starts changing signal voltage from 3.3V to 1.8V. 1.8V regulator output shall be stable within 5ms. Host Controller clears this bit if switching to 1.8V signaling fails.
Clearing this bit from 1 to 0 starts changing signal voltage from 1.8V to 3.3V. 3.3V regulator output shall be stable within 5ms.
Host Driver can set this bit to 1 when Host Controller supports 1.8V signaling (One of support bits is set to 1: SDR50, SDR104 or DDR50 in the Capabilities register) and the card or device supports UHS-I (S18A=1. Refer to Bus Signal Voltage Switch Sequence in the Physical Layer Specification Version 3.0x).
Note: Dragon supports only 3.3V.
Always set this bit to 0.
|
| 18-16 | UHSMS | R/W | 0h | UHS Mode Select
This field is used to select one of UHS-I modes or e.MMC HS200 mode and effective when 1.8V Signaling Enable is set to 1.
Note: Dragon does not support 1.8V signaling and UHS modes.
Always set this bitfield to 0.
|
| 15-8 | RESERVED | R | 0h | Reserved |
| 7 | CNI | R | 0h | Command not issue by auto CMD12 error
If this bit is set to 1, a pending command is not executed due to auto CMD12 error ACEB, ACCE, ACTO, or ACNE.
|
| 6-5 | RESERVED | R | 0h | Reserved |
| 4 | ACIE | R | 0h | Auto CMD12 index error
This bit is a set to 1 when response index differs from corresponding command auto CMD12 index previously emitted.
This bit depends on the command index check enable (SD_CMD.CICEN).
|
| 3 | ACEB | R | 0h | Auto CMD12 end bit error.
This bit is set to 1 when detecting a 0 at the end bit position of auto CMD12 command response.
|
| 2 | ACCE | R | 0h | Auto CMD12 CRC error.
This bit is set to 1 when a CRC7 error is detected in the auto CMD12 command response.
|
| 1 | ACTO | R | 0h | Auto CMD12 timeout error.
This bit is set to 1 if no response is received within 64 clock cycles from the end bit of the auto CMD12 command.
|
| 0 | ACNE | R | 0h | Auto CMD12 not executed.
This bit is set to 1 if multiple block data transfer command has started and if an error occurs in command before auto CMD12 starts.
|
CAPA is shown in Table 20-36.
Return to the Summary Table.
Capability register This register lists the capabilities of the MMC/SD/SDIO host controller.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-30 | RESERVED | R | 0h | Reserved |
| 29 | AIS | R | 1h | Asynchronous Interrupt Support
Refer to SDIO Specification Version 3.00 about asynchronous interrupt.
|
| 28 | BUS64BIT | R | 0h | 64 Bit System Bus Support
Setting 1 to this bit indicates that the Host Controller supports 64-bit address descriptor mode and is connected to 64-bit address system bus.
0h (R) = 32-bit System bus address
1h (R) = 64-bit System bus address
|
| 27 | RESERVED | R | 0h | Reserved |
| 26 | VS18 | R/W | 0h | Voltage support 1.8 V
Initialization of this register (via a write access to this register) depends on the system capabilities.
The host driver shall not modify this register after the initialization.
This register is only reinitialized by a hard reset (via mmc_RESET signal).
0h (W) = 1.8 V not supported
0h (R) = 1.8 V not supported
1h (W) = 1.8 V supported
1h (R) = 1.8 V supported
|
| 25 | VS30 | R/W | 0h | Voltage support 3.0V
Initialization of this register (via a write access to this register) depends on the system capabilities.
The host driver shall not modify this register after the initialization.
This register is only reinitialized by a hard reset (via mmc_RESET signal).
0h (W) = 3.0 V not supported
0h (R) = 3.0 V not supported
1h (W) = 3.0 V supported
1h (R) = 3.0 V supported
|
| 24 | VS33 | R/W | 0h | Voltage support 3.3V
Initialization of this register (via a write access to this register) depends on the system capabilities.
The host driver shall not modify this register after the initialization.
This register is only reinitialized by a hard reset (via mmc_RESET signal).
0h (W) = 3.3 V not supported
0h (R) = 3.3 V not supported
1h (W) = 3.3 V supported
1h (R) = 3.3 V supported
|
| 23 | SRS | R | 1h | Suspend/resume support (SDIO cards only).
This bit indicates whether the host controller supports suspend/resume functionality.
|
| 22 | DS | R | 1h | DMA support
This bit indicates that the Host controller is able to use DMA to transfer data between system memory and the Host controller directly.
|
| 21 | HSS | R | 1h | High-speed support
This bit indicates that the host controller supports high speed operations and can supply an up-to-52 MHz clock to the card.
|
| 20 | RESERVED | R | 0h | Reserved |
| 19 | AD2S | R | 0h | This bit indicates whether the Host Controller is capable of using ADMA2.
|
| 18 | RESERVED | R | 0h | Reserved |
| 17-16 | MBL | R | 1h | Maximum block length
This value indicates the maximum block size that the host driver can read and write to the buffer in the host controller.
The host controller supports 512 bytes and 1024 bytes block transfers.
0h = 512 bytes
1h = 1024 bytes
2h = 2048 bytes
|
| 15-14 | RESERVED | R | 0h | Reserved |
| 13-8 | BCF | R | 0h | Base clock frequency for clock provided to the card.
ARRAY(0x1bfe1b0)
|
| 7 | TCU | R | 1h | Timeout clock unit
This bit shows the unit of base clock frequency used to detect Data Timeout Error.
|
| 6 | RESERVED | R | 0h | Reserved |
| 5-0 | TCF | R | 0h | Timeout clock frequency
The timeout clock frequency is used to detect Data Timeout Error (DTO interrupt).
The timeout clock frequency depends on the frequency of the clock provided to the card. The value of the timeout clock frequency is not available in this register.
|
CURCAPA is shown in Table 20-37.
Return to the Summary Table.
Current capability register This register indicates the maximum current capability for each voltage.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | RESERVED | R | 0h | Reserved |
| 23-16 | CUR18 | R/W | 0h | Maximum current for 1.8V
The maximum current capability for this voltage is not available. Feature not implemented.
|
| 15-8 | CUR30 | R/W | 0h | Maximum current for 3.0V
The maximum current capability for this voltage is not available. Feature not implemented.
|
| 7-0 | CUR33 | R/W | 0h | Maximum current for 3.3V
The maximum current capability for this voltage is not available. Feature not implemented.
|
FE is shown in Table 20-38.
Return to the Summary Table.
The Force Event register is not a physically implemented register. Rather, it is an address at which the Error Interrupt Status register can be written. The effect of a write to this address will be reflected in the Error Interrupt Status Register, if corresponding bit of the Error Interrupt Status Enable Register is set.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-30 | RESERVED | R | 0h | Reserved |
| 29 | BADA | W | 0h | Force Event Bad access to data space
|
| 28 | CERR | W | 0h | Force Event Card error
|
| 27-25 | RESERVED | R | 0h | Reserved |
| 24 | ACE | W | 0h | Force Event Auto CMD12 error
|
| 23 | RESERVED | R | 0h | Reserved |
| 22 | DEB | W | 0h | Force Event Data End Bit error
|
| 21 | DCRC | W | 0h | Force Event Data CRC error
|
| 20 | DTO | W | 0h | Force Event Data timeout error
|
| 19 | CIE | W | 0h | Force Event Command index error
|
| 18 | CEB | W | 0h | Force Event Command end bit error
|
| 17 | CCRC | W | 0h | Force Event Comemand CRC error
|
| 16 | CTO | W | 0h | Force Event Command Timeout error
|
| 15-8 | RESERVED | R | 0h | Reserved |
| 7 | CNI | W | 0h | Force Event Command not issue by Auto CMD12 error
|
| 6-5 | RESERVED | R | 0h | Reserved |
| 4 | ACIE | W | 0h | Force Event Auto CMD12 index error
|
| 3 | ACEB | W | 0h | Force Event Auto CMD12 end bit error
|
| 2 | ACCE | W | 0h | Force Event Auto CMD12 CRC error
|
| 1 | ACTO | W | 0h | Force Event Auto CMD12 timeout error
|
| 0 | ACNE | W | 0h | Force Event Auto CMD12 not executed.
|
REV is shown in Table 20-39.
Return to the Summary Table.
Revision register This register contains the hard coded RTL vendor revision number, the version number of SD specification compliancy.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | VREV | R | 33h | Vendor Version Number
Bits 7 to 4 are the major revision, bits 3 to 0 are the minor revision.
Examples: 0x10 for 1.0 and 0x21 for 2.1.
Reset value is 0x31.
|
| 23-16 | SREV | R | 2h | Specification Version Number
This status indicates the Standard SD Host Controller Specification Version.
The upper and lower 4 bits indicate the version.
0h: SD Host Specification Version 1.00.
1h: SD Host Specification Version 2.00.
2h: SD Host Specification Version 3.00.
3h: Reserved
|
| 15-1 | RESERVED | R | 0h | Reserved |
| 0 | SIS | R | 0h | Slot Interrupt Status
This status bit indicates the inverted state of interrupt signal for the module.
By a power on reset or by setting a software reset for all, the interrupt signal shall be deasserted and this status shall read 0.
|
TPSEL is shown in Table 20-40.
Return to the Summary Table.
Test-Port select.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | VAL | R/W | 0h | Test port 0 or 1
|
DMAMODE is shown in Table 20-41.
Return to the Summary Table.
DMA mode select: This register define the behavior of DMA request signal that allow tranmission of data.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | VAL | R/W | 1h | 0h = In this case, DMA required to read/write data from SD_DATA register,
the value of DMA_INDICATION_SELECT register is d'ont care
and the trigger to transmit data from the internal FIFO defined by SD_BLK.BLEN register as a threshold.
1h = DMA required to read/write data from BUFIF register
the value of DMA_INDICATION_SELECT define the trigger of the internal FIFO.
|
DMAIND is shown in Table 20-42.
Return to the Summary Table.
DMA indication select: This register define the behavior of transmitting data from/to the card using DMA If DMA_MODE_SELECT =1, then the value of of this register is d'ont care, else it define the trigger of the internal FIFO
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | VAL | R/W | 1h | 0h = IP transmit the data to/from the card after each DMA 'BLOCK' transmitted.
In this case SDMMC.SD_BLK.BLEN shoud be equal to HOST_DMA.JOB_CTRL_CH7.MEM_JOB_CTRL_CHAN_7_BLOCK_SIZE
1h = IP transmit the data to the card after each DMA 'JOB' transmitted.
In this case SDMMC.SD_BLK.BLEN shoud be equal to HOST_DMA.TRANS_CTRL_CH7.MEM_TRANS_CTRL_CHAN_7_TRANS_NUM_B
|
CLKSEL is shown in Table 20-43.
Return to the Summary Table.
This register define the functional clock frequency, and whether the clock is synchronized to main clock.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | VAL | R/W | 0h | 0h = 40MHz post-swallowing
1h = 80MHz pro-swallowing
|
EVTMODE is shown in Table 20-44.
Return to the Summary Table.
Event mode register. It is used to select whether each line is disabled, in software mode (software clears the RIS) or in hardware mode (hardware clears the RIS)
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-2 | RESERVED | R | 0h | Reserved |
| 1-0 | INT0CFG | R/W | 1h | Event line mode select for event corresponding to [IPSTANDARD.INT_EVENT0]
|
DESC is shown in Table 20-45.
Return to the Summary Table.
This register identifies the peripheral and its exact version.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | MODULEID | R | 2111h | Module identification contains a unique peripheral identification number. The assignments are maintained in a central database for all of the platform modules to ensure uniqueness.
|
| 15-12 | FEATURST | R | 0h | Feature Set for the module *instance*
|
| 11-8 | INSTNUM | R | 0h | Instance Number within the device. This will be a parameter to the RTL for modules that can have multiple instances
|
| 7-4 | MAJREV | R | 0h | Major rev of the IP
|
| 3-0 | MINREV | R | 0h | Minor rev of the IP
|
SDMMCSTAT is shown in Table 20-46.
Return to the Summary Table.
SDMMC Status register
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | STATE | R | Xh | SDMMC state indication
|
BUFIF_y is shown in Table 20-47.
Return to the Summary Table.
SRAM Data Access Registers These registers are the 32-bit entry point of the SRAM buffer for read or write data transfers to and from the SDMMC card. Data[1] register is an alias for the SD_BUFIF register and needs to be used for normal (non safety, non burst) buffer accesses. Data[1..4] registers need to be used for non safety, incremental VBUSP burst accesses. For safety accesses (write with readback and double read), DataS[1..4] registers need to be used. The SRAM buffer size is 32bits x 256 (1024 bytes). Bytes within a word are stored and read in little endian format. This buffer can be used as two 512 byte buffers to transfer data efficiently without reducing the throughput. Sequential and contiguous access is necessary to increment the pointer correctly. Random or skipped access is not allowed. If the local host accesses this register byte-wise or 16bit-wise, the least significant byte (bits [7:0]) must always be written/read first. The update of the buffer address is done on the most significant byte write.
Offset = 1110h + (y * 4h); where y = 0h to 3h
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | Buffer data register
In functional mode (SD_CON.MODE = FUNC):
- a read access to this register is allowed only when the buffer read enable status is set to 1 (SD_PSTATE.BREN), otherwise a bad access (SD_STAT.BADA) is signaled.
- a write access to this register is allowed only when the buffer write enable status is set to 1 (SD_PSTATE.BWEN), otherwise a bad access (SD_STAT.BADA) is signaled and the data is not written.
|
CLKCFG is shown in Table 20-48.
Return to the Summary Table.
Clock Enable Register
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | EN | R/W | 0h | Clock Disable / Enable for: * bus_clk (main clock) - 80MHz ; * card_clk (pll_clk) - 40MHz ; * lf_clk (slow_clk) - 32KHz ; |