Go to the source code of this file.
Data Structures | |
| struct | sdxc_capabilities_t |
| SDXC Capacities. More... | |
| struct | sdxc_xfer_callback_t |
| struct | sdxc_handle_t |
| struct | sdxc_host_t |
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... | |