HPM SDK
HPMicro Software Development Kit
hpm_sdxc_drv.c File Reference
#include "hpm_sdxc_drv.h"

Macros

#define SDXC_TMCLK_IN_MHZ   (1UL)
 
#define SDXC_DMA_MAX_XFER_LEN_26BIT   ((1UL << 26) - 4U)
 
#define SDXC_DMA_MAX_XFER_LEN_16BIT   ((1UL << 16) - 4U)
 
#define SDXC_DMA_MAX_XFER_SIZE_IN_BYTES   (512UL * 1024UL)
 
#define SDXC_SYS_DMA_ALIGN_LEN   (4U)
 

Enumerations

enum  {
  sdxc_cmd_only = (1UL << 0) , sdxc_cmd_and_tx_data = (1UL << 1) , sdxc_cmd_and_rx_data = (1UL << 2) , sdxc_data_with_auto_cmd12 = (1UL << 3) ,
  sdxc_data_with_auto_cmd23 = (1UL << 4) , sdxc_boot_data = (1UL << 5) , sdxc_boot_data_continuous = (1UL << 6)
}
 

Functions

static void sdxc_set_transfer_config (SDXC_Type *base, uint32_t xfer_flags, uint32_t block_cnt, uint32_t *new_flags)
 
static hpm_stat_t sdxc_transfer_data_blocking (SDXC_Type *base, sdxc_data_t *data, bool enable_dma)
 
static hpm_stat_t sdxc_tuning_error_recovery (SDXC_Type *base)
 
static uint32_t sdxc_prepare_cmd_xfer (const sdxc_command_t *cmd)
 
hpm_stat_t sdxc_receive_cmd_response (const SDXC_Type *base, sdxc_command_t *cmd)
 Receive command response. More...
 
bool sdxc_is_bus_idle (const SDXC_Type *base)
 Check whether SDXC Bus is idle. More...
 
hpm_stat_t sdxc_get_capabilities (const SDXC_Type *base, sdxc_capabilities_t *capabilities)
 Get SDXC capabilities. More...
 
hpm_stat_t sdxc_send_command (SDXC_Type *base, const sdxc_command_t *cmd)
 Send Command via SDXC. 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_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_mmc_boot_config (SDXC_Type *base, const sdxc_boot_config_t *config)
 Set MMC boot configuration. 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_dma_config (SDXC_Type *base, const sdxc_adma_config_t *dma_cfg, const uint32_t *data_addr)
 Set DMA configuration. 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_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_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...
 
bool sdxc_reset (SDXC_Type *base, sdxc_sw_reset_type_t reset_type, uint32_t timeout)
 Reset SDXC. More...
 
void sdxc_select_voltage (SDXC_Type *base, sdxc_bus_voltage_option_t option)
 Set SDXC IO voltage. More...
 
void sdxc_enable_wakeup_event (SDXC_Type *base, sdxc_wakeup_event_t evt, bool enable)
 Enable SDXC wakeup interrupt. 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_set_speed_mode (SDXC_Type *base, sdxc_speed_mode_t mode)
 Set SDXC speed mode. 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_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_blocking (SDXC_Type *base, sdxc_adma_config_t *dma_config, const sdxc_xfer_t *xfer)
 Start SDXC transfer in blocking way. More...
 
static hpm_stat_t sdxc_error_recovery_first_half (SDXC_Type *base)
 
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...
 

Macro Definition Documentation

◆ SDXC_DMA_MAX_XFER_LEN_16BIT

#define SDXC_DMA_MAX_XFER_LEN_16BIT   ((1UL << 16) - 4U)

◆ SDXC_DMA_MAX_XFER_LEN_26BIT

#define SDXC_DMA_MAX_XFER_LEN_26BIT   ((1UL << 26) - 4U)

◆ SDXC_DMA_MAX_XFER_SIZE_IN_BYTES

#define SDXC_DMA_MAX_XFER_SIZE_IN_BYTES   (512UL * 1024UL)

◆ SDXC_SYS_DMA_ALIGN_LEN

#define SDXC_SYS_DMA_ALIGN_LEN   (4U)

◆ SDXC_TMCLK_IN_MHZ

#define SDXC_TMCLK_IN_MHZ   (1UL)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
sdxc_cmd_only 
sdxc_cmd_and_tx_data 
sdxc_cmd_and_rx_data 
sdxc_data_with_auto_cmd12 
sdxc_data_with_auto_cmd23 
sdxc_boot_data 
sdxc_boot_data_continuous 

Function Documentation

◆ sdxc_error_recovery_first_half()

static hpm_stat_t sdxc_error_recovery_first_half ( SDXC_Type base)
static

◆ sdxc_prepare_cmd_xfer()

static uint32_t sdxc_prepare_cmd_xfer ( const sdxc_command_t cmd)
static

◆ sdxc_set_transfer_config()

static void sdxc_set_transfer_config ( SDXC_Type base,
uint32_t  xfer_flags,
uint32_t  block_cnt,
uint32_t *  new_flags 
)
static

◆ sdxc_transfer_data_blocking()

static hpm_stat_t sdxc_transfer_data_blocking ( SDXC_Type base,
sdxc_data_t data,
bool  enable_dma 
)
static

◆ sdxc_tuning_error_recovery()

hpm_stat_t sdxc_tuning_error_recovery ( SDXC_Type base)
static