![]()
![]()
#include <string.h>
![]()
![]()
#include "esp_log.h"
![]()
![]()
#include "esp_check.h"
![]()
![]()
#include "esp_heap_caps.h"
![]()
![]()
#include "freertos/FreeRTOS.h"
![]()
![]()
#include "freertos/task.h"
![]()
![]()
#include "sd_protocol_defs.h"
![]()
![]()
#include "sd_protocol_types.h"
![]()
![]()
#include "sdmmc_cmd.h"
![]()
![]()
#include "sys/param.h"
![]()
![]()
#include "soc/soc_memory_layout.h"
![]()
![]()
#include "soc/soc_caps.h"
![]()
![]()
#include "esp_dma_utils.h"
![]()
![]()
#define SDMMC_GO_IDLE_DELAY_MS
![]()
![]()
#define SDMMC_IO_SEND_OP_COND_DELAY_MS
![]()
![]()
#define SDMMC_INIT_WAIT_DATA_READY_TIMEOUT_US
![]()
![]()
#define SDMMC_READY_FOR_DATA_TIMEOUT_US
![]()
![]()
#define SDMMC_DEFAULT_CMD_TIMEOUT_MS
![]()
![]()
#define SDMMC_WRITE_CMD_TIMEOUT_MS
![]()
![]()
#define SDMMC_SD_DISCARD_TIMEOUT
![]()
![]()
#define SDMMC_SEND_OP_COND_MAX_RETRIES
![]()
![]()
#define SDMMC_SEND_OP_COND_MAX_ERRORS
![]()
![]()
#define SDMMC_SD_ERASE_ARG
![]()
![]()
#define SDMMC_SD_DISCARD_ARG
![]()
![]()
#define SDMMC_MMC_TRIM_ARG
![]()
![]()
#define SDMMC_MMC_DISCARD_ARG
![]()
![]()
#define SDMMC_FREQ_SDR104
![]()
![]()
sdmmc_send_cmd(sdmmc_card_t *, sdmmc_command_t *);
![]()
![]()
sdmmc_send_app_cmd(sdmmc_card_t *, sdmmc_command_t *);
![]()
![]()
sdmmc_send_cmd_go_idle_state(sdmmc_card_t *);
![]()
![]()
sdmmc_send_cmd_send_if_cond(sdmmc_card_t *, uint32_t);
![]()
![]()
sdmmc_send_cmd_send_op_cond(sdmmc_card_t *, uint32_t, uint32_t *);
![]()
![]()
sdmmc_send_cmd_read_ocr(sdmmc_card_t *, uint32_t *);
![]()
![]()
sdmmc_send_cmd_send_cid(sdmmc_card_t *, sdmmc_cid_t *);
![]()
![]()
sdmmc_send_cmd_all_send_cid(sdmmc_card_t *, sdmmc_response_t *);
![]()
![]()
sdmmc_send_cmd_set_relative_addr(sdmmc_card_t *, uint16_t *);
![]()
![]()
sdmmc_send_cmd_set_blocklen(sdmmc_card_t *, sdmmc_csd_t *);
![]()
![]()
sdmmc_send_cmd_switch_func(sdmmc_card_t *, uint32_t, uint32_t, uint32_t, sdmmc_switch_func_rsp_t *);
![]()
![]()
sdmmc_send_cmd_send_csd(sdmmc_card_t *, sdmmc_csd_t *);
![]()
![]()
sdmmc_send_cmd_select_card(sdmmc_card_t *, uint32_t);
![]()
![]()
sdmmc_send_cmd_send_scr(sdmmc_card_t *, sdmmc_scr_t *);
![]()
![]()
sdmmc_send_cmd_set_bus_width(sdmmc_card_t *, int);
![]()
![]()
sdmmc_send_cmd_send_status(sdmmc_card_t *, uint32_t *);
![]()
![]()
sdmmc_send_cmd_crc_on_off(sdmmc_card_t *, bool);
![]()
![]()
sdmmc_send_cmd_voltage_switch(sdmmc_card_t *);
![]()
![]()
sdmmc_send_cmd_num_of_written_blocks(sdmmc_card_t *, size_t *);
![]()
![]()
sdmmc_enter_higher_speed_mode(sdmmc_card_t *);
![]()
![]()
sdmmc_enable_hs_mode_and_check(sdmmc_card_t *);
![]()
![]()
sdmmc_write_sectors_dma(sdmmc_card_t *, const void *, size_t, size_t, size_t);
![]()
![]()
sdmmc_read_sectors_dma(sdmmc_card_t *, void *, size_t, size_t, size_t);
![]()
![]()
sdmmc_get_erase_timeout_ms(const sdmmc_card_t *, int, size_t);
![]()
![]()
sdmmc_select_driver_strength(sdmmc_card_t *, sdmmc_driver_strength_t);
![]()
![]()
sdmmc_select_current_limit(sdmmc_card_t *, sdmmc_current_limit_t);
![]()
![]()
sdmmc_do_timing_tuning(sdmmc_card_t *);
![]()
![]()
sdmmc_check_scr(sdmmc_card_t *);
![]()
![]()
sdmmc_decode_cid(uint32_t *, sdmmc_cid_t *);
![]()
![]()
sdmmc_decode_csd(uint32_t *, sdmmc_csd_t *);
![]()
![]()
sdmmc_decode_scr(uint32_t *, sdmmc_scr_t *);
![]()
![]()
sdmmc_decode_ssr(uint32_t *, sdmmc_ssr_t *);
![]()
![]()
sdmmc_sd_get_erase_timeout_ms(const sdmmc_card_t *, int, size_t);
![]()
![]()
sdmmc_io_reset(sdmmc_card_t *);
![]()
![]()
sdmmc_io_enable_hs_mode(sdmmc_card_t *);
![]()
![]()
sdmmc_io_send_op_cond(sdmmc_card_t *, uint32_t, uint32_t *);
![]()
![]()
sdmmc_io_rw_direct(sdmmc_card_t *, int, uint32_t, uint32_t, uint8_t *);
![]()
![]()
sdmmc_io_rw_extended(sdmmc_card_t *, int, uint32_t, int, void *, size_t);
![]()
![]()
sdmmc_mmc_send_ext_csd_data(sdmmc_card_t *, void *, size_t, size_t);
![]()
![]()
sdmmc_mmc_switch(sdmmc_card_t *, uint8_t, uint8_t, uint8_t);
![]()
![]()
sdmmc_mmc_decode_cid(int, uint32_t *, sdmmc_cid_t *);
![]()
![]()
sdmmc_mmc_decode_csd(uint32_t *, sdmmc_csd_t *);
![]()
![]()
sdmmc_mmc_enable_hs_mode(sdmmc_card_t *);
![]()
![]()
sdmmc_mmc_get_erase_timeout_ms(const sdmmc_card_t *, int, size_t);
![]()
![]()
sdmmc_init_sd_if_cond(sdmmc_card_t *);
![]()
![]()
sdmmc_init_select_card(sdmmc_card_t *);
![]()
![]()
sdmmc_init_csd(sdmmc_card_t *);
![]()
![]()
sdmmc_init_cid(sdmmc_card_t *);
![]()
![]()
sdmmc_init_rca(sdmmc_card_t *);
![]()
![]()
sdmmc_init_mmc_decode_cid(sdmmc_card_t *);
![]()
![]()
sdmmc_init_ocr(sdmmc_card_t *);
![]()
![]()
sdmmc_init_spi_crc(sdmmc_card_t *);
![]()
![]()
sdmmc_init_io(sdmmc_card_t *);
![]()
![]()
sdmmc_io_init_read_card_cap(sdmmc_card_t *, uint8_t *);
![]()
![]()
sdmmc_io_init_check_card_cap(sdmmc_card_t *, uint8_t *);
![]()
![]()
sdmmc_init_sd_blocklen(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_scr(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_ssr(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_wait_data_ready(sdmmc_card_t *);
![]()
![]()
sdmmc_init_mmc_read_ext_csd(sdmmc_card_t *);
![]()
![]()
sdmmc_init_mmc_read_cid(sdmmc_card_t *);
![]()
![]()
sdmmc_init_host_bus_width(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_bus_width(sdmmc_card_t *);
![]()
![]()
sdmmc_init_io_bus_width(sdmmc_card_t *);
![]()
![]()
sdmmc_init_mmc_bus_width(sdmmc_card_t *);
![]()
![]()
sdmmc_init_card_hs_mode(sdmmc_card_t *);
![]()
![]()
sdmmc_init_host_frequency(sdmmc_card_t *);
![]()
![]()
sdmmc_init_mmc_check_ext_csd(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_uhs1(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_driver_strength(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_current_limit(sdmmc_card_t *);
![]()
![]()
sdmmc_init_sd_timing_tuning(sdmmc_card_t *);
![]()
![]()
host_is_spi(const sdmmc_card_t *)
![]()
![]()
get_host_ocr(float)
![]()
![]()
sdmmc_ready_for_data(uint32_t)
![]()
![]()
sdmmc_flip_byte_order(uint32_t *, size_t);
![]()
![]()
sdmmc_fix_host_flags(sdmmc_card_t *);
![]()
![]()
sdmmc_wait_for_idle(sdmmc_card_t *, uint32_t);
![]()
![]()
#define SDMMC_IO_BLOCK_SIZE
![]()
![]()
sdmmc_allocate_aligned_buf(sdmmc_card_t *);