HPM SDK
HPMicro Software Development Kit
SDXC driver APIs

SDXC driver APIs. More...

Data Structures

struct  sdxc_capabilities_t
 SDXC Capacities. More...
 
struct  sdxc_xfer_callback_t
 
struct  sdxc_handle_t
 
struct  sdxc_host_t
 

Macros

#define SDXC_HOST_SUPPORT_1V8   (1UL << 0)
 Generic Definitions. More...
 
#define SDXC_HOST_SUPPORT_4BIT   (1UL << 1)
 
#define SDXC_HOST_SUPPORT_8BIT   (1UL << 2)
 
#define SDXC_HOST_SUPPORT_EMMC   (1UL << 3)
 
#define SDXC_HOST_SUPPORT_CD   (1UL << 16)
 SDXC Pin features. More...
 
#define SDXC_HOST_SUPPORT_VSEL   (1UL << 17)
 
#define SDXC_HOST_SUPPORT_PWR   (1UL << 18)
 
#define SDXC_HOST_SUPPORT_WP   (1UL << 19)
 
#define SDXC_HOST_SUPPORT_RST   (1UL << 20)
 
#define SDXC_HOST_SUPPORT_DS   (1UL << 21)
 
#define SDXC_HOST_CD_IN_IP   (SDXC_HOST_SUPPORT_CD << 8)
 SDXC Pin is native or from GPIO. More...
 
#define SDXC_HOST_VSEL_IN_IP   (SDXC_HOST_SUPPORT_VSEL << 8)
 
#define SDXC_HOST_PWR_IN_IP   (SDXC_HOST_SUPPORT_PWR << 8)
 
#define SDXC_HOST_WP_IN_IP   (SDXC_HOST_SUPPORT_WP << 8)
 
#define SDXC_HOST_RST_IN_IP   (SDXC_HOST_SUPPORT_RST << 8)
 
#define SDXC_HOST_VSEL_PIN_POLARITY   (SDXC_HOST_SUPPORT_CD << 16)
 SDXC GPIO pin polarity If polarity is 0, it means: GPIO level 0 means disabled, 1 means enabled If polarity is 1, it meansL: GPIO level 0 means enabled, 1 means disabled. More...
 
#define SDXC_HOST_CD_PIN_POLARITY   (SDXC_HOST_VSEL_IN_IP << 16)
 
#define SDXC_HOST_PWR_PIN_POLARITY   (SDXC_HOST_SUPPORT_PWR << 16)
 
#define SDXC_HOST_WP_PIN_POLARITY   (SDXC_HOST_SUPPORT_WP << 16)
 
#define SDXC_HOST_RST_IN_POLARITY   (SDXC_HOST_SUPPORT_DS << 16)
 
#define SDXC_CMD_RESP_TYPE_NO_RESP   (0U)
 Command Response Type Selection. More...
 
#define SDXC_CMD_RESP_TYPE_RESP_LEN_136   (1U)
 
#define SDXC_CMD_RESP_TYPE_RESP_LEN_48   (2U)
 
#define SDXC_CMD_RESP_TYPE_RESP_LEN_48B   (3U)
 
#define SDXC_STS_CMD_ERR
 
#define SDXC_STS_DATA_ERR
 
#define SDXC_STS_CARD_ERR   (SDXC_INT_STAT_CARD_REMOVAL_MASK)
 
#define SDXC_STS_ERROR   (SDXC_INT_STAT_ERR_INTERRUPT_MASK | SDXC_STS_CMD_ERR | SDXC_STS_DATA_ERR | SDXC_STS_CARD_ERR)
 
#define SDXC_STS_CMD_FLAGS   (SDXC_STS_CMD_ERR | SDXC_INT_STAT_CMD_COMPLETE_MASK)
 
#define SDXC_STS_ALL_FLAGS
 
#define SDXC_CMD_TYPE_NORMAL   (0UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 Command Type. More...
 
#define SDXC_CMD_TYPE_SUSPEND   (1UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 
#define SDXC_CMD_TYPE_RESUME   (2UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 
#define SDXC_CMD_TYPE_ABORT   (3UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 
#define SDXC_CMD_RESP_NO_RESPONSE   (0UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)
 
#define SDXC_CMD_RESP_LEN_136   (1UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)
 
#define SDXC_CMD_RESP_LEN_48   (2UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)
 
#define SDXC_CMD_RESP_LEN_48B   (3UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)
 
#define SDXC_CMD_CMD_IS_MAIN_CMD   (0U)
 
#define SDXC_CMD_CMD_IS_SUB_CMD   (SDXC_CMD_XFER_SUB_CMD_FLAG_MASK)
 
#define SDXC_CMD_CMD_CRC_CHK_EN   (SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_MASK)
 
#define SDXC_CMD_CMD_CRC_CHK_DIS   (0U)
 
#define SDXC_CMD_CMD_IDX_CHK_EN   (SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_MASK)
 
#define SDXC_CMD_CMD_IDX_CHK_DIS   (0U)
 
#define SDXC_CMD_DATA_PRESENT   (SDXC_CMD_XFER_DATA_PRESENT_SEL_MASK)
 
#define SDXC_CMD_DATA_NO_PRESENT   (0U)
 
#define SDXC_CMD_CMD_TYPE_NORMAL   (0U)
 
#define SDXC_CMD_CMD_TYPE_SUSPEND   (1UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 
#define SDXC_CMD_CMD_TYPE_RESUME   (2U << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 
#define SDXC_CMD_CMD_TYPE_ABORT   (3U << SDXC_CMD_XFER_CMD_TYPE_SHIFT)
 
#define SDXC_ADMA2_DESC_VALID_FLAG   (1UL << 0)
 
#define SDXC_ADMA2_DESC_END_FLAG   (1UL << 1)
 
#define SDXC_ADMA2_DESC_INTERRUPT_FLAG   (1UL << 2)
 
#define SDXC_ADMA2_DESC_ACT0_FLAG   (1UL << 3)
 
#define SDXC_ADMA2_DESC_ACT1_FLAG   (1UL << 4)
 
#define SDXC_ADMA2_DESC_ACT2_FLAG   (1UL << 5)
 
#define SDXC_ADMA2_ADDR_LEN   (4U)
 
#define SDXC_ADMA2_LEN_ALIGN   (4U)
 
#define SDXC_ADMA2_DESC_TYPE_NOP   (0U)
 
#define SDXC_ADMA2_DESC_TYPE_TRANS   (4U)
 
#define SDXC_ADMA2_DESC_TYPE_LINK   (6U)
 
#define SDXC_ADMA3_DESC_TYPE_FOR_SD_MODE   (0x1U)
 
#define SDXC_AMDA3_DESC_TYPE_INTEGRATED_LINKER   (7U)
 
#define SDXC_ADMA3_INTEGRATED_ATTR_VALID   (1UL << 0)
 
#define SDXC_ADMA3_INTEGRATED_ATTR_END   (1UL << 1)
 
#define SDXC_ADMA3_INTEGRATED_ATTR_INT   (1UL << 2)
 
#define SDXC_ADMA3_CMD_FOR_SD_DESC_ATTR   (0x09U)
 
#define SDXC_ADMA3_INTEGRATED_DESC_ATTR   (0x39U)
 
#define SDXC_ADMA3_CMD_DESC_ATTR_END   (1UL << 1)
 
#define SDXC_ADMA3_CMD_DESC_IDX_32BIT_BLK_CNT   (0U)
 
#define SDXC_ADMA3_CMD_DESC_IDX_BLK_SIZE   (1U)
 
#define SDXC_ADMA3_CMD_DESC_IDX_ARG   (2U)
 
#define SDXC_ADMA3_CMD_DESC_IDX_CMD_XFER   (3U)
 
#define SDXC_ADMA3_INTEGRATED_DESC_WORDS   (sizeof(sdxc_adma3_integrated_desc_t) / sizeof(uint32_t))
 
#define SDXC_ADMA3_CMD_DESC_WORDS   (sizeof(sdxc_adma3_cmd_sd_desc_t) / sizeof(uint32_t))
 
#define SDXC_ADMA2_DESC_WORDS   (sizeof(sdxc_adma2_descriptor_t) / sizeof(uint32_t))
 
#define SDXC_IS_DMA_ALIGNED(value)   (((uint32_t)(value) % 4UL) == 0U)
 
#define SDXC_AMDA3_DESC_MIN_WORDS
 

Typedefs

typedef enum _sdxc_software_reset sdxc_sw_reset_type_t
 Software reset flag definitions. More...
 
typedef enum _sdxc_bus_voltage_option sdxc_bus_voltage_option_t
 SDXC Bus voltage options. More...
 
typedef enum _sdxc_wakeup_event sdxc_wakeup_event_t
 SDXC wakeup events. More...
 
typedef enum _sdxc_dma_type sdxc_dma_type_t
 SDXC DMA types. More...
 
typedef enum _sdxc_bus_width sdxc_bus_width_t
 SDXC Bus width options. More...
 
typedef enum _sdxc_speed_mode sdxc_speed_mode_t
 SDXC Speed mode options. More...
 
typedef enum _sdxc_auto_cmd_sel sdxc_auto_cmd_sel_t
 SDXC auto command types. More...
 
typedef enum _sdxc_xfer_direction sdxc_xfer_direction_t
 SDXC transfer direction options. More...
 
typedef enum _sdxc_command_type sdxc_command_type_t
 SDXC Command types. More...
 
typedef enum _sdxc_boot_mode sdxc_boot_mode_t
 SDXC boot mode types. More...
 
typedef enum _sdxc_response_type sdxc_response_type_t
 SDXC response types. More...
 
typedef enum _sdxc_dev_resp_type sdxc_dev_resp_type_t
 SDXC Device response type. More...
 
typedef struct _sdxc_command sdxc_command_t
 SDXC command structure. More...
 
typedef struct _sdxc_data_list sdxc_data_list_t
 SDXC data list. More...
 
typedef struct _sdxc_data sdxc_data_t
 SDXC data structure. More...
 
typedef struct _sdxc_xfer sdxc_xfer_t
 SDXC transfer context. More...
 
typedef struct _sdxc_adma_config sdxc_adma_config_t
 SDXC ADMA configuration. More...
 
typedef struct _sdxc_config sdxc_config_t
 SDXC configuration. More...
 
typedef struct _sdxc_adma2_descriptor sdxc_adma2_descriptor_t
 SDXC ADMA2 descriptor. More...
 
typedef struct _sdxc_adma3_cmd_sd_desc sdxc_adma3_cmd_sd_desc_t
 ADMA3 command descriptor. More...
 
typedef struct _sdxc_adma3_integrated_desc sdxc_adma3_integrated_desc_t
 SDXC ADMA3 Integrated Descriptor. More...
 
typedef struct _sdxc_adma3_xfer_list sdxc_adma3_xfer_list
 
typedef struct _sdxc_boot_config sdxc_boot_config_t
 SDXC Boot configuration. More...
 
typedef hpm_stat_t(* sdxc_xfer_func_t) (SDXC_Type *base, sdxc_xfer_t *content)
 

Enumerations

enum  {
  status_sdxc_busy = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 0 )) , status_sdxc_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 1 )) , status_sdxc_send_cmd_failed = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 2 )) , status_sdxc_cmd_timeout_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 3 )) ,
  status_sdxc_cmd_crc_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 4 )) , status_sdxc_cmd_end_bit_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 5 )) , status_sdxc_cmd_index_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 6 )) , status_sdxc_data_timeout_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 7 )) ,
  status_sdxc_data_crc_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 8 )) , status_sdxc_data_end_bit_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 9 )) , status_sdxc_auto_cmd_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 10 )) , status_sdxc_adma_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 11 )) ,
  status_sdxc_tuning_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 12 )) , status_sdxc_response_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 13 )) , status_sdxc_boot_ack_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 14 )) , status_sdxc_retuning_request = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 15 )) ,
  status_sdxc_autocmd_cmd12_not_exec = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 16 )) , status_sdxc_autocmd_cmd_timeout_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 17 )) , status_sdxc_autocmd_cmd_crc_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 18 )) , status_sdxc_autocmd_end_bit_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 19 )) ,
  status_sdxc_autocmd_cmd_index_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 20 )) , status_sdxc_autocmd_cmd_response_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 21 )) , status_sdxc_autocmd_cmd_not_issued_auto_cmd12 = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 22 )) , status_sdxc_unsupported = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 23 )) ,
  status_sdxc_transfer_data_completed = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 24 )) , status_sdxc_send_cmd_successful = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 25 )) , status_sdxc_transfer_dma_completed = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 26 )) , status_sdxc_transfer_data_failed = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 27 )) ,
  status_sdxc_dma_addr_or_len_unaligned = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 28 )) , status_sdxc_tuning_failed = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 29 )) , status_sdxc_card_removed = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 30 )) , status_sdxc_non_recoverable_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 31 )) ,
  status_sdxc_recoverable_error = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 32 )) , status_sdxc_adma_table_not_enough = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 33 )) , status_sdxc_xfer_size_exceeds_max_limit = ((uint32_t)( status_group_sdxc )*1000U + (uint32_t)( 34 ))
}
 SDXC error codes. More...
 
enum  { sdxc_xfer_data_normal = 0U , sdxc_xfer_data_boot = 1U , sdxc_xfer_data_boot_continuous = 2U }
 SDXC transfer data type. More...
 
enum  { sdxc_adma_desc_single_flag = 0U , sdxc_adma_desc_multi_flag = 1U }
 

Functions

static uint32_t sdxc_get_interrupt_status (SDXC_Type *base)
 Get the SDXC interrupt status. More...
 
static bool sdxc_is_card_inserted (const SDXC_Type *base)
 Check whether SD card is inserted. More...
 
static bool sdxc_is_write_protected (const SDXC_Type *base)
 Check whether SD card is Write Protected. More...
 
static void sdxc_clear_interrupt_status (SDXC_Type *base, uint32_t status_mask)
 Clear SDXC interrupt status. More...
 
static void sdxc_enable_interrupt_status (SDXC_Type *base, uint32_t mask, bool enable)
 Enable SDXC interrupt status. More...
 
static void sdxc_enable_interrupt_signal (SDXC_Type *base, uint32_t mask, bool enable)
 Enable SDXC interrupt signal. More...
 
static uint32_t sdxc_get_interrupt_signal (SDXC_Type *base)
 Get the SDXC interrupt Signal Enable Register. More...
 
hpm_stat_t sdxc_get_capabilities (const SDXC_Type *base, sdxc_capabilities_t *capabilities)
 Get SDXC capabilities. More...
 
static uint8_t sdxc_get_adma_error_status (const SDXC_Type *base)
 Get SDXC ADMA error status. More...
 
static void sdxc_configure_data_timeout (SDXC_Type *base, uint8_t timeout)
 Configure SDXC data timeout internal. More...
 
static void sdxc_interrupt_at_block_gap (SDXC_Type *base, bool enable)
 Configure SDXC interrupt at block gap. More...
 
static void sdxc_read_wait_control (SDXC_Type *base, bool enable)
 Enable or Disable SDXC Read Wait. More...
 
static void sdxc_continue_request (SDXC_Type *base, bool enable)
 Configure SDXC continue request. More...
 
static void sdxc_stop_at_block_gap_request (SDXC_Type *base, bool enable)
 Configure SDXC StopAtBlockGap request. More...
 
static void sdxc_enable_high_speed (SDXC_Type *base, bool enable)
 Control the SDXC high-speed support. More...
 
static void sdxc_enable_power (SDXC_Type *base, bool enable)
 Control the SDXC power pin. More...
 
static void sdxc_enable_async_interrupt (SDXC_Type *base, bool enable)
 Enable SDXC asynchronous interrupt support. More...
 
static void sdxc_enable_preset (SDXC_Type *base, bool enable)
 Enable SDXC Preset support. More...
 
static void sdxc_enable_host_version4 (SDXC_Type *base, bool enable)
 Enable SD Host version 4. More...
 
static void sdxc_execute_tuning (SDXC_Type *base)
 Start SDXC tuning process. More...
 
static void sdxc_enable_software_tuning (SDXC_Type *base, bool enable)
 Enable SDXC software tuning process. More...
 
static void sdxc_reset_tuning_engine (SDXC_Type *base)
 Reset SDXC tuning engine. More...
 
static void sdxc_switch_to_1v8_signal (SDXC_Type *base, bool enable)
 Switch SDXC to 1.8V signaling mode. More...
 
static void sdxc_enable_internal_clock (SDXC_Type *base, bool enable)
 Enable/Disable SDXC internal clock. More...
 
static uint32_t sdxc_get_present_status (const SDXC_Type *base)
 Get Present status register value. More...
 
static bool sdxc_is_data_buf_writable (const SDXC_Type *base)
 Check whether the Data Buffer is writable or not. More...
 
static bool sdxc_is_data_buf_readable (const SDXC_Type *base)
 Check whether the data buffer is readable. More...
 
static uint32_t sdxc_read_data (SDXC_Type *base)
 Read data from SDXC using non-DMA mode. More...
 
static void sdxc_write_data (SDXC_Type *base, uint32_t data)
 Write data to SDXC using non-DMA mode. More...
 
static uint32_t sdxc_get_data3_0_level (const SDXC_Type *base)
 Get SDXC DATA3-DATA0 IO level. More...
 
static uint32_t sdxc_get_data7_4_level (const SDXC_Type *base)
 Get SDXC DATA7-DATA4 IO level. More...
 
static void sdxc_enable_auto_tuning (SDXC_Type *base, bool enable)
 Enable SDXC auto tuning. More...
 
static void sdxc_stop_clock_during_phase_code_change (SDXC_Type *base, bool enable)
 Stop Clock During Phase Code Change. More...
 
static void sdxc_set_post_change_delay (SDXC_Type *base, uint8_t delay_cnt)
 Set The delay cycles during phase switching and stable clock out. More...
 
static void sdxc_enable_emmc_support (SDXC_Type *base, bool enable)
 Enable EMMC support. More...
 
static void sdxc_enable_mmc_boot (SDXC_Type *base, bool enable)
 Enable/Disable SDXC MMC boot. More...
 
static void sdxc_force_event (SDXC_Type *base, uint32_t mask)
 Set SDXC force event. More...
 
static void sdxc_enable_sd_clock (SDXC_Type *base, bool enable)
 Enable/disable SDXC SD clock output. More...
 
static void sdxc_set_center_phase_code (SDXC_Type *base, uint32_t value)
 Set SDXC center phase code. More...
 
static void sdxc_enable_enhanced_strobe (SDXC_Type *base, bool enable)
 Enable SDXC enhanced strobe. More...
 
static void sdxc_select_dma_type (SDXC_Type *base, sdxc_dma_type_t dma_type)
 Select DMA type. More...
 
bool sdxc_is_bus_idle (const SDXC_Type *base)
 Check whether SDXC Bus is idle. More...
 
void sdxc_set_mmc_boot_config (SDXC_Type *base, const sdxc_boot_config_t *config)
 Set MMC boot configuration. More...
 
hpm_stat_t sdxc_send_command (SDXC_Type *base, const sdxc_command_t *cmd)
 Send Command via SDXC. More...
 
hpm_stat_t sdxc_receive_cmd_response (const SDXC_Type *base, sdxc_command_t *cmd)
 Receive command response. More...
 
hpm_stat_t sdxc_parse_interrupt_status (SDXC_Type *base)
 Parse the SDXC interrupt status to HPM encoded status. More...
 
hpm_stat_t sdxc_wait_cmd_done (SDXC_Type *base, sdxc_command_t *cmd, bool polling_cmd_done)
 Wait until SDXC command completes. More...
 
void sdxc_set_data_config (SDXC_Type *base, sdxc_xfer_direction_t data_dir, uint32_t block_cnt, uint32_t block_size)
 Set Data transfer configuration. More...
 
hpm_stat_t sdxc_set_adma_table_config (SDXC_Type *base, sdxc_adma_config_t *dma_cfg, sdxc_data_t *data_cfg, sdxc_command_t *cmd)
 Set ADMA table configuration. More...
 
hpm_stat_t sdxc_set_adma2_desc (sdxc_adma_config_t *dma_config, const sdxc_data_t *xfer_data, uint32_t *num_entries)
 Set ADMA2 descriptor. More...
 
hpm_stat_t sdxc_set_adma3_desc (sdxc_adma_config_t *dma_config, sdxc_adma3_xfer_list *adma3_xfer_list)
 Set ADMA3 descriptor. More...
 
hpm_stat_t sdxc_set_dma_config (SDXC_Type *base, const sdxc_adma_config_t *dma_cfg, const uint32_t *data_addr)
 Set DMA configuration. More...
 
void sdxc_init (SDXC_Type *base, const sdxc_config_t *config)
 Initialize SDXC controller. More...
 
void sdxc_set_data_timeout (SDXC_Type *base, uint32_t timeout_in_ms, uint32_t *actual_timeout_ms)
 Set the Data Timeout Counter value for an SD/eMMC device. More...
 
void sdxc_set_speed_mode (SDXC_Type *base, sdxc_speed_mode_t mode)
 Set SDXC speed mode. More...
 
void sdxc_set_data_bus_width (SDXC_Type *base, sdxc_bus_width_t width)
 Set SDXC Data bus width. More...
 
uint32_t sdxc_get_data_bus_width (const SDXC_Type *base)
 Get SDXC Data bus width. More...
 
void sdxc_select_voltage (SDXC_Type *base, sdxc_bus_voltage_option_t option)
 Set SDXC IO voltage. More...
 
bool sdxc_reset (SDXC_Type *base, sdxc_sw_reset_type_t reset_type, uint32_t timeout)
 Reset SDXC. More...
 
void sdxc_enable_wakeup_event (SDXC_Type *base, sdxc_wakeup_event_t evt, bool enable)
 Enable SDXC wakeup interrupt. More...
 
hpm_stat_t sdxc_transfer_blocking (SDXC_Type *base, sdxc_adma_config_t *dma_config, const sdxc_xfer_t *xfer)
 Start SDXC transfer in blocking way. More...
 
hpm_stat_t sdxc_adma3_transfer_nonblocking (SDXC_Type *base, sdxc_adma_config_t *dma_config, sdxc_adma3_xfer_list *adma3_xfer_list)
 SDXC ADMA3 nonblocking transfer. More...
 
hpm_stat_t sdxc_transfer_nonblocking (SDXC_Type *base, sdxc_adma_config_t *dma_config, const sdxc_xfer_t *xfer)
 Start SDXC transfer in nonblocking way. More...
 
hpm_stat_t sdxc_error_recovery (SDXC_Type *base, sdxc_command_t *cmd)
 SDXC Error recovery. More...
 
hpm_stat_t sdxc_perform_tuning_flow_sequence (SDXC_Type *base, uint8_t tuning_cmd)
 Perform SDXC tuning flow sequence. More...
 
hpm_stat_t sdxc_perform_software_tuning (SDXC_Type *base, uint8_t tuning_cmd)
 Perform SDXC software tuning. More...
 
hpm_stat_t sdxc_perform_auto_tuning (SDXC_Type *base, uint8_t tuning_cmd)
 Perform SDXC auto-tuning. More...
 

Detailed Description

SDXC driver APIs.

Macro Definition Documentation

◆ SDXC_ADMA2_ADDR_LEN

#define SDXC_ADMA2_ADDR_LEN   (4U)

◆ SDXC_ADMA2_DESC_ACT0_FLAG

#define SDXC_ADMA2_DESC_ACT0_FLAG   (1UL << 3)

◆ SDXC_ADMA2_DESC_ACT1_FLAG

#define SDXC_ADMA2_DESC_ACT1_FLAG   (1UL << 4)

◆ SDXC_ADMA2_DESC_ACT2_FLAG

#define SDXC_ADMA2_DESC_ACT2_FLAG   (1UL << 5)

◆ SDXC_ADMA2_DESC_END_FLAG

#define SDXC_ADMA2_DESC_END_FLAG   (1UL << 1)

◆ SDXC_ADMA2_DESC_INTERRUPT_FLAG

#define SDXC_ADMA2_DESC_INTERRUPT_FLAG   (1UL << 2)

◆ SDXC_ADMA2_DESC_TYPE_LINK

#define SDXC_ADMA2_DESC_TYPE_LINK   (6U)

◆ SDXC_ADMA2_DESC_TYPE_NOP

#define SDXC_ADMA2_DESC_TYPE_NOP   (0U)

◆ SDXC_ADMA2_DESC_TYPE_TRANS

#define SDXC_ADMA2_DESC_TYPE_TRANS   (4U)

◆ SDXC_ADMA2_DESC_VALID_FLAG

#define SDXC_ADMA2_DESC_VALID_FLAG   (1UL << 0)

◆ SDXC_ADMA2_DESC_WORDS

#define SDXC_ADMA2_DESC_WORDS   (sizeof(sdxc_adma2_descriptor_t) / sizeof(uint32_t))

◆ SDXC_ADMA2_LEN_ALIGN

#define SDXC_ADMA2_LEN_ALIGN   (4U)

◆ SDXC_ADMA3_CMD_DESC_ATTR_END

#define SDXC_ADMA3_CMD_DESC_ATTR_END   (1UL << 1)

◆ SDXC_ADMA3_CMD_DESC_IDX_32BIT_BLK_CNT

#define SDXC_ADMA3_CMD_DESC_IDX_32BIT_BLK_CNT   (0U)

◆ SDXC_ADMA3_CMD_DESC_IDX_ARG

#define SDXC_ADMA3_CMD_DESC_IDX_ARG   (2U)

◆ SDXC_ADMA3_CMD_DESC_IDX_BLK_SIZE

#define SDXC_ADMA3_CMD_DESC_IDX_BLK_SIZE   (1U)

◆ SDXC_ADMA3_CMD_DESC_IDX_CMD_XFER

#define SDXC_ADMA3_CMD_DESC_IDX_CMD_XFER   (3U)

◆ SDXC_ADMA3_CMD_DESC_WORDS

#define SDXC_ADMA3_CMD_DESC_WORDS   (sizeof(sdxc_adma3_cmd_sd_desc_t) / sizeof(uint32_t))

◆ SDXC_ADMA3_CMD_FOR_SD_DESC_ATTR

#define SDXC_ADMA3_CMD_FOR_SD_DESC_ATTR   (0x09U)

◆ SDXC_ADMA3_DESC_TYPE_FOR_SD_MODE

#define SDXC_ADMA3_DESC_TYPE_FOR_SD_MODE   (0x1U)

◆ SDXC_ADMA3_INTEGRATED_ATTR_END

#define SDXC_ADMA3_INTEGRATED_ATTR_END   (1UL << 1)

◆ SDXC_ADMA3_INTEGRATED_ATTR_INT

#define SDXC_ADMA3_INTEGRATED_ATTR_INT   (1UL << 2)

◆ SDXC_ADMA3_INTEGRATED_ATTR_VALID

#define SDXC_ADMA3_INTEGRATED_ATTR_VALID   (1UL << 0)

◆ SDXC_ADMA3_INTEGRATED_DESC_ATTR

#define SDXC_ADMA3_INTEGRATED_DESC_ATTR   (0x39U)

◆ SDXC_ADMA3_INTEGRATED_DESC_WORDS

#define SDXC_ADMA3_INTEGRATED_DESC_WORDS   (sizeof(sdxc_adma3_integrated_desc_t) / sizeof(uint32_t))

◆ SDXC_AMDA3_DESC_MIN_WORDS

#define SDXC_AMDA3_DESC_MIN_WORDS

#include <drivers/inc/hpm_sdxc_drv.h>

Value:
sizeof(sdxc_adma2_descriptor_t)) / sizeof(uint32_t))
struct _sdxc_adma3_integrated_desc sdxc_adma3_integrated_desc_t
SDXC ADMA3 Integrated Descriptor.
struct _sdxc_adma3_cmd_sd_desc sdxc_adma3_cmd_sd_desc_t
ADMA3 command descriptor.
struct _sdxc_adma2_descriptor sdxc_adma2_descriptor_t
SDXC ADMA2 descriptor.

◆ SDXC_AMDA3_DESC_TYPE_INTEGRATED_LINKER

#define SDXC_AMDA3_DESC_TYPE_INTEGRATED_LINKER   (7U)

◆ SDXC_CMD_CMD_CRC_CHK_DIS

#define SDXC_CMD_CMD_CRC_CHK_DIS   (0U)

◆ SDXC_CMD_CMD_CRC_CHK_EN

#define SDXC_CMD_CMD_CRC_CHK_EN   (SDXC_CMD_XFER_CMD_CRC_CHK_ENABLE_MASK)

◆ SDXC_CMD_CMD_IDX_CHK_DIS

#define SDXC_CMD_CMD_IDX_CHK_DIS   (0U)

◆ SDXC_CMD_CMD_IDX_CHK_EN

#define SDXC_CMD_CMD_IDX_CHK_EN   (SDXC_CMD_XFER_CMD_IDX_CHK_ENABLE_MASK)

◆ SDXC_CMD_CMD_IS_MAIN_CMD

#define SDXC_CMD_CMD_IS_MAIN_CMD   (0U)

◆ SDXC_CMD_CMD_IS_SUB_CMD

#define SDXC_CMD_CMD_IS_SUB_CMD   (SDXC_CMD_XFER_SUB_CMD_FLAG_MASK)

◆ SDXC_CMD_CMD_TYPE_ABORT

#define SDXC_CMD_CMD_TYPE_ABORT   (3U << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

◆ SDXC_CMD_CMD_TYPE_NORMAL

#define SDXC_CMD_CMD_TYPE_NORMAL   (0U)

◆ SDXC_CMD_CMD_TYPE_RESUME

#define SDXC_CMD_CMD_TYPE_RESUME   (2U << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

◆ SDXC_CMD_CMD_TYPE_SUSPEND

#define SDXC_CMD_CMD_TYPE_SUSPEND   (1UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

◆ SDXC_CMD_DATA_NO_PRESENT

#define SDXC_CMD_DATA_NO_PRESENT   (0U)

◆ SDXC_CMD_DATA_PRESENT

#define SDXC_CMD_DATA_PRESENT   (SDXC_CMD_XFER_DATA_PRESENT_SEL_MASK)

◆ SDXC_CMD_RESP_LEN_136

#define SDXC_CMD_RESP_LEN_136   (1UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)

◆ SDXC_CMD_RESP_LEN_48

#define SDXC_CMD_RESP_LEN_48   (2UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)

◆ SDXC_CMD_RESP_LEN_48B

#define SDXC_CMD_RESP_LEN_48B   (3UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)

◆ SDXC_CMD_RESP_NO_RESPONSE

#define SDXC_CMD_RESP_NO_RESPONSE   (0UL << SDXC_CMD_XFER_RESP_TYPE_SELECT_SHIFT)

◆ SDXC_CMD_RESP_TYPE_NO_RESP

#define SDXC_CMD_RESP_TYPE_NO_RESP   (0U)

#include <drivers/inc/hpm_sdxc_drv.h>

Command Response Type Selection.

No Response

◆ SDXC_CMD_RESP_TYPE_RESP_LEN_136

#define SDXC_CMD_RESP_TYPE_RESP_LEN_136   (1U)

#include <drivers/inc/hpm_sdxc_drv.h>

Response Length 136

◆ SDXC_CMD_RESP_TYPE_RESP_LEN_48

#define SDXC_CMD_RESP_TYPE_RESP_LEN_48   (2U)

#include <drivers/inc/hpm_sdxc_drv.h>

Response Length 48

◆ SDXC_CMD_RESP_TYPE_RESP_LEN_48B

#define SDXC_CMD_RESP_TYPE_RESP_LEN_48B   (3U)

#include <drivers/inc/hpm_sdxc_drv.h>

Response Length 48; Check busy after response

◆ SDXC_CMD_TYPE_ABORT

#define SDXC_CMD_TYPE_ABORT   (3UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

◆ SDXC_CMD_TYPE_NORMAL

#define SDXC_CMD_TYPE_NORMAL   (0UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

#include <drivers/inc/hpm_sdxc_drv.h>

Command Type.

◆ SDXC_CMD_TYPE_RESUME

#define SDXC_CMD_TYPE_RESUME   (2UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

◆ SDXC_CMD_TYPE_SUSPEND

#define SDXC_CMD_TYPE_SUSPEND   (1UL << SDXC_CMD_XFER_CMD_TYPE_SHIFT)

◆ SDXC_HOST_CD_IN_IP

#define SDXC_HOST_CD_IN_IP   (SDXC_HOST_SUPPORT_CD << 8)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Pin is native or from GPIO.

Card detection is controlled by IP

◆ SDXC_HOST_CD_PIN_POLARITY

#define SDXC_HOST_CD_PIN_POLARITY   (SDXC_HOST_VSEL_IN_IP << 16)

◆ SDXC_HOST_PWR_IN_IP

#define SDXC_HOST_PWR_IN_IP   (SDXC_HOST_SUPPORT_PWR << 8)

#include <drivers/inc/hpm_sdxc_drv.h>

Power switch is controlled by IP

◆ SDXC_HOST_PWR_PIN_POLARITY

#define SDXC_HOST_PWR_PIN_POLARITY   (SDXC_HOST_SUPPORT_PWR << 16)

◆ SDXC_HOST_RST_IN_IP

#define SDXC_HOST_RST_IN_IP   (SDXC_HOST_SUPPORT_RST << 8)

#include <drivers/inc/hpm_sdxc_drv.h>

Reset Pin is controlled by IP

◆ SDXC_HOST_RST_IN_POLARITY

#define SDXC_HOST_RST_IN_POLARITY   (SDXC_HOST_SUPPORT_DS << 16)

◆ SDXC_HOST_SUPPORT_1V8

#define SDXC_HOST_SUPPORT_1V8   (1UL << 0)

#include <drivers/inc/hpm_sdxc_drv.h>

Generic Definitions.

Note
: If the Host support 1.8V, it means:
  1. For SD card, it supports:
    • SDR12
    • SDR25
    • SDR50
    • SDR104
    • DDR50
  2. For eMMC, it supports:
    • DDR50
    • HS200
    • HS400 (if 8-bit is supported as well) SDXC Host support 1.8v

◆ SDXC_HOST_SUPPORT_4BIT

#define SDXC_HOST_SUPPORT_4BIT   (1UL << 1)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support 4bit

◆ SDXC_HOST_SUPPORT_8BIT

#define SDXC_HOST_SUPPORT_8BIT   (1UL << 2)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support 8bit

◆ SDXC_HOST_SUPPORT_CD

#define SDXC_HOST_SUPPORT_CD   (1UL << 16)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Pin features.

SDXC Host support Card detection

◆ SDXC_HOST_SUPPORT_DS

#define SDXC_HOST_SUPPORT_DS   (1UL << 21)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support Data Strobe

◆ SDXC_HOST_SUPPORT_EMMC

#define SDXC_HOST_SUPPORT_EMMC   (1UL << 3)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support EMMC

◆ SDXC_HOST_SUPPORT_PWR

#define SDXC_HOST_SUPPORT_PWR   (1UL << 18)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support Power Switch

◆ SDXC_HOST_SUPPORT_RST

#define SDXC_HOST_SUPPORT_RST   (1UL << 20)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support Reset Pin

◆ SDXC_HOST_SUPPORT_VSEL

#define SDXC_HOST_SUPPORT_VSEL   (1UL << 17)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support Voltage Selection

◆ SDXC_HOST_SUPPORT_WP

#define SDXC_HOST_SUPPORT_WP   (1UL << 19)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Host support Write Protection

◆ SDXC_HOST_VSEL_IN_IP

#define SDXC_HOST_VSEL_IN_IP   (SDXC_HOST_SUPPORT_VSEL << 8)

#include <drivers/inc/hpm_sdxc_drv.h>

Voltage selection is controlled by IP

◆ SDXC_HOST_VSEL_PIN_POLARITY

#define SDXC_HOST_VSEL_PIN_POLARITY   (SDXC_HOST_SUPPORT_CD << 16)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC GPIO pin polarity If polarity is 0, it means: GPIO level 0 means disabled, 1 means enabled If polarity is 1, it meansL: GPIO level 0 means enabled, 1 means disabled.

◆ SDXC_HOST_WP_IN_IP

#define SDXC_HOST_WP_IN_IP   (SDXC_HOST_SUPPORT_WP << 8)

#include <drivers/inc/hpm_sdxc_drv.h>

Write protection is controlled by IP

◆ SDXC_HOST_WP_PIN_POLARITY

#define SDXC_HOST_WP_PIN_POLARITY   (SDXC_HOST_SUPPORT_WP << 16)

◆ SDXC_IS_DMA_ALIGNED

#define SDXC_IS_DMA_ALIGNED (   value)    (((uint32_t)(value) % 4UL) == 0U)

◆ SDXC_STS_ALL_FLAGS

#define SDXC_STS_ALL_FLAGS

#include <drivers/inc/hpm_sdxc_drv.h>

Value:
SDXC_INT_STAT_BUF_WR_READY_MASK | SDXC_INT_STAT_DMA_INTERRUPT_MASK | SDXC_INT_STAT_BGAP_EVENT_MASK | \
SDXC_INT_STAT_XFER_COMPLETE_MASK | SDXC_INT_STAT_CMD_COMPLETE_MASK | SDXC_INT_STAT_BOOT_ACK_ERR_MASK | \
SDXC_INT_STAT_RESP_ERR_MASK | SDXC_INT_STAT_TUNING_ERR_MASK | SDXC_INT_STAT_ADMA_ERR_MASK | \
SDXC_INT_STAT_CMD_END_BIT_ERR_MASK | SDXC_INT_STAT_CMD_CRC_ERR_MASK | SDXC_INT_STAT_CMD_TOUT_ERR_MASK)
#define SDXC_INT_STAT_ADMA_ERR_MASK
Definition: hpm_sdxc_regs.h:1190
#define SDXC_INT_STAT_RE_TUNE_EVENT_MASK
Definition: hpm_sdxc_regs.h:1385
#define SDXC_INT_STAT_CMD_CRC_ERR_MASK
Definition: hpm_sdxc_regs.h:1319
#define SDXC_INT_STAT_DATA_TOUT_ERR_MASK
Definition: hpm_sdxc_regs.h:1272
#define SDXC_INT_STAT_BOOT_ACK_ERR_MASK
Definition: hpm_sdxc_regs.h:1133
#define SDXC_INT_STAT_BGAP_EVENT_MASK
Definition: hpm_sdxc_regs.h:1485
#define SDXC_INT_STAT_TUNING_ERR_MASK
Definition: hpm_sdxc_regs.h:1168
#define SDXC_INT_STAT_CMD_COMPLETE_MASK
Definition: hpm_sdxc_regs.h:1514
#define SDXC_INT_STAT_CQE_EVENT_MASK
Definition: hpm_sdxc_regs.h:1361
#define SDXC_INT_STAT_CUR_LMT_ERR_MASK
Definition: hpm_sdxc_regs.h:1225
#define SDXC_INT_STAT_DMA_INTERRUPT_MASK
Definition: hpm_sdxc_regs.h:1471
#define SDXC_INT_STAT_CARD_INTERRUPT_MASK
Definition: hpm_sdxc_regs.h:1400
#define SDXC_INT_STAT_ERR_INTERRUPT_MASK
Definition: hpm_sdxc_regs.h:1348
#define SDXC_INT_STAT_DATA_END_BIT_ERR_MASK
Definition: hpm_sdxc_regs.h:1239
#define SDXC_INT_STAT_CARD_INSERTION_MASK
Definition: hpm_sdxc_regs.h:1427
#define SDXC_INT_STAT_BUF_RD_READY_MASK
Definition: hpm_sdxc_regs.h:1441
#define SDXC_INT_STAT_CMD_TOUT_ERR_MASK
Definition: hpm_sdxc_regs.h:1334
#define SDXC_INT_STAT_CMD_IDX_ERR_MASK
Definition: hpm_sdxc_regs.h:1286

◆ SDXC_STS_CARD_ERR

#define SDXC_STS_CARD_ERR   (SDXC_INT_STAT_CARD_REMOVAL_MASK)

◆ SDXC_STS_CMD_ERR

#define SDXC_STS_CMD_ERR

#include <drivers/inc/hpm_sdxc_drv.h>

Value:
SDXC_INT_STAT_CMD_END_BIT_ERR_MASK | SDXC_INT_STAT_CMD_IDX_ERR_MASK | SDXC_INT_STAT_AUTO_CMD_ERR_MASK)
#define SDXC_INT_STAT_AUTO_CMD_ERR_MASK
Definition: hpm_sdxc_regs.h:1206

◆ SDXC_STS_CMD_FLAGS

#define SDXC_STS_CMD_FLAGS   (SDXC_STS_CMD_ERR | SDXC_INT_STAT_CMD_COMPLETE_MASK)

◆ SDXC_STS_DATA_ERR

#define SDXC_STS_DATA_ERR

#include <drivers/inc/hpm_sdxc_drv.h>

Value:
SDXC_INT_STAT_DATA_END_BIT_ERR_MASK | SDXC_INT_STAT_ADMA_ERR_MASK)
#define SDXC_INT_STAT_DATA_CRC_ERR_MASK
Definition: hpm_sdxc_regs.h:1254

◆ SDXC_STS_ERROR

Typedef Documentation

◆ sdxc_adma2_descriptor_t

typedef struct _sdxc_adma2_descriptor sdxc_adma2_descriptor_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC ADMA2 descriptor.

◆ sdxc_adma3_cmd_sd_desc_t

typedef struct _sdxc_adma3_cmd_sd_desc sdxc_adma3_cmd_sd_desc_t

#include <drivers/inc/hpm_sdxc_drv.h>

ADMA3 command descriptor.

◆ sdxc_adma3_integrated_desc_t

typedef struct _sdxc_adma3_integrated_desc sdxc_adma3_integrated_desc_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC ADMA3 Integrated Descriptor.

◆ sdxc_adma3_xfer_list

typedef struct _sdxc_adma3_xfer_list sdxc_adma3_xfer_list

◆ sdxc_adma_config_t

typedef struct _sdxc_adma_config sdxc_adma_config_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC ADMA configuration.

◆ sdxc_auto_cmd_sel_t

typedef enum _sdxc_auto_cmd_sel sdxc_auto_cmd_sel_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC auto command types.

◆ sdxc_boot_config_t

typedef struct _sdxc_boot_config sdxc_boot_config_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Boot configuration.

◆ sdxc_boot_mode_t

typedef enum _sdxc_boot_mode sdxc_boot_mode_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC boot mode types.

◆ sdxc_bus_voltage_option_t

typedef enum _sdxc_bus_voltage_option sdxc_bus_voltage_option_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Bus voltage options.

◆ sdxc_bus_width_t

typedef enum _sdxc_bus_width sdxc_bus_width_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Bus width options.

◆ sdxc_command_t

typedef struct _sdxc_command sdxc_command_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC command structure.

◆ sdxc_command_type_t

typedef enum _sdxc_command_type sdxc_command_type_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Command types.

◆ sdxc_config_t

typedef struct _sdxc_config sdxc_config_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC configuration.

◆ sdxc_data_list_t

typedef struct _sdxc_data_list sdxc_data_list_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC data list.

◆ sdxc_data_t

typedef struct _sdxc_data sdxc_data_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC data structure.

◆ sdxc_dev_resp_type_t

typedef enum _sdxc_dev_resp_type sdxc_dev_resp_type_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Device response type.

◆ sdxc_dma_type_t

typedef enum _sdxc_dma_type sdxc_dma_type_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC DMA types.

◆ sdxc_response_type_t

typedef enum _sdxc_response_type sdxc_response_type_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC response types.

◆ sdxc_speed_mode_t

typedef enum _sdxc_speed_mode sdxc_speed_mode_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Speed mode options.

◆ sdxc_sw_reset_type_t

typedef enum _sdxc_software_reset sdxc_sw_reset_type_t

#include <drivers/inc/hpm_sdxc_drv.h>

Software reset flag definitions.

◆ sdxc_wakeup_event_t

typedef enum _sdxc_wakeup_event sdxc_wakeup_event_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC wakeup events.

◆ sdxc_xfer_direction_t

typedef enum _sdxc_xfer_direction sdxc_xfer_direction_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC transfer direction options.

◆ sdxc_xfer_func_t

typedef hpm_stat_t(* sdxc_xfer_func_t) (SDXC_Type *base, sdxc_xfer_t *content)

◆ sdxc_xfer_t

typedef struct _sdxc_xfer sdxc_xfer_t

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC transfer context.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC error codes.

Enumerator
status_sdxc_busy 

SDXC is busy

status_sdxc_error 

SDXC error

status_sdxc_send_cmd_failed 

SDXC command failed

status_sdxc_cmd_timeout_error 

SDXC command timed out

status_sdxc_cmd_crc_error 

SDXC command CRC error

status_sdxc_cmd_end_bit_error 

SDXC command end bit error

status_sdxc_cmd_index_error 

SDXC command index error

status_sdxc_data_timeout_error 

SDXC data timeout error

status_sdxc_data_crc_error 

SDXC data CRC error

status_sdxc_data_end_bit_error 

SDXC data end bit error

status_sdxc_auto_cmd_error 

SDXC auto command error

status_sdxc_adma_error 

SDXC ADMA error

status_sdxc_tuning_error 

SDXC tuning error

status_sdxc_response_error 

SDXC response error

status_sdxc_boot_ack_error 

SDXC boot ack error

status_sdxc_retuning_request 

SDXC retuning request

status_sdxc_autocmd_cmd12_not_exec 
status_sdxc_autocmd_cmd_timeout_error 

SDXC Auto CMD timed out

status_sdxc_autocmd_cmd_crc_error 

SDXC Auto CMD crc error

status_sdxc_autocmd_end_bit_error 

SDXC Auto CMD end bit error

status_sdxc_autocmd_cmd_index_error 

SDXC Auto CMD index error

status_sdxc_autocmd_cmd_response_error 

SDXC Auto CMD response error

status_sdxc_autocmd_cmd_not_issued_auto_cmd12 

SDXC unsupported operation

status_sdxc_unsupported 
status_sdxc_transfer_data_completed 

SDXC transfer data completed

status_sdxc_send_cmd_successful 

SDXC send command succeeded

status_sdxc_transfer_dma_completed 

SDXC transfer DMA completed

status_sdxc_transfer_data_failed 

SDXC transfer data failed

status_sdxc_dma_addr_or_len_unaligned 

SDXC DMA address/length unaligned

status_sdxc_tuning_failed 

SDXC tuning failed

status_sdxc_card_removed 

SDXC Card removed

status_sdxc_non_recoverable_error 

SDXC non-recoverable error

status_sdxc_recoverable_error 

SDXC recoverable error

status_sdxc_adma_table_not_enough 

ADMA table size not enough

status_sdxc_xfer_size_exceeds_max_limit 

SDXC Transfer size too large

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC transfer data type.

Enumerator
sdxc_xfer_data_normal 

Transfer normal read/write data

sdxc_xfer_data_boot 

Transfer boot data

sdxc_xfer_data_boot_continuous 

Transfer boot data continuously

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_sdxc_drv.h>

Enumerator
sdxc_adma_desc_single_flag 
sdxc_adma_desc_multi_flag 

Function Documentation

◆ sdxc_adma3_transfer_nonblocking()

hpm_stat_t sdxc_adma3_transfer_nonblocking ( SDXC_Type base,
sdxc_adma_config_t dma_config,
sdxc_adma3_xfer_list adma3_xfer_list 
)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC ADMA3 nonblocking transfer.

Parameters
[in]baseSDXC base address
[in,out]dma_configSDXC DMA configuration
[in]adma3_xfer_listADMA3 transfer list
Returns
SDXC transfer status

◆ sdxc_clear_interrupt_status()

static void sdxc_clear_interrupt_status ( SDXC_Type base,
uint32_t  status_mask 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Clear SDXC interrupt status.

Parameters
[in]baseSDXC base address
[in]status_maskthe status mask to be cleared

◆ sdxc_configure_data_timeout()

static void sdxc_configure_data_timeout ( SDXC_Type base,
uint8_t  timeout 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Configure SDXC data timeout internal.

Parameters
[in]baseSDXC base address
[in]timeoutSDXC data timeout option

◆ sdxc_continue_request()

static void sdxc_continue_request ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Configure SDXC continue request.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable SDXC continue request

◆ sdxc_enable_async_interrupt()

static void sdxc_enable_async_interrupt ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC asynchronous interrupt support.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable SDXC asynchronous interrupt support

◆ sdxc_enable_auto_tuning()

static void sdxc_enable_auto_tuning ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC auto tuning.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable SDXC auto tuning

◆ sdxc_enable_emmc_support()

static void sdxc_enable_emmc_support ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable EMMC support.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable EMMC support

◆ sdxc_enable_enhanced_strobe()

static void sdxc_enable_enhanced_strobe ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC enhanced strobe.

Parameters
[in]baseSDXC base address
[in]enableflag to enable/disable SDXC enhanced strobe

◆ sdxc_enable_high_speed()

static void sdxc_enable_high_speed ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Control the SDXC high-speed support.

Parameters
[in]baseSDXC base address
[in]enableflag to Enable/disable SDXC high-speed support

◆ sdxc_enable_host_version4()

static void sdxc_enable_host_version4 ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SD Host version 4.

Parameters
[in]baseSDXC base address
[in]enableflag to enable/disable SD Host version 4 support

◆ sdxc_enable_internal_clock()

static void sdxc_enable_internal_clock ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable/Disable SDXC internal clock.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable SDXC internal clock

◆ sdxc_enable_interrupt_signal()

static void sdxc_enable_interrupt_signal ( SDXC_Type base,
uint32_t  mask,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC interrupt signal.

Parameters
[in]baseSDXC base address
[in]maskSDXC interrupt signal mask
[in]enableInterrupt signal enable flag

◆ sdxc_enable_interrupt_status()

static void sdxc_enable_interrupt_status ( SDXC_Type base,
uint32_t  mask,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC interrupt status.

Parameters
[in]baseSDXC base address
[in]maskSDXC interrupt status mask
[in]enableInterrupt status enable flag

◆ sdxc_enable_mmc_boot()

static void sdxc_enable_mmc_boot ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable/Disable SDXC MMC boot.

Parameters
[in]baseSDXC base address
[in]enableFLag to enable/disable SDXC MMC boot

◆ sdxc_enable_power()

static void sdxc_enable_power ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Control the SDXC power pin.

Parameters
[in]baseSDXC base address
[in]enableFlag to control the SDXC power pin

◆ sdxc_enable_preset()

static void sdxc_enable_preset ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC Preset support.

Parameters
[in]baseSDXC base address
[in]enableflag to enable/disable SDXC Preset support

◆ sdxc_enable_sd_clock()

static void sdxc_enable_sd_clock ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable/disable SDXC SD clock output.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable SDXC SD clock output

◆ sdxc_enable_software_tuning()

static void sdxc_enable_software_tuning ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC software tuning process.

Parameters
[in]baseSDXC base address
[in]enableflag to enable/disable SDXC software tuning

◆ sdxc_enable_wakeup_event()

void sdxc_enable_wakeup_event ( SDXC_Type base,
sdxc_wakeup_event_t  evt,
bool  enable 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Enable SDXC wakeup interrupt.

Parameters
[in]baseSDXC base address
[in]evtSDXC wakeup interrupt
[in]enableFlag to control whether to enable SDXC wakeup event

◆ sdxc_error_recovery()

hpm_stat_t sdxc_error_recovery ( SDXC_Type base,
sdxc_command_t cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

SDXC Error recovery.

Parameters
[in]baseSDXC base address
[in]cmdSDXC command context
Returns
SDXC error recovering status

◆ sdxc_execute_tuning()

static void sdxc_execute_tuning ( SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Start SDXC tuning process.

Parameters
[in]baseSDXC base address

◆ sdxc_force_event()

static void sdxc_force_event ( SDXC_Type base,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Set SDXC force event.

Parameters
[in]baseSDXC base address
[in]maskSDXC event mask

◆ sdxc_get_adma_error_status()

static uint8_t sdxc_get_adma_error_status ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Get SDXC ADMA error status.

Parameters
[in]baseSDXC base address
Return values
AMDAerror status register value

◆ sdxc_get_capabilities()

hpm_stat_t sdxc_get_capabilities ( const SDXC_Type base,
sdxc_capabilities_t capabilities 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Get SDXC capabilities.

Parameters
[in]baseSDXC base address
[out]capabilitiesbuffer

◆ sdxc_get_data3_0_level()

static uint32_t sdxc_get_data3_0_level ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Get SDXC DATA3-DATA0 IO level.

Parameters
[in]baseSDXC base address
Return values
SDXCdata3-data0 IO level

◆ sdxc_get_data7_4_level()

static uint32_t sdxc_get_data7_4_level ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Get SDXC DATA7-DATA4 IO level.

Parameters
[in]baseSDXC base address
Return values
SDXCdata7-data4 IO level

◆ sdxc_get_data_bus_width()

uint32_t sdxc_get_data_bus_width ( const SDXC_Type base)

#include <drivers/inc/hpm_sdxc_drv.h>

Get SDXC Data bus width.

Parameters
[in]baseSDXC base address
Returns
Actual bus width, valid value: 1 / 4 / 8

◆ sdxc_get_interrupt_signal()

static uint32_t sdxc_get_interrupt_signal ( SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Get the SDXC interrupt Signal Enable Register.

Returns
the value of INT_SIGNAL_EN register

◆ sdxc_get_interrupt_status()

static uint32_t sdxc_get_interrupt_status ( SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Get the SDXC interrupt status.

Parameters
[in]baseSDXC base address
Return values
SDXCinterrupt status

◆ sdxc_get_present_status()

static uint32_t sdxc_get_present_status ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Get Present status register value.

Parameters
[in]baseSDXC base address
Return values
SDXCPRESENT register value

◆ sdxc_init()

void sdxc_init ( SDXC_Type base,
const sdxc_config_t config 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Initialize SDXC controller.

Parameters
[in]baseSDXC base address
[in]configSDXC configuration

◆ sdxc_interrupt_at_block_gap()

static void sdxc_interrupt_at_block_gap ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Configure SDXC interrupt at block gap.

Parameters
[in]baseSDXC base address
[in]enableEnable Interrupt_at_Block_Gap flag

◆ sdxc_is_bus_idle()

bool sdxc_is_bus_idle ( const SDXC_Type base)

#include <drivers/inc/hpm_sdxc_drv.h>

Check whether SDXC Bus is idle.

Parameters
[in]baseSDXC base address
Returns
SDXC bus state

◆ sdxc_is_card_inserted()

static bool sdxc_is_card_inserted ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Check whether SD card is inserted.

Return values
SDCard insertion status
  • true SD Card is inserted
  • false SD card is not inserted

◆ sdxc_is_data_buf_readable()

static bool sdxc_is_data_buf_readable ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Check whether the data buffer is readable.

Parameters
[in]baseSDXC base address
Return values
trueThere are data available in data buffer
falsethere is no data available in data buffer, read is disabled

◆ sdxc_is_data_buf_writable()

static bool sdxc_is_data_buf_writable ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Check whether the Data Buffer is writable or not.

Parameters
[in]baseSDXC base address
Return values
trueData buffer is writeable
falseData buffer write is disabled

◆ sdxc_is_write_protected()

static bool sdxc_is_write_protected ( const SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Check whether SD card is Write Protected.

Return values
SDCard Write Protection status
  • true SD Card is Write protected
  • false SD card is not Write Protected

◆ sdxc_parse_interrupt_status()

hpm_stat_t sdxc_parse_interrupt_status ( SDXC_Type base)

#include <drivers/inc/hpm_sdxc_drv.h>

Parse the SDXC interrupt status to HPM encoded status.

Parameters
[in]baseSDXC base status
Returns
status_success if no error happened

◆ sdxc_perform_auto_tuning()

hpm_stat_t sdxc_perform_auto_tuning ( SDXC_Type base,
uint8_t  tuning_cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Perform SDXC auto-tuning.

Parameters
[in]baseSDXC base address
[in]tuning_cmdtuning command
Return values
Tuningstatus

◆ sdxc_perform_software_tuning()

hpm_stat_t sdxc_perform_software_tuning ( SDXC_Type base,
uint8_t  tuning_cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Perform SDXC software tuning.

Parameters
[in]baseSDXC base address
[in]tuning_cmdTuning command
Return values
Tuningstatus

◆ sdxc_perform_tuning_flow_sequence()

hpm_stat_t sdxc_perform_tuning_flow_sequence ( SDXC_Type base,
uint8_t  tuning_cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Perform SDXC tuning flow sequence.

Parameters
[in]baseSDXC base address
[in]tuning_cmdTuning command
Return values
Tuningstatus

◆ sdxc_read_data()

static uint32_t sdxc_read_data ( SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Read data from SDXC using non-DMA mode.

Parameters
[in]baseSDXC base address
Return values
Dataread from SDXC

◆ sdxc_read_wait_control()

static void sdxc_read_wait_control ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Enable or Disable SDXC Read Wait.

Parameters
[in]baseSDXC base address
[in]enableEnable SDXC Read Wait flag

◆ sdxc_receive_cmd_response()

hpm_stat_t sdxc_receive_cmd_response ( const SDXC_Type base,
sdxc_command_t cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Receive command response.

Parameters
[in]baseSDXC base address
[in,out]cmdCommand
Returns
status_success if no error happened

◆ sdxc_reset()

bool sdxc_reset ( SDXC_Type base,
sdxc_sw_reset_type_t  reset_type,
uint32_t  timeout 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Reset SDXC.

Parameters
[in]baseSDXC base address
[in]reset_typeSDXC reset type
[in]timeouttimeout ticks
Returns
SDXC reset result

◆ sdxc_reset_tuning_engine()

static void sdxc_reset_tuning_engine ( SDXC_Type base)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Reset SDXC tuning engine.

Parameters
[in]baseSDXC base address

◆ sdxc_select_dma_type()

static void sdxc_select_dma_type ( SDXC_Type base,
sdxc_dma_type_t  dma_type 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Select DMA type.

Parameters
[in]baseSDXC base address
[in]dma_typeSDXC DMA type

◆ sdxc_select_voltage()

void sdxc_select_voltage ( SDXC_Type base,
sdxc_bus_voltage_option_t  option 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set SDXC IO voltage.

Parameters
[in]baseSDXC base address
[in]optionSDXC voltage option

◆ sdxc_send_command()

hpm_stat_t sdxc_send_command ( SDXC_Type base,
const sdxc_command_t cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Send Command via SDXC.

Parameters
[in]baseSDXC base address
[in]cmdCommand
Return values
status_timeoutSending command timed out
status_successCommand was sent out successfully

◆ sdxc_set_adma2_desc()

hpm_stat_t sdxc_set_adma2_desc ( sdxc_adma_config_t dma_config,
const sdxc_data_t xfer_data,
uint32_t *  num_entries 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set ADMA2 descriptor.

Parameters
[in]dma_configDMA configuration context
[in]xfer_datapointer to the Data to be transferred
[in]data_bytesData size for transfer
[out]num_entriesNumber of ADMA2 Table entries
Returns
API execution status

◆ sdxc_set_adma3_desc()

hpm_stat_t sdxc_set_adma3_desc ( sdxc_adma_config_t dma_config,
sdxc_adma3_xfer_list adma3_xfer_list 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set ADMA3 descriptor.

Parameters
[in]dma_configDMA configuration context
[in]xfer_datapointer to the Data to be transferred
[in]cmdCommand context @Note adma_tbl layout is: Command descriptor ADMA2 descriptor ADMA3 integrated descriptor (address pointer to command descriptor)
Return values
APIexecution status

◆ sdxc_set_adma_table_config()

hpm_stat_t sdxc_set_adma_table_config ( SDXC_Type base,
sdxc_adma_config_t dma_cfg,
sdxc_data_t data_cfg,
sdxc_command_t cmd 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set ADMA table configuration.

Parameters
[in]baseSDXC base address
[in]dma_cfgDMA configuration
[in]data_cfgData configuration
[in]cmdSDXC command context
Return values
APIexecution status

◆ sdxc_set_center_phase_code()

static void sdxc_set_center_phase_code ( SDXC_Type base,
uint32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Set SDXC center phase code.

Parameters
[in]baseSDXC base address
[in]valueSDXC center phase value

◆ sdxc_set_data_bus_width()

void sdxc_set_data_bus_width ( SDXC_Type base,
sdxc_bus_width_t  width 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set SDXC Data bus width.

Parameters
[in]baseSDXC base address
[in]widthSDXC bus width option

◆ sdxc_set_data_config()

void sdxc_set_data_config ( SDXC_Type base,
sdxc_xfer_direction_t  data_dir,
uint32_t  block_cnt,
uint32_t  block_size 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set Data transfer configuration.

Parameters
[in]baseSDXC base address
[in]data_dirData transfer direction
[in]block_cntBlock count for data transfer
[in]block_sizeBlock size for data transfer

◆ sdxc_set_data_timeout()

void sdxc_set_data_timeout ( SDXC_Type base,
uint32_t  timeout_in_ms,
uint32_t *  actual_timeout_ms 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set the Data Timeout Counter value for an SD/eMMC device.

Parameters
[in]baseSDXC base address
[in]timeout_in_msRequired timeout value in milliseconds, maximum value is 131,072ms
[out]actual_timeout_msActual timeout in milliseconds, reported by this API

◆ sdxc_set_dma_config()

hpm_stat_t sdxc_set_dma_config ( SDXC_Type base,
const sdxc_adma_config_t dma_cfg,
const uint32_t *  data_addr 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set DMA configuration.

Parameters
[in]baseSDXC base address
[in]dma_cfgDMA configuration data structure
[in]data_addrBuffer holds incoming/outgoing data
Return values
APIexecution status

◆ sdxc_set_mmc_boot_config()

void sdxc_set_mmc_boot_config ( SDXC_Type base,
const sdxc_boot_config_t config 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set MMC boot configuration.

Parameters
[in]baseSDXC base address
[in]configMMC boot configuration

◆ sdxc_set_post_change_delay()

static void sdxc_set_post_change_delay ( SDXC_Type base,
uint8_t  delay_cnt 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Set The delay cycles during phase switching and stable clock out.

Parameters
[in]baseSDXC base address
[in]delay_cntDelay cycles

◆ sdxc_set_speed_mode()

void sdxc_set_speed_mode ( SDXC_Type base,
sdxc_speed_mode_t  mode 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Set SDXC speed mode.

Parameters
[in]baseSDXC base address
[in]modeSDXC speed mode option

◆ sdxc_stop_at_block_gap_request()

static void sdxc_stop_at_block_gap_request ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Configure SDXC StopAtBlockGap request.

Parameters
[in]baseSDXC base address
[in]enableFlag to enable/disable StopAtBlockGap request

◆ sdxc_stop_clock_during_phase_code_change()

static void sdxc_stop_clock_during_phase_code_change ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Stop Clock During Phase Code Change.

Parameters
[in]baseSDXC base address
[in]enableFlag to determine whether stopping clock during phase code change

◆ sdxc_switch_to_1v8_signal()

static void sdxc_switch_to_1v8_signal ( SDXC_Type base,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Switch SDXC to 1.8V signaling mode.

Parameters
[in]baseSDXC base address
[in]enableFlag to switch to 1.8v signaling mode/stay at 3.0v signaling mode

◆ sdxc_transfer_blocking()

hpm_stat_t sdxc_transfer_blocking ( SDXC_Type base,
sdxc_adma_config_t dma_config,
const sdxc_xfer_t xfer 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Start SDXC transfer in blocking way.

Parameters
[in]baseSDXC base address
[in,out]dma_configSDXC DMA configuration
[in]xferSDXC transfer context
Returns
SDXC transfer status

◆ sdxc_transfer_nonblocking()

hpm_stat_t sdxc_transfer_nonblocking ( SDXC_Type base,
sdxc_adma_config_t dma_config,
const sdxc_xfer_t xfer 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Start SDXC transfer in nonblocking way.

Parameters
[in]baseSDXC base address
[in,out]dma_configSDXC DMA configuration
[in]xferSDXC transfer context
Returns
SDXC transfer status

◆ sdxc_wait_cmd_done()

hpm_stat_t sdxc_wait_cmd_done ( SDXC_Type base,
sdxc_command_t cmd,
bool  polling_cmd_done 
)

#include <drivers/inc/hpm_sdxc_drv.h>

Wait until SDXC command completes.

Parameters
[in]baseSDXC base address
[in]cmdCommand
[out]polling_cmd_doneflag to determine whether to use blocking wait
Return values
SDXCcommand execution status

◆ sdxc_write_data()

static void sdxc_write_data ( SDXC_Type base,
uint32_t  data 
)
inlinestatic

#include <drivers/inc/hpm_sdxc_drv.h>

Write data to SDXC using non-DMA mode.

Parameters
[in]baseSDXC base address
[in]dataData to be written to SDXC