VSF Documented
|
Go to the source code of this file.
Data Structures | |
union | vsf_sdio_csd_t |
struct | vsf_sdio_cid_t |
struct | vsf_sdio_req_t |
struct | vsf_sdio_status_t |
struct | vsf_sdio_capability_t |
struct | vsf_sdio_isr_t |
sdio interrupt configuration More... | |
struct | vsf_sdio_cfg_t |
sdio configuration More... | |
struct | vsf_sdio_op_t |
struct | vsf_sdio_t |
Macros | |
#define | VSF_SDIO_CFG_MULTI_CLASS ENABLED |
Enable multi-class support by default for maximum availability. | |
#define | VSF_SDIO_CFG_PREFIX vsf |
Define SDIO hardware mask if count is defined. | |
#define | VSF_SDIO_CFG_FUNCTION_RENAME ENABLED |
Disable VSF_SDIO_CFG_FUNCTION_RENAME to use the original function names (e.g., vsf_sdio_init()). | |
#define | VSF_SDIO_CFG_REIMPLEMENT_TYPE_MODE DISABLED |
Enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_MODE in specific hardware drivers to redefine enum vsf_sdio_mode_t. | |
#define | VSF_SDIO_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_IRQ_MASK to redefine enum vsf_sdio_irq_mask_t. | |
#define | VSF_SDIO_CFG_REIMPLEMENT_TYPE_STATUS DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_STATUS to redefine struct vsf_sdio_status_t. | |
#define | VSF_SDIO_CFG_REIMPLEMENT_TYPE_CFG DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_CFG to redefine struct vsf_sdio_cfg_t. For compatibility, members should not be deleted when redefining. | |
#define | VSF_SDIO_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_CAPABILITY to redefine struct vsf_sdio_capability_t. For compatibility, members should not be deleted when redefining. | |
#define | VSF_SDIO_CFG_INHERIT_HAL_CAPABILITY ENABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_INHERIT_HAL_CAPABILITY to inherit the structure vsf_peripheral_capability_t. | |
#define | SD_SEND_RELATIVE_ADDR 3 /* bcr R6 */ |
#define | SD_SEND_RELATIVE_ADDR_OP (SDIO_RESP_R6) |
#define | SD_SEND_IF_COND 8 /* bcr [11:0] See below R7 */ |
#define | SD_SEND_IF_COND_OP (SDIO_RESP_R7) |
#define | SD_SWITCH_VOLTAGE 11 /* ac R1 */ |
#define | SD_SWITCH_VOLTAGE_OP (SDIO_RESP_R1 | SDIO_CMDOP_CLKHOLD) |
#define | SD_SWITCH 6 /* adtc [31:0] See below R1 */ |
#define | SD_SWITCH_OP (SDIO_RESP_R1) |
#define | SD_ERASE_WR_BLK_START 32 /* ac [31:0] data addr R1 */ |
#define | SD_ERASE_WR_BLK_START_OP (SDIO_RESP_R1) |
#define | SD_ERASE_WR_BLK_END 33 /* ac [31:0] data addr R1 */ |
#define | SD_ERASE_WR_BLK_END_OP (SDIO_RESP_R1) |
#define | SD_APP_SET_BUS_WIDTH 6 /* ac [1:0] bus width R1 */ |
#define | SD_APP_SET_BUS_WIDTH_OP (SDIO_RESP_R1) |
#define | SD_BUS_WIDTH_1 0 |
#define | SD_BUS_WIDTH_4 2 |
#define | SD_BUS_WIDTH_8 3 |
#define | SD_APP_SD_STATUS 13 /* adtc R1 */ |
#define | SD_APP_SD_STATUS_OP (SDIO_RESP_R1) |
#define | SD_APP_SEND_NUM_WR_BLKS 22 /* adtc R1 */ |
#define | SD_APP_SEND_NUM_WR_BLKS_OP (SDIO_RESP_R1) |
#define | SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */ |
#define | SD_APP_OP_COND_OP (SDIO_RESP_R3) |
#define | SD_APP_SEND_SCR 51 /* adtc R1 */ |
#define | SD_APP_SEND_SCR_OP (SDIO_RESP_R1) |
#define | SD_READ_EXTR_SINGLE 48 /* adtc [31:0] R1 */ |
#define | SD_READ_EXTR_SINGLE_OP (SDIO_RESP_R1) |
#define | SD_WRITE_EXTR_SINGLE 49 /* adtc [31:0] R1 */ |
#define | SD_WRITE_EXTR_SINGLE_OP (SDIO_RESP_R1) |
#define | SD_OCR_VDD_165_195 0x00000080 /* VDD voltage 1.65 - 1.95 */ |
#define | SD_OCR_VDD_20_21 0x00000100 /* VDD voltage 2.0 ~ 2.1 */ |
#define | SD_OCR_VDD_21_22 0x00000200 /* VDD voltage 2.1 ~ 2.2 */ |
#define | SD_OCR_VDD_22_23 0x00000400 /* VDD voltage 2.2 ~ 2.3 */ |
#define | SD_OCR_VDD_23_24 0x00000800 /* VDD voltage 2.3 ~ 2.4 */ |
#define | SD_OCR_VDD_24_25 0x00001000 /* VDD voltage 2.4 ~ 2.5 */ |
#define | SD_OCR_VDD_25_26 0x00002000 /* VDD voltage 2.5 ~ 2.6 */ |
#define | SD_OCR_VDD_26_27 0x00004000 /* VDD voltage 2.6 ~ 2.7 */ |
#define | SD_OCR_VDD_27_28 0x00008000 /* VDD voltage 2.7 ~ 2.8 */ |
#define | SD_OCR_VDD_28_29 0x00010000 /* VDD voltage 2.8 ~ 2.9 */ |
#define | SD_OCR_VDD_29_30 0x00020000 /* VDD voltage 2.9 ~ 3.0 */ |
#define | SD_OCR_VDD_30_31 0x00040000 /* VDD voltage 3.0 ~ 3.1 */ |
#define | SD_OCR_VDD_31_32 0x00080000 /* VDD voltage 3.1 ~ 3.2 */ |
#define | SD_OCR_VDD_32_33 0x00100000 /* VDD voltage 3.2 ~ 3.3 */ |
#define | SD_OCR_VDD_33_34 0x00200000 /* VDD voltage 3.3 ~ 3.4 */ |
#define | SD_OCR_VDD_34_35 0x00400000 /* VDD voltage 3.4 ~ 3.5 */ |
#define | SD_OCR_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */ |
#define | SD_OCR_VDD_HIGH 0x00FF8000 /* VDD voltage 2.7 ~ 3.6 */ |
#define | SD_OCR_VDD_LOW 0x00007F80 /* VDD voltage 1.65 ~ 2.7 */ |
#define | SD_OCR_VDD (SD_OCR_VDD_HIGH | SD_OCR_VDD_LOW) |
#define | SD_OCR_S18R (1 << 24) /* 1.8V switching request */ |
#define | SD_ROCR_S18A SD_OCR_S18R /* 1.8V switching accepted by card */ |
#define | SD_OCR_XPC (1 << 28) /* SDXC power control */ |
#define | SD_OCR_CCS (1 << 30) /* Card Capacity Status */ |
#define | MMC_GO_IDLE_STATE 0 /* bc */ |
#define | MMC_GO_IDLE_STATE_OP (SDIO_RESP_NONE) |
#define | MMC_SEND_OP_COND 1 /* bcr [31:0] OCR R3 */ |
#define | MMC_SEND_OP_COND_OP (SDIO_RESP_R3) |
#define | MMC_ALL_SEND_CID 2 /* bcr R2 */ |
#define | MMC_ALL_SEND_CID_OP (SDIO_RESP_R2) |
#define | MMC_SET_RELATIVE_ADDR 3 /* ac [31:16] RCA R1 */ |
#define | MMC_SET_RELATIVE_ADDR_OP (SDIO_RESP_R1) |
#define | MMC_SET_DSR 4 /* bc [31:16] RCA */ |
#define | MMC_SET_DSR_OP (SDIO_RESP_NONE) |
#define | MMC_SLEEP_AWAKE 5 /* ac [31:16] RCA 15:flg R1b */ |
#define | MMC_SLEEP_AWAKE_OP (SDIO_RESP_R1B) |
#define | MMC_SWITCH 6 /* ac [31:0] See below R1b */ |
#define | MMC_SWITCH_OP (SDIO_RESP_R1B) |
#define | MMC_SELECT_CARD 7 /* ac [31:16] RCA R1 */ |
#define | MMC_SELECT_CARD_OP (SDIO_RESP_R1) |
#define | MMC_SEND_EXT_CSD 8 /* adtc R1 */ |
#define | MMC_SEND_EXT_CSD_OP (SDIO_RESP_R1) |
#define | MMC_SEND_CSD 9 /* ac [31:16] RCA R2 */ |
#define | MMC_SEND_CSD_OP (SDIO_RESP_R2) |
#define | MMC_SEND_CID 10 /* ac [31:16] RCA R2 */ |
#define | MMC_SEND_CID_OP (SDIO_RESP_R2) |
#define | MMC_READ_DAT_UNTIL_STOP 11 /* adtc [31:0] dadr R1 */ |
#define | MMC_READ_DAT_UNTIL_STOP_OP (SDIO_RESP_R1) |
#define | MMC_STOP_TRANSMISSION 12 /* ac R1b */ |
#define | MMC_STOP_TRANSMISSION_OP (SDIO_RESP_R1B | SDIO_CMDOP_TRANS_STOP) |
#define | MMC_SEND_STATUS 13 /* ac [31:16] RCA R1 */ |
#define | MMC_SEND_STATUS_OP (SDIO_RESP_R1) |
#define | MMC_BUS_TEST_R 14 /* adtc R1 */ |
#define | MMC_BUS_TEST_R_OP (SDIO_RESP_R1) |
#define | MMC_GO_INACTIVE_STATE 15 /* ac [31:16] RCA */ |
#define | MMC_BUS_TEST_W 19 /* adtc R1 */ |
#define | MMC_BUS_TEST_W_OP (SDIO_RESP_R1) |
#define | MMC_SPI_READ_OCR 58 /* spi spi_R3 */ |
#define | MMC_SPI_READ_OCR_OP (SDIO_RESP_SPI_R3) |
#define | MMC_SPI_CRC_ON_OFF 59 /* spi [0:0] flag spi_R1 */ |
#define | MMC_SPI_CRC_ON_OFF_OP (SDIO_RESP_SPI_R1) |
#define | MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ |
#define | MMC_SET_BLOCKLEN_OP (SDIO_RESP_R1) |
#define | MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ |
#define | MMC_READ_SINGLE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_SINGLE_BLOCK | SDIO_CMDOP_READ) |
#define | MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ |
#define | MMC_READ_MULTIPLE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_MULTI_BLOCK | SDIO_CMDOP_READ) |
#define | MMC_SEND_TUNING_BLOCK 19 /* adtc R1 */ |
#define | MMC_SEND_TUNING_BLOCK_OP (SDIO_RESP_R1) |
#define | MMC_SEND_TUNING_BLOCK_HS200 21 /* adtc R1 */ |
#define | MMC_SEND_TUNING_BLOCK_HS200_OP (SDIO_RESP_R1) |
#define | MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ |
#define | MMC_WRITE_DAT_UNTIL_STOP_OP (SDIO_RESP_R1) |
#define | MMC_SET_BLOCK_COUNT 23 /* adtc [31:0] data addr R1 */ |
#define | MMC_SET_BLOCK_COUNT_OP (SDIO_RESP_R1) |
#define | MMC_WRITE_BLOCK 24 /* adtc [31:0] data addr R1 */ |
#define | MMC_WRITE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_SINGLE_BLOCK | SDIO_CMDOP_WRITE) |
#define | MMC_WRITE_MULTIPLE_BLOCK 25 /* adtc R1 */ |
#define | MMC_WRITE_MULTIPLE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_MULTI_BLOCK | SDIO_CMDOP_WRITE) |
#define | MMC_PROGRAM_CID 26 /* adtc R1 */ |
#define | MMC_PROGRAM_CID_OP (SDIO_RESP_R1) |
#define | MMC_PROGRAM_CSD 27 /* adtc R1 */ |
#define | MMC_PROGRAM_CSD_OP (SDIO_RESP_R1) |
#define | MMC_SET_WRITE_PROT 28 /* ac [31:0] data addr R1b */ |
#define | MMC_SET_WRITE_PROT_OP (SDIO_RESP_R1B) |
#define | MMC_CLR_WRITE_PROT 29 /* ac [31:0] data addr R1b */ |
#define | MMC_CLR_WRITE_PROT_OP (SDIO_RESP_R1B) |
#define | MMC_SEND_WRITE_PROT 30 /* adtc [31:0] wpdata addr R1 */ |
#define | MMC_SEND_WRITE_PROT_OP (SDIO_RESP_R1) |
#define | MMC_ERASE_GROUP_START 35 /* ac [31:0] data addr R1 */ |
#define | MMC_ERASE_GROUP_START_OP (SDIO_RESP_R1) |
#define | MMC_ERASE_GROUP_END 36 /* ac [31:0] data addr R1 */ |
#define | MMC_ERASE_GROUP_END_OP (SDIO_RESP_R1) |
#define | MMC_ERASE 38 /* ac R1b */ |
#define | MMC_ERASE_OP (SDIO_RESP_R1B) |
#define | MMC_FAST_IO 39 /* ac <Complex> R4 */ |
#define | MMC_FAST_IO_OP (SDIO_RESP_R4) |
#define | MMC_GO_IRQ_STATE 40 /* bcr R5 */ |
#define | MMC_GO_IRQ_STATE_OP (SDIO_RESP_R5) |
#define | MMC_LOCK_UNLOCK 42 /* adtc R1b */ |
#define | MMC_LOCK_UNLOCK_OP (SDIO_RESP_R1B) |
#define | MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ |
#define | MMC_APP_CMD_OP (SDIO_RESP_R1) |
#define | MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ |
#define | MMC_GEN_CMD_OP (SDIO_RESP_R1) |
#define | MMC_QUE_TASK_PARAMS 44 /* ac [20:16] task id R1 */ |
#define | MMC_QUE_TASK_PARAMS_OP (SDIO_RESP_R1) |
#define | MMC_QUE_TASK_ADDR 45 /* ac [31:0] data addr R1 */ |
#define | MMC_QUE_TASK_ADDR_OP (SDIO_RESP_R1) |
#define | MMC_EXECUTE_READ_TASK 46 /* adtc [20:16] task id R1 */ |
#define | MMC_EXECUTE_READ_TASK_OP (SDIO_RESP_R1) |
#define | MMC_EXECUTE_WRITE_TASK 47 /* adtc [20:16] task id R1 */ |
#define | MMC_EXECUTE_WRITE_TASK_OP (SDIO_RESP_R1) |
#define | MMC_CMDQ_TASK_MGMT 48 /* ac [20:16] task id R1b */ |
#define | MMC_CMDQ_TASK_MGMT_OP (SDIO_RESP_R1B) |
#define | SD_VERSION_SD (1U << 31) |
#define | MMC_VERSION_MMC (1U << 30) |
#define | MAKE_SDMMC_VERSION(a, b, c) ((((uint32_t)(a)) << 16) | ((uint32_t)(b) << 8) | (uint32_t)(c)) |
#define | MAKE_SD_VERSION(a, b, c) (SD_VERSION_SD | MAKE_SDMMC_VERSION(a, b, c)) |
#define | MAKE_MMC_VERSION(a, b, c) (MMC_VERSION_MMC | MAKE_SDMMC_VERSION(a, b, c)) |
#define | EXTRACT_SDMMC_MAJOR_VERSION(x) (((uint32_t)(x) >> 16) & 0xff) |
#define | EXTRACT_SDMMC_MINOR_VERSION(x) (((uint32_t)(x) >> 8) & 0xff) |
#define | EXTRACT_SDMMC_CHANGE_VERSION(x) ((uint32_t)(x) & 0xff) |
#define | SD_VERSION_3 MAKE_SD_VERSION(3, 0, 0) |
#define | SD_VERSION_2 MAKE_SD_VERSION(2, 0, 0) |
#define | SD_VERSION_1_0 MAKE_SD_VERSION(1, 0, 0) |
#define | SD_VERSION_1_10 MAKE_SD_VERSION(1, 10, 0) |
#define | MMC_VERSION_UNKNOWN MAKE_MMC_VERSION(0, 0, 0) |
#define | MMC_VERSION_1_2 MAKE_MMC_VERSION(1, 2, 0) |
#define | MMC_VERSION_1_4 MAKE_MMC_VERSION(1, 4, 0) |
#define | MMC_VERSION_2_2 MAKE_MMC_VERSION(2, 2, 0) |
#define | MMC_VERSION_3 MAKE_MMC_VERSION(3, 0, 0) |
#define | MMC_VERSION_4 MAKE_MMC_VERSION(4, 0, 0) |
#define | MMC_VERSION_4_1 MAKE_MMC_VERSION(4, 1, 0) |
#define | MMC_VERSION_4_2 MAKE_MMC_VERSION(4, 2, 0) |
#define | MMC_VERSION_4_3 MAKE_MMC_VERSION(4, 3, 0) |
#define | MMC_VERSION_4_4 MAKE_MMC_VERSION(4, 4, 0) |
#define | MMC_VERSION_4_41 MAKE_MMC_VERSION(4, 4, 1) |
#define | MMC_VERSION_4_5 MAKE_MMC_VERSION(4, 5, 0) |
#define | MMC_VERSION_5_0 MAKE_MMC_VERSION(5, 0, 0) |
#define | MMC_VERSION_5_1 MAKE_MMC_VERSION(5, 1, 0) |
#define | IS_SD(x) ((x) & SD_VERSION_SD) |
#define | IS_MMC(x) ((x) & MMC_VERSION_MMC) |
#define | R1_OUT_OF_RANGE (1 << 31) /* er, c */ |
#define | R1_ADDRESS_ERROR (1 << 30) /* erx, c */ |
#define | R1_BLOCK_LEN_ERROR (1 << 29) /* er, c */ |
#define | R1_ERASE_SEQ_ERROR (1 << 28) /* er, c */ |
#define | R1_ERASE_PARAM (1 << 27) /* ex, c */ |
#define | R1_WP_VIOLATION (1 << 26) /* erx, c */ |
#define | R1_CARD_IS_LOCKED (1 << 25) /* sx, a */ |
#define | R1_LOCK_UNLOCK_FAILED (1 << 24) /* erx, c */ |
#define | R1_COM_CRC_ERROR (1 << 23) /* er, b */ |
#define | R1_ILLEGAL_COMMAND (1 << 22) /* er, b */ |
#define | R1_CARD_ECC_FAILED (1 << 21) /* ex, c */ |
#define | R1_CC_ERROR (1 << 20) /* erx, c */ |
#define | R1_ERROR (1 << 19) /* erx, c */ |
#define | R1_UNDERRUN (1 << 18) /* ex, c */ |
#define | R1_OVERRUN (1 << 17) /* ex, c */ |
#define | R1_CID_CSD_OVERWRITE (1 << 16) /* erx, c, CID/CSD overwrite */ |
#define | R1_WP_ERASE_SKIP (1 << 15) /* sx, c */ |
#define | R1_CARD_ECC_DISABLED (1 << 14) /* sx, a */ |
#define | R1_ERASE_RESET (1 << 13) /* sr, c */ |
#define | R1_STATUS(x) (x & 0xFFF9A000) |
#define | R1_CURRENT_STATE(x) ((x & 0x00001E00) >> 9) /* sx, b (4 bits) */ |
#define | R1_READY_FOR_DATA (1 << 8) /* sx, a */ |
#define | R1_SWITCH_ERROR (1 << 7) /* sx, c */ |
#define | R1_EXCEPTION_EVENT (1 << 6) /* sr, a */ |
#define | R1_APP_CMD (1 << 5) /* sr, c */ |
#define | R1_STATE_IDLE 0 |
#define | R1_STATE_READY 1 |
#define | R1_STATE_IDENT 2 |
#define | R1_STATE_STBY 3 |
#define | R1_STATE_TRAN 4 |
#define | R1_STATE_DATA 5 |
#define | R1_STATE_RCV 6 |
#define | R1_STATE_PRG 7 |
#define | R1_STATE_DIS 8 |
#define | R1_STATE_MASK 0x0FUL |
#define | R1_CUR_STATE(__S) ((__S) << 9) |
#define | VSF_SDIO_APIS(__prefix) |
SDIO API template, used to generate SDIO type, specific prefix function declarations, etc. | |
#define | SDIO_RESP_NONE 0 |
#define | SDIO_RESP_R1 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
#define | SDIO_RESP_R1B (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC | SDIO_CMDOP_RESP_BUSY) |
#define | SDIO_RESP_R2 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_LONG_CRC) |
#define | SDIO_RESP_R3 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT) |
#define | SDIO_RESP_R4 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT) |
#define | SDIO_RESP_R5 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
#define | SDIO_RESP_R6 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
#define | SDIO_RESP_R7 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
Typedefs | |
typedef union vsf_sdio_csd_t | vsf_sdio_csd_t |
typedef struct vsf_sdio_cid_t | vsf_sdio_cid_t |
typedef enum vsf_sdio_mode_t | vsf_sdio_mode_t |
typedef enum vsf_sdio_reqop_t | vsf_sdio_reqop_t |
flags of sdio request operations | |
typedef struct vsf_sdio_req_t | vsf_sdio_req_t |
typedef enum vsf_sdio_irq_mask_t | vsf_sdio_irq_mask_t |
typedef enum vsf_sdio_reqsts_t | vsf_sdio_reqsts_t |
typedef struct vsf_sdio_status_t | vsf_sdio_status_t |
typedef struct vsf_sdio_capability_t | vsf_sdio_capability_t |
typedef struct vsf_sdio_t | vsf_sdio_t |
typedef void | vsf_sdio_isr_handler_t(void *target_ptr, vsf_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask, vsf_sdio_reqsts_t status, uint32_t resp[4]) |
sdio interrupt callback function prototype. | |
typedef struct vsf_sdio_isr_t | vsf_sdio_isr_t |
sdio interrupt configuration | |
typedef struct vsf_sdio_cfg_t | vsf_sdio_cfg_t |
sdio configuration | |
typedef struct vsf_sdio_op_t | vsf_sdio_op_t |
Functions | |
vsf_err_t | vsf_sdio_init (vsf_sdio_t *sdio_ptr, vsf_sdio_cfg_t *cfg_ptr) |
Initialize a sdio instance. | |
void | vsf_sdio_fini (vsf_sdio_t *sdio_ptr) |
Finalize a sdio instance. | |
void | vsf_sdio_irq_enable (vsf_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) |
Enable interrupt masks of sdio instance. | |
void | vsf_sdio_irq_disable (vsf_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask) |
Disable interrupt masks of sdio instance. | |
vsf_sdio_status_t | vsf_sdio_status (vsf_sdio_t *sdio_ptr) |
Get the status of sdio instance. | |
vsf_sdio_capability_t | vsf_sdio_capability (vsf_sdio_t *sdio_ptr) |
Get the capability of sdio instance. | |
vsf_err_t | vsf_sdio_set_clock (vsf_sdio_t *sdio_ptr, uint32_t clock_hz, bool is_ddr) |
Set the clock of sdio instance. | |
vsf_err_t | vsf_sdio_set_bus_width (vsf_sdio_t *sdio_ptr, uint8_t bus_width) |
Set the bus width of sdio instance. | |
vsf_err_t | vsf_sdio_host_request (vsf_sdio_t *sdio_ptr, vsf_sdio_req_t *req) |
Start a new request for sdio instance. | |
vsf_err_t | vsf_sdio_single_voltage (vsf_sdio_t *sdio_ptr, uint8_t bus_width) |
Set the single voltage mode of sdio instance. | |
#define VSF_SDIO_CFG_MULTI_CLASS ENABLED |
Enable multi-class support by default for maximum availability.
#define VSF_SDIO_CFG_PREFIX vsf |
Define SDIO hardware mask if count is defined.
Define SDIO hardware count if mask is defined
We can redefine macro VSF_SDIO_CFG_PREFIX to specify a prefix to call a specific driver directly in the application code.
#define VSF_SDIO_CFG_FUNCTION_RENAME ENABLED |
Disable VSF_SDIO_CFG_FUNCTION_RENAME to use the original function names (e.g., vsf_sdio_init()).
#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_MODE DISABLED |
Enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_MODE in specific hardware drivers to redefine enum vsf_sdio_mode_t.
#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_IRQ_MASK to redefine enum vsf_sdio_irq_mask_t.
#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_STATUS DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_STATUS to redefine struct vsf_sdio_status_t.
#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_CFG DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_CFG to redefine struct vsf_sdio_cfg_t. For compatibility, members should not be deleted when redefining.
#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_REIMPLEMENT_TYPE_CAPABILITY to redefine struct vsf_sdio_capability_t. For compatibility, members should not be deleted when redefining.
#define VSF_SDIO_CFG_INHERIT_HAL_CAPABILITY ENABLED |
In specific hardware driver, we can enable macro VSF_SDIO_CFG_INHERIT_HAL_CAPABILITY to inherit the structure vsf_peripheral_capability_t.
#define SD_SEND_RELATIVE_ADDR 3 /* bcr R6 */ |
#define SD_SEND_RELATIVE_ADDR_OP (SDIO_RESP_R6) |
#define SD_SEND_IF_COND 8 /* bcr [11:0] See below R7 */ |
#define SD_SEND_IF_COND_OP (SDIO_RESP_R7) |
#define SD_SWITCH_VOLTAGE 11 /* ac R1 */ |
#define SD_SWITCH_VOLTAGE_OP (SDIO_RESP_R1 | SDIO_CMDOP_CLKHOLD) |
#define SD_SWITCH 6 /* adtc [31:0] See below R1 */ |
#define SD_SWITCH_OP (SDIO_RESP_R1) |
#define SD_ERASE_WR_BLK_START 32 /* ac [31:0] data addr R1 */ |
#define SD_ERASE_WR_BLK_START_OP (SDIO_RESP_R1) |
#define SD_ERASE_WR_BLK_END 33 /* ac [31:0] data addr R1 */ |
#define SD_ERASE_WR_BLK_END_OP (SDIO_RESP_R1) |
#define SD_APP_SET_BUS_WIDTH 6 /* ac [1:0] bus width R1 */ |
#define SD_APP_SET_BUS_WIDTH_OP (SDIO_RESP_R1) |
#define SD_BUS_WIDTH_1 0 |
#define SD_BUS_WIDTH_4 2 |
#define SD_BUS_WIDTH_8 3 |
#define SD_APP_SD_STATUS 13 /* adtc R1 */ |
#define SD_APP_SD_STATUS_OP (SDIO_RESP_R1) |
#define SD_APP_SEND_NUM_WR_BLKS 22 /* adtc R1 */ |
#define SD_APP_SEND_NUM_WR_BLKS_OP (SDIO_RESP_R1) |
#define SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */ |
#define SD_APP_OP_COND_OP (SDIO_RESP_R3) |
#define SD_APP_SEND_SCR 51 /* adtc R1 */ |
#define SD_APP_SEND_SCR_OP (SDIO_RESP_R1) |
#define SD_READ_EXTR_SINGLE 48 /* adtc [31:0] R1 */ |
#define SD_READ_EXTR_SINGLE_OP (SDIO_RESP_R1) |
#define SD_WRITE_EXTR_SINGLE 49 /* adtc [31:0] R1 */ |
#define SD_WRITE_EXTR_SINGLE_OP (SDIO_RESP_R1) |
#define SD_OCR_VDD_165_195 0x00000080 /* VDD voltage 1.65 - 1.95 */ |
#define SD_OCR_VDD_20_21 0x00000100 /* VDD voltage 2.0 ~ 2.1 */ |
#define SD_OCR_VDD_21_22 0x00000200 /* VDD voltage 2.1 ~ 2.2 */ |
#define SD_OCR_VDD_22_23 0x00000400 /* VDD voltage 2.2 ~ 2.3 */ |
#define SD_OCR_VDD_23_24 0x00000800 /* VDD voltage 2.3 ~ 2.4 */ |
#define SD_OCR_VDD_24_25 0x00001000 /* VDD voltage 2.4 ~ 2.5 */ |
#define SD_OCR_VDD_25_26 0x00002000 /* VDD voltage 2.5 ~ 2.6 */ |
#define SD_OCR_VDD_26_27 0x00004000 /* VDD voltage 2.6 ~ 2.7 */ |
#define SD_OCR_VDD_27_28 0x00008000 /* VDD voltage 2.7 ~ 2.8 */ |
#define SD_OCR_VDD_28_29 0x00010000 /* VDD voltage 2.8 ~ 2.9 */ |
#define SD_OCR_VDD_29_30 0x00020000 /* VDD voltage 2.9 ~ 3.0 */ |
#define SD_OCR_VDD_30_31 0x00040000 /* VDD voltage 3.0 ~ 3.1 */ |
#define SD_OCR_VDD_31_32 0x00080000 /* VDD voltage 3.1 ~ 3.2 */ |
#define SD_OCR_VDD_32_33 0x00100000 /* VDD voltage 3.2 ~ 3.3 */ |
#define SD_OCR_VDD_33_34 0x00200000 /* VDD voltage 3.3 ~ 3.4 */ |
#define SD_OCR_VDD_34_35 0x00400000 /* VDD voltage 3.4 ~ 3.5 */ |
#define SD_OCR_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */ |
#define SD_OCR_VDD_HIGH 0x00FF8000 /* VDD voltage 2.7 ~ 3.6 */ |
#define SD_OCR_VDD_LOW 0x00007F80 /* VDD voltage 1.65 ~ 2.7 */ |
#define SD_OCR_VDD (SD_OCR_VDD_HIGH | SD_OCR_VDD_LOW) |
#define SD_OCR_S18R (1 << 24) /* 1.8V switching request */ |
#define SD_ROCR_S18A SD_OCR_S18R /* 1.8V switching accepted by card */ |
#define SD_OCR_XPC (1 << 28) /* SDXC power control */ |
#define SD_OCR_CCS (1 << 30) /* Card Capacity Status */ |
#define MMC_GO_IDLE_STATE 0 /* bc */ |
#define MMC_GO_IDLE_STATE_OP (SDIO_RESP_NONE) |
#define MMC_SEND_OP_COND 1 /* bcr [31:0] OCR R3 */ |
#define MMC_SEND_OP_COND_OP (SDIO_RESP_R3) |
#define MMC_ALL_SEND_CID 2 /* bcr R2 */ |
#define MMC_ALL_SEND_CID_OP (SDIO_RESP_R2) |
#define MMC_SET_RELATIVE_ADDR 3 /* ac [31:16] RCA R1 */ |
#define MMC_SET_RELATIVE_ADDR_OP (SDIO_RESP_R1) |
#define MMC_SET_DSR 4 /* bc [31:16] RCA */ |
#define MMC_SET_DSR_OP (SDIO_RESP_NONE) |
#define MMC_SLEEP_AWAKE 5 /* ac [31:16] RCA 15:flg R1b */ |
#define MMC_SLEEP_AWAKE_OP (SDIO_RESP_R1B) |
#define MMC_SWITCH 6 /* ac [31:0] See below R1b */ |
#define MMC_SWITCH_OP (SDIO_RESP_R1B) |
#define MMC_SELECT_CARD 7 /* ac [31:16] RCA R1 */ |
#define MMC_SELECT_CARD_OP (SDIO_RESP_R1) |
#define MMC_SEND_EXT_CSD 8 /* adtc R1 */ |
#define MMC_SEND_EXT_CSD_OP (SDIO_RESP_R1) |
#define MMC_SEND_CSD 9 /* ac [31:16] RCA R2 */ |
#define MMC_SEND_CSD_OP (SDIO_RESP_R2) |
#define MMC_SEND_CID 10 /* ac [31:16] RCA R2 */ |
#define MMC_SEND_CID_OP (SDIO_RESP_R2) |
#define MMC_READ_DAT_UNTIL_STOP 11 /* adtc [31:0] dadr R1 */ |
#define MMC_READ_DAT_UNTIL_STOP_OP (SDIO_RESP_R1) |
#define MMC_STOP_TRANSMISSION 12 /* ac R1b */ |
#define MMC_STOP_TRANSMISSION_OP (SDIO_RESP_R1B | SDIO_CMDOP_TRANS_STOP) |
#define MMC_SEND_STATUS 13 /* ac [31:16] RCA R1 */ |
#define MMC_SEND_STATUS_OP (SDIO_RESP_R1) |
#define MMC_BUS_TEST_R 14 /* adtc R1 */ |
#define MMC_BUS_TEST_R_OP (SDIO_RESP_R1) |
#define MMC_GO_INACTIVE_STATE 15 /* ac [31:16] RCA */ |
#define MMC_BUS_TEST_W 19 /* adtc R1 */ |
#define MMC_BUS_TEST_W_OP (SDIO_RESP_R1) |
#define MMC_SPI_READ_OCR 58 /* spi spi_R3 */ |
#define MMC_SPI_READ_OCR_OP (SDIO_RESP_SPI_R3) |
#define MMC_SPI_CRC_ON_OFF 59 /* spi [0:0] flag spi_R1 */ |
#define MMC_SPI_CRC_ON_OFF_OP (SDIO_RESP_SPI_R1) |
#define MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ |
#define MMC_SET_BLOCKLEN_OP (SDIO_RESP_R1) |
#define MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ |
#define MMC_READ_SINGLE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_SINGLE_BLOCK | SDIO_CMDOP_READ) |
#define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ |
#define MMC_READ_MULTIPLE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_MULTI_BLOCK | SDIO_CMDOP_READ) |
#define MMC_SEND_TUNING_BLOCK 19 /* adtc R1 */ |
#define MMC_SEND_TUNING_BLOCK_OP (SDIO_RESP_R1) |
#define MMC_SEND_TUNING_BLOCK_HS200 21 /* adtc R1 */ |
#define MMC_SEND_TUNING_BLOCK_HS200_OP (SDIO_RESP_R1) |
#define MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ |
#define MMC_WRITE_DAT_UNTIL_STOP_OP (SDIO_RESP_R1) |
#define MMC_SET_BLOCK_COUNT 23 /* adtc [31:0] data addr R1 */ |
#define MMC_SET_BLOCK_COUNT_OP (SDIO_RESP_R1) |
#define MMC_WRITE_BLOCK 24 /* adtc [31:0] data addr R1 */ |
#define MMC_WRITE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_SINGLE_BLOCK | SDIO_CMDOP_WRITE) |
#define MMC_WRITE_MULTIPLE_BLOCK 25 /* adtc R1 */ |
#define MMC_WRITE_MULTIPLE_BLOCK_OP (SDIO_RESP_R1 | SDIO_CMDOP_MULTI_BLOCK | SDIO_CMDOP_WRITE) |
#define MMC_PROGRAM_CID 26 /* adtc R1 */ |
#define MMC_PROGRAM_CID_OP (SDIO_RESP_R1) |
#define MMC_PROGRAM_CSD 27 /* adtc R1 */ |
#define MMC_PROGRAM_CSD_OP (SDIO_RESP_R1) |
#define MMC_SET_WRITE_PROT 28 /* ac [31:0] data addr R1b */ |
#define MMC_SET_WRITE_PROT_OP (SDIO_RESP_R1B) |
#define MMC_CLR_WRITE_PROT 29 /* ac [31:0] data addr R1b */ |
#define MMC_CLR_WRITE_PROT_OP (SDIO_RESP_R1B) |
#define MMC_SEND_WRITE_PROT 30 /* adtc [31:0] wpdata addr R1 */ |
#define MMC_SEND_WRITE_PROT_OP (SDIO_RESP_R1) |
#define MMC_ERASE_GROUP_START 35 /* ac [31:0] data addr R1 */ |
#define MMC_ERASE_GROUP_START_OP (SDIO_RESP_R1) |
#define MMC_ERASE_GROUP_END 36 /* ac [31:0] data addr R1 */ |
#define MMC_ERASE_GROUP_END_OP (SDIO_RESP_R1) |
#define MMC_ERASE 38 /* ac R1b */ |
#define MMC_ERASE_OP (SDIO_RESP_R1B) |
#define MMC_FAST_IO 39 /* ac <Complex> R4 */ |
#define MMC_FAST_IO_OP (SDIO_RESP_R4) |
#define MMC_GO_IRQ_STATE 40 /* bcr R5 */ |
#define MMC_GO_IRQ_STATE_OP (SDIO_RESP_R5) |
#define MMC_LOCK_UNLOCK 42 /* adtc R1b */ |
#define MMC_LOCK_UNLOCK_OP (SDIO_RESP_R1B) |
#define MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ |
#define MMC_APP_CMD_OP (SDIO_RESP_R1) |
#define MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ |
#define MMC_GEN_CMD_OP (SDIO_RESP_R1) |
#define MMC_QUE_TASK_PARAMS 44 /* ac [20:16] task id R1 */ |
#define MMC_QUE_TASK_PARAMS_OP (SDIO_RESP_R1) |
#define MMC_QUE_TASK_ADDR 45 /* ac [31:0] data addr R1 */ |
#define MMC_QUE_TASK_ADDR_OP (SDIO_RESP_R1) |
#define MMC_EXECUTE_READ_TASK 46 /* adtc [20:16] task id R1 */ |
#define MMC_EXECUTE_READ_TASK_OP (SDIO_RESP_R1) |
#define MMC_EXECUTE_WRITE_TASK 47 /* adtc [20:16] task id R1 */ |
#define MMC_EXECUTE_WRITE_TASK_OP (SDIO_RESP_R1) |
#define MMC_CMDQ_TASK_MGMT 48 /* ac [20:16] task id R1b */ |
#define MMC_CMDQ_TASK_MGMT_OP (SDIO_RESP_R1B) |
#define SD_VERSION_SD (1U << 31) |
#define MMC_VERSION_MMC (1U << 30) |
#define MAKE_SDMMC_VERSION | ( | a, | |
b, | |||
c | |||
) | ((((uint32_t)(a)) << 16) | ((uint32_t)(b) << 8) | (uint32_t)(c)) |
#define MAKE_SD_VERSION | ( | a, | |
b, | |||
c | |||
) | (SD_VERSION_SD | MAKE_SDMMC_VERSION(a, b, c)) |
#define MAKE_MMC_VERSION | ( | a, | |
b, | |||
c | |||
) | (MMC_VERSION_MMC | MAKE_SDMMC_VERSION(a, b, c)) |
#define EXTRACT_SDMMC_MAJOR_VERSION | ( | x | ) | (((uint32_t)(x) >> 16) & 0xff) |
#define EXTRACT_SDMMC_MINOR_VERSION | ( | x | ) | (((uint32_t)(x) >> 8) & 0xff) |
#define EXTRACT_SDMMC_CHANGE_VERSION | ( | x | ) | ((uint32_t)(x) & 0xff) |
#define SD_VERSION_3 MAKE_SD_VERSION(3, 0, 0) |
#define SD_VERSION_2 MAKE_SD_VERSION(2, 0, 0) |
#define SD_VERSION_1_0 MAKE_SD_VERSION(1, 0, 0) |
#define SD_VERSION_1_10 MAKE_SD_VERSION(1, 10, 0) |
#define MMC_VERSION_UNKNOWN MAKE_MMC_VERSION(0, 0, 0) |
#define MMC_VERSION_1_2 MAKE_MMC_VERSION(1, 2, 0) |
#define MMC_VERSION_1_4 MAKE_MMC_VERSION(1, 4, 0) |
#define MMC_VERSION_2_2 MAKE_MMC_VERSION(2, 2, 0) |
#define MMC_VERSION_3 MAKE_MMC_VERSION(3, 0, 0) |
#define MMC_VERSION_4 MAKE_MMC_VERSION(4, 0, 0) |
#define MMC_VERSION_4_1 MAKE_MMC_VERSION(4, 1, 0) |
#define MMC_VERSION_4_2 MAKE_MMC_VERSION(4, 2, 0) |
#define MMC_VERSION_4_3 MAKE_MMC_VERSION(4, 3, 0) |
#define MMC_VERSION_4_4 MAKE_MMC_VERSION(4, 4, 0) |
#define MMC_VERSION_4_41 MAKE_MMC_VERSION(4, 4, 1) |
#define MMC_VERSION_4_5 MAKE_MMC_VERSION(4, 5, 0) |
#define MMC_VERSION_5_0 MAKE_MMC_VERSION(5, 0, 0) |
#define MMC_VERSION_5_1 MAKE_MMC_VERSION(5, 1, 0) |
#define IS_SD | ( | x | ) | ((x) & SD_VERSION_SD) |
#define IS_MMC | ( | x | ) | ((x) & MMC_VERSION_MMC) |
#define R1_OUT_OF_RANGE (1 << 31) /* er, c */ |
#define R1_ADDRESS_ERROR (1 << 30) /* erx, c */ |
#define R1_BLOCK_LEN_ERROR (1 << 29) /* er, c */ |
#define R1_ERASE_SEQ_ERROR (1 << 28) /* er, c */ |
#define R1_ERASE_PARAM (1 << 27) /* ex, c */ |
#define R1_WP_VIOLATION (1 << 26) /* erx, c */ |
#define R1_CARD_IS_LOCKED (1 << 25) /* sx, a */ |
#define R1_LOCK_UNLOCK_FAILED (1 << 24) /* erx, c */ |
#define R1_COM_CRC_ERROR (1 << 23) /* er, b */ |
#define R1_ILLEGAL_COMMAND (1 << 22) /* er, b */ |
#define R1_CARD_ECC_FAILED (1 << 21) /* ex, c */ |
#define R1_CC_ERROR (1 << 20) /* erx, c */ |
#define R1_ERROR (1 << 19) /* erx, c */ |
#define R1_UNDERRUN (1 << 18) /* ex, c */ |
#define R1_OVERRUN (1 << 17) /* ex, c */ |
#define R1_CID_CSD_OVERWRITE (1 << 16) /* erx, c, CID/CSD overwrite */ |
#define R1_WP_ERASE_SKIP (1 << 15) /* sx, c */ |
#define R1_CARD_ECC_DISABLED (1 << 14) /* sx, a */ |
#define R1_ERASE_RESET (1 << 13) /* sr, c */ |
#define R1_STATUS | ( | x | ) | (x & 0xFFF9A000) |
#define R1_CURRENT_STATE | ( | x | ) | ((x & 0x00001E00) >> 9) /* sx, b (4 bits) */ |
#define R1_READY_FOR_DATA (1 << 8) /* sx, a */ |
#define R1_SWITCH_ERROR (1 << 7) /* sx, c */ |
#define R1_EXCEPTION_EVENT (1 << 6) /* sr, a */ |
#define R1_APP_CMD (1 << 5) /* sr, c */ |
#define R1_STATE_IDLE 0 |
#define R1_STATE_READY 1 |
#define R1_STATE_IDENT 2 |
#define R1_STATE_STBY 3 |
#define R1_STATE_TRAN 4 |
#define R1_STATE_DATA 5 |
#define R1_STATE_RCV 6 |
#define R1_STATE_PRG 7 |
#define R1_STATE_DIS 8 |
#define R1_STATE_MASK 0x0FUL |
#define R1_CUR_STATE | ( | __S | ) | ((__S) << 9) |
#define VSF_SDIO_APIS | ( | __prefix | ) |
SDIO API template, used to generate SDIO type, specific prefix function declarations, etc.
[in] | __prefix | The prefix used for generating SDIO functions. |
#define SDIO_RESP_NONE 0 |
#define SDIO_RESP_R1 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
#define SDIO_RESP_R1B (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC | SDIO_CMDOP_RESP_BUSY) |
#define SDIO_RESP_R2 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_LONG_CRC) |
#define SDIO_RESP_R3 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT) |
#define SDIO_RESP_R4 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT) |
#define SDIO_RESP_R5 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
#define SDIO_RESP_R6 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
#define SDIO_RESP_R7 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC) |
typedef union vsf_sdio_csd_t vsf_sdio_csd_t |
typedef struct vsf_sdio_cid_t vsf_sdio_cid_t |
typedef enum vsf_sdio_mode_t vsf_sdio_mode_t |
typedef enum vsf_sdio_reqop_t vsf_sdio_reqop_t |
flags of sdio request operations
typedef struct vsf_sdio_req_t vsf_sdio_req_t |
typedef enum vsf_sdio_irq_mask_t vsf_sdio_irq_mask_t |
typedef enum vsf_sdio_reqsts_t vsf_sdio_reqsts_t |
typedef struct vsf_sdio_status_t vsf_sdio_status_t |
typedef struct vsf_sdio_capability_t vsf_sdio_capability_t |
typedef struct vsf_sdio_t vsf_sdio_t |
typedef void vsf_sdio_isr_handler_t(void *target_ptr, vsf_sdio_t *sdio_ptr, vsf_sdio_irq_mask_t irq_mask, vsf_sdio_reqsts_t status, uint32_t resp[4]) |
sdio interrupt callback function prototype.
target_ptr | pointer of user. |
sdio_ptr | pointer of sdio instance. |
irq_mask | one or more value of enum vsf_sdio_irq_mask_t |
status | request status. |
resp | response. |
typedef struct vsf_sdio_isr_t vsf_sdio_isr_t |
sdio interrupt configuration
typedef struct vsf_sdio_cfg_t vsf_sdio_cfg_t |
sdio configuration
typedef struct vsf_sdio_op_t vsf_sdio_op_t |
enum vsf_sdio_mode_t |
enum vsf_sdio_reqop_t |
flags of sdio request operations
enum vsf_sdio_irq_mask_t |
enum vsf_sdio_reqsts_t |
|
extern |
Initialize a sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | cfg_ptr | a pointer to structure vsf_sdio_cfg_t |
|
extern |
|
extern |
Enable interrupt masks of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | irq_mask | one or more value of enum vsf_sdio_irq_mask_t |
|
extern |
Disable interrupt masks of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | irq_mask | one or more value of enum vsf_sdio_irq_mask_t, vsf_sdio_irq_mask_t |
|
extern |
Get the status of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
|
extern |
Get the capability of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
|
extern |
Set the clock of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | clock_hz | clock in Hz |
[in] | is_ddr | is DDR mode, true means DDR mode while false means SDR mode |
|
extern |
Set the bus width of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | bus_width | bus width in 1, 4, 8 |
|
extern |
Start a new request for sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | req | pointer to structure vsf_sdio_req_t |
|
extern |
Set the single voltage mode of sdio instance.
[in] | sdio_ptr | a pointer to structure vsf_sdio_t |
[in] | bus_width | bus width in 1, 4, 8 |