SWRU626 December 2025 CC3501E , CC3551E
Table 21-29 lists the memory-mapped registers for the SDIO_CARD_FN1 registers. All register offset addresses not listed in Table 21-29 should be considered as reserved locations and the register contents should not be modified.
| Offset | Acronym | Register Name | Section |
|---|---|---|---|
| 0h | FLUSHCMD | Buffer Flush Control | Section 21.5.1 |
| 4h | RXTHR | Receive Buffer Threshold | Section 21.5.2 |
| Ch | TXIRQTHR | Transmit Interrupt Threshold | Section 21.5.3 |
| 10h | DMABLKTHR | DMA Block Threshold | Section 21.5.4 |
| 14h | IRQSTA | Interrupt Status | Section 21.5.5 |
| 18h | IRQMASK | Interrupt Control Register | Section 21.5.6 |
| 1Ch | CTRL | SDIO Control | Section 21.5.7 |
| 20h | RXPACS | Receive Packet Length | Section 21.5.8 |
| 24h | RXBBUF | Receive Buffer Status | Section 21.5.9 |
| 28h | RXBLFT | Receive Bytes Remaining | Section 21.5.10 |
| 2Ch | RETCTL | Retry Control | Section 21.5.11 |
| 30h | C2HMSG | Controller Message | Section 21.5.12 |
| 34h | H2CMSG | Host Message Status | Section 21.5.13 |
| 38h | CLKEN | SDIO Clock Inactive | Section 21.5.14 |
| 40h | IRQCLR | Interrupt Clear | Section 21.5.15 |
| 44h | RSTREQ | SDIO Reset Request | Section 21.5.16 |
| 1000h | DATAFIFO | Data Buffer | Section 21.5.17 |
Complex bit access types are encoded to fit into small table cells. Table 21-30 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 | |
FLUSHCMD is shown in Table 21-31.
Return to the Summary Table.
A write only register. Flush command of the RX / TX buffers
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-2 | RESERVED | R | 0h | Reserved |
| 1 | TXBUF | W | 0h | TX BUFFER FLUSH: Writing to this address triggers the flush command of the TX buffer (data value is irrelevant). |
| 0 | RXBUF | W | 0h | RX BUFFER FLUSH: Writing to this address triggers the flush command of the RX buffer (data value is irrelevant). |
RXTHR is shown in Table 21-32.
Return to the Summary Table.
A R/W register that stores one of the RX buffer thresholds.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | Reserved |
| 7-2 | VAL | R/W | 1h | Buffer almost full threshold - When passing threshold an interrupt is generated (used by the software to indicate packets in buffer) The threshold is configured to allow receiving a completer packet header including packet length. Typical packet header could be 1 - 128 Bytes however the threshold must be 32bits aligned since SDIO FIFO supports 32bits aligned read only. |
| 1-0 | RESERVED | R | 0h | Reserved |
TXIRQTHR is shown in Table 21-33.
Return to the Summary Table.
TX IRQ TRIG THR: A R/W register that stores the Threshold in bytes to raise host irq.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | Reserved |
| 7-0 | VAL | R/W | 80h | 8-bit value describing the number of bytes needed to trigger host irq 1. If HCI packet length > SDIO block (128-bytes) trigger is set to 128 Byte (entire block) 2. If HCI packet length < SDIO block, FW sets packet length in bytes as the trigger value |
DMABLKTHR is shown in Table 21-34.
Return to the Summary Table.
A R/W register setting the BLOCK SIZE for the RX and TX DMA flow control
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-19 | RESERVED | R | 0h | Reserved |
| 18-16 | TXDMABLK | R/W | 2h | TX DMA BLOCK SIZE SEL: HOST reads from FIFO Determine when to assert flow control to DMA. The flow should be asserted when FIFO has enough free buffer >= Threshold. The threshold is determined according to the DMA block size 0 - 4 Bytes 1 - 8 Bytes 2 - 16 Bytes (Default) 3 - 32 Bytes 4 - 64 Bytes 5 - 128 Bytes 6,7 - Reserved |
| 15-3 | RESERVED | R | 0h | Reserved |
| 2-0 | RXDMABLK | R/W | 2h | RX DMA BLOCK SIZE SEL: HOST Writes to FIFO Determine when to assert flow control to DMA. The flow should be asserted when num of bytes in FIFO > Threshold. The threshold is determined according to the DMA block size 0 - 4 Bytes 1 - 8 Bytes 2 - 16 Bytes (Default) 3 - 32 Bytes 4 - 64 Bytes 5 - 128 Bytes 6,7 - Reserved HOST Writes to FIFO Determine when to assert flow control to DMA. The flow should be asserted when num of bytes in FIFO > Threshold. The threshold is determined according to the DMA block size 0 - 4 Bytes 1 - 8 Bytes 2 - 16 Bytes (Default) 3 - 32 Bytes 4 - 64 Bytes 5 - 128 Bytes 6,7 - Reserved |
IRQSTA is shown in Table 21-35.
Return to the Summary Table.
A RO register. Holds the status of the different interrupts of the SDIO. This register is cleared by writing to IRQ_CLEAR register Each interrupt is set when the event is active. In the case of ACKINT the software has to read the ACKNAK bit value to see if an ACK event was received or a read retry is starting.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-14 | RESERVED | R | 0h | Reserved |
| 13 | HOST2CORE | R | 0h | Host to Card 15 bit message ready indication |
| 12 | CRCERR | R | 0h | '1' = CRC Error was detected for rx flow |
| 11 | PHYINT | R | 0h | SDIO PHY interrupt |
| 10 | CARDRST | R | 0h | Card Reset interrupt |
| 9 | PHYIFERR | R | 0h | Error in the OCP interface of the SDIO PHY |
| 8 | HCIWRRET | R | 0h | HCI packet write retry |
| 7 | HCINACK | R | 0h | HCI packet NACK interrupt |
| 6 | HCIACK | R | 0h | HCI packet ACK interrupt |
| 5 | TXBUFUNR | R | 0h | TX Buffer under-run interrupt |
| 4 | TXBUFOVR | R | 0h | TX Buffer overrun interrupt |
| 3 | RXBUFUNR | R | 0h | RX Buffer under-run interrupt |
| 2 | RXBUFOVR | R | 0h | RX Buffer overrun interrupt |
| 1 | FN1EN | R | 0h | Function #1 enable interrupt |
| 0 | RXALMSFULL | R | 0h | RX Buffer almost full interrupt |
IRQMASK is shown in Table 21-36.
Return to the Summary Table.
A R/W register. Holds the mask bits of the different interrupts of the SDIO.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-14 | RESERVED | R | 0h | Reserved |
| 13 | HOST2CORE | R/W | 1h | Host to Card 15 bit message ready indication |
| 12 | CRCERR | R/W | 1h | '1' = CRC Error was detected for rx flow |
| 11 | PHYMASK | R/W | 1h | SDIO PHY interrupt |
| 10 | CARDRST | R/W | 1h | Card Reset interrupt |
| 9 | PHYIFERR | R/W | 1h | Error in the OCP interface of the SDIO PHY |
| 8 | HCIWRRET | R/W | 1h | HCI packet write retry |
| 7 | HCINACK | R/W | 1h | HCI packet NACK interrupt |
| 6 | HCIACK | R/W | 1h | HCI packet ACK interrupt |
| 5 | TXBUFUNR | R/W | 1h | TX Buffer under-run interrupt |
| 4 | TXBUFOVR | R/W | 1h | TX Buffer overrun interrupt |
| 3 | RXBUFUNR | R/W | 1h | RX Buffer under-run interrupt |
| 2 | RXBUFOVR | R/W | 1h | RX Buffer overrun interrupt |
| 1 | FN1EN | R/W | 1h | Function #1 enable interrupt |
| 0 | RXALMSFULL | R/W | 1h | RX Buffer almost full interrupt |
CTRL is shown in Table 21-37.
Return to the Summary Table.
A R/W register to control SDIO operation.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-4 | RESERVED | R | 0h | Reserved |
| 3 | HIRQSYNC | R/W | 0h | HOST IRQ SYNCHRONIZATION: This bit controls the synchronization of the host interrupt (interrupt from BT to host through the PHY). '1' - interrupt is synchronized to sdio_clk. '0' - interrupt is not synchronized to sdio_clk (and thus synchronized to ocp_clk) |
| 2 | TXFLEN | R/W | 1h | TX BUFFER FLUSH ENABLE: Enables the module to flush the TX buffer after receiving packet-read-retry indication (ACK or NACK). When this bit is '0', FW must flush the buffer manually (by writing to FLUSH_CMD register) upon receiving ACK/NACK interrupt. It is needed for the correct operation of the TX FIFO |
| 1 | BACE | R/W | 1h | BUSY AFTER CRC ERROR: Enables the module to activate the busy signal after CRC error on data only if sdio_enable was set |
| 0 | SDIOEN | R/W | 1h | SDIO enable - Enable SDIO after CRC error. Cleared by HW after CRC error; Set by FW to de-assert the busy signal |
RXPACS is shown in Table 21-38.
Return to the Summary Table.
RX SDIO PACKET SIZE: A read only register. Holds the length of the current received SDIO packet. Updated at the beginning of each SDIO packet.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-10 | RESERVED | R | 0h | Reserved |
| 9-0 | VAL | R | 0h | Length of the current received SDIO packet. Updated at the beginning of each SDIO packet |
RXBBUF is shown in Table 21-39.
Return to the Summary Table.
RX BYTES IN BUFF: A read only status register. Holds the current number of bytes in SDIO RX buffer.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-11 | RESERVED | R | 0h | Reserved |
| 10-0 | VAL | R | 0h | Current number of bytes in SDIO RX buffer |
RXBLFT is shown in Table 21-40.
Return to the Summary Table.
RX BYTES LEFT: A read only status register. A down-count counter. Holds the number of bytes in current SDIO packet that were not transmitted to RX buffer yet. Please notice: Before reading this register, the FW MUST read RX_BYTES_IN_BUFFER register.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | RESERVED | R | 0h | Reserved |
| 15 | BLIL | R | 0h | BYTES LEFT IS LOCKED: When '0' - the value that is read from rx_bytes_left is the current number of bytes left to transfer to the end of the block. When '1' - the value that is read from rx_bytes_left is the number of bytes left to transfer to the end of the block that was locked on the last read from RX_BYTES_IN_BUF. |
| 14-11 | RESERVED | R | 0h | Reserved |
| 10-0 | VAL | R | 0h | A counter that is loaded with SDIO packet length and decremented the same as the incrementing of bytes-in-buffer status register |
RETCTL is shown in Table 21-41.
Return to the Summary Table.
A read/write register. The value states if the BT-SDIO is working with Retry Control mechanism as specified in SDIO spec.
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | VAL | R/W | 1h | When FW writes '1' to this bit, it states that the BT-SDIO is using retry control mechanism. When FW reads this bit, it actually reads the value of the Function 1's RETRY_CONTROL register (the value that the host configured). Default value is '1' because BT FW MUST have retry control mechanism working |
C2HMSG is shown in Table 21-42.
Return to the Summary Table.
IRQ2Host Message 16b
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | R | 0h | Reserved |
| 16 | C2HIRQ | W | 0h | CARD TO HOST IRQ: To Host: 16bits MMR which can be written/read by M33 and read/clear (bit map) by host |
| 15-0 | C2HSTS | R/W | 0h | CARD TO HOST STS: To Host: 16bits MMR which can be written/read by M33 and read/clear (bit map) by host Cleared by HOST writing to CLINTERD (Interrupt Clear 0x13) |
H2CMSG is shown in Table 21-43.
Return to the Summary Table.
IRQ from Host to card Message 16b
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-15 | RESERVED | R | 0h | Reserved |
| 14-0 | H2CSTS | R | 0h | HOST TO CARD STS: From Host: 15bits MMR which can be written by host and read/clear (bit map) by M33. (bit 16 is the host_to_card_irq that is generated by the HOST and goes to IRQSTA.HOST_TO_CARD_INT) |
CLKEN is shown in Table 21-44.
Return to the Summary Table.
Clock gating control
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | VAL | R/W | 0h | 1'b0 - disable clk 1'b1 - enable clk |
IRQCLR is shown in Table 21-45.
Return to the Summary Table.
A write-only register. When written, it clears all SDIO pending interrupts
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-14 | RESERVED | R | 0h | Reserved |
| 13 | HOST2CORE | W | 0h | Host to Card 15 bit message ready indication |
| 12 | CRCERR | W | 0h | CRC Error clear |
| 11 | PHYCLEAR | W | 0h | SDIO PHY interrupt clear |
| 10 | CARDRST | W | 0h | Card Reset interrupt clear |
| 9 | PHYIFERR | W | 0h | Error in the OCP interface of the SDIO PHY clear |
| 8 | HCIWRRET | W | 0h | HCI packet write retry clear |
| 7 | HCINACK | W | 0h | HCI packet NACK interrupt clear |
| 6 | HCIACK | W | 0h | HCI packet ACK interrupt clear |
| 5 | TXBUFUNR | W | 0h | TX Buffer under-run interrupt clear |
| 4 | TXBUFOVR | W | 0h | TX Buffer overrun interrupt clear |
| 3 | RXBUFUNR | W | 0h | RX Buffer under-run interrupt clear |
| 2 | RXBUFOVR | W | 0h | RX Buffer overrun interrupt clear |
| 1 | FN1EN | W | 0h | Function #1 enable interrupt |
| 0 | RXALMSFULL | W | 0h | RX Buffer almost full interrupt clear |
RSTREQ is shown in Table 21-46.
Return to the Summary Table.
reset sdio IP due to a SDIO Card Reset command: 0 - do not reset / de-assert initiated sdio reset 1 - initiate reset sdio reset (both PHY and SDIO System)
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-1 | RESERVED | R | 0h | Reserved |
| 0 | EN | R/W | 0h | Function #1 enable interrupt |
DATAFIFO is shown in Table 21-47.
Return to the Summary Table.
Common shadow register to access SDIO-Card RX-Fifo or TX-Fifo
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | RDRXWRTX | R/W | 0h | Common access for either: 1. Reading 'sdio_rxfifo' 2. Writing 'sdio_txfifo' Can be used either as local ocp rd/wr commands, or transactions through DMA machine. |