HPM SDK
HPMicro Software Development Kit
HPM SDMMC stack

HPM SDMMC common APIs. More...

Data Structures

union  emmc_switch_cmd_arg_t
 
union  emmc_ocr_t
 
union  emmc_cid_t
 
union  emmc_card_status_t
 
struct  emmc_csd_t
 
union  emmc_device_type_t
 
struct  emmc_ext_csd_t
 
union  emmc_power_class_t
 
struct  boot_info_t
 
struct  secure_feature_info_t
 
struct  emmc_boot_setting_t
 
struct  emmc_device_attribute_t
 
struct  emmc_config_partition_option_t
 
struct  hpm_sdmmc_pin_info_t
 SDMMC Pin info structure. More...
 
struct  hpm_sdmmc_extra_io_data_t
 SDMMC extra Pin info. More...
 
struct  sdmmc_io_init_apis_t
 
struct  sdmmc_host_param_t
 
struct  sdmmc_host_t
 
union  sd_flags_t
 
union  switch_function_status_t
 
union  sdio_cmd5_arg_t
 CMD5 argument definition. More...
 
union  sdio_cmd5_resp_t
 CMD5 response definition. More...
 
union  sdio_resp_r5_t
 Response R5 definition. More...
 
union  sdio_cmd52_arg_t
 CMD5 argument definition. More...
 
union  sdio_cmd53_arg_t
 CMD53 argument definition. More...
 
struct  sdio_cccr_t
 CCCR register map. More...
 
struct  sdio_fbr_t
 FBR register map. More...
 
struct  sdio_tpl_block
 TPL block structure. More...
 
struct  sdio_common_cis_t
 SDIO Common In. More...
 
struct  ATTR_PACKED
 SDIO Function extension structure. More...
 
struct  sdio_cis_t
 SDIO CIS information. More...
 
struct  sdio_func_t
 SDIO Function information. More...
 

Macros

#define SDMMC_CLOCK_400KHZ   (400000UL)
 
#define SD_CLOCK_25MHZ   (25000000UL)
 
#define SD_CLOCK_50MHZ   (50000000UL)
 
#define SD_CLOCK_100MHZ   (100000000UL)
 
#define SD_CLOCK_208MHZ   (208000000UL)
 
#define MMC_CLOCK_26MHz   (26000000UL)
 
#define MMC_CLOCK_52MHz   (52000000UL)
 
#define MMC_CLOCK_DDR52   (52000000UL)
 
#define MMC_CLOCK_HS200   (200000000UL)
 
#define MMC_CLOCK_HS400   (200000000UL)
 
#define HPM_SDMMC_MALLOC   malloc
 
#define HPM_SDMMC_FREE   free
 
#define EMMC_EXT_CSD_INDEX_CMD_SET   (191)
 
#define EMMC_EXT_CSD_INDEX_POWER_CLASS   (187)
 
#define EMMC_EXT_CSD_INDEX_HS_TIMING   (185)
 
#define EMMC_EXT_CSD_INDEX_BUS_WDITH   (183)
 
#define EMMC_EXT_CSD_INDEX_PARTITION_CONFIG   (179)
 
#define EMMC_EXT_CSD_INDEX_BOOT_CONFIG_PROT   (178)
 
#define EMMC_EXT_CSD_INDEX_BOOT_BUS_CONDITIONS   (177)
 
#define EMMC_EXT_CSD_INDEX_ERASE_GROUP_DEF   (175)
 
#define EMMC_EXT_CSD_INDEX_BOOT_WP   (173)
 
#define EMMC_EXT_CSD_INDEX_USER_WP   (171)
 
#define EMMC_EXT_CSD_INDEX_FW_CONFIG   (169)
 
#define EMMC_EXT_CSD_INDEX_WR_REL_SET   (167)
 
#define EMMC_EXT_CSD_INDEX_SANITIZE_START   (165)
 
#define EMMC_EXT_CSD_INDEX_BKOPS_START   (164)
 
#define EMMC_EXT_CSD_INDEX_BKOPS_EN   (163)
 
#define EMMC_EXT_CSD_INDEX_RSTn_FUNCTION   (162)
 
#define EMMC_EXT_CSD_INDEX_HPI_MGMT   (161)
 
#define EMMC_EXT_CSD_INDEX_PARTITIONS_ATTRIBUTE   (156)
 
#define EMMC_EXT_CSD_INDEX_PARTITION_SETTING_COMPLETED   (155)
 
#define EMMC_EXT_CSD_INDEX_SEC_BAD_BLK_MGMNT   (134)
 
#define EMMC_EXT_CSD_INDEX_PRODUCTION_STATE_AWARENESS   (133)
 
#define EMMC_EXT_CSD_INDEX_PERIODIC_WAKEUP   (131)
 
#define EMMC_EXT_CSD_INDEX_USE_NATIVE_SECTOR   (62)
 
#define EMMC_EXT_CSD_INDEX_CLASS_6_CTRL   (59)
 
#define EMMC_EXT_CSD_INDEX_POWER_OFF_NOTIFICATION   (34)
 
#define EMMC_EXT_CSD_INDEX_CACHE_CTRL   (33)
 
#define EMMC_EXT_CSD_INDEX_FLUSH_CACHE   (32)
 
#define EMMC_EXT_CSD_INDEX_BARRIER_CTRL   (31)
 
#define EMMC_EXT_CSD_INDEX_MODE_CONFIG   (30)
 
#define EMMC_EXT_CSD_INDEX_PRODUCT_STATE_AWARENESS_ENABLEMENT   (17)
 
#define EMMC_EXT_CSD_INDEX_SECURE_REMOVAL_TYPE   (16)
 
#define EMMC_EXT_CSD_INDEX_CMDQ_MODE_EN   (15)
 
#define HPM_SDMMC_HOST_SUPPORT_4BIT   (1UL << 0)
 
#define HPM_SDMMC_HOST_SUPPORT_8BIT   (1UL << 1)
 
#define HPM_SDMMC_HOST_SUPPORT_3V3   (1UL << 2)
 
#define HPM_SDMMC_HOST_SUPPORT_1V8   (1UL << 3)
 
#define HPM_SDMMC_HOST_SUPPORT_DDR   (1UL << 4)
 
#define HPM_SDMMC_HOST_SUPPORT_SDR50   (1UL << 5)
 
#define HPM_SDMMC_HOST_SUPPORT_SDR104   (1UL << 6)
 
#define HPM_SDMMC_HOST_SUPPORT_HS200   (1UL << 7)
 
#define HPM_SDMMC_HOST_SUPPORT_HS400   (1Ul << 8)
 
#define HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION   (1UL << 16)
 
#define HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH   (1UL << 17)
 
#define HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH   (1UL << 18)
 
#define HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION   (1UL << 19)
 
#define HPM_SDMMC_HOST_SUPPORT_RESET_PIN   (1UL << 20)
 
#define HPM_SDMMC_HOST_SUPPORT_DATA_STROBE   (1UL << 21)
 
#define HPM_SDMMC_HOST_CD_IN_IP   (HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION << 8)
 
#define HPM_SDMMC_HOST_VSEL_IN_IP   (HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH << 8)
 
#define HPM_SDMMC_HOST_PWR_IN_IP   (HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH << 8)
 
#define HPM_SDMMC_HOST_WP_IN_IP   (HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION << 8)
 
#define HPM_SDMMC_HOST_RST_IN_IP   (HPM_SDMMC_HOST_SUPPORT_RESET_PIN << 8)
 
#define HPM_SDMMC_HOST_ADMA3_ALIGN_SIZE   (8U)
 
#define HPM_SDMMC_HOST_ADMA_TBL_SIZE   (SDXC_AMDA3_DESC_MIN_WORDS * 2UL)
 
#define HPM_SDMMC_OSAL_WAIT_FOREVER   (0xFFFFFFFFUL)
 
#define SDIO_CMD53_OP_MODE_FIXED_ADDR   0
 
#define SDIO_CMD53_OP_MODE_INCR_ADDR   1
 
#define SDIO_CMD_TIMEOUT_MS   (1000UL)
 
#define SDIO_FBR_REG_BASE(fbr)   ((fbr) * 0x100)
 
#define SDIO_MAX_FUNC_NUM   7
 
#define SDIO_SPEED_DEFAULT_SPEED   0UL
 SDIO Speed definitions. More...
 
#define SDIO_SPEED_HIGH_SPEED   1UL
 
#define SDIO_SPEED_SDR12   SDIO_SPEED_DEFAULT_SPEED
 
#define SDIO_SPEED_SDR25   SDIO_SPEED_HIGH_SPEED
 
#define SDIO_SPEED_SDR50   2UL
 
#define SDIO_SPEED_SDR104   3UL
 
#define SDIO_SPEED_DDR50   4UL
 
#define SDIO_CCCR_BUS_WIDTH_1BIT   0UL
 SDIO Bus width definitions. More...
 
#define SDIO_CCCR_BUS_WIDTH_4BIT   2UL
 
#define SDIO_CCCR_BUS_SPEED_MASK   (0x7UL << 1)
 SDIO BUS speed definitions in CCCR register. More...
 
#define SDIO_CCCR_BUS_SPEED_SUPPORT_HIGHSPEED   (1)
 
#define SDIO_CCCR_BUS_SPEED_DEFAULT   (SDIO_SPEED_DEFAULT_SPEED << 1)
 
#define SDIO_CCCR_BUS_SPEED_HIGH   (SDIO_SPEED_HIGH_SPEED << 1)
 
#define SDIO_CCCR_BUS_SPEED_SDR12   (SDIO_CCCR_BUS_SPEED_DEFAULT)
 
#define SDIO_CCCR_BUS_SPEED_SDR25   (SDIO_CCCR_BUS_SPEED_HIGH)
 
#define SDIO_CCCR_BUS_SPEED_SDR50   (SDIO_SPEED_SDR50 << 1)
 
#define SDIO_CCCR_BUS_SPEED_SDR104   (SDIO_SPEED_SDR104 << 1)
 
#define SDIO_CCCR_BUS_SPEED_DDR50   (SDIO_SPEED_DDR50 << 1)
 
#define SDIO_REG_CCCR_SDIO_REV   0
 CCCR register address. More...
 
#define SDIO_REG_CCCR_SD_REV   1
 
#define SDIO_REG_CCCR_IO_ENABLE   2
 
#define SDIO_REG_CCCR_IO_READY   3
 
#define SDIO_REG_CCCR_INT_ENABLE   4
 
#define SDIO_REG_CCCR_INT_PENDING   5
 
#define SDIO_REG_CCCR_IO_ABORT   6
 
#define SDIO_REG_CCCR_BUS_IF_CTRL   7
 
#define SDIO_REG_CCCR_CARD_CAP   8
 
#define SDIO_REG_CCCR_COM_CIS_PTR   9
 
#define SDIO_REG_CCCR_BUS_SUSPEND   0xC
 
#define SDIO_REG_CCCR_FUNC_SEL   0xD
 
#define SDIO_REG_CCCR_EXEC_FLAGS   0xE
 
#define SDIO_REG_CCCR_READY_FLAGS   0xF
 
#define SDIO_REG_CCCR_FN0_BLK_SIZE   0x10
 
#define SDIO_REG_CCCR_POWER_CTRL   0x12
 
#define SDIO_REG_CCCR_BUS_SPEED_SEL   0x13
 
#define SDIO_REG_CCCR_UHS_SUPPORT   0x14
 
#define SDIO_REG_CCCR_DRV_STRENGTH   0x15
 
#define SDIO_REG_CCCR_INT_EXT   0x16
 
#define SDIO_REG_CCCR_START   SDIO_REG_CCCR_SDIO_REV
 CCCR register range definitions. More...
 
#define SDIO_REG_CCCR_END   SDIO_REG_CCCR_INT_EXT
 
#define SDIO_REG_FBR_CIS_PTR_OFFSET   0x9
 
#define SDIO_REG_FBR_CSR_PTR_OFFSET   0xC
 
#define SDIO_REG_FBR_MAX_BLK_SIZE_OFFSET   0x10
 
#define CISTPL_NULL   (0)
 CISTPL type definitions. More...
 
#define CISTPL_CHECKSUM   (0x10)
 
#define CISTPL_VERS_1   (0x15)
 
#define CISTPL_ALTSTR   (0x16)
 
#define CISTPL_MANFID   (0x20)
 
#define CISTPL_FUNCID   (0x21)
 
#define CISTPL_FUNCE   (0x22)
 
#define CISTPL_SDIO_STD   (0x91)
 
#define CISTPL_SDIO_EXT   (0x92)
 
#define CISTPL_END   (0xFF)
 
#define STD_SDIO_FUNC_IF_CODE_NON_STD   0
 Standard SDIO Function Interface Code Definitions. More...
 
#define STD_SDIO_FUNC_IF_CODE_UART   1
 
#define STD_SDIO_FUNC_IF_CODE_BT_TYPEA   2
 
#define STD_SDIO_FUNC_IF_CODE_BT_TYPEB   3
 
#define STD_SDIO_FUNC_IF_CODE_GPS   4
 
#define STD_SDIO_FUNC_IF_CODE_CAMERA   5
 
#define STD_SDIO_FUNC_IF_CODE_PHS   6
 
#define STD_SDIO_FUNC_IF_CODE_WLAN   7
 
#define STD_SDIO_FUNC_IF_CODE_ATA   8
 
#define STD_SDIO_FUNC_IF_CODE_BT_TYPEA_AMP   9
 
#define STD_SDIO_FUNC_IF_CODE_ISDIO   0xE
 
#define STD_SDIO_FUNC_IF_CODE_EXT_STD   0xF
 

Typedefs

typedef enum vdd_current_min_def vdd_current_min_t
 
typedef enum vdd_current_max_def vdd_current_max_t
 
typedef enum _emmc_partition emmc_partition_t
 
typedef enum _emmc_hs_timing emmc_hs_timing_t
 
typedef struct _sdmmc_emmc emmc_card_t
 
typedef sdxc_xfer_t sdmmchost_xfer_t
 
typedef sdxc_command_t sdmmchost_cmd_t
 
typedef sdxc_data_t sdmmchost_data_t
 
typedef sdxc_adma2_descriptor_t sdmmc_adma2_desc_t
 
typedef SDXC_Type SDMMCHOST_Type
 
typedef sdxc_capabilities_t sdmmchost_capabilities_t
 
typedef uint32_t(* sdmmchost_clock_init_func_t) (SDMMCHOST_Type *base, uint32_t clk_freq, bool need_reverse)
 
typedef void(* sdmmchost_power_switch_func_t) (SDMMCHOST_Type *base, bool on_off)
 
typedef void(* sdmmchost_io_init_func_t) (SDMMCHOST_Type *base)
 
typedef void(* sdmmchost_switch_1v8_io_func_t) (SDMMCHOST_Type *base)
 
typedef void(* sdmmchost_cmd_line_init_func_t) (SDMMCHOST_Type *base, bool push_pull)
 
typedef bool(* sdmmchost_card_detect_func_t) (SDMMCHOST_Type *base)
 
typedef volatile uint32_t * hpm_sdmmc_osal_event_t
 
typedef struct _sdmmc_sdcard sd_card_t
 
typedef struct sdio_tpl_blocksdio_tpl_blk_t
 TPL block structure. More...
 
typedef struct _sdmmc_sdio sdio_card_t
 

Enumerations

enum  {
  sdmmc_state_idle = 0 , sdmmc_state_ready = 1 , sdmmc_state_identify = 2 , sdmmc_state_standby = 3 ,
  sdmmc_state_transfer = 4 , sdmmc_state_send_data = 5 , sdmmc_state_receive_data = 6 , sdmmc_state_program = 7 ,
  sdmmc_state_disconnect = 8
}
 
enum  sdmmc_operation_voltage_t { sdmmc_operation_voltage_1v8 = 5 , sdmmc_operation_voltage_3v0 = 6 , sdmmc_operation_voltage_3v3 = 7 }
 
enum  sdmmc_resp_type_t {
  sdmmc_resp_none = 0 , sdmmc_resp_r1 , sdmmc_resp_r1b , sdmmc_resp_r2 ,
  sdmmc_resp_r3 , sdmmc_resp_r4 , sdmmc_resp_r5 , sdmmc_resp_r5b ,
  sdmmc_resp_r6 , sdmmc_resp_r7
}
 
enum  {
  status_sdmmc_card_not_support = MAKE_STATUS(status_group_sdmmc, 0) , status_sdmmc_wait_card_insert_timeout = MAKE_STATUS(status_group_sdmmc, 1) , status_sdmmc_no_sd_card_inserted = MAKE_STATUS(status_group_sdmmc, 2) , status_sdmmc_device_init_required = MAKE_STATUS(status_group_sdmmc, 3) ,
  status_sdmmc_wait_busy_timeout = MAKE_STATUS(status_group_sdmmc, 4)
}
 
enum  emmc_switch_cmd_access_mode_t { emmc_switch_cmd_access_mode_command_set = 0 , emmc_switch_cmd_access_mode_set_bits = 1 , emmc_switch_cmd_access_mode_clear_bits = 2 , emmc_switch_cmd_access_mode_write_byte = 3 }
 
enum  emmc_csd_vdd_current_min_t {
  emmc_csd_vdd_current_min_0_5ma , emmc_csd_vdd_current_min_1ma , emmc_csd_vdd_current_min_5ma , emmc_csd_vdd_current_min_10ma ,
  emmc_csd_vdd_current_min_25ma , emmc_csd_vdd_current_min_35ma , emmc_csd_vdd_current_min_60ma , emmc_csd_vdd_current_min_100ma
}
 
enum  emmc_csd_vdd_current_max_t {
  emmc_csd_vdd_current_max_1ma , emmc_csd_vdd_current_max_5ma , emmc_csd_vdd_current_max_10ma , emmc_csd_vdd_current_max_25ma ,
  emmc_csd_vdd_current_max_35ma , emmc_csd_vdd_current_max_45ma , emmc_csd_vdd_current_max_80ma , emmc_csd_vdd_current_max_200ma
}
 
enum  vdd_current_min_def {
  vdd_current_min_0_5ma , vdd_current_min_1ma , vdd_current_min_5ma , vdd_current_min_10ma ,
  vdd_current_min_25ma , vdd_current_min_35ma , vdd_current_min_60ma , vdd_current_min_100ma
}
 
enum  vdd_current_max_def {
  vdd_current_max_1ma , vdd_current_max_5ma , vdd_current_max_10ma , vdd_current_max_25ma ,
  vdd_current_max_35ma , vdd_current_max_45ma , vdd_current_max_80ma , vdd_current_max_200ma
}
 
enum  emmc_csd_file_format_t { emmc_csd_file_format_hard_disk_like_file_system_with_partition_table , emmc_csd_file_format_dos_fat_with_boot_sector_only , emmc_csd_file_format_universal_file_format , emmc_csd_file_format_others_or_unknown }
 
enum  emmc_power_class_3v6_t {
  emmc_power_3v6_max_rms_100ma_peak_200ma = 0 , emmc_power_3v6_max_rms_120ma_peak_220ma = 1 , emmc_power_3v6_max_rms_150ma_peak_250ma = 2 , emmc_power_3v6_max_rms_180ma_peak_280ma = 3 ,
  emmc_power_3v6_max_rms_200ma_peak_300ma = 4 , emmc_power_3v6_max_rms_220ma_peak_320ma = 5 , emmc_power_3v6_max_rms_250ma_peak_350ma = 6 , emmc_power_3v6_max_rms_300ma_peak_400ma = 7 ,
  emmc_power_3v6_max_rms_350ma_peak_450ma = 8 , emmc_power_3v6_max_rms_400ma_peak_500ma = 9 , emmc_power_3v6_max_rms_450ma_peak_550ma = 10 , emmc_power_3v6_max_rms_500ma_peak_600ma = 11 ,
  emmc_power_3v6_max_rms_600ma_peak_700ma = 12 , emmc_power_3v6_max_rms_700ma_peak_800ma = 13 , emmc_power_3v6_max_rms_800ma_peak_900ma = 14 , emmc_power_3v6_max_rms_gt800ma_peak_gt900ma = 15
}
 
enum  emmc_power_class_1v95_t {
  emmc_power_1v95_max_rms_65ma_peak_130ma = 0 , emmc_power_1v95_max_rms_70ma_peak_140ma = 1 , emmc_power_1v95_max_rms_80ma_peak_160ma = 2 , emmc_power_1v95_max_rms_90ma_peak_180ma = 3 ,
  emmc_power_1v95_max_rms_100ma_peak_200ma = 4 , emmc_power_1v95_max_rms_120ma_peak_220ma = 5 , emmc_power_1v95_max_rms_140ma_peak_240ma = 6 , emmc_power_1v95_max_rms_160ma_peak_260ma = 7 ,
  emmc_power_1v95_max_rms_180ma_peak_280ma = 8 , emmc_power_1v95_max_rms_200ma_peak_300ma = 9 , emmc_power_1v95_max_rms_250ma_peak_350ma = 10 , emmc_power_1v95_max_rms_300ma_peak_400ma = 11 ,
  emmc_power_1v95_max_rms_350ma_peak_450ma = 12 , emmc_power_1v95_max_rms_400ma_peak_500ma = 13 , emmc_power_1v95_max_rms_500ma_peak_600ma = 14 , emmc_power_1v95_max_rms_gt500ma_peak_gt600ma = 15
}
 
enum  emmc_bus_mode_t {
  emmc_bus_mode_x1_sdr = 0 , emmc_bus_mode_x4_sdr = 1 , emmc_bus_mode_x8_sdr = 2 , emmc_bus_mode_x4_ddr = 5 ,
  emmc_bus_mode_x8_ddr = 6 , emmc_bus_mode_x8_ddr_ds = 0x86
}
 
enum  emmc_write_protection_mode_t { emmc_write_protection_mode_legacy = 0 , emmc_write_protection_mode_secure = 1 }
 
enum  emmc_boot_partition_mode_t { emmc_boot_partition_mode_not_enabled = 0 , emmc_boot_partition_mode_boot_partition1 = 1 , emmc_boot_partition_mode_boot_partition2 = 2 , emmc_boot_partition_mode_user_area = 7 }
 
enum  emmc_partition_access_t {
  emmc_partition_access_boot_partition_disabled = 0 , emmc_partition_access_read_or_write_boot_partition1 = 1 , emmc_partition_access_read_or_write_boot_partition2 = 2 , emmc_partition_access_read_or_write_rpmb = 3 ,
  emmc_partition_access_access_to_gp_partition1 = 4 , emmc_partition_access_access_to_gp_partition2 = 5 , emmc_partition_access_access_to_gp_partition3 = 6 , emmc_partition_access_access_to_gp_partition4 = 7
}
 
enum  emmc_boot_mode_t { emmc_boot_mode_sdr_legacy = 0 , emmc_boot_mode_sdr_high_speed_timing , emmc_boot_mode_ddr }
 
enum  emmc_idle_option_t { emmc_idle_option_go_idle_state = 0 , emmc_idle_option_go_pre_idle_state = 0xF0F0F0F0U , emmc_idle_option_boot_initialization = 0xFFFFFFFAU }
 
enum  emmc_erase_option_t { emmc_erase_option_erase = 0 , emmc_erase_option_trim = 1 , emmc_erase_option_discard = 2 }
 
enum  emmc_boot_partition_enable_option_t { boot_partition_enable_option_not_enabled = 0 , boot_partition_enable_option_boot_partition1 = 1 , boot_partition_enable_option_boot_partition2 = 2 , boot_partition_enable_option_user_area = 7 }
 
enum  emmc_partition_access_option_t {
  partition_access_option_no_access_to_boot_partition = 0 , partition_access_option_read_write_boot_partition1 = 1 , partition_access_option_read_write_boot_partition2 = 2 , partition_access_option_read_write_rpmb = 3 ,
  partition_access_option_access_to_gp_partition1 = 4 , partition_access_option_access_to_gp_partition2 = 5 , partition_access_option_access_to_gp_partition3 = 6 , partition_access_option_access_to_gp_partition4 = 7
}
 
enum  sdmmc_buswidth_t { sdmmc_bus_width_1bit = 0 , sdmmc_bus_width_4bit = 1 , sdmmc_bus_width_8bit = 2 }
 SD/MMC Bus Width definitions. More...
 
enum  sdmmc_dev_type_t { sdmmc_dev_type_emmc = 0 , sdmmc_dev_type_sd = 1 , sdmmc_dev_type_sdio = 2 }
 SD/MMC Device Type definitions. More...
 
enum  sdmmc_card_detection_mode_t { sdmmc_host_card_detection_none = 0 , sdmmc_host_card_detection_via_gpio = 1 , sdmmc_host_card_detection_via_sdxc = 2 }
 SD/MMC Host Card Detection Modes. More...
 
enum  hpm_sdmmc_io_volt_t { hpm_sdmmc_io_voltage_3v3 = 0 , hpm_sdmmc_io_voltage_1v8 = 1 }
 SDMMC IO Voltage. More...
 
enum  hpm_sdmmc_operation_mode_t { hpm_sdmmc_operation_mode_inactive = 0 , hpm_sdmmc_operation_mode_identification = 1 , hpm_sdmmc_operation_mode_transfer = 2 , hpm_sdmmc_operation_mode_interrupt = 3 }
 SDMMC Operation mode. More...
 
enum  sdmmc_speed_mode_t {
  sdmmc_sd_speed_normal = 0 , sdmmc_sd_speed_high = 1 , sdmmc_sd_speed_sdr12 = sdmmc_sd_speed_normal , sdmmc_sd_speed_sdr25 = sdmmc_sd_speed_high ,
  sdmmc_sd_speed_sdr50 = 2 , sdmmc_sd_speed_sdr104 = 3 , sdmmc_sd_speed_ddr50 = 4 , sdmmc_emmc_speed_legacy = 0 ,
  sdmmc_emmc_speed_high_speed_sdr = 1 , sdmmc_emmc_speed_hs200 = 3 , sdmmc_emmc_speed_high_speed_ddr = 4 , sdmmc_emmc_speed_hs400 = 7
}
 SD/MMC Speed definitions. More...
 
enum  hpm_sdmmc_power_option_t { hpm_sdmmc_power_off = 0 , hpm_sdmmc_power_up = 1 , hpm_sdmmc_power_on = 2 }
 
enum  sd_timing_mode_t {
  sd_timing_sdr12_default = 0 , sd_timing_sdr25_highspeed = 1 , sd_timing_sdr50 = 2 , sd_timing_sdr104 = 3 ,
  sd_timing_ddr50 = 4
}
 
enum  sd_drive_strength_t { sd_drive_strength_type_b = 0 , sd_drive_strength_type_a = 1 , sd_drive_strength_type_c = 2 , sd_drive_strength_type_d = 3 }
 
enum  sd_max_current_t { sd_current_limit_200ma , sd_current_limit_400ma , sd_current_limit_600ma , sd_current_limit_800ma }
 
enum  { sd_switch_function_group_access_mode = 1 , sd_switch_function_group_command_system = 2 , sd_switch_function_group_drive_strength = 3 , sd_switch_function_group_power_limit = 4 }
 
enum  { sd_switch_function_mode_check = 0 , sd_switch_function_mode_set = 1 }
 

Functions

hpm_stat_t sdmmc_go_idle_state (sdmmc_host_t *host, uint32_t argument)
 Switch device to Idle state. More...
 
hpm_stat_t sdmmc_go_inactive_state (sdmmc_host_t *host, uint16_t relative_addr)
 Switch device to Inactive state. More...
 
hpm_stat_t sdmmc_select_card (sdmmc_host_t *host, uint16_t relative_addr, bool is_selected)
 Select/De-select the device. More...
 
hpm_stat_t sdmmc_send_application_command (sdmmc_host_t *host, uint16_t relative_addr)
 Send Application Command. More...
 
hpm_stat_t sdmmc_set_block_count (sdmmc_host_t *host, uint32_t block_count)
 Set block count. More...
 
hpm_stat_t sdmmc_set_block_size (sdmmc_host_t *host, uint32_t block_size)
 Set Block size. More...
 
hpm_stat_t sdmmc_enable_auto_tuning (const sdmmc_host_t *host)
 Enable Auto Tuning mode. More...
 
uint32_t extract_csd_field (const uint32_t *raw_csd, uint8_t end_offset, uint8_t start_offset)
 Extract Fields from raw CSD data. More...
 
uint32_t sdmmc_get_sys_addr (const sdmmc_host_t *host, uint32_t addr)
 Get System address. More...
 
hpm_stat_t emmc_init (emmc_card_t *card)
 Initialize eMMC device, include both host and the device. More...
 
void emmc_deinit (emmc_card_t *card)
 De-Initialize eMMC device. More...
 
hpm_stat_t emmc_card_init (emmc_card_t *card)
 Initialize eMMC device. More...
 
hpm_stat_t emmc_send_cid (emmc_card_t *card)
 Request eMMC device to send CID to Host. More...
 
hpm_stat_t emmc_probe_device (emmc_card_t *card)
 Probe eMMC device. More...
 
hpm_stat_t emmc_select_card (const emmc_card_t *card, bool is_selected)
 Select eMMC device. More...
 
hpm_stat_t emmc_go_idle (emmc_card_t *card, emmc_idle_option_t option)
 Go to Idle mode. More...
 
hpm_stat_t emmc_switch_function (const emmc_card_t *card, emmc_switch_cmd_arg_t arg, uint32_t timeout_us)
 Switch eMMC function. More...
 
hpm_stat_t emmc_configure_partition (const emmc_card_t *card, emmc_config_partition_option_t option)
 Configure eMMC Partition. More...
 
hpm_stat_t emmc_enable_high_density_erase_group (emmc_card_t *card, bool enable)
 Enable High Density Erase group. More...
 
hpm_stat_t emmc_program_csd (emmc_card_t *card, const uint32_t *raw_csd)
 Program CSD register. More...
 
hpm_stat_t emmc_read_blocks (emmc_card_t *card, uint8_t *buffer, uint32_t start_block, uint32_t block_count)
 Read eMMC blocks. More...
 
hpm_stat_t emmc_write_blocks (emmc_card_t *card, const uint8_t *buffer, uint32_t start_block, uint32_t block_count)
 Write eMMC blocks. More...
 
hpm_stat_t emmc_erase_blocks (emmc_card_t *card, uint32_t start_block, uint32_t block_count, emmc_erase_option_t option)
 Erase eMMC Blocks. More...
 
hpm_stat_t emmc_enter_sleep_mode (const emmc_card_t *card)
 Switch eMMC device into sleep mode. More...
 
hpm_stat_t emmc_exit_sleep_mode (const emmc_card_t *card)
 Switch eMMC device into standby mode. More...
 
hpm_stat_t sdmmchost_init (sdmmc_host_t *host)
 SDMMC Host Initialization. More...
 
void sdmmchost_set_card_bus_width (sdmmc_host_t *host, sdmmc_buswidth_t bus_width)
 Set the card bus width. More...
 
uint32_t sdmmchost_set_card_clock (sdmmc_host_t *host, uint32_t freq, bool clock_inverse)
 Set the Card clock. More...
 
void sdmmchost_deinit (sdmmc_host_t *host)
 Deinitialize the host. More...
 
void sdmmchost_reset (const sdmmc_host_t *host)
 Reset the host. More...
 
void sdmmchost_wait_card_active (const sdmmc_host_t *host)
 Wait until the card is active. More...
 
hpm_stat_t sdmmchost_send_command (sdmmc_host_t *host, const sdmmchost_cmd_t *cmd)
 Send command via the host. More...
 
hpm_stat_t sdmmchost_transfer (sdmmc_host_t *host, const sdmmchost_xfer_t *content)
 Transfer data via the host. More...
 
bool sdmmchost_is_card_detected (const sdmmc_host_t *host)
 Check whether the card is detected or not. More...
 
void sdmmchost_init_io (sdmmc_host_t *host, hpm_sdmmc_operation_mode_t operation_mode)
 Initialize the Host IO according to the operation mode. More...
 
void sdmmchost_delay_ms (const sdmmc_host_t *host, uint32_t ms)
 Host delay. More...
 
hpm_stat_t sdmmchost_switch_to_1v8 (sdmmc_host_t *host)
 Switch the Host to 1.8V IO voltage. More...
 
void sdmmchost_vsel_pin_control (const sdmmc_host_t *host, hpm_sdmmc_io_volt_t io_volt)
 Control the Voltage selection pin. More...
 
void sdmmchost_enable_emmc_support (const sdmmc_host_t *host, bool enable)
 Enable the eMMC support on the host. More...
 
hpm_stat_t sdmmchost_set_speed_mode (const sdmmc_host_t *host, sdmmc_speed_mode_t speed_mode)
 Set the speed mode via the Host. More...
 
hpm_stat_t sdmmchost_error_recovery (sdmmc_host_t *host, sdmmchost_cmd_t *cmd)
 Trigger the Error recovery via the Host. More...
 
bool sdmmchost_is_voltage_switch_supported (const sdmmc_host_t *host)
 Check whether the host support voltage switch. More...
 
void sdmmchost_enable_enhanced_data_strobe (const sdmmc_host_t *host, bool enable)
 Enable the enhanced data strboe. More...
 
void sdmmchost_set_data_strobe_delay (const sdmmc_host_t *host)
 Set the Data strobe delay for Host. More...
 
void sdmmchost_select_voltage (sdmmc_host_t *host, hpm_sdmmc_io_volt_t io_volt)
 Select the IO voltage. More...
 
void sdmmchost_set_cardclk_delay_chain (const sdmmc_host_t *host)
 Set the Card clock delay chain for the host. More...
 
void sdmmchost_set_rxclk_delay_chain (sdmmc_host_t *host)
 Set the Card Rx Clock delay chain for the host. More...
 
void sdmmchost_irq_handler (sdmmc_host_t *host)
 THe Host IRQ Handler. More...
 
void sdmmchost_register_sdio_callback (sdmmc_host_t *host, void(*sdio_irq_callback)(void *param), void *param)
 Registers an SDIO interrupt callback function for the SDMMC host controller. More...
 
void sdmmchost_enable_sdio_interrupt (sdmmc_host_t *host, bool enable)
 Enable or disable SDIO interrupt on the SDMMC host controller. More...
 
uint32_t sdmmchost_get_data_pin_level (sdmmc_host_t *host)
 Return the data pin level. More...
 
void hpm_sdmmc_osal_delay (void *ctx, uint32_t ms)
 Delay in milliseconds. More...
 
hpm_sdmmc_osal_event_t hpm_sdmmc_osal_event_create (void *ctx)
 Create Event. More...
 
hpm_stat_t hpm_sdmmc_osal_event_delete (void *ctx, hpm_sdmmc_osal_event_t event)
 Delete an event. More...
 
hpm_stat_t hpm_sdmmc_osal_event_wait (void *ctx, hpm_sdmmc_osal_event_t event, uint32_t flags, uint32_t timeout)
 Wait specified event flags. More...
 
void hpm_sdmmc_osal_event_set (void *ctx, hpm_sdmmc_osal_event_t event, uint32_t flags)
 Set specified event flags. More...
 
void hpm_sdmmc_osal_event_clear (void *ctx, hpm_sdmmc_osal_event_t event, uint32_t flags)
 Clear specified event flags. More...
 
void hpm_sdmmc_osal_enter_critical (void *ctx)
 Enter critical section. More...
 
void hpm_sdmmc_osal_exit_critical (void *ctx)
 Exit critical section. More...
 
hpm_stat_t sd_init (sd_card_t *card)
 Initialize SD device. More...
 
void sd_deinit (const sd_card_t *card)
 De-Initialize SD device. More...
 
hpm_stat_t sd_card_init (sd_card_t *card)
 Initialize SD card. More...
 
void sd_card_deinit (sd_card_t *card)
 De-Initialize SD card. More...
 
hpm_stat_t sd_host_init (sd_card_t *card)
 Initialize SD Host. More...
 
hpm_stat_t sd_host_deinit (sd_card_t *card)
 De-Initialize SD Host. More...
 
bool sd_is_card_present (const sd_card_t *card)
 Check whether the SD card is present. More...
 
hpm_stat_t sd_select_card (const sd_card_t *card, bool is_selected)
 Select/Deselect SD card. More...
 
hpm_stat_t sd_read_status (sd_card_t *card)
 Read SD card status. More...
 
hpm_stat_t sd_read_blocks (sd_card_t *card, uint8_t *buffer, uint32_t start_block, uint32_t block_count)
 Read data from specified SD block. More...
 
hpm_stat_t sd_write_blocks (sd_card_t *card, const uint8_t *buffer, uint32_t start_block, uint32_t block_count)
 Write data to specified SD block. More...
 
hpm_stat_t sd_erase_blocks (sd_card_t *card, uint32_t start_block, uint32_t block_count)
 Erase specified SD ranges. More...
 
hpm_stat_t sd_set_driver_strength (sd_card_t *card, sd_drive_strength_t driver_strength)
 Set the driver strength for SD card. More...
 
hpm_stat_t sd_set_max_current (sd_card_t *card, sd_max_current_t max_current)
 Set the maximum current for SD card. More...
 
hpm_stat_t sd_polling_card_status_busy (sd_card_t *card, uint32_t timeout_ms)
 Polling SD card status busy. More...
 
static uint32_t sdio_cis_csr_addr (const uint8_t *reg_ptr)
 Get the CIS register address from raw register value. More...
 
hpm_stat_t sdio_init (sdio_card_t *card)
 Initialize SDIO device. More...
 
void sdio_deinit (sdio_card_t *card)
 De-initialize SDIO device. More...
 
hpm_stat_t sdio_card_init (sdio_card_t *card)
 Initialize SDIO card. More...
 
hpm_stat_t sdio_card_deinit (sdio_card_t *card)
 De-Initialize SDIO card. More...
 
hpm_stat_t sdio_host_init (sdio_card_t *card)
 Initialize SDIO host. More...
 
hpm_stat_t sdio_host_deinit (sdio_card_t *card)
 De-initialize SDIO host. More...
 
hpm_stat_t sdio_io_rw_direct (sdio_card_t *card, bool write, uint32_t func_idx, uint32_t reg_addr, uint8_t *pdata, bool read_after_write)
 Execute SDIO_IO_RW_DIRECT command (CMD52) More...
 
hpm_stat_t sdio_set_block_size (sdio_card_t *card, uint32_t func_idx, uint32_t block_size)
 Set the Block size for specified Function. More...
 
hpm_stat_t sdio_io_rw_extend (sdio_card_t *card, bool write, uint32_t func_idx, uint32_t reg_addr, uint32_t op_code, uint8_t *pbuf, uint32_t blocks, uint32_t block_size)
 Execute SDIO_IO_RW_EXTEND command (CMD53) More...
 
hpm_stat_t sdio_io_write_multi_bytes_to_fifo (sdio_card_t *card, uint32_t func_idx, uint32_t reg_addr, uint8_t *pbuf, uint32_t length)
 Write multiple bytes to the FIFO address for specified SDIO Function. More...
 
hpm_stat_t sdio_io_read_multi_bytes_from_fifo (sdio_card_t *card, uint32_t func_idx, uint32_t reg_addr, uint8_t *pbuf, uint32_t length)
 Read multiple bytes from the FIFO address for specified SDIO Function. More...
 
hpm_stat_t sdio_io_write_incr_multi_bytes (sdio_card_t *card, uint32_t func_idx, uint32_t reg_addr, uint8_t *pbuf, uint32_t length)
 Write multiple bytes to the address for specified SDIO Function. More...
 
hpm_stat_t sdio_io_read_incr_multi_bytes (sdio_card_t *card, uint32_t func_idx, uint32_t reg_addr, uint8_t *pbuf, uint32_t length)
 Read multiple bytes from the address for specified SDIO Function. More...
 
hpm_stat_t sdio_io_read_byte (sdio_card_t *card, uint32_t func_idx, uint32_t reg_addr, uint8_t *pdata)
 Read 1 byte from the address for specified SDIO Function. More...
 
hpm_stat_t sdio_io_write_byte (sdio_card_t *card, uint32_t func_idx, uint32_t reg_addr, uint8_t byte_data)
 Write 1 byte to the address for specified SDIO Function. More...
 
const char * sdio_get_func_if_code_str (uint8_t std_func_if_code)
 Get the string for specified function interface code. More...
 
hpm_stat_t sdio_read_fbr (sdio_card_t *card, uint32_t func_idx, sdio_fbr_t *fbr)
 Read the specified Function Basic Register. More...
 
hpm_stat_t sdio_read_cis (sdio_card_t *card, uint32_t cis_ptr, sdio_cis_t *cis, bool keep_tpl_raw_data)
 Read Card Information Structure (CIS) More...
 
hpm_stat_t sdio_get_max_transfer_speed (sdio_card_t *card)
 Get the maximum transfer speed. More...
 
hpm_stat_t sdio_init_funcs (sdio_card_t *card)
 Initialize SDIO functions. More...
 
hpm_stat_t sdio_deinit_funcs (sdio_card_t *card)
 De-Initialize SDIO functions. More...
 
hpm_stat_t sdio_enable_interrupt (sdio_card_t *card)
 Enables SDIO interrupts for the specified card. More...
 
hpm_stat_t sdio_disable_interrupt (sdio_card_t *card)
 Disables SDIO interrupts for the specified card. More...
 
hpm_stat_t sdio_register_irq_callback (sdio_card_t *card, void(*sdio_irq_callback)(void *param), void *sdio_irq_param)
 Registers an interrupt callback function for an SDIO card. More...
 
hpm_stat_t board_init_sd_host_params (sdmmc_host_t *host, SDMMCHOST_Type *base)
 Initialize board-level SD Host parameters. More...
 
hpm_stat_t board_init_emmc_host_params (sdmmc_host_t *host, SDMMCHOST_Type *base)
 Initialize board-level eMMC Host parameters. More...
 
hpm_stat_t board_init_sdio_host_params (sdmmc_host_t *host, SDMMCHOST_Type *base)
 Initialize board-level SDIO Host parameters. More...
 

Variables

uint32_t sdio_cmd5_arg_t::value
 
uint32_t   sdio_cmd5_arg_t::volt_2p0_2p1: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p1_2p2: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p2_2p3: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p3_2p4: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p4_2p5: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p5_2p6: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p6_2p7: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p7_2p8: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p8_2p9: 1
 
uint32_t   sdio_cmd5_arg_t::volt_2p9_3p0: 1
 
uint32_t   sdio_cmd5_arg_t::volt_3p0_3p1: 1
 
uint32_t   sdio_cmd5_arg_t::volt_3p1_3p2: 1
 
uint32_t   sdio_cmd5_arg_t::volt_3p2_3p3: 1
 
uint32_t   sdio_cmd5_arg_t::volt_3p3_3p4: 1
 
uint32_t   sdio_cmd5_arg_t::volt_3p4_3p5: 1
 
uint32_t   sdio_cmd5_arg_t::volt_3p5_3p6: 1
 
uint32_t   sdio_cmd5_arg_t::s18r: 1
 
struct {
   uint32_t   sdio_cmd5_arg_t::volt_2p0_2p1: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p1_2p2: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p2_2p3: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p3_2p4: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p4_2p5: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p5_2p6: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p6_2p7: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p7_2p8: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p8_2p9: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_2p9_3p0: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_3p0_3p1: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_3p1_3p2: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_3p2_3p3: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_3p3_3p4: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_3p4_3p5: 1
 
   uint32_t   sdio_cmd5_arg_t::volt_3p5_3p6: 1
 
   uint32_t   sdio_cmd5_arg_t::s18r: 1
 
}; 
 
uint32_t sdio_cmd5_resp_t::value
 
uint32_t   sdio_cmd5_resp_t::volt_2p0_2p1: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p1_2p2: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p2_2p3: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p3_2p4: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p4_2p5: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p5_2p6: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p6_2p7: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p7_2p8: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p8_2p9: 1
 
uint32_t   sdio_cmd5_resp_t::volt_2p9_3p0: 1
 
uint32_t   sdio_cmd5_resp_t::volt_3p0_3p1: 1
 
uint32_t   sdio_cmd5_resp_t::volt_3p1_3p2: 1
 
uint32_t   sdio_cmd5_resp_t::volt_3p2_3p3: 1
 
uint32_t   sdio_cmd5_resp_t::volt_3p3_3p4: 1
 
uint32_t   sdio_cmd5_resp_t::volt_3p4_3p5: 1
 
uint32_t   sdio_cmd5_resp_t::volt_3p5_3p6: 1
 
uint32_t   sdio_cmd5_resp_t::s18r: 1
 
uint32_t   sdio_cmd5_resp_t::memory_present: 1
 
uint32_t   sdio_cmd5_resp_t::num_func: 3
 
uint32_t   sdio_cmd5_resp_t::ready: 1
 
struct {
   uint32_t   sdio_cmd5_resp_t::volt_2p0_2p1: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p1_2p2: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p2_2p3: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p3_2p4: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p4_2p5: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p5_2p6: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p6_2p7: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p7_2p8: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p8_2p9: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_2p9_3p0: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_3p0_3p1: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_3p1_3p2: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_3p2_3p3: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_3p3_3p4: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_3p4_3p5: 1
 
   uint32_t   sdio_cmd5_resp_t::volt_3p5_3p6: 1
 
   uint32_t   sdio_cmd5_resp_t::s18r: 1
 
   uint32_t   sdio_cmd5_resp_t::memory_present: 1
 
   uint32_t   sdio_cmd5_resp_t::num_func: 3
 
   uint32_t   sdio_cmd5_resp_t::ready: 1
 
}; 
 
uint32_t sdio_resp_r5_t::value
 
uint8_t   sdio_resp_r5_t::rw_data
 
uint8_t   sdio_resp_r5_t::err_out_of_range: 1
 
uint8_t   sdio_resp_r5_t::err_num_func: 1
 
uint8_t   sdio_resp_r5_t::err_general: 1
 
uint8_t   sdio_resp_r5_t::io_current_state: 2
 
uint8_t   sdio_resp_r5_t::err_illegal_cmd: 1
 
uint8_t   sdio_resp_r5_t::err_com_crc: 1
 
uint8_t   sdio_resp_r5_t::stuff [2]
 
struct {
   uint8_t   sdio_resp_r5_t::rw_data
 
   uint8_t   sdio_resp_r5_t::err_out_of_range: 1
 
   uint8_t   sdio_resp_r5_t::err_num_func: 1
 
   uint8_t   sdio_resp_r5_t::err_general: 1
 
   uint8_t   sdio_resp_r5_t::io_current_state: 2
 
   uint8_t   sdio_resp_r5_t::err_illegal_cmd: 1
 
   uint8_t   sdio_resp_r5_t::err_com_crc: 1
 
   uint8_t   sdio_resp_r5_t::stuff [2]
 
}; 
 
uint32_t sdio_cmd52_arg_t::value
 
uint32_t   sdio_cmd52_arg_t::wr_data: 8
 
uint32_t   sdio_cmd52_arg_t::reg_addr: 17
 
uint32_t   sdio_cmd52_arg_t::read_afer_write: 1
 
uint32_t   sdio_cmd52_arg_t::func_num: 3
 
uint32_t   sdio_cmd52_arg_t::write: 1
 
struct {
   uint32_t   sdio_cmd52_arg_t::wr_data: 8
 
   uint32_t   sdio_cmd52_arg_t::reg_addr: 17
 
   uint32_t   sdio_cmd52_arg_t::read_afer_write: 1
 
   uint32_t   sdio_cmd52_arg_t::func_num: 3
 
   uint32_t   sdio_cmd52_arg_t::write: 1
 
}; 
 
uint32_t sdio_cmd53_arg_t::value
 
uint32_t   sdio_cmd53_arg_t::count: 9
 
uint32_t   sdio_cmd53_arg_t::reg_addr: 17
 
uint32_t   sdio_cmd53_arg_t::op_code: 1
 
uint32_t   sdio_cmd53_arg_t::block_mode: 1
 
uint32_t   sdio_cmd53_arg_t::func_num: 3
 
uint32_t   sdio_cmd53_arg_t::rw_flag: 1
 
struct {
   uint32_t   sdio_cmd53_arg_t::count: 9
 
   uint32_t   sdio_cmd53_arg_t::reg_addr: 17
 
   uint32_t   sdio_cmd53_arg_t::op_code: 1
 
   uint32_t   sdio_cmd53_arg_t::block_mode: 1
 
   uint32_t   sdio_cmd53_arg_t::func_num: 3
 
   uint32_t   sdio_cmd53_arg_t::rw_flag: 1
 
}; 
 
uint8_t   sdio_cccr_t::sdio_version
 
uint8_t   sdio_cccr_t::cccr_rev: 4
 
uint8_t   sdio_cccr_t::sdio_rev: 4
 
struct {
   uint8_t   sdio_cccr_t::cccr_rev: 4
 
   uint8_t   sdio_cccr_t::sdio_rev: 4
 
 
union {
   uint8_t   sdio_cccr_t::sdio_version
 
   struct {
      uint8_t   sdio_cccr_t::cccr_rev: 4
 
      uint8_t   sdio_cccr_t::sdio_rev: 4
 
   } 
 
}; 
 
uint8_t sdio_cccr_t::sd_version
 
uint8_t sdio_cccr_t::io_enable
 
uint8_t sdio_cccr_t::io_ready
 
uint8_t sdio_cccr_t::int_enable
 
uint8_t sdio_cccr_t::int_pending
 
uint8_t   sdio_cccr_t::io_abort
 
uint8_t   sdio_cccr_t::abort_select: 3
 
uint8_t   sdio_cccr_t::reset: 1
 
struct {
   uint8_t   sdio_cccr_t::abort_select: 3
 
   uint8_t   sdio_cccr_t::reset: 1
 
 
union {
   uint8_t   sdio_cccr_t::io_abort
 
   struct {
      uint8_t   sdio_cccr_t::abort_select: 3
 
      uint8_t   sdio_cccr_t::reset: 1
 
   } 
 
}; 
 
uint8_t   sdio_cccr_t::bus_if_ctrl
 
uint8_t   sdio_cccr_t::bus_width: 2
 
uint8_t   sdio_cccr_t::support_8bit: 1
 
uint8_t   sdio_cccr_t::cd_disable: 1
 
struct {
   uint8_t   sdio_cccr_t::bus_width: 2
 
   uint8_t   sdio_cccr_t::support_8bit: 1
 
   uint8_t   sdio_cccr_t::cd_disable: 1
 
 
union {
   uint8_t   sdio_cccr_t::bus_if_ctrl
 
   struct {
      uint8_t   sdio_cccr_t::bus_width: 2
 
      uint8_t   sdio_cccr_t::support_8bit: 1
 
      uint8_t   sdio_cccr_t::cd_disable: 1
 
   } 
 
}; 
 
uint8_t   sdio_cccr_t::card_capability
 
uint8_t   sdio_cccr_t::support_cmd52: 1
 
uint8_t   sdio_cccr_t::support_multi_block_transfer: 1
 
uint8_t   sdio_cccr_t::support_read_wait: 1
 
uint8_t   sdio_cccr_t::support_bus_control: 1
 
uint8_t   sdio_cccr_t::support_block_gap_interrupt: 1
 
uint8_t   sdio_cccr_t::enable_block_gap_interrupt: 1
 
uint8_t   sdio_cccr_t::low_speed_card: 1
 
uint8_t   sdio_cccr_t::low_speed_card_4bit_mode: 1
 
struct {
   uint8_t   sdio_cccr_t::support_cmd52: 1
 
   uint8_t   sdio_cccr_t::support_multi_block_transfer: 1
 
   uint8_t   sdio_cccr_t::support_read_wait: 1
 
   uint8_t   sdio_cccr_t::support_bus_control: 1
 
   uint8_t   sdio_cccr_t::support_block_gap_interrupt: 1
 
   uint8_t   sdio_cccr_t::enable_block_gap_interrupt: 1
 
   uint8_t   sdio_cccr_t::low_speed_card: 1
 
   uint8_t   sdio_cccr_t::low_speed_card_4bit_mode: 1
 
 
union {
   uint8_t   sdio_cccr_t::card_capability
 
   struct {
      uint8_t   sdio_cccr_t::support_cmd52: 1
 
      uint8_t   sdio_cccr_t::support_multi_block_transfer: 1
 
      uint8_t   sdio_cccr_t::support_read_wait: 1
 
      uint8_t   sdio_cccr_t::support_bus_control: 1
 
      uint8_t   sdio_cccr_t::support_block_gap_interrupt: 1
 
      uint8_t   sdio_cccr_t::enable_block_gap_interrupt: 1
 
      uint8_t   sdio_cccr_t::low_speed_card: 1
 
      uint8_t   sdio_cccr_t::low_speed_card_4bit_mode: 1
 
   } 
 
}; 
 
uint8_t sdio_cccr_t::common_cis_pointer [3]
 
uint8_t   sdio_cccr_t::bus_suspend
 
uint8_t   sdio_cccr_t::bus_status: 1
 
uint8_t   sdio_cccr_t::bus_release_req: 1
 
struct {
   uint8_t   sdio_cccr_t::bus_status: 1
 
   uint8_t   sdio_cccr_t::bus_release_req: 1
 
 
union {
   uint8_t   sdio_cccr_t::bus_suspend
 
   struct {
      uint8_t   sdio_cccr_t::bus_status: 1
 
      uint8_t   sdio_cccr_t::bus_release_req: 1
 
   } 
 
}; 
 
uint8_t sdio_cccr_t::function_select
 
uint8_t sdio_cccr_t::exec_flags
 
uint8_t sdio_cccr_t::ready_flags
 
uint8_t sdio_cccr_t::fn0_block_size [2]
 
uint8_t   sdio_cccr_t::power_control
 
uint8_t   sdio_cccr_t::support_master_pwr_ctrl: 1
 
uint8_t   sdio_cccr_t::enable_master_pwr_ctrl: 1
 
struct {
   uint8_t   sdio_cccr_t::support_master_pwr_ctrl: 1
 
   uint8_t   sdio_cccr_t::enable_master_pwr_ctrl: 1
 
 
union {
   uint8_t   sdio_cccr_t::power_control
 
   struct {
      uint8_t   sdio_cccr_t::support_master_pwr_ctrl: 1
 
      uint8_t   sdio_cccr_t::enable_master_pwr_ctrl: 1
 
   } 
 
}; 
 
uint8_t   sdio_cccr_t::bus_speed_select
 
uint8_t   sdio_cccr_t::support_highspeed: 1
 
uint8_t   sdio_cccr_t::bus_speed_sel: 3
 
struct {
   uint8_t   sdio_cccr_t::support_highspeed: 1
 
   uint8_t   sdio_cccr_t::bus_speed_sel: 3
 
 
union {
   uint8_t   sdio_cccr_t::bus_speed_select
 
   struct {
      uint8_t   sdio_cccr_t::support_highspeed: 1
 
      uint8_t   sdio_cccr_t::bus_speed_sel: 3
 
   } 
 
}; 
 
uint8_t   sdio_cccr_t::uhs1_support
 
uint8_t   sdio_cccr_t::support_sdr50: 1
 
uint8_t   sdio_cccr_t::support_sdr104: 1
 
uint8_t   sdio_cccr_t::support_ddr50: 1
 
struct {
   uint8_t   sdio_cccr_t::support_sdr50: 1
 
   uint8_t   sdio_cccr_t::support_sdr104: 1
 
   uint8_t   sdio_cccr_t::support_ddr50: 1
 
 
union {
   uint8_t   sdio_cccr_t::uhs1_support
 
   struct {
      uint8_t   sdio_cccr_t::support_sdr50: 1
 
      uint8_t   sdio_cccr_t::support_sdr104: 1
 
      uint8_t   sdio_cccr_t::support_ddr50: 1
 
   } 
 
}; 
 
uint8_t   sdio_cccr_t::driver_strength
 
union {
   uint8_t   sdio_cccr_t::driver_strength
 
}; 
 
uint8_t   sdio_cccr_t::interrupt_extension
 
union {
   uint8_t   sdio_cccr_t::interrupt_extension
 
}; 
 
uint8_t sdio_fbr_t::std_sdio_func_if_code: 4
 
uint8_t sdio_fbr_t::support_csa: 1
 
uint8_t sdio_fbr_t::csa_enable: 1
 
uint8_t sdio_fbr_t::ext_std_sdio_func_if_code
 
uint8_t sdio_fbr_t::support_pwr_sel: 1
 
uint8_t sdio_fbr_t::enable_pwr_sel: 1
 
uint8_t sdio_fbr_t::pwr_sel: 4
 
uint8_t sdio_fbr_t::std_isdio_func_if_code
 
uint16_t sdio_fbr_t::sda_mid_manf
 
uint16_t sdio_fbr_t::mid_card
 
uint8_t sdio_fbr_t::isdio_type_support_code
 
uint8_t sdio_fbr_t::cis_ptr [3]
 
uint8_t sdio_fbr_t::csa_ptr [3]
 
uint8_t sdio_fbr_t::data_acc_win_to_csa
 
uint16_t sdio_fbr_t::io_blk_size
 
struct sdio_tpl_blocksdio_tpl_block::next
 
uint8_t sdio_tpl_block::tpl_code
 
uint8_t sdio_tpl_block::tpl_size
 
uint8_t * sdio_tpl_block::tpl_data
 
sdio_tpl_blk_t sdio_common_cis_t::tpl_link
 
uint8_t   ATTR_PACKED::func_info
 
uint8_t   ATTR_PACKED::support_wakeup: 1
 
struct {
   uint8_t   ATTR_PACKED::support_wakeup: 1
 
 
union {
   uint8_t   ATTR_PACKED::func_info
 
   struct {
      uint8_t   ATTR_PACKED::support_wakeup: 1
 
   } 
 
}; 
 
uint8_t ATTR_PACKED::std_io_rev
 
uint32_t ATTR_PACKED::psn
 
uint32_t ATTR_PACKED::csa_size
 
uint8_t   ATTR_PACKED::csa_property
 
uint8_t   ATTR_PACKED::csa_wp: 1
 
uint8_t   ATTR_PACKED::csa_nf: 1
 
struct {
   uint8_t   ATTR_PACKED::csa_wp: 1
 
   uint8_t   ATTR_PACKED::csa_nf: 1
 
 
union {
   uint8_t   ATTR_PACKED::csa_property
 
   struct {
      uint8_t   ATTR_PACKED::csa_wp: 1
 
      uint8_t   ATTR_PACKED::csa_nf: 1
 
   } 
 
}; 
 
uint16_t ATTR_PACKED::max_blk_size
 
uint32_t ATTR_PACKED::ocr
 
uint8_t ATTR_PACKED::op_min_pwr
 
uint8_t ATTR_PACKED::op_avg_pwr
 
uint8_t ATTR_PACKED::op_max_pwr
 
uint8_t ATTR_PACKED::sb_min_pwr
 
uint8_t ATTR_PACKED::sb_avg_pwr
 
uint8_t ATTR_PACKED::sb_max_pwr
 
uint16_t ATTR_PACKED::min_bw
 
uint16_t ATTR_PACKED::opt_bw
 
uint16_t ATTR_PACKED::enable_timeout_val
 
uint16_t ATTR_PACKED::sp_avg_pwr_3v3
 
uint16_t ATTR_PACKED::sp_max_pwr_3v3
 
uint16_t ATTR_PACKED::hp_avg_pwr_3v3
 
uint16_t ATTR_PACKED::hp_max_pwr_3v3
 
uint16_t ATTR_PACKED::lp_avg_pwr_3v3
 
uint16_t ATTR_PACKED::lp_max_pwr_3v3
 
uint16_t   sdio_cis_t::manufacturer
 
uint16_t   sdio_cis_t::product
 
uint16_t   sdio_cis_t::func0_blk_size
 
uint8_t   sdio_cis_t::max_tran_speed
 
struct {
   uint16_t   sdio_cis_t::manufacturer
 
   uint16_t   sdio_cis_t::product
 
   uint16_t   sdio_cis_t::func0_blk_size
 
   uint8_t   sdio_cis_t::max_tran_speed
 
 
uint8_t   sdio_cis_t::std_id
 
uint8_t   sdio_cis_t::std_type
 
bool   sdio_cis_t::support_wakeup
 
uint8_t   sdio_cis_t::std_io_rev
 
uint16_t   sdio_cis_t::max_blk_size
 
uint16_t   sdio_cis_t::timeout_val_in_10ms
 
bool   sdio_cis_t::csa_wp
 
bool   sdio_cis_t::csa_nf
 
uint32_t   sdio_cis_t::serial_num
 
uint32_t   sdio_cis_t::csa_size
 
uint32_t   sdio_cis_t::ocr
 
struct {
   uint8_t   sdio_cis_t::std_id
 
   uint8_t   sdio_cis_t::std_type
 
   bool   sdio_cis_t::support_wakeup
 
   uint8_t   sdio_cis_t::std_io_rev
 
   uint16_t   sdio_cis_t::max_blk_size
 
   uint16_t   sdio_cis_t::timeout_val_in_10ms
 
   bool   sdio_cis_t::csa_wp
 
   bool   sdio_cis_t::csa_nf
 
   uint32_t   sdio_cis_t::serial_num
 
   uint32_t   sdio_cis_t::csa_size
 
   uint32_t   sdio_cis_t::ocr
 
 
union {
   struct {
      uint16_t   sdio_cis_t::manufacturer
 
      uint16_t   sdio_cis_t::product
 
      uint16_t   sdio_cis_t::func0_blk_size
 
      uint8_t   sdio_cis_t::max_tran_speed
 
   } 
 
   struct {
      uint8_t   sdio_cis_t::std_id
 
      uint8_t   sdio_cis_t::std_type
 
      bool   sdio_cis_t::support_wakeup
 
      uint8_t   sdio_cis_t::std_io_rev
 
      uint16_t   sdio_cis_t::max_blk_size
 
      uint16_t   sdio_cis_t::timeout_val_in_10ms
 
      bool   sdio_cis_t::csa_wp
 
      bool   sdio_cis_t::csa_nf
 
      uint32_t   sdio_cis_t::serial_num
 
      uint32_t   sdio_cis_t::csa_size
 
      uint32_t   sdio_cis_t::ocr
 
   } 
 
}; 
 
sdio_tpl_blk_t sdio_cis_t::tpl_link
 
sdio_card_tsdio_func_t::card
 
uint8_t sdio_func_t::func_idx
 
uint32_t sdio_func_t::max_block_size
 
uint32_t sdio_func_t::current_block_size
 
uint8_t sdio_func_t::std_sdio_func_if_code
 
sdio_cis_t sdio_func_t::cis
 
sdio_fbr_t sdio_func_t::fbr
 

Detailed Description

HPM SDMMC common APIs.

HPM SDMMC portable APIs.

HPM SDIO driver APIs.

HPM SDMMC SD driver APIs.

HPM SDMMC OSAL APIs.

HPM SDMMC Host APIs.

HPM SDMMC eMMC driver APIs.

Macro Definition Documentation

◆ CISTPL_ALTSTR

#define CISTPL_ALTSTR   (0x16)

◆ CISTPL_CHECKSUM

#define CISTPL_CHECKSUM   (0x10)

◆ CISTPL_END

#define CISTPL_END   (0xFF)

◆ CISTPL_FUNCE

#define CISTPL_FUNCE   (0x22)

◆ CISTPL_FUNCID

#define CISTPL_FUNCID   (0x21)

◆ CISTPL_MANFID

#define CISTPL_MANFID   (0x20)

◆ CISTPL_NULL

#define CISTPL_NULL   (0)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

CISTPL type definitions.

◆ CISTPL_SDIO_EXT

#define CISTPL_SDIO_EXT   (0x92)

◆ CISTPL_SDIO_STD

#define CISTPL_SDIO_STD   (0x91)

◆ CISTPL_VERS_1

#define CISTPL_VERS_1   (0x15)

◆ EMMC_EXT_CSD_INDEX_BARRIER_CTRL

#define EMMC_EXT_CSD_INDEX_BARRIER_CTRL   (31)

◆ EMMC_EXT_CSD_INDEX_BKOPS_EN

#define EMMC_EXT_CSD_INDEX_BKOPS_EN   (163)

◆ EMMC_EXT_CSD_INDEX_BKOPS_START

#define EMMC_EXT_CSD_INDEX_BKOPS_START   (164)

◆ EMMC_EXT_CSD_INDEX_BOOT_BUS_CONDITIONS

#define EMMC_EXT_CSD_INDEX_BOOT_BUS_CONDITIONS   (177)

◆ EMMC_EXT_CSD_INDEX_BOOT_CONFIG_PROT

#define EMMC_EXT_CSD_INDEX_BOOT_CONFIG_PROT   (178)

◆ EMMC_EXT_CSD_INDEX_BOOT_WP

#define EMMC_EXT_CSD_INDEX_BOOT_WP   (173)

◆ EMMC_EXT_CSD_INDEX_BUS_WDITH

#define EMMC_EXT_CSD_INDEX_BUS_WDITH   (183)

◆ EMMC_EXT_CSD_INDEX_CACHE_CTRL

#define EMMC_EXT_CSD_INDEX_CACHE_CTRL   (33)

◆ EMMC_EXT_CSD_INDEX_CLASS_6_CTRL

#define EMMC_EXT_CSD_INDEX_CLASS_6_CTRL   (59)

◆ EMMC_EXT_CSD_INDEX_CMD_SET

#define EMMC_EXT_CSD_INDEX_CMD_SET   (191)

◆ EMMC_EXT_CSD_INDEX_CMDQ_MODE_EN

#define EMMC_EXT_CSD_INDEX_CMDQ_MODE_EN   (15)

◆ EMMC_EXT_CSD_INDEX_ERASE_GROUP_DEF

#define EMMC_EXT_CSD_INDEX_ERASE_GROUP_DEF   (175)

◆ EMMC_EXT_CSD_INDEX_FLUSH_CACHE

#define EMMC_EXT_CSD_INDEX_FLUSH_CACHE   (32)

◆ EMMC_EXT_CSD_INDEX_FW_CONFIG

#define EMMC_EXT_CSD_INDEX_FW_CONFIG   (169)

◆ EMMC_EXT_CSD_INDEX_HPI_MGMT

#define EMMC_EXT_CSD_INDEX_HPI_MGMT   (161)

◆ EMMC_EXT_CSD_INDEX_HS_TIMING

#define EMMC_EXT_CSD_INDEX_HS_TIMING   (185)

◆ EMMC_EXT_CSD_INDEX_MODE_CONFIG

#define EMMC_EXT_CSD_INDEX_MODE_CONFIG   (30)

◆ EMMC_EXT_CSD_INDEX_PARTITION_CONFIG

#define EMMC_EXT_CSD_INDEX_PARTITION_CONFIG   (179)

◆ EMMC_EXT_CSD_INDEX_PARTITION_SETTING_COMPLETED

#define EMMC_EXT_CSD_INDEX_PARTITION_SETTING_COMPLETED   (155)

◆ EMMC_EXT_CSD_INDEX_PARTITIONS_ATTRIBUTE

#define EMMC_EXT_CSD_INDEX_PARTITIONS_ATTRIBUTE   (156)

◆ EMMC_EXT_CSD_INDEX_PERIODIC_WAKEUP

#define EMMC_EXT_CSD_INDEX_PERIODIC_WAKEUP   (131)

◆ EMMC_EXT_CSD_INDEX_POWER_CLASS

#define EMMC_EXT_CSD_INDEX_POWER_CLASS   (187)

◆ EMMC_EXT_CSD_INDEX_POWER_OFF_NOTIFICATION

#define EMMC_EXT_CSD_INDEX_POWER_OFF_NOTIFICATION   (34)

◆ EMMC_EXT_CSD_INDEX_PRODUCT_STATE_AWARENESS_ENABLEMENT

#define EMMC_EXT_CSD_INDEX_PRODUCT_STATE_AWARENESS_ENABLEMENT   (17)

◆ EMMC_EXT_CSD_INDEX_PRODUCTION_STATE_AWARENESS

#define EMMC_EXT_CSD_INDEX_PRODUCTION_STATE_AWARENESS   (133)

◆ EMMC_EXT_CSD_INDEX_RSTn_FUNCTION

#define EMMC_EXT_CSD_INDEX_RSTn_FUNCTION   (162)

◆ EMMC_EXT_CSD_INDEX_SANITIZE_START

#define EMMC_EXT_CSD_INDEX_SANITIZE_START   (165)

◆ EMMC_EXT_CSD_INDEX_SEC_BAD_BLK_MGMNT

#define EMMC_EXT_CSD_INDEX_SEC_BAD_BLK_MGMNT   (134)

◆ EMMC_EXT_CSD_INDEX_SECURE_REMOVAL_TYPE

#define EMMC_EXT_CSD_INDEX_SECURE_REMOVAL_TYPE   (16)

◆ EMMC_EXT_CSD_INDEX_USE_NATIVE_SECTOR

#define EMMC_EXT_CSD_INDEX_USE_NATIVE_SECTOR   (62)

◆ EMMC_EXT_CSD_INDEX_USER_WP

#define EMMC_EXT_CSD_INDEX_USER_WP   (171)

◆ EMMC_EXT_CSD_INDEX_WR_REL_SET

#define EMMC_EXT_CSD_INDEX_WR_REL_SET   (167)

◆ HPM_SDMMC_FREE

#define HPM_SDMMC_FREE   free

◆ HPM_SDMMC_HOST_ADMA3_ALIGN_SIZE

#define HPM_SDMMC_HOST_ADMA3_ALIGN_SIZE   (8U)

◆ HPM_SDMMC_HOST_ADMA_TBL_SIZE

#define HPM_SDMMC_HOST_ADMA_TBL_SIZE   (SDXC_AMDA3_DESC_MIN_WORDS * 2UL)

◆ HPM_SDMMC_HOST_CD_IN_IP

#define HPM_SDMMC_HOST_CD_IN_IP   (HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION << 8)

◆ HPM_SDMMC_HOST_PWR_IN_IP

#define HPM_SDMMC_HOST_PWR_IN_IP   (HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH << 8)

◆ HPM_SDMMC_HOST_RST_IN_IP

#define HPM_SDMMC_HOST_RST_IN_IP   (HPM_SDMMC_HOST_SUPPORT_RESET_PIN << 8)

◆ HPM_SDMMC_HOST_SUPPORT_1V8

#define HPM_SDMMC_HOST_SUPPORT_1V8   (1UL << 3)

◆ HPM_SDMMC_HOST_SUPPORT_3V3

#define HPM_SDMMC_HOST_SUPPORT_3V3   (1UL << 2)

◆ HPM_SDMMC_HOST_SUPPORT_4BIT

#define HPM_SDMMC_HOST_SUPPORT_4BIT   (1UL << 0)

◆ HPM_SDMMC_HOST_SUPPORT_8BIT

#define HPM_SDMMC_HOST_SUPPORT_8BIT   (1UL << 1)

◆ HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION

#define HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION   (1UL << 16)

◆ HPM_SDMMC_HOST_SUPPORT_DATA_STROBE

#define HPM_SDMMC_HOST_SUPPORT_DATA_STROBE   (1UL << 21)

◆ HPM_SDMMC_HOST_SUPPORT_DDR

#define HPM_SDMMC_HOST_SUPPORT_DDR   (1UL << 4)

◆ HPM_SDMMC_HOST_SUPPORT_HS200

#define HPM_SDMMC_HOST_SUPPORT_HS200   (1UL << 7)

◆ HPM_SDMMC_HOST_SUPPORT_HS400

#define HPM_SDMMC_HOST_SUPPORT_HS400   (1Ul << 8)

◆ HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH

#define HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH   (1UL << 18)

◆ HPM_SDMMC_HOST_SUPPORT_RESET_PIN

#define HPM_SDMMC_HOST_SUPPORT_RESET_PIN   (1UL << 20)

◆ HPM_SDMMC_HOST_SUPPORT_SDR104

#define HPM_SDMMC_HOST_SUPPORT_SDR104   (1UL << 6)

◆ HPM_SDMMC_HOST_SUPPORT_SDR50

#define HPM_SDMMC_HOST_SUPPORT_SDR50   (1UL << 5)

◆ HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH

#define HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH   (1UL << 17)

◆ HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION

#define HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION   (1UL << 19)

◆ HPM_SDMMC_HOST_VSEL_IN_IP

#define HPM_SDMMC_HOST_VSEL_IN_IP   (HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH << 8)

◆ HPM_SDMMC_HOST_WP_IN_IP

#define HPM_SDMMC_HOST_WP_IN_IP   (HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION << 8)

◆ HPM_SDMMC_MALLOC

#define HPM_SDMMC_MALLOC   malloc

◆ HPM_SDMMC_OSAL_WAIT_FOREVER

#define HPM_SDMMC_OSAL_WAIT_FOREVER   (0xFFFFFFFFUL)

◆ MMC_CLOCK_26MHz

#define MMC_CLOCK_26MHz   (26000000UL)

◆ MMC_CLOCK_52MHz

#define MMC_CLOCK_52MHz   (52000000UL)

◆ MMC_CLOCK_DDR52

#define MMC_CLOCK_DDR52   (52000000UL)

◆ MMC_CLOCK_HS200

#define MMC_CLOCK_HS200   (200000000UL)

◆ MMC_CLOCK_HS400

#define MMC_CLOCK_HS400   (200000000UL)

◆ SD_CLOCK_100MHZ

#define SD_CLOCK_100MHZ   (100000000UL)

◆ SD_CLOCK_208MHZ

#define SD_CLOCK_208MHZ   (208000000UL)

◆ SD_CLOCK_25MHZ

#define SD_CLOCK_25MHZ   (25000000UL)

◆ SD_CLOCK_50MHZ

#define SD_CLOCK_50MHZ   (50000000UL)

◆ SDIO_CCCR_BUS_SPEED_DDR50

#define SDIO_CCCR_BUS_SPEED_DDR50   (SDIO_SPEED_DDR50 << 1)

◆ SDIO_CCCR_BUS_SPEED_DEFAULT

#define SDIO_CCCR_BUS_SPEED_DEFAULT   (SDIO_SPEED_DEFAULT_SPEED << 1)

◆ SDIO_CCCR_BUS_SPEED_HIGH

#define SDIO_CCCR_BUS_SPEED_HIGH   (SDIO_SPEED_HIGH_SPEED << 1)

◆ SDIO_CCCR_BUS_SPEED_MASK

#define SDIO_CCCR_BUS_SPEED_MASK   (0x7UL << 1)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

SDIO BUS speed definitions in CCCR register.

◆ SDIO_CCCR_BUS_SPEED_SDR104

#define SDIO_CCCR_BUS_SPEED_SDR104   (SDIO_SPEED_SDR104 << 1)

◆ SDIO_CCCR_BUS_SPEED_SDR12

#define SDIO_CCCR_BUS_SPEED_SDR12   (SDIO_CCCR_BUS_SPEED_DEFAULT)

◆ SDIO_CCCR_BUS_SPEED_SDR25

#define SDIO_CCCR_BUS_SPEED_SDR25   (SDIO_CCCR_BUS_SPEED_HIGH)

◆ SDIO_CCCR_BUS_SPEED_SDR50

#define SDIO_CCCR_BUS_SPEED_SDR50   (SDIO_SPEED_SDR50 << 1)

◆ SDIO_CCCR_BUS_SPEED_SUPPORT_HIGHSPEED

#define SDIO_CCCR_BUS_SPEED_SUPPORT_HIGHSPEED   (1)

◆ SDIO_CCCR_BUS_WIDTH_1BIT

#define SDIO_CCCR_BUS_WIDTH_1BIT   0UL

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

SDIO Bus width definitions.

◆ SDIO_CCCR_BUS_WIDTH_4BIT

#define SDIO_CCCR_BUS_WIDTH_4BIT   2UL

◆ SDIO_CMD53_OP_MODE_FIXED_ADDR

#define SDIO_CMD53_OP_MODE_FIXED_ADDR   0

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Fixed Address in CMD53

◆ SDIO_CMD53_OP_MODE_INCR_ADDR

#define SDIO_CMD53_OP_MODE_INCR_ADDR   1

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Incremental Address in CMD53

◆ SDIO_CMD_TIMEOUT_MS

#define SDIO_CMD_TIMEOUT_MS   (1000UL)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

SDIO Command Timeout in milliseconds

◆ SDIO_FBR_REG_BASE

#define SDIO_FBR_REG_BASE (   fbr)    ((fbr) * 0x100)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

FBR base address for specified function

◆ SDIO_MAX_FUNC_NUM

#define SDIO_MAX_FUNC_NUM   7

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Maximum supported functions

◆ SDIO_REG_CCCR_BUS_IF_CTRL

#define SDIO_REG_CCCR_BUS_IF_CTRL   7

◆ SDIO_REG_CCCR_BUS_SPEED_SEL

#define SDIO_REG_CCCR_BUS_SPEED_SEL   0x13

◆ SDIO_REG_CCCR_BUS_SUSPEND

#define SDIO_REG_CCCR_BUS_SUSPEND   0xC

◆ SDIO_REG_CCCR_CARD_CAP

#define SDIO_REG_CCCR_CARD_CAP   8

◆ SDIO_REG_CCCR_COM_CIS_PTR

#define SDIO_REG_CCCR_COM_CIS_PTR   9

◆ SDIO_REG_CCCR_DRV_STRENGTH

#define SDIO_REG_CCCR_DRV_STRENGTH   0x15

◆ SDIO_REG_CCCR_END

#define SDIO_REG_CCCR_END   SDIO_REG_CCCR_INT_EXT

◆ SDIO_REG_CCCR_EXEC_FLAGS

#define SDIO_REG_CCCR_EXEC_FLAGS   0xE

◆ SDIO_REG_CCCR_FN0_BLK_SIZE

#define SDIO_REG_CCCR_FN0_BLK_SIZE   0x10

◆ SDIO_REG_CCCR_FUNC_SEL

#define SDIO_REG_CCCR_FUNC_SEL   0xD

◆ SDIO_REG_CCCR_INT_ENABLE

#define SDIO_REG_CCCR_INT_ENABLE   4

◆ SDIO_REG_CCCR_INT_EXT

#define SDIO_REG_CCCR_INT_EXT   0x16

◆ SDIO_REG_CCCR_INT_PENDING

#define SDIO_REG_CCCR_INT_PENDING   5

◆ SDIO_REG_CCCR_IO_ABORT

#define SDIO_REG_CCCR_IO_ABORT   6

◆ SDIO_REG_CCCR_IO_ENABLE

#define SDIO_REG_CCCR_IO_ENABLE   2

◆ SDIO_REG_CCCR_IO_READY

#define SDIO_REG_CCCR_IO_READY   3

◆ SDIO_REG_CCCR_POWER_CTRL

#define SDIO_REG_CCCR_POWER_CTRL   0x12

◆ SDIO_REG_CCCR_READY_FLAGS

#define SDIO_REG_CCCR_READY_FLAGS   0xF

◆ SDIO_REG_CCCR_SD_REV

#define SDIO_REG_CCCR_SD_REV   1

◆ SDIO_REG_CCCR_SDIO_REV

#define SDIO_REG_CCCR_SDIO_REV   0

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

CCCR register address.

◆ SDIO_REG_CCCR_START

#define SDIO_REG_CCCR_START   SDIO_REG_CCCR_SDIO_REV

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

CCCR register range definitions.

◆ SDIO_REG_CCCR_UHS_SUPPORT

#define SDIO_REG_CCCR_UHS_SUPPORT   0x14

◆ SDIO_REG_FBR_CIS_PTR_OFFSET

#define SDIO_REG_FBR_CIS_PTR_OFFSET   0x9

◆ SDIO_REG_FBR_CSR_PTR_OFFSET

#define SDIO_REG_FBR_CSR_PTR_OFFSET   0xC

◆ SDIO_REG_FBR_MAX_BLK_SIZE_OFFSET

#define SDIO_REG_FBR_MAX_BLK_SIZE_OFFSET   0x10

◆ SDIO_SPEED_DDR50

#define SDIO_SPEED_DDR50   4UL

◆ SDIO_SPEED_DEFAULT_SPEED

#define SDIO_SPEED_DEFAULT_SPEED   0UL

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

SDIO Speed definitions.

◆ SDIO_SPEED_HIGH_SPEED

#define SDIO_SPEED_HIGH_SPEED   1UL

◆ SDIO_SPEED_SDR104

#define SDIO_SPEED_SDR104   3UL

◆ SDIO_SPEED_SDR12

#define SDIO_SPEED_SDR12   SDIO_SPEED_DEFAULT_SPEED

◆ SDIO_SPEED_SDR25

#define SDIO_SPEED_SDR25   SDIO_SPEED_HIGH_SPEED

◆ SDIO_SPEED_SDR50

#define SDIO_SPEED_SDR50   2UL

◆ SDMMC_CLOCK_400KHZ

#define SDMMC_CLOCK_400KHZ   (400000UL)

◆ STD_SDIO_FUNC_IF_CODE_ATA

#define STD_SDIO_FUNC_IF_CODE_ATA   8

◆ STD_SDIO_FUNC_IF_CODE_BT_TYPEA

#define STD_SDIO_FUNC_IF_CODE_BT_TYPEA   2

◆ STD_SDIO_FUNC_IF_CODE_BT_TYPEA_AMP

#define STD_SDIO_FUNC_IF_CODE_BT_TYPEA_AMP   9

◆ STD_SDIO_FUNC_IF_CODE_BT_TYPEB

#define STD_SDIO_FUNC_IF_CODE_BT_TYPEB   3

◆ STD_SDIO_FUNC_IF_CODE_CAMERA

#define STD_SDIO_FUNC_IF_CODE_CAMERA   5

◆ STD_SDIO_FUNC_IF_CODE_EXT_STD

#define STD_SDIO_FUNC_IF_CODE_EXT_STD   0xF

◆ STD_SDIO_FUNC_IF_CODE_GPS

#define STD_SDIO_FUNC_IF_CODE_GPS   4

◆ STD_SDIO_FUNC_IF_CODE_ISDIO

#define STD_SDIO_FUNC_IF_CODE_ISDIO   0xE

◆ STD_SDIO_FUNC_IF_CODE_NON_STD

#define STD_SDIO_FUNC_IF_CODE_NON_STD   0

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Standard SDIO Function Interface Code Definitions.

◆ STD_SDIO_FUNC_IF_CODE_PHS

#define STD_SDIO_FUNC_IF_CODE_PHS   6

◆ STD_SDIO_FUNC_IF_CODE_UART

#define STD_SDIO_FUNC_IF_CODE_UART   1

◆ STD_SDIO_FUNC_IF_CODE_WLAN

#define STD_SDIO_FUNC_IF_CODE_WLAN   7

Typedef Documentation

◆ emmc_card_t

typedef struct _sdmmc_emmc emmc_card_t

◆ emmc_hs_timing_t

typedef enum _emmc_hs_timing emmc_hs_timing_t

◆ emmc_partition_t

typedef enum _emmc_partition emmc_partition_t

◆ hpm_sdmmc_osal_event_t

◆ sd_card_t

typedef struct _sdmmc_sdcard sd_card_t

◆ sdio_card_t

typedef struct _sdmmc_sdio sdio_card_t

◆ sdio_tpl_blk_t

typedef struct sdio_tpl_block * sdio_tpl_blk_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

TPL block structure.

◆ sdmmc_adma2_desc_t

◆ sdmmchost_capabilities_t

◆ sdmmchost_card_detect_func_t

typedef bool(* sdmmchost_card_detect_func_t) (SDMMCHOST_Type *base)

◆ sdmmchost_clock_init_func_t

typedef uint32_t(* sdmmchost_clock_init_func_t) (SDMMCHOST_Type *base, uint32_t clk_freq, bool need_reverse)

◆ sdmmchost_cmd_line_init_func_t

typedef void(* sdmmchost_cmd_line_init_func_t) (SDMMCHOST_Type *base, bool push_pull)

◆ sdmmchost_cmd_t

◆ sdmmchost_data_t

◆ sdmmchost_io_init_func_t

typedef void(* sdmmchost_io_init_func_t) (SDMMCHOST_Type *base)

◆ sdmmchost_power_switch_func_t

typedef void(* sdmmchost_power_switch_func_t) (SDMMCHOST_Type *base, bool on_off)

◆ sdmmchost_switch_1v8_io_func_t

typedef void(* sdmmchost_switch_1v8_io_func_t) (SDMMCHOST_Type *base)

◆ SDMMCHOST_Type

◆ sdmmchost_xfer_t

◆ vdd_current_max_t

◆ vdd_current_min_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Enumerator
sdmmc_state_idle 
sdmmc_state_ready 
sdmmc_state_identify 
sdmmc_state_standby 
sdmmc_state_transfer 
sdmmc_state_send_data 
sdmmc_state_receive_data 
sdmmc_state_program 
sdmmc_state_disconnect 

◆ anonymous enum

anonymous enum

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Enumerator
status_sdmmc_card_not_support 
status_sdmmc_wait_card_insert_timeout 
status_sdmmc_no_sd_card_inserted 
status_sdmmc_device_init_required 
status_sdmmc_wait_busy_timeout 

◆ anonymous enum

anonymous enum

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Enumerator
sd_switch_function_group_access_mode 
sd_switch_function_group_command_system 
sd_switch_function_group_drive_strength 
sd_switch_function_group_power_limit 

◆ anonymous enum

anonymous enum

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Enumerator
sd_switch_function_mode_check 
sd_switch_function_mode_set 

◆ emmc_boot_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_boot_mode_sdr_legacy 
emmc_boot_mode_sdr_high_speed_timing 
emmc_boot_mode_ddr 

◆ emmc_boot_partition_enable_option_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
boot_partition_enable_option_not_enabled 
boot_partition_enable_option_boot_partition1 
boot_partition_enable_option_boot_partition2 
boot_partition_enable_option_user_area 

◆ emmc_boot_partition_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_boot_partition_mode_not_enabled 
emmc_boot_partition_mode_boot_partition1 
emmc_boot_partition_mode_boot_partition2 
emmc_boot_partition_mode_user_area 

◆ emmc_bus_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_bus_mode_x1_sdr 
emmc_bus_mode_x4_sdr 
emmc_bus_mode_x8_sdr 
emmc_bus_mode_x4_ddr 
emmc_bus_mode_x8_ddr 
emmc_bus_mode_x8_ddr_ds 

◆ emmc_csd_file_format_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_csd_file_format_hard_disk_like_file_system_with_partition_table 
emmc_csd_file_format_dos_fat_with_boot_sector_only 
emmc_csd_file_format_universal_file_format 
emmc_csd_file_format_others_or_unknown 

◆ emmc_csd_vdd_current_max_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_csd_vdd_current_max_1ma 
emmc_csd_vdd_current_max_5ma 
emmc_csd_vdd_current_max_10ma 
emmc_csd_vdd_current_max_25ma 
emmc_csd_vdd_current_max_35ma 
emmc_csd_vdd_current_max_45ma 
emmc_csd_vdd_current_max_80ma 
emmc_csd_vdd_current_max_200ma 

◆ emmc_csd_vdd_current_min_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_csd_vdd_current_min_0_5ma 
emmc_csd_vdd_current_min_1ma 
emmc_csd_vdd_current_min_5ma 
emmc_csd_vdd_current_min_10ma 
emmc_csd_vdd_current_min_25ma 
emmc_csd_vdd_current_min_35ma 
emmc_csd_vdd_current_min_60ma 
emmc_csd_vdd_current_min_100ma 

◆ emmc_erase_option_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_erase_option_erase 

eMMC Erase operation

emmc_erase_option_trim 

eMMC Trim operation

emmc_erase_option_discard 

eMMC Discard operation

◆ emmc_idle_option_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_idle_option_go_idle_state 
emmc_idle_option_go_pre_idle_state 
emmc_idle_option_boot_initialization 

◆ emmc_partition_access_option_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
partition_access_option_no_access_to_boot_partition 
partition_access_option_read_write_boot_partition1 
partition_access_option_read_write_boot_partition2 
partition_access_option_read_write_rpmb 
partition_access_option_access_to_gp_partition1 
partition_access_option_access_to_gp_partition2 
partition_access_option_access_to_gp_partition3 
partition_access_option_access_to_gp_partition4 

◆ emmc_partition_access_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_partition_access_boot_partition_disabled 
emmc_partition_access_read_or_write_boot_partition1 
emmc_partition_access_read_or_write_boot_partition2 
emmc_partition_access_read_or_write_rpmb 
emmc_partition_access_access_to_gp_partition1 
emmc_partition_access_access_to_gp_partition2 
emmc_partition_access_access_to_gp_partition3 
emmc_partition_access_access_to_gp_partition4 

◆ emmc_power_class_1v95_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_power_1v95_max_rms_65ma_peak_130ma 
emmc_power_1v95_max_rms_70ma_peak_140ma 
emmc_power_1v95_max_rms_80ma_peak_160ma 
emmc_power_1v95_max_rms_90ma_peak_180ma 
emmc_power_1v95_max_rms_100ma_peak_200ma 
emmc_power_1v95_max_rms_120ma_peak_220ma 
emmc_power_1v95_max_rms_140ma_peak_240ma 
emmc_power_1v95_max_rms_160ma_peak_260ma 
emmc_power_1v95_max_rms_180ma_peak_280ma 
emmc_power_1v95_max_rms_200ma_peak_300ma 
emmc_power_1v95_max_rms_250ma_peak_350ma 
emmc_power_1v95_max_rms_300ma_peak_400ma 
emmc_power_1v95_max_rms_350ma_peak_450ma 
emmc_power_1v95_max_rms_400ma_peak_500ma 
emmc_power_1v95_max_rms_500ma_peak_600ma 
emmc_power_1v95_max_rms_gt500ma_peak_gt600ma 

◆ emmc_power_class_3v6_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_power_3v6_max_rms_100ma_peak_200ma 
emmc_power_3v6_max_rms_120ma_peak_220ma 
emmc_power_3v6_max_rms_150ma_peak_250ma 
emmc_power_3v6_max_rms_180ma_peak_280ma 
emmc_power_3v6_max_rms_200ma_peak_300ma 
emmc_power_3v6_max_rms_220ma_peak_320ma 
emmc_power_3v6_max_rms_250ma_peak_350ma 
emmc_power_3v6_max_rms_300ma_peak_400ma 
emmc_power_3v6_max_rms_350ma_peak_450ma 
emmc_power_3v6_max_rms_400ma_peak_500ma 
emmc_power_3v6_max_rms_450ma_peak_550ma 
emmc_power_3v6_max_rms_500ma_peak_600ma 
emmc_power_3v6_max_rms_600ma_peak_700ma 
emmc_power_3v6_max_rms_700ma_peak_800ma 
emmc_power_3v6_max_rms_800ma_peak_900ma 
emmc_power_3v6_max_rms_gt800ma_peak_gt900ma 

◆ emmc_switch_cmd_access_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_switch_cmd_access_mode_command_set 
emmc_switch_cmd_access_mode_set_bits 
emmc_switch_cmd_access_mode_clear_bits 
emmc_switch_cmd_access_mode_write_byte 

◆ emmc_write_protection_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
emmc_write_protection_mode_legacy 
emmc_write_protection_mode_secure 

◆ hpm_sdmmc_io_volt_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SDMMC IO Voltage.

Enumerator
hpm_sdmmc_io_voltage_3v3 

IO voltage is 3.3v

hpm_sdmmc_io_voltage_1v8 

IO voltage is 1.8v

◆ hpm_sdmmc_operation_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SDMMC Operation mode.

Enumerator
hpm_sdmmc_operation_mode_inactive 
hpm_sdmmc_operation_mode_identification 
hpm_sdmmc_operation_mode_transfer 
hpm_sdmmc_operation_mode_interrupt 

◆ hpm_sdmmc_power_option_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Enumerator
hpm_sdmmc_power_off 

Power Off the SDMMC

hpm_sdmmc_power_up 

Power up the SDMMC

hpm_sdmmc_power_on 

Power on the SDMMC

◆ sd_drive_strength_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Enumerator
sd_drive_strength_type_b 
sd_drive_strength_type_a 
sd_drive_strength_type_c 
sd_drive_strength_type_d 

◆ sd_max_current_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Enumerator
sd_current_limit_200ma 
sd_current_limit_400ma 
sd_current_limit_600ma 
sd_current_limit_800ma 

◆ sd_timing_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Enumerator
sd_timing_sdr12_default 
sd_timing_sdr25_highspeed 
sd_timing_sdr50 
sd_timing_sdr104 
sd_timing_ddr50 

◆ sdmmc_buswidth_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SD/MMC Bus Width definitions.

Enumerator
sdmmc_bus_width_1bit 
sdmmc_bus_width_4bit 
sdmmc_bus_width_8bit 

◆ sdmmc_card_detection_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SD/MMC Host Card Detection Modes.

Enumerator
sdmmc_host_card_detection_none 
sdmmc_host_card_detection_via_gpio 
sdmmc_host_card_detection_via_sdxc 

◆ sdmmc_dev_type_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SD/MMC Device Type definitions.

Enumerator
sdmmc_dev_type_emmc 
sdmmc_dev_type_sd 
sdmmc_dev_type_sdio 

◆ sdmmc_operation_voltage_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Enumerator
sdmmc_operation_voltage_1v8 
sdmmc_operation_voltage_3v0 
sdmmc_operation_voltage_3v3 

◆ sdmmc_resp_type_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Enumerator
sdmmc_resp_none 
sdmmc_resp_r1 
sdmmc_resp_r1b 
sdmmc_resp_r2 
sdmmc_resp_r3 
sdmmc_resp_r4 
sdmmc_resp_r5 
sdmmc_resp_r5b 
sdmmc_resp_r6 
sdmmc_resp_r7 

◆ sdmmc_speed_mode_t

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SD/MMC Speed definitions.

Enumerator
sdmmc_sd_speed_normal 
sdmmc_sd_speed_high 
sdmmc_sd_speed_sdr12 
sdmmc_sd_speed_sdr25 
sdmmc_sd_speed_sdr50 
sdmmc_sd_speed_sdr104 
sdmmc_sd_speed_ddr50 
sdmmc_emmc_speed_legacy 
sdmmc_emmc_speed_high_speed_sdr 
sdmmc_emmc_speed_hs200 
sdmmc_emmc_speed_high_speed_ddr 
sdmmc_emmc_speed_hs400 

◆ vdd_current_max_def

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
vdd_current_max_1ma 
vdd_current_max_5ma 
vdd_current_max_10ma 
vdd_current_max_25ma 
vdd_current_max_35ma 
vdd_current_max_45ma 
vdd_current_max_80ma 
vdd_current_max_200ma 

◆ vdd_current_min_def

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enumerator
vdd_current_min_0_5ma 
vdd_current_min_1ma 
vdd_current_min_5ma 
vdd_current_min_10ma 
vdd_current_min_25ma 
vdd_current_min_35ma 
vdd_current_min_60ma 
vdd_current_min_100ma 

Function Documentation

◆ board_init_emmc_host_params()

hpm_stat_t board_init_emmc_host_params ( sdmmc_host_t host,
SDMMCHOST_Type base 
)

#include <middleware/hpm_sdmmc/port/hpm_sdmmc_port.h>

Initialize board-level eMMC Host parameters.

Parameters
[in,out]hostHost context
[in]baseHost base address
Returns
Operation status

◆ board_init_sd_host_params()

hpm_stat_t board_init_sd_host_params ( sdmmc_host_t host,
SDMMCHOST_Type base 
)

#include <middleware/hpm_sdmmc/port/hpm_sdmmc_port.h>

Initialize board-level SD Host parameters.

Parameters
[in,out]hostHost context
[in]baseSD Host base address
Returns
Operation status

◆ board_init_sdio_host_params()

hpm_stat_t board_init_sdio_host_params ( sdmmc_host_t host,
SDMMCHOST_Type base 
)

#include <middleware/hpm_sdmmc/port/hpm_sdmmc_port.h>

Initialize board-level SDIO Host parameters.

Parameters
[in,out]hostHost context
[in]baseHost base address
Returns
Operation status

◆ emmc_card_init()

hpm_stat_t emmc_card_init ( emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Initialize eMMC device.

Parameters
[in,out]cardeMMC card context
Returns
Command execution status

◆ emmc_configure_partition()

hpm_stat_t emmc_configure_partition ( const emmc_card_t card,
emmc_config_partition_option_t  option 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Configure eMMC Partition.

Parameters
[in,out]cardeMMC card context
[in]optionPartition configuration option
Returns
Command Execution status

◆ emmc_deinit()

void emmc_deinit ( emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

De-Initialize eMMC device.

Parameters
[in,out]cardeMMC card context
Returns
Command execution status

◆ emmc_enable_high_density_erase_group()

hpm_stat_t emmc_enable_high_density_erase_group ( emmc_card_t card,
bool  enable 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Enable High Density Erase group.

Parameters
[in,out]cardeMMC card context
[in]enableFlag for enabling the high density erase group
Returns
Command Execution status

◆ emmc_enter_sleep_mode()

hpm_stat_t emmc_enter_sleep_mode ( const emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Switch eMMC device into sleep mode.

Parameters
[in,out]cardeMMC card context
Returns
Command Execution status

◆ emmc_erase_blocks()

hpm_stat_t emmc_erase_blocks ( emmc_card_t card,
uint32_t  start_block,
uint32_t  block_count,
emmc_erase_option_t  option 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Erase eMMC Blocks.

Parameters
[in,out]cardeMMC card context
[in]start_blockThe start block =
[in]block_countNumber of blocks to be erased
[in]optionErase option
Returns
Command Execution status

◆ emmc_exit_sleep_mode()

hpm_stat_t emmc_exit_sleep_mode ( const emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Switch eMMC device into standby mode.

Parameters
[in,out]cardeMMC card context
Returns
Command Execution status

◆ emmc_go_idle()

hpm_stat_t emmc_go_idle ( emmc_card_t card,
emmc_idle_option_t  option 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Go to Idle mode.

Parameters
[in,out]cardeMMC card context
[in]optioneMMC idle options
Returns
Command execution status

◆ emmc_init()

hpm_stat_t emmc_init ( emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Initialize eMMC device, include both host and the device.

Parameters
[in,out]cardeMMC card context
Returns
Command execution status

◆ emmc_probe_device()

hpm_stat_t emmc_probe_device ( emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Probe eMMC device.

Parameters
[in,out]cardeMMC card context
Returns
Command execution status

◆ emmc_program_csd()

hpm_stat_t emmc_program_csd ( emmc_card_t card,
const uint32_t *  raw_csd 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Program CSD register.

Parameters
[in,out]cardeMMC card context
[in]raw_csdraw CSD buffer
Returns
Command Execution status

◆ emmc_read_blocks()

hpm_stat_t emmc_read_blocks ( emmc_card_t card,
uint8_t *  buffer,
uint32_t  start_block,
uint32_t  block_count 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Read eMMC blocks.

Parameters
[in,out]cardeMMC card context
[out]bufferData buffer
[in]start_blockStart Block index
[in]block_countNumber of blocks to be read
Returns
Command Execution status

◆ emmc_select_card()

hpm_stat_t emmc_select_card ( const emmc_card_t card,
bool  is_selected 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Select eMMC device.

Parameters
[in,out]cardeMMC card context
[in]is_selectedSelect/De-select the eMMC device
Returns
Command execution status

◆ emmc_send_cid()

hpm_stat_t emmc_send_cid ( emmc_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Request eMMC device to send CID to Host.

Parameters
[in,out]cardeMMC card context
Returns
Command execution status

◆ emmc_switch_function()

hpm_stat_t emmc_switch_function ( const emmc_card_t card,
emmc_switch_cmd_arg_t  arg,
uint32_t  timeout_us 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Switch eMMC function.

Parameters
[in,out]cardeMMC card context
[in]argSwitch command argument
[in]timeout_usTimeout in microseconds
Returns
Command Execution status

◆ emmc_write_blocks()

hpm_stat_t emmc_write_blocks ( emmc_card_t card,
const uint8_t *  buffer,
uint32_t  start_block,
uint32_t  block_count 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_emmc.h>

Write eMMC blocks.

Parameters
[in,out]cardeMMC card context
[in]bufferBuffer to be written
[in]start_blockStart block index
[in]block_countNumber of blocks to be written
Returns
Command Execution status

◆ extract_csd_field()

uint32_t extract_csd_field ( const uint32_t *  raw_csd,
uint8_t  end_offset,
uint8_t  start_offset 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Extract Fields from raw CSD data.

Parameters
[in]raw_csdRaw CSD data array
[in]end_offsetend offset of the specific field (in terms of bit)
[in]start_offsetstart offset of the specific field (in terms of bit)
Returns
Extracted CSD field

◆ hpm_sdmmc_osal_delay()

void hpm_sdmmc_osal_delay ( void *  ctx,
uint32_t  ms 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Delay in milliseconds.

Parameters
[in]ctxOSAL context
[in]msDelay in milliseconds

◆ hpm_sdmmc_osal_enter_critical()

void hpm_sdmmc_osal_enter_critical ( void *  ctx)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Enter critical section.

Parameters
[in]ctxOSAL context

◆ hpm_sdmmc_osal_event_clear()

void hpm_sdmmc_osal_event_clear ( void *  ctx,
hpm_sdmmc_osal_event_t  event,
uint32_t  flags 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Clear specified event flags.

Parameters
[in]ctxOSAL context
[in]eventThe event
[in]flagsThe flags to clear

◆ hpm_sdmmc_osal_event_create()

hpm_sdmmc_osal_event_t hpm_sdmmc_osal_event_create ( void *  ctx)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Create Event.

Parameters
[in]ctxOSAL context
Returns
The created event

◆ hpm_sdmmc_osal_event_delete()

hpm_stat_t hpm_sdmmc_osal_event_delete ( void *  ctx,
hpm_sdmmc_osal_event_t  event 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Delete an event.

Parameters
[in]ctxOSAL context
[in]eventThe event to be removed
Returns
the Operation status

◆ hpm_sdmmc_osal_event_set()

void hpm_sdmmc_osal_event_set ( void *  ctx,
hpm_sdmmc_osal_event_t  event,
uint32_t  flags 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Set specified event flags.

Parameters
[in]ctxOSAL context
[in]eventThe event
[in]flagsThe flags to set

◆ hpm_sdmmc_osal_event_wait()

hpm_stat_t hpm_sdmmc_osal_event_wait ( void *  ctx,
hpm_sdmmc_osal_event_t  event,
uint32_t  flags,
uint32_t  timeout 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Wait specified event flags.

Parameters
[in]ctxOSAL context
[in]eventThe event
[in]flagsThe flags to wait
[in]timeoutTimeout in milliseconds
Returns
The operation status

◆ hpm_sdmmc_osal_exit_critical()

void hpm_sdmmc_osal_exit_critical ( void *  ctx)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_osal.h>

Exit critical section.

Parameters
[in]ctxOSAL context

◆ sd_card_deinit()

void sd_card_deinit ( sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

De-Initialize SD card.

Parameters
[in,out]cardSD card context
Returns
Operation status

◆ sd_card_init()

hpm_stat_t sd_card_init ( sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Initialize SD card.

Parameters
[in,out]cardSD card context
Returns
Operation status

Send CMD: Set power limit

◆ sd_deinit()

void sd_deinit ( const sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

De-Initialize SD device.

Parameters
[in,out]cardSD card context
Returns
Operation status

◆ sd_erase_blocks()

hpm_stat_t sd_erase_blocks ( sd_card_t card,
uint32_t  start_block,
uint32_t  block_count 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Erase specified SD ranges.

Parameters
[in]cardSD card context
[in]start_blockstart block index
[in]block_countNumber of blocks to be erased
Returns
Command execution status

◆ sd_host_deinit()

hpm_stat_t sd_host_deinit ( sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

De-Initialize SD Host.

Parameters
[in,out]cardSD card context
Returns
Operation status

◆ sd_host_init()

hpm_stat_t sd_host_init ( sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Initialize SD Host.

Parameters
[in,out]cardSD card context
Returns
Operation status

◆ sd_init()

hpm_stat_t sd_init ( sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Initialize SD device.

Parameters
[in,out]cardSD card context
Returns
Operation status

◆ sd_is_card_present()

bool sd_is_card_present ( const sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Check whether the SD card is present.

Parameters
[in]cardSD card context
Returns
Operation status

◆ sd_polling_card_status_busy()

hpm_stat_t sd_polling_card_status_busy ( sd_card_t card,
uint32_t  timeout_ms 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Polling SD card status busy.

Parameters
[in]cardSD card context
[in]timeout_msTimeout in milliseconds
Returns
Command execution status

◆ sd_read_blocks()

hpm_stat_t sd_read_blocks ( sd_card_t card,
uint8_t *  buffer,
uint32_t  start_block,
uint32_t  block_count 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Read data from specified SD block.

Parameters
[in]cardSD card context
[out]bufferbuffer to store data
[in]start_blockstart block index
[in]block_countNumber of blocks to be read
Returns
Command execution status

◆ sd_read_status()

hpm_stat_t sd_read_status ( sd_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Read SD card status.

Parameters
[in]cardSD card context
Returns
Command execution status

◆ sd_select_card()

hpm_stat_t sd_select_card ( const sd_card_t card,
bool  is_selected 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Select/Deselect SD card.

Parameters
[in]cardSD card context
[in]is_selectedtrue: select, false: deselect
Returns
Command execution status

◆ sd_set_driver_strength()

hpm_stat_t sd_set_driver_strength ( sd_card_t card,
sd_drive_strength_t  driver_strength 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Set the driver strength for SD card.

Parameters
[in]cardSD card context
[in]driver_strengthDriver strength
Returns
Command execution status

◆ sd_set_max_current()

hpm_stat_t sd_set_max_current ( sd_card_t card,
sd_max_current_t  max_current 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Set the maximum current for SD card.

Parameters
[in]cardSD card context
[in]max_currentMaximum current
Returns
Command execution status

◆ sd_write_blocks()

hpm_stat_t sd_write_blocks ( sd_card_t card,
const uint8_t *  buffer,
uint32_t  start_block,
uint32_t  block_count 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sd.h>

Write data to specified SD block.

Parameters
[in]cardSD card context
[in]bufferData buffer
[in]start_blockstart block index
[in]block_countNumber of blocks to be written
Returns
Command execution status

◆ sdio_card_deinit()

hpm_stat_t sdio_card_deinit ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

De-Initialize SDIO card.

Parameters
[in,out]SDIOcard context
Returns
SDIO card initialization status

◆ sdio_card_init()

hpm_stat_t sdio_card_init ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Initialize SDIO card.

Parameters
[in,out]SDIOcard context
Returns
SDIO card initialization status

◆ sdio_cis_csr_addr()

static uint32_t sdio_cis_csr_addr ( const uint8_t *  reg_ptr)
inlinestatic

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Get the CIS register address from raw register value.

Parameters
[in]reg_ptrPointer to the register value
Returns
Converted CIS CSR address

◆ sdio_deinit()

void sdio_deinit ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

De-initialize SDIO device.

Parameters
[in,out]SDIOcard context

◆ sdio_deinit_funcs()

hpm_stat_t sdio_deinit_funcs ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

De-Initialize SDIO functions.

Parameters
[in,out]cardSDIO card context
Returns
Command execution status

◆ sdio_disable_interrupt()

hpm_stat_t sdio_disable_interrupt ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Disables SDIO interrupts for the specified card.

This function disables the SDIO interrupts associated with the given SDIO card. It ensures that the card and its host are valid before proceeding to disable the interrupts.

Parameters
[in,out]cardA pointer to the sdio_card_t structure representing the SDIO card.
Returns
Returns status_success if the interrupts were successfully disabled, or status_invalid_argument if the card or its host is not properly initialized.

◆ sdio_enable_interrupt()

hpm_stat_t sdio_enable_interrupt ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Enables SDIO interrupts for the specified card.

This function activates the SDIO interrupts by utilizing the host controller. It is essential to ensure that the card and its associated host controller are properly initialized before calling this function.

Parameters
[in,out]cardA pointer to the sdio_card_t structure representing the SDIO card. Must not be NULL and should have a valid host controller pointer.
Returns
hpm_stat_t: Status of the operation.
  • status_success: Interrupts were successfully enabled.
  • status_invalid_argument: If the card pointer or its host controller is NULL.

◆ sdio_get_func_if_code_str()

const char* sdio_get_func_if_code_str ( uint8_t  std_func_if_code)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Get the string for specified function interface code.

Parameters
[in]std_func_if_codeStandard function interface code
Returns
string for the specified function interface code

◆ sdio_get_max_transfer_speed()

hpm_stat_t sdio_get_max_transfer_speed ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Get the maximum transfer speed.

Parameters
[in]cardSDIO card context
Returns
Command execution status

◆ sdio_host_deinit()

hpm_stat_t sdio_host_deinit ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

De-initialize SDIO host.

Parameters
[in,out]SDIOcard context
Returns
De-initialization status

◆ sdio_host_init()

hpm_stat_t sdio_host_init ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Initialize SDIO host.

Parameters
[in,out]SDIOcard context

◆ sdio_init()

hpm_stat_t sdio_init ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Initialize SDIO device.

Parameters
[in,out]SDIOcard context
Returns
SDIO device initialization status

◆ sdio_init_funcs()

hpm_stat_t sdio_init_funcs ( sdio_card_t card)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Initialize SDIO functions.

Parameters
[in,out]cardSDIO card context
Returns
Command execution status

◆ sdio_io_read_byte()

hpm_stat_t sdio_io_read_byte ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t *  pdata 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Read 1 byte from the address for specified SDIO Function.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[in]reg_addrRegister address
[out]pdataPointer to data buffer
Returns
Command execution status

◆ sdio_io_read_incr_multi_bytes()

hpm_stat_t sdio_io_read_incr_multi_bytes ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t *  pbuf,
uint32_t  length 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Read multiple bytes from the address for specified SDIO Function.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in,out]pbufPointer to data buffer
[in]lengthbytes to be read
Returns
Command execution status

< Incremental Address in CMD53

◆ sdio_io_read_multi_bytes_from_fifo()

hpm_stat_t sdio_io_read_multi_bytes_from_fifo ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t *  pbuf,
uint32_t  length 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Read multiple bytes from the FIFO address for specified SDIO Function.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in,out]pbufPointer to data buffer
[in]lengthbytes to be read
Returns
Command execution status

< Fixed Address in CMD53

◆ sdio_io_rw_direct()

hpm_stat_t sdio_io_rw_direct ( sdio_card_t card,
bool  write,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t *  pdata,
bool  read_after_write 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Execute SDIO_IO_RW_DIRECT command (CMD52)

Parameters
[in,out]cardSDIO card context
[in]writetrue: write, false: read
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in/out]pdata pass in data if write is true or read_after_write is true, output data if write is false
[in]read_after_writetrue: read data after write
Returns
SDIO_IO_RW_DIRECT command status

◆ sdio_io_rw_extend()

hpm_stat_t sdio_io_rw_extend ( sdio_card_t card,
bool  write,
uint32_t  func_idx,
uint32_t  reg_addr,
uint32_t  op_code,
uint8_t *  pbuf,
uint32_t  blocks,
uint32_t  block_size 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Execute SDIO_IO_RW_EXTEND command (CMD53)

Parameters
[in,out]cardSDIO card context
[in]writetrue: write, false: read
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in]op_codeOperation code, SDIO_CMD53_OP_MODE_FIXED_ADDR or SDIO_CMD53_OP_MODE_INCR_ADDR
[in,out]pbufPointer to data buffer
[in]blocksNumber of blocks to be transferred
[in]block_sizeBlock size in bytes
Returns
Command execution status

< SDIO Command Timeout in milliseconds

◆ sdio_io_write_byte()

hpm_stat_t sdio_io_write_byte ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t  byte_data 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Write 1 byte to the address for specified SDIO Function.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in]byte_datadata to be written
Returns
Command execution status

◆ sdio_io_write_incr_multi_bytes()

hpm_stat_t sdio_io_write_incr_multi_bytes ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t *  pbuf,
uint32_t  length 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Write multiple bytes to the address for specified SDIO Function.

Parameters
[in,out]SDIOcard context
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in,out]pbufPointer to data buffer
[in]lengthbytes to be written
Returns
Command execution status

< Incremental Address in CMD53

◆ sdio_io_write_multi_bytes_to_fifo()

hpm_stat_t sdio_io_write_multi_bytes_to_fifo ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  reg_addr,
uint8_t *  pbuf,
uint32_t  length 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Write multiple bytes to the FIFO address for specified SDIO Function.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[in]reg_addrRegister address
[in,out]pbufPointer to data buffer
[in]lengthbytes to be written
Returns
Command execution status

< Fixed Address in CMD53

◆ sdio_read_cis()

hpm_stat_t sdio_read_cis ( sdio_card_t card,
uint32_t  cis_ptr,
sdio_cis_t cis,
bool  keep_tpl_raw_data 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Read Card Information Structure (CIS)

Parameters
[in,out]cardSDIO card context
[in]cis_ptrCIS pointer
[out]cisCIS buffer
[in]keep_tpl_raw_datatrue: keep the raw data of TPL, false: discard the raw data of TPL
Returns
Command execution status

◆ sdio_read_fbr()

hpm_stat_t sdio_read_fbr ( sdio_card_t card,
uint32_t  func_idx,
sdio_fbr_t fbr 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Read the specified Function Basic Register.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[out]fbrPointer to FBR buffer
Returns
Command execution status

< FBR base address for specified function

◆ sdio_register_irq_callback()

hpm_stat_t sdio_register_irq_callback ( sdio_card_t card,
void(*)(void *param)  sdio_irq_callback,
void *  sdio_irq_param 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Registers an interrupt callback function for an SDIO card.

This function allows the user to register a callback that will be invoked when an SDIO interrupt occurs. The provided callback function should be designed to handle SDIO-specific events or data associated with the interrupt.

Parameters
[in,out]cardA pointer to the SDIO card context structure. Must not be NULL.
[in]sdio_irq_callbackA pointer to the user-defined interrupt callback function. This function will be called when an SDIO interrupt is detected. The function signature should match void (*)(void *), where the parameter is a generic pointer provided by the user.
[in]sdio_irq_paramA pointer to any user-defined data that needs to be passed to the interrupt callback function. Can be NULL if no data needs to be passed.
Returns
hpm_stat_t: Status of the registration operation.
  • status_success: Callback successfully registered.
  • status_invalid_argument: If the card pointer is NULL or the card host is not initialized.

@Note Ensure the SDIO card and host controller are properly initialized before calling this function.

◆ sdio_set_block_size()

hpm_stat_t sdio_set_block_size ( sdio_card_t card,
uint32_t  func_idx,
uint32_t  block_size 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_sdio.h>

Set the Block size for specified Function.

Parameters
[in,out]cardSDIO card context
[in]func_idxSDIO function index
[in]block_sizeBlock size
Returns
Command execution status

< FBR base address for specified function

< FBR base address for specified function

◆ sdmmc_enable_auto_tuning()

hpm_stat_t sdmmc_enable_auto_tuning ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Enable Auto Tuning mode.

Parameters
[in/out]host SD/MMC Host Context
Returns
status_success if operation is successful

◆ sdmmc_get_sys_addr()

uint32_t sdmmc_get_sys_addr ( const sdmmc_host_t host,
uint32_t  addr 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Get System address.

Parameters
[in]hostSD/MMC Host Context
[in]addrmemory address
Returns
Converted system address

◆ sdmmc_go_idle_state()

hpm_stat_t sdmmc_go_idle_state ( sdmmc_host_t host,
uint32_t  argument 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Switch device to Idle state.

Parameters
[in/out]host SD/MMC Host Context
[in]argumentArgument for CMD0
Returns
status_success if operation is successful

◆ sdmmc_go_inactive_state()

hpm_stat_t sdmmc_go_inactive_state ( sdmmc_host_t host,
uint16_t  relative_addr 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Switch device to Inactive state.

Parameters
[in/out]host SD/MMC Host Context
[in]relative_addrdevice relative address
Returns
status_success if operation is successful

◆ sdmmc_select_card()

hpm_stat_t sdmmc_select_card ( sdmmc_host_t host,
uint16_t  relative_addr,
bool  is_selected 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Select/De-select the device.

Parameters
[in/out]host SD/MMC Host Context
[in]relative_addrdevice relative address
[in]is_selectedtrue: select, false: de-select
Returns
status_success if operation is successful

◆ sdmmc_send_application_command()

hpm_stat_t sdmmc_send_application_command ( sdmmc_host_t host,
uint16_t  relative_addr 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Send Application Command.

Parameters
[in/out]host SD/MMC Host Context
[in]relative_addrdevice related address
Returns
status_success if operation is successful

◆ sdmmc_set_block_count()

hpm_stat_t sdmmc_set_block_count ( sdmmc_host_t host,
uint32_t  block_count 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Set block count.

Parameters
[in/out]host SD/MMC Host Context
[in]block_countSD/MMC Block count
Returns
status_success if operation is successful

◆ sdmmc_set_block_size()

hpm_stat_t sdmmc_set_block_size ( sdmmc_host_t host,
uint32_t  block_size 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_common.h>

Set Block size.

Parameters
[in/out]host SD/MMC Host Context
[in]block_sizeSD/MMC Block size
Returns
status_success if operation is successful

◆ sdmmchost_deinit()

void sdmmchost_deinit ( sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Deinitialize the host.

Parameters
[in]hostHost context

◆ sdmmchost_delay_ms()

void sdmmchost_delay_ms ( const sdmmc_host_t host,
uint32_t  ms 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Host delay.

Parameters
[in]hostHost context
[in]msDelay in milliseconds

◆ sdmmchost_enable_emmc_support()

void sdmmchost_enable_emmc_support ( const sdmmc_host_t host,
bool  enable 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Enable the eMMC support on the host.

Parameters
[in]hostHost context
[in]enableEnable or disable the eMMC support
Note
This function should be called after the host is initialized

◆ sdmmchost_enable_enhanced_data_strobe()

void sdmmchost_enable_enhanced_data_strobe ( const sdmmc_host_t host,
bool  enable 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Enable the enhanced data strboe.

Parameters
[in]hostHost context
[in]enableEnable or disable the enhanced data strobe

◆ sdmmchost_enable_sdio_interrupt()

void sdmmchost_enable_sdio_interrupt ( sdmmc_host_t host,
bool  enable 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Enable or disable SDIO interrupt on the SDMMC host controller.

This function allows controlling the SDIO interrupt signal and status based on the provided flag. When enabled, it sets the interrupt signal and status masks to detect card interrupts. When disabled, it clears the interrupt status mask to stop interrupt generation from card interrupts.

Parameters
[in]hostPointer to the SDMMC host controller structure.
[in]enableFlag to enable (true) or disable (false) the SDIO interrupt.

◆ sdmmchost_error_recovery()

hpm_stat_t sdmmchost_error_recovery ( sdmmc_host_t host,
sdmmchost_cmd_t cmd 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Trigger the Error recovery via the Host.

Parameters
[in]hostHost context
[in]cmdabort command context
Returns
Operation status

◆ sdmmchost_get_data_pin_level()

uint32_t sdmmchost_get_data_pin_level ( sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Return the data pin level.

Parameters
[in]hostPointer to the SDMMC host controller structure.
Returns
value for data pin level

◆ sdmmchost_init()

hpm_stat_t sdmmchost_init ( sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

SDMMC Host Initialization.

Parameters
[in]hostHost context
Returns
Host initialization status

◆ sdmmchost_init_io()

void sdmmchost_init_io ( sdmmc_host_t host,
hpm_sdmmc_operation_mode_t  operation_mode 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Initialize the Host IO according to the operation mode.

Parameters
[in]hostHost context
[in]operation_modeOperation mode

◆ sdmmchost_irq_handler()

void sdmmchost_irq_handler ( sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

THe Host IRQ Handler.

Parameters
[in,out]hostHost context

◆ sdmmchost_is_card_detected()

bool sdmmchost_is_card_detected ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Check whether the card is detected or not.

Parameters
[in]hostHost context
Returns
The card detection state

◆ sdmmchost_is_voltage_switch_supported()

bool sdmmchost_is_voltage_switch_supported ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Check whether the host support voltage switch.

Parameters
[in]hostHost context
Returns
Voltage switch support state

◆ sdmmchost_register_sdio_callback()

void sdmmchost_register_sdio_callback ( sdmmc_host_t host,
void(*)(void *param)  sdio_irq_callback,
void *  param 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Registers an SDIO interrupt callback function for the SDMMC host controller.

This function allows the user to register a callback that will be invoked upon SDIO interrupts. It is useful for handling SDIO-specific events in addition to standard SDMMC transactions.

Parameters
[in,out]hostPointer to the SDMMC host controller structure.
[in]sdio_irq_callbackPointer to the callback function that will be called when an SDIO interrupt occurs. The function should accept a single parameter of type void*.
[in]paramA pointer to a user-defined data that will be passed to the callback function each time it is invoked.

◆ sdmmchost_reset()

void sdmmchost_reset ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Reset the host.

Parameters
[in]hostHost context

◆ sdmmchost_select_voltage()

void sdmmchost_select_voltage ( sdmmc_host_t host,
hpm_sdmmc_io_volt_t  io_volt 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Select the IO voltage.

Parameters
[in]hostHost context
[in]io_voltIO voltage

◆ sdmmchost_send_command()

hpm_stat_t sdmmchost_send_command ( sdmmc_host_t host,
const sdmmchost_cmd_t cmd 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Send command via the host.

Parameters
[in]hostHost context
[in]cmdCommand context
Returns
Command execution status

◆ sdmmchost_set_card_bus_width()

void sdmmchost_set_card_bus_width ( sdmmc_host_t host,
sdmmc_buswidth_t  bus_width 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Set the card bus width.

Parameters
[in,out]hostHost context
[in]bus_widthBus width

◆ sdmmchost_set_card_clock()

uint32_t sdmmchost_set_card_clock ( sdmmc_host_t host,
uint32_t  freq,
bool  clock_inverse 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Set the Card clock.

Parameters
[in,out]hostHost context
[in]freqFrequency in Hz
[in]clock_inverseClock Inverse flag
Returns
Actual clock frequency in Hz

◆ sdmmchost_set_cardclk_delay_chain()

void sdmmchost_set_cardclk_delay_chain ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Set the Card clock delay chain for the host.

Parameters
[in]hostHost context

◆ sdmmchost_set_data_strobe_delay()

void sdmmchost_set_data_strobe_delay ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Set the Data strobe delay for Host.

Parameters
[in]hostHost context

◆ sdmmchost_set_rxclk_delay_chain()

void sdmmchost_set_rxclk_delay_chain ( sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Set the Card Rx Clock delay chain for the host.

Parameters
[in]hostHost context

◆ sdmmchost_set_speed_mode()

hpm_stat_t sdmmchost_set_speed_mode ( const sdmmc_host_t host,
sdmmc_speed_mode_t  speed_mode 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Set the speed mode via the Host.

Parameters
[in]hostHost context
[in]speed_modeSpeed mode
Returns
Operation status

◆ sdmmchost_switch_to_1v8()

hpm_stat_t sdmmchost_switch_to_1v8 ( sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Switch the Host to 1.8V IO voltage.

Parameters
[in,out]hostHost context
Returns
Host switch voltage status

◆ sdmmchost_transfer()

hpm_stat_t sdmmchost_transfer ( sdmmc_host_t host,
const sdmmchost_xfer_t content 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Transfer data via the host.

Parameters
[in]hostHost context
[in]contentTransfer context
Returns
Transfer execution status

◆ sdmmchost_vsel_pin_control()

void sdmmchost_vsel_pin_control ( const sdmmc_host_t host,
hpm_sdmmc_io_volt_t  io_volt 
)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Control the Voltage selection pin.

Parameters
[in]hostHost context
[in]io_voltIO voltage

◆ sdmmchost_wait_card_active()

void sdmmchost_wait_card_active ( const sdmmc_host_t host)

#include <middleware/hpm_sdmmc/lib/hpm_sdmmc_host.h>

Wait until the card is active.

Parameters
[in]hostHost context

Variable Documentation

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

union { ... }

◆ 

union { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆ 

union { ... }

◆ 

struct { ... }

◆ 

struct { ... }

◆  [1/2]

uint8_t { ... } ::abort_select

◆ abort_select [2/2]

uint8_t sdio_cccr_t::abort_select

◆  [1/2]

uint32_t { ... } ::block_mode

◆ block_mode [2/2]

uint32_t sdio_cmd53_arg_t::block_mode

◆  [1/2]

uint8_t { ... } ::bus_if_ctrl

◆ bus_if_ctrl [2/2]

uint8_t sdio_cccr_t::bus_if_ctrl

◆ bus_release_req [1/2]

uint8_t sdio_cccr_t::bus_release_req

◆  [2/2]

uint8_t { ... } ::bus_release_req

◆ bus_speed_sel [1/2]

uint8_t sdio_cccr_t::bus_speed_sel

◆  [2/2]

uint8_t { ... } ::bus_speed_sel

◆ bus_speed_select [1/2]

uint8_t sdio_cccr_t::bus_speed_select

◆  [2/2]

uint8_t { ... } ::bus_speed_select

◆  [1/2]

uint8_t { ... } ::bus_status

◆ bus_status [2/2]

uint8_t sdio_cccr_t::bus_status

◆ bus_suspend [1/2]

uint8_t sdio_cccr_t::bus_suspend

◆  [2/2]

uint8_t { ... } ::bus_suspend

◆ bus_width [1/2]

uint8_t sdio_cccr_t::bus_width

◆  [2/2]

uint8_t { ... } ::bus_width

◆ card

sdio_card_t* sdio_func_t::card

◆ card_capability [1/2]

uint8_t sdio_cccr_t::card_capability

◆  [2/2]

uint8_t { ... } ::card_capability

◆ cccr_rev [1/2]

uint8_t sdio_cccr_t::cccr_rev

◆  [2/2]

uint8_t { ... } ::cccr_rev

◆ cd_disable [1/2]

uint8_t sdio_cccr_t::cd_disable

◆  [2/2]

uint8_t { ... } ::cd_disable

◆ cis

sdio_cis_t sdio_func_t::cis

◆ cis_ptr

uint8_t sdio_fbr_t::cis_ptr[3]

◆ common_cis_pointer

uint8_t sdio_cccr_t::common_cis_pointer[3]

◆ count [1/2]

uint32_t sdio_cmd53_arg_t::count

◆  [2/2]

uint32_t { ... } ::count

◆ csa_enable

uint8_t sdio_fbr_t::csa_enable

◆ csa_nf [1/4]

uint8_t ATTR_PACKED::csa_nf

◆  [2/4]

uint8_t { ... } ::csa_nf

◆ csa_nf [3/4]

bool sdio_cis_t::csa_nf

◆  [4/4]

bool { ... } ::csa_nf

◆ csa_property [1/2]

uint8_t ATTR_PACKED::csa_property

◆  [2/2]

uint8_t { ... } ::csa_property

◆ csa_ptr

uint8_t sdio_fbr_t::csa_ptr[3]

◆ csa_size [1/3]

uint32_t ATTR_PACKED::csa_size

◆ csa_size [2/3]

uint32_t sdio_cis_t::csa_size

◆  [3/3]

uint32_t { ... } ::csa_size

◆ csa_wp [1/4]

uint8_t ATTR_PACKED::csa_wp

◆  [2/4]

uint8_t { ... } ::csa_wp

◆  [3/4]

bool { ... } ::csa_wp

◆ csa_wp [4/4]

bool sdio_cis_t::csa_wp

◆ current_block_size

uint32_t sdio_func_t::current_block_size

◆ data_acc_win_to_csa

uint8_t sdio_fbr_t::data_acc_win_to_csa

◆ driver_strength [1/2]

uint8_t sdio_cccr_t::driver_strength

◆  [2/2]

uint8_t { ... } ::driver_strength

◆ enable_block_gap_interrupt [1/2]

uint8_t sdio_cccr_t::enable_block_gap_interrupt

◆  [2/2]

uint8_t { ... } ::enable_block_gap_interrupt

◆ enable_master_pwr_ctrl [1/2]

uint8_t sdio_cccr_t::enable_master_pwr_ctrl

◆  [2/2]

uint8_t { ... } ::enable_master_pwr_ctrl

◆ enable_pwr_sel

uint8_t sdio_fbr_t::enable_pwr_sel

◆ enable_timeout_val

uint16_t ATTR_PACKED::enable_timeout_val

◆ err_com_crc [1/2]

uint8_t sdio_resp_r5_t::err_com_crc

◆  [2/2]

uint8_t { ... } ::err_com_crc

◆  [1/2]

uint8_t { ... } ::err_general

◆ err_general [2/2]

uint8_t sdio_resp_r5_t::err_general

◆  [1/2]

uint8_t { ... } ::err_illegal_cmd

◆ err_illegal_cmd [2/2]

uint8_t sdio_resp_r5_t::err_illegal_cmd

◆ err_num_func [1/2]

uint8_t sdio_resp_r5_t::err_num_func

◆  [2/2]

uint8_t { ... } ::err_num_func

◆  [1/2]

uint8_t { ... } ::err_out_of_range

◆ err_out_of_range [2/2]

uint8_t sdio_resp_r5_t::err_out_of_range

◆ exec_flags

uint8_t sdio_cccr_t::exec_flags

◆ ext_std_sdio_func_if_code

uint8_t sdio_fbr_t::ext_std_sdio_func_if_code

◆ fbr

sdio_fbr_t sdio_func_t::fbr

◆ fn0_block_size

uint8_t sdio_cccr_t::fn0_block_size[2]

◆ func0_blk_size [1/2]

uint16_t sdio_cis_t::func0_blk_size

◆  [2/2]

uint16_t { ... } ::func0_blk_size

◆ func_idx

uint8_t sdio_func_t::func_idx

◆ func_info [1/2]

uint8_t ATTR_PACKED::func_info

◆  [2/2]

uint8_t { ... } ::func_info

◆ func_num [1/4]

uint32_t sdio_cmd52_arg_t::func_num

◆  [2/4]

uint32_t { ... } ::func_num

◆ func_num [3/4]

uint32_t sdio_cmd53_arg_t::func_num

◆  [4/4]

uint32_t { ... } ::func_num

◆ function_select

uint8_t sdio_cccr_t::function_select

◆ hp_avg_pwr_3v3

uint16_t ATTR_PACKED::hp_avg_pwr_3v3

◆ hp_max_pwr_3v3

uint16_t ATTR_PACKED::hp_max_pwr_3v3

◆ int_enable

uint8_t sdio_cccr_t::int_enable

◆ int_pending

uint8_t sdio_cccr_t::int_pending

◆  [1/2]

uint8_t { ... } ::interrupt_extension

◆ interrupt_extension [2/2]

uint8_t sdio_cccr_t::interrupt_extension

◆ io_abort [1/2]

uint8_t sdio_cccr_t::io_abort

◆  [2/2]

uint8_t { ... } ::io_abort

◆ io_blk_size

uint16_t sdio_fbr_t::io_blk_size

◆ io_current_state [1/2]

uint8_t sdio_resp_r5_t::io_current_state

◆  [2/2]

uint8_t { ... } ::io_current_state

◆ io_enable

uint8_t sdio_cccr_t::io_enable

◆ io_ready

uint8_t sdio_cccr_t::io_ready

◆ isdio_type_support_code

uint8_t sdio_fbr_t::isdio_type_support_code

◆ low_speed_card [1/2]

uint8_t sdio_cccr_t::low_speed_card

◆  [2/2]

uint8_t { ... } ::low_speed_card

◆ low_speed_card_4bit_mode [1/2]

uint8_t sdio_cccr_t::low_speed_card_4bit_mode

◆  [2/2]

uint8_t { ... } ::low_speed_card_4bit_mode

◆ lp_avg_pwr_3v3

uint16_t ATTR_PACKED::lp_avg_pwr_3v3

◆ lp_max_pwr_3v3

uint16_t ATTR_PACKED::lp_max_pwr_3v3

◆ manufacturer [1/2]

uint16_t sdio_cis_t::manufacturer

◆  [2/2]

uint16_t { ... } ::manufacturer

◆ max_blk_size [1/3]

uint16_t ATTR_PACKED::max_blk_size

◆ max_blk_size [2/3]

uint16_t sdio_cis_t::max_blk_size

◆  [3/3]

uint16_t { ... } ::max_blk_size

◆ max_block_size

uint32_t sdio_func_t::max_block_size

◆  [1/2]

uint8_t { ... } ::max_tran_speed

◆ max_tran_speed [2/2]

uint8_t sdio_cis_t::max_tran_speed

◆ memory_present [1/2]

uint32_t sdio_cmd5_resp_t::memory_present

◆  [2/2]

uint32_t { ... } ::memory_present

◆ mid_card

uint16_t sdio_fbr_t::mid_card

◆ min_bw

uint16_t ATTR_PACKED::min_bw

◆ next

struct sdio_tpl_block* sdio_tpl_block::next

◆ num_func [1/2]

uint32_t sdio_cmd5_resp_t::num_func

◆  [2/2]

uint32_t { ... } ::num_func

◆ ocr [1/3]

uint32_t ATTR_PACKED::ocr

◆ ocr [2/3]

uint32_t sdio_cis_t::ocr

◆  [3/3]

uint32_t { ... } ::ocr

◆ op_avg_pwr

uint8_t ATTR_PACKED::op_avg_pwr

◆  [1/2]

uint32_t { ... } ::op_code

◆ op_code [2/2]

uint32_t sdio_cmd53_arg_t::op_code

◆ op_max_pwr

uint8_t ATTR_PACKED::op_max_pwr

◆ op_min_pwr

uint8_t ATTR_PACKED::op_min_pwr

◆ opt_bw

uint16_t ATTR_PACKED::opt_bw

◆ power_control [1/2]

uint8_t sdio_cccr_t::power_control

◆  [2/2]

uint8_t { ... } ::power_control

◆  [1/2]

uint16_t { ... } ::product

◆ product [2/2]

uint16_t sdio_cis_t::product

◆ psn

uint32_t ATTR_PACKED::psn

◆ pwr_sel

uint8_t sdio_fbr_t::pwr_sel

◆  [1/2]

uint32_t { ... } ::read_afer_write

◆ read_afer_write [2/2]

uint32_t sdio_cmd52_arg_t::read_afer_write

◆ ready [1/2]

uint32_t sdio_cmd5_resp_t::ready

◆  [2/2]

uint32_t { ... } ::ready

◆ ready_flags

uint8_t sdio_cccr_t::ready_flags

◆ reg_addr [1/4]

uint32_t sdio_cmd52_arg_t::reg_addr

◆  [2/4]

uint32_t { ... } ::reg_addr

◆ reg_addr [3/4]

uint32_t sdio_cmd53_arg_t::reg_addr

◆  [4/4]

uint32_t { ... } ::reg_addr

◆  [1/2]

uint8_t { ... } ::reset

◆ reset [2/2]

uint8_t sdio_cccr_t::reset

◆ rw_data [1/2]

uint8_t sdio_resp_r5_t::rw_data

◆  [2/2]

uint8_t { ... } ::rw_data

◆ rw_flag [1/2]

uint32_t sdio_cmd53_arg_t::rw_flag

◆  [2/2]

uint32_t { ... } ::rw_flag

◆  [1/4]

uint32_t { ... } ::s18r

◆ s18r [2/4]

uint32_t sdio_cmd5_arg_t::s18r

◆ s18r [3/4]

uint32_t sdio_cmd5_resp_t::s18r

◆  [4/4]

uint32_t { ... } ::s18r

◆ sb_avg_pwr

uint8_t ATTR_PACKED::sb_avg_pwr

◆ sb_max_pwr

uint8_t ATTR_PACKED::sb_max_pwr

◆ sb_min_pwr

uint8_t ATTR_PACKED::sb_min_pwr

◆ sd_version

uint8_t sdio_cccr_t::sd_version

◆ sda_mid_manf

uint16_t sdio_fbr_t::sda_mid_manf

◆  [1/2]

uint8_t { ... } ::sdio_rev

◆ sdio_rev [2/2]

uint8_t sdio_cccr_t::sdio_rev

◆  [1/2]

uint8_t { ... } ::sdio_version

◆ sdio_version [2/2]

uint8_t sdio_cccr_t::sdio_version

◆ serial_num [1/2]

uint32_t sdio_cis_t::serial_num

◆  [2/2]

uint32_t { ... } ::serial_num

◆ sp_avg_pwr_3v3

uint16_t ATTR_PACKED::sp_avg_pwr_3v3

◆ sp_max_pwr_3v3

uint16_t ATTR_PACKED::sp_max_pwr_3v3

◆ std_id [1/2]

uint8_t sdio_cis_t::std_id

◆  [2/2]

uint8_t { ... } ::std_id

◆ std_io_rev [1/3]

uint8_t ATTR_PACKED::std_io_rev

◆ std_io_rev [2/3]

uint8_t sdio_cis_t::std_io_rev

◆  [3/3]

uint8_t { ... } ::std_io_rev

◆ std_isdio_func_if_code

uint8_t sdio_fbr_t::std_isdio_func_if_code

◆ std_sdio_func_if_code [1/2]

uint8_t sdio_fbr_t::std_sdio_func_if_code

◆ std_sdio_func_if_code [2/2]

uint8_t sdio_func_t::std_sdio_func_if_code

◆ std_type [1/2]

uint8_t sdio_cis_t::std_type

◆  [2/2]

uint8_t { ... } ::std_type

◆ stuff [1/2]

uint8_t sdio_resp_r5_t::stuff[2]

◆  [2/2]

uint8_t { ... } ::stuff[2]

◆  [1/2]

uint8_t { ... } ::support_8bit

◆ support_8bit [2/2]

uint8_t sdio_cccr_t::support_8bit

◆ support_block_gap_interrupt [1/2]

uint8_t sdio_cccr_t::support_block_gap_interrupt

◆  [2/2]

uint8_t { ... } ::support_block_gap_interrupt

◆ support_bus_control [1/2]

uint8_t sdio_cccr_t::support_bus_control

◆  [2/2]

uint8_t { ... } ::support_bus_control

◆ support_cmd52 [1/2]

uint8_t sdio_cccr_t::support_cmd52

◆  [2/2]

uint8_t { ... } ::support_cmd52

◆ support_csa

uint8_t sdio_fbr_t::support_csa

◆ support_ddr50 [1/2]

uint8_t sdio_cccr_t::support_ddr50

◆  [2/2]

uint8_t { ... } ::support_ddr50

◆ support_highspeed [1/2]

uint8_t sdio_cccr_t::support_highspeed

◆  [2/2]

uint8_t { ... } ::support_highspeed

◆  [1/2]

uint8_t { ... } ::support_master_pwr_ctrl

◆ support_master_pwr_ctrl [2/2]

uint8_t sdio_cccr_t::support_master_pwr_ctrl

◆  [1/2]

uint8_t { ... } ::support_multi_block_transfer

◆ support_multi_block_transfer [2/2]

uint8_t sdio_cccr_t::support_multi_block_transfer

◆ support_pwr_sel

uint8_t sdio_fbr_t::support_pwr_sel

◆  [1/2]

uint8_t { ... } ::support_read_wait

◆ support_read_wait [2/2]

uint8_t sdio_cccr_t::support_read_wait

◆ support_sdr104 [1/2]

uint8_t sdio_cccr_t::support_sdr104

◆  [2/2]

uint8_t { ... } ::support_sdr104

◆ support_sdr50 [1/2]

uint8_t sdio_cccr_t::support_sdr50

◆  [2/2]

uint8_t { ... } ::support_sdr50

◆ support_wakeup [1/4]

uint8_t ATTR_PACKED::support_wakeup

◆  [2/4]

uint8_t { ... } ::support_wakeup

◆ support_wakeup [3/4]

bool sdio_cis_t::support_wakeup

◆  [4/4]

bool { ... } ::support_wakeup

◆ timeout_val_in_10ms [1/2]

uint16_t sdio_cis_t::timeout_val_in_10ms

◆  [2/2]

uint16_t { ... } ::timeout_val_in_10ms

◆ tpl_code

uint8_t sdio_tpl_block::tpl_code

◆ tpl_data

uint8_t* sdio_tpl_block::tpl_data

◆ tpl_link [1/2]

sdio_tpl_blk_t sdio_common_cis_t::tpl_link

◆ tpl_link [2/2]

sdio_tpl_blk_t sdio_cis_t::tpl_link

◆ tpl_size

uint8_t sdio_tpl_block::tpl_size

◆  [1/2]

uint8_t { ... } ::uhs1_support

◆ uhs1_support [2/2]

uint8_t sdio_cccr_t::uhs1_support

◆ value [1/5]

uint32_t sdio_cmd5_arg_t::value

◆ value [2/5]

uint32_t sdio_cmd5_resp_t::value

◆ value [3/5]

uint32_t sdio_resp_r5_t::value

◆ value [4/5]

uint32_t sdio_cmd52_arg_t::value

◆ value [5/5]

uint32_t sdio_cmd53_arg_t::value

◆  [1/4]

uint32_t { ... } ::volt_2p0_2p1

◆ volt_2p0_2p1 [2/4]

uint32_t sdio_cmd5_arg_t::volt_2p0_2p1

◆ volt_2p0_2p1 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p0_2p1

◆  [4/4]

uint32_t { ... } ::volt_2p0_2p1

◆  [1/4]

uint32_t { ... } ::volt_2p1_2p2

◆ volt_2p1_2p2 [2/4]

uint32_t sdio_cmd5_arg_t::volt_2p1_2p2

◆  [3/4]

uint32_t { ... } ::volt_2p1_2p2

◆ volt_2p1_2p2 [4/4]

uint32_t sdio_cmd5_resp_t::volt_2p1_2p2

◆  [1/4]

uint32_t { ... } ::volt_2p2_2p3

◆ volt_2p2_2p3 [2/4]

uint32_t sdio_cmd5_arg_t::volt_2p2_2p3

◆ volt_2p2_2p3 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p2_2p3

◆  [4/4]

uint32_t { ... } ::volt_2p2_2p3

◆ volt_2p3_2p4 [1/4]

uint32_t sdio_cmd5_arg_t::volt_2p3_2p4

◆  [2/4]

uint32_t { ... } ::volt_2p3_2p4

◆ volt_2p3_2p4 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p3_2p4

◆  [4/4]

uint32_t { ... } ::volt_2p3_2p4

◆ volt_2p4_2p5 [1/4]

uint32_t sdio_cmd5_arg_t::volt_2p4_2p5

◆  [2/4]

uint32_t { ... } ::volt_2p4_2p5

◆ volt_2p4_2p5 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p4_2p5

◆  [4/4]

uint32_t { ... } ::volt_2p4_2p5

◆ volt_2p5_2p6 [1/4]

uint32_t sdio_cmd5_arg_t::volt_2p5_2p6

◆  [2/4]

uint32_t { ... } ::volt_2p5_2p6

◆  [3/4]

uint32_t { ... } ::volt_2p5_2p6

◆ volt_2p5_2p6 [4/4]

uint32_t sdio_cmd5_resp_t::volt_2p5_2p6

◆ volt_2p6_2p7 [1/4]

uint32_t sdio_cmd5_arg_t::volt_2p6_2p7

◆  [2/4]

uint32_t { ... } ::volt_2p6_2p7

◆ volt_2p6_2p7 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p6_2p7

◆  [4/4]

uint32_t { ... } ::volt_2p6_2p7

◆ volt_2p7_2p8 [1/4]

uint32_t sdio_cmd5_arg_t::volt_2p7_2p8

◆  [2/4]

uint32_t { ... } ::volt_2p7_2p8

◆ volt_2p7_2p8 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p7_2p8

◆  [4/4]

uint32_t { ... } ::volt_2p7_2p8

◆  [1/4]

uint32_t { ... } ::volt_2p8_2p9

◆ volt_2p8_2p9 [2/4]

uint32_t sdio_cmd5_arg_t::volt_2p8_2p9

◆ volt_2p8_2p9 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p8_2p9

◆  [4/4]

uint32_t { ... } ::volt_2p8_2p9

◆  [1/4]

uint32_t { ... } ::volt_2p9_3p0

◆ volt_2p9_3p0 [2/4]

uint32_t sdio_cmd5_arg_t::volt_2p9_3p0

◆ volt_2p9_3p0 [3/4]

uint32_t sdio_cmd5_resp_t::volt_2p9_3p0

◆  [4/4]

uint32_t { ... } ::volt_2p9_3p0

◆  [1/4]

uint32_t { ... } ::volt_3p0_3p1

◆ volt_3p0_3p1 [2/4]

uint32_t sdio_cmd5_arg_t::volt_3p0_3p1

◆ volt_3p0_3p1 [3/4]

uint32_t sdio_cmd5_resp_t::volt_3p0_3p1

◆  [4/4]

uint32_t { ... } ::volt_3p0_3p1

◆  [1/4]

uint32_t { ... } ::volt_3p1_3p2

◆ volt_3p1_3p2 [2/4]

uint32_t sdio_cmd5_arg_t::volt_3p1_3p2

◆  [3/4]

uint32_t { ... } ::volt_3p1_3p2

◆ volt_3p1_3p2 [4/4]

uint32_t sdio_cmd5_resp_t::volt_3p1_3p2

◆  [1/4]

uint32_t { ... } ::volt_3p2_3p3

◆ volt_3p2_3p3 [2/4]

uint32_t sdio_cmd5_arg_t::volt_3p2_3p3

◆  [3/4]

uint32_t { ... } ::volt_3p2_3p3

◆ volt_3p2_3p3 [4/4]

uint32_t sdio_cmd5_resp_t::volt_3p2_3p3

◆  [1/4]

uint32_t { ... } ::volt_3p3_3p4

◆ volt_3p3_3p4 [2/4]

uint32_t sdio_cmd5_arg_t::volt_3p3_3p4

◆ volt_3p3_3p4 [3/4]

uint32_t sdio_cmd5_resp_t::volt_3p3_3p4

◆  [4/4]

uint32_t { ... } ::volt_3p3_3p4

◆  [1/4]

uint32_t { ... } ::volt_3p4_3p5

◆ volt_3p4_3p5 [2/4]

uint32_t sdio_cmd5_arg_t::volt_3p4_3p5

◆ volt_3p4_3p5 [3/4]

uint32_t sdio_cmd5_resp_t::volt_3p4_3p5

◆  [4/4]

uint32_t { ... } ::volt_3p4_3p5

◆ volt_3p5_3p6 [1/4]

uint32_t sdio_cmd5_arg_t::volt_3p5_3p6

◆  [2/4]

uint32_t { ... } ::volt_3p5_3p6

◆  [3/4]

uint32_t { ... } ::volt_3p5_3p6

◆ volt_3p5_3p6 [4/4]

uint32_t sdio_cmd5_resp_t::volt_3p5_3p6

◆  [1/2]

uint32_t { ... } ::wr_data

◆ wr_data [2/2]

uint32_t sdio_cmd52_arg_t::wr_data

◆ write [1/2]

uint32_t sdio_cmd52_arg_t::write

◆  [2/2]

uint32_t { ... } ::write