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)
 Configures and sets up the ADMA3 descriptor for a transfer. 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 |\
SDXC_INT_STAT_RESP_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
[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>

Configures and sets up the ADMA3 descriptor for a transfer.

This function initializes and sets up the ADMA3 (Advanced DMA 3) descriptor based on the provided configuration and transfer list. It ensures that the ADMA table has enough space to accommodate the descriptors and integrates them into the ADMA table.

Parameters
[in]dma_configPointer to the ADMA configuration structure.
[in]adma3_xfer_listPointer to the ADMA3 transfer list.
Returns
Status of the operation, indicating success or failure.

◆ 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