diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 17ea109472..d8c398110b 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -88,6 +88,7 @@ /components/esp_coex/ @esp-idf-codeowners/wifi @esp-idf-codeowners/bluetooth @esp-idf-codeowners/ieee802154 /components/esp_common/ @esp-idf-codeowners/system /components/esp_driver_*/ @esp-idf-codeowners/peripherals +/components/esp_driver_sdmmc/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/storage /components/esp_eth/ @esp-idf-codeowners/network /components/esp_event/ @esp-idf-codeowners/system /components/esp_gdbstub/ @esp-idf-codeowners/debugging diff --git a/components/driver/CMakeLists.txt b/components/driver/CMakeLists.txt index 9b95625fd9..c777810282 100644 --- a/components/driver/CMakeLists.txt +++ b/components/driver/CMakeLists.txt @@ -18,7 +18,6 @@ set(includes "include" "parlio/include" "rmt/include" "sdio_slave/include" - "sdmmc/include" "sdspi/include" "sigma_delta/include" "temperature_sensor/include" @@ -127,12 +126,6 @@ if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED) list(APPEND srcs "sdio_slave/sdio_slave.c") endif() -# SDMMC related source files -if(CONFIG_SOC_SDMMC_HOST_SUPPORTED) - list(APPEND srcs "sdmmc/sdmmc_transaction.c" - "sdmmc/sdmmc_host.c") -endif() - # Sigma-Delta Modulation related source files if(CONFIG_SOC_SDM_SUPPORTED) list(APPEND srcs "sigma_delta/sdm.c" @@ -199,6 +192,7 @@ else() # for backward compatibility, the driver component needs to # have a public dependency on other "esp_driver_foo" components esp_driver_gpio esp_driver_pcnt esp_driver_gptimer esp_driver_spi esp_driver_mcpwm + esp_driver_sdmmc LDFRAGMENTS ${ldfragments} ) endif() diff --git a/components/esp_driver_sdmmc/CMakeLists.txt b/components/esp_driver_sdmmc/CMakeLists.txt new file mode 100644 index 0000000000..afca512530 --- /dev/null +++ b/components/esp_driver_sdmmc/CMakeLists.txt @@ -0,0 +1,15 @@ +set(srcs) + +set(public_include "include") + +# SDMMC related source files +if(CONFIG_SOC_SDMMC_HOST_SUPPORTED) + list(APPEND srcs "src/sdmmc_transaction.c" + "src/sdmmc_host.c") +endif() + +idf_component_register(SRCS ${srcs} + INCLUDE_DIRS ${public_include} + REQUIRES sdmmc esp_driver_gpio + PRIV_REQUIRES esp_timer esp_pm esp_mm + ) diff --git a/components/driver/sdmmc/include/driver/sdmmc_default_configs.h b/components/esp_driver_sdmmc/include/driver/sdmmc_default_configs.h similarity index 99% rename from components/driver/sdmmc/include/driver/sdmmc_default_configs.h rename to components/esp_driver_sdmmc/include/driver/sdmmc_default_configs.h index 4ffef8fe84..52a7ae2220 100644 --- a/components/driver/sdmmc/include/driver/sdmmc_default_configs.h +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_default_configs.h @@ -50,8 +50,6 @@ extern "C" { #define SDMMC_SLOT_NO_WP GPIO_NUM_NC ///< indicates that write protect line is not used #define SDMMC_SLOT_WIDTH_DEFAULT 0 ///< use the maximum possible width for the slot - - #if SOC_SDMMC_USE_IOMUX && !SOC_SDMMC_USE_GPIO_MATRIX /** * Macro defining default configuration of SDMMC host slot diff --git a/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h b/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h new file mode 100644 index 0000000000..5e2f32b502 --- /dev/null +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "sd_protocol_defs.h" diff --git a/components/driver/sdmmc/include/driver/sdmmc_host.h b/components/esp_driver_sdmmc/include/driver/sdmmc_host.h similarity index 95% rename from components/driver/sdmmc/include/driver/sdmmc_host.h rename to components/esp_driver_sdmmc/include/driver/sdmmc_host.h index c9804e543b..3a4de21bca 100644 --- a/components/driver/sdmmc/include/driver/sdmmc_host.h +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_host.h @@ -12,7 +12,7 @@ #include #include #include "esp_err.h" -#include "sdmmc_types.h" +#include "driver/sdmmc_types.h" #include "driver/sdmmc_default_configs.h" #include "driver/gpio.h" @@ -47,15 +47,15 @@ typedef struct { uint8_t width; ///< Bus width used by the slot (might be less than the max width supported) uint32_t flags; ///< Features used by this slot #define SDMMC_SLOT_FLAG_INTERNAL_PULLUP BIT(0) - /**< Enable internal pullups on enabled pins. The internal pullups - are insufficient however, please make sure external pullups are - connected on the bus. This is for debug / example purpose only. - */ + /**< Enable internal pullups on enabled pins. The internal pullups + are insufficient however, please make sure external pullups are + connected on the bus. This is for debug / example purpose only. + */ #define SDMMC_SLOT_FLAG_WP_ACTIVE_HIGH BIT(1) - /**< GPIO write protect polarity. - * 0 means "active low", i.e. card is protected when the GPIO is low; - * 1 means "active high", i.e. card is protected when GPIO is high. - */ + /**< GPIO write protect polarity. + * 0 means "active low", i.e. card is protected when the GPIO is low; + * 1 means "active high", i.e. card is protected when GPIO is high. + */ } sdmmc_slot_config_t; /** diff --git a/components/esp_driver_sdmmc/include/driver/sdmmc_types.h b/components/esp_driver_sdmmc/include/driver/sdmmc_types.h new file mode 100644 index 0000000000..cc832d8a2b --- /dev/null +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_types.h @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "sd_protocol_types.h" diff --git a/components/driver/sdmmc/sdmmc_host.c b/components/esp_driver_sdmmc/src/sdmmc_host.c similarity index 96% rename from components/driver/sdmmc/sdmmc_host.c rename to components/esp_driver_sdmmc/src/sdmmc_host.c index f6f1e3e47c..cbfe397aa8 100644 --- a/components/driver/sdmmc/sdmmc_host.c +++ b/components/esp_driver_sdmmc/src/sdmmc_host.c @@ -45,7 +45,6 @@ #define SDMMC_CLK_SRC_ATOMIC() #endif - static const char *TAG = "sdmmc_periph"; /** @@ -70,7 +69,6 @@ typedef struct host_ctx_t { static host_ctx_t s_host_ctx; - static void sdmmc_isr(void *arg); static void sdmmc_host_dma_init(void); static esp_err_t sdmmc_host_pullup_en_internal(int slot, int width); @@ -209,10 +207,10 @@ void sdmmc_host_get_clk_dividers(uint32_t freq_khz, int *host_div, int *card_div * effective frequency range: 400 kHz - 32 MHz (32.1 - 39.9 MHz cannot be covered with given divider scheme) */ *host_div = (clk_src_freq_hz) / (freq_khz * 1000); - if (*host_div > 15 ) { + if (*host_div > 15) { *host_div = 2; *card_div = (clk_src_freq_hz / 2) / (2 * freq_khz * 1000); - if ( ((clk_src_freq_hz / 2) % (2 * freq_khz * 1000)) > 0 ) { + if (((clk_src_freq_hz / 2) % (2 * freq_khz * 1000)) > 0) { (*card_div)++; } } else if ((clk_src_freq_hz % (freq_khz * 1000)) > 0) { @@ -315,22 +313,22 @@ esp_err_t sdmmc_host_set_input_delay(int slot, sdmmc_delay_phase_t delay_phase) int delay_phase_num = 0; sdmmc_ll_delay_phase_t phase = SDMMC_LL_DELAY_PHASE_0; switch (delay_phase) { - case SDMMC_DELAY_PHASE_1: - phase = SDMMC_LL_DELAY_PHASE_1; - delay_phase_num = 1; - break; - case SDMMC_DELAY_PHASE_2: - phase = SDMMC_LL_DELAY_PHASE_2; - delay_phase_num = 2; - break; - case SDMMC_DELAY_PHASE_3: - phase = SDMMC_LL_DELAY_PHASE_3; - delay_phase_num = 3; - break; - default: - phase = SDMMC_LL_DELAY_PHASE_0; - delay_phase_num = 0; - break; + case SDMMC_DELAY_PHASE_1: + phase = SDMMC_LL_DELAY_PHASE_1; + delay_phase_num = 1; + break; + case SDMMC_DELAY_PHASE_2: + phase = SDMMC_LL_DELAY_PHASE_2; + delay_phase_num = 2; + break; + case SDMMC_DELAY_PHASE_3: + phase = SDMMC_LL_DELAY_PHASE_3; + delay_phase_num = 3; + break; + default: + phase = SDMMC_LL_DELAY_PHASE_0; + delay_phase_num = 0; + break; } SDMMC_CLK_SRC_ATOMIC() { sdmmc_ll_set_din_delay(s_host_ctx.hal.dev, phase); @@ -433,13 +431,13 @@ esp_err_t sdmmc_host_init(void) } // Enable interrupts SDMMC.intmask.val = - SDMMC_INTMASK_CD | - SDMMC_INTMASK_CMD_DONE | - SDMMC_INTMASK_DATA_OVER | - SDMMC_INTMASK_RCRC | SDMMC_INTMASK_DCRC | - SDMMC_INTMASK_RTO | SDMMC_INTMASK_DTO | SDMMC_INTMASK_HTO | - SDMMC_INTMASK_SBE | SDMMC_INTMASK_EBE | - SDMMC_INTMASK_RESP_ERR | SDMMC_INTMASK_HLE; //sdio is enabled only when use. + SDMMC_INTMASK_CD | + SDMMC_INTMASK_CMD_DONE | + SDMMC_INTMASK_DATA_OVER | + SDMMC_INTMASK_RCRC | SDMMC_INTMASK_DCRC | + SDMMC_INTMASK_RTO | SDMMC_INTMASK_DTO | SDMMC_INTMASK_HTO | + SDMMC_INTMASK_SBE | SDMMC_INTMASK_EBE | + SDMMC_INTMASK_RESP_ERR | SDMMC_INTMASK_HLE; //sdio is enabled only when use. SDMMC.ctrl.int_enable = 1; // Disable generation of Busy Clear Interrupt @@ -479,7 +477,7 @@ static void configure_pin_iomux(uint8_t gpio_num) static void configure_pin_gpio_matrix(uint8_t gpio_num, uint8_t gpio_matrix_sig, gpio_mode_t mode, const char *name) { - assert (gpio_num != (uint8_t) GPIO_NUM_NC); + assert(gpio_num != (uint8_t) GPIO_NUM_NC); ESP_LOGD(TAG, "using GPIO%d as %s pin", gpio_num, name); gpio_reset_pin(gpio_num); gpio_set_direction(gpio_num, mode); @@ -651,7 +649,7 @@ esp_err_t sdmmc_host_init_slot(int slot, const sdmmc_slot_config_t *slot_config) // As hardware expects an active-high signal, // if WP signal is active low, then invert it in GPIO matrix, // else keep it in its default state - esp_rom_gpio_connect_in_signal(matrix_in_wp, slot_info->write_protect, (gpio_wp_polarity? false : true)); + esp_rom_gpio_connect_in_signal(matrix_in_wp, slot_info->write_protect, (gpio_wp_polarity ? false : true)); // By default, set probing frequency (400kHz) and 1-bit bus esp_err_t ret = sdmmc_host_set_card_clk(slot, 400); @@ -733,7 +731,7 @@ esp_err_t sdmmc_host_set_bus_width(int slot, size_t width) size_t sdmmc_host_get_slot_width(int slot) { - assert( slot == 0 || slot == 1 ); + assert(slot == 0 || slot == 1); return s_host_ctx.slot_ctx[slot].slot_width; } diff --git a/components/driver/sdmmc/sdmmc_private.h b/components/esp_driver_sdmmc/src/sdmmc_private.h similarity index 100% rename from components/driver/sdmmc/sdmmc_private.h rename to components/esp_driver_sdmmc/src/sdmmc_private.h diff --git a/components/driver/sdmmc/sdmmc_transaction.c b/components/esp_driver_sdmmc/src/sdmmc_transaction.c similarity index 81% rename from components/driver/sdmmc/sdmmc_transaction.c rename to components/esp_driver_sdmmc/src/sdmmc_transaction.c index 1af3b86457..0ab9510617 100644 --- a/components/driver/sdmmc/sdmmc_transaction.c +++ b/components/esp_driver_sdmmc/src/sdmmc_transaction.c @@ -18,13 +18,11 @@ #include "driver/sdmmc_types.h" #include "driver/sdmmc_defs.h" #include "driver/sdmmc_host.h" -#include "esp_timer.h" #include "esp_cache.h" #include "esp_private/esp_cache_private.h" #include "sdmmc_private.h" #include "soc/soc_caps.h" - /* Number of DMA descriptors used for transfer. * Increasing this value above 4 doesn't improve performance for the usual case * of SD memory cards (most data transfers are multiples of 512 bytes). @@ -56,18 +54,18 @@ typedef struct { } sdmmc_transfer_state_t; const uint32_t SDMMC_DATA_ERR_MASK = - SDMMC_INTMASK_DTO | SDMMC_INTMASK_DCRC | - SDMMC_INTMASK_HTO | SDMMC_INTMASK_SBE | - SDMMC_INTMASK_EBE; + SDMMC_INTMASK_DTO | SDMMC_INTMASK_DCRC | + SDMMC_INTMASK_HTO | SDMMC_INTMASK_SBE | + SDMMC_INTMASK_EBE; const uint32_t SDMMC_DMA_DONE_MASK = - SDMMC_IDMAC_INTMASK_RI | SDMMC_IDMAC_INTMASK_TI | - SDMMC_IDMAC_INTMASK_NI; + SDMMC_IDMAC_INTMASK_RI | SDMMC_IDMAC_INTMASK_TI | + SDMMC_IDMAC_INTMASK_NI; const uint32_t SDMMC_CMD_ERR_MASK = - SDMMC_INTMASK_RTO | - SDMMC_INTMASK_RCRC | - SDMMC_INTMASK_RESP_ERR; + SDMMC_INTMASK_RTO | + SDMMC_INTMASK_RCRC | + SDMMC_INTMASK_RESP_ERR; SDMMC_ALIGN_ATTR static sdmmc_desc_t s_dma_desc[SDMMC_DMA_DESC_CNT]; static sdmmc_transfer_state_t s_cur_transfer = { 0 }; @@ -80,9 +78,9 @@ static esp_pm_lock_handle_t s_pm_lock; static esp_err_t handle_idle_state_events(void); static sdmmc_hw_cmd_t make_hw_cmd(sdmmc_command_t* cmd); static esp_err_t handle_event(sdmmc_command_t* cmd, sdmmc_req_state_t* state, - sdmmc_event_t* unhandled_events); + sdmmc_event_t* unhandled_events); static esp_err_t process_events(sdmmc_event_t evt, sdmmc_command_t* cmd, - sdmmc_req_state_t* pstate, sdmmc_event_t* unhandled_events); + sdmmc_req_state_t* pstate, sdmmc_event_t* unhandled_events); static void process_command_response(uint32_t status, sdmmc_command_t* cmd); static void fill_dma_descriptors(size_t num_desc); static size_t get_free_descriptors_count(void); @@ -139,7 +137,7 @@ esp_err_t sdmmc_host_do_transaction(int slot, sdmmc_command_t* cmdinfo) // Length should be either <4 or >=4 and =0 (mod 4). if (cmdinfo->datalen >= 4 && cmdinfo->datalen % 4 != 0) { ESP_LOGD(TAG, "%s: invalid size: total=%d", - __func__, cmdinfo->datalen); + __func__, cmdinfo->datalen); ret = ESP_ERR_INVALID_SIZE; goto out; } @@ -247,7 +245,7 @@ static void fill_dma_descriptors(size_t num_desc) assert(!desc->owned_by_idmac); size_t size_to_fill = (s_cur_transfer.size_remaining < SDMMC_DMA_MAX_BUF_LEN) ? - s_cur_transfer.size_remaining : SDMMC_DMA_MAX_BUF_LEN; + s_cur_transfer.size_remaining : SDMMC_DMA_MAX_BUF_LEN; bool last = size_to_fill == s_cur_transfer.size_remaining; desc->last_descriptor = last; desc->second_address_chained = 1; @@ -261,8 +259,8 @@ static void fill_dma_descriptors(size_t num_desc) s_cur_transfer.ptr += size_to_fill; s_cur_transfer.next_desc = (s_cur_transfer.next_desc + 1) % SDMMC_DMA_DESC_CNT; ESP_LOGV(TAG, "fill %d desc=%d rem=%d next=%d last=%d sz=%d", - num_desc, next, s_cur_transfer.size_remaining, - s_cur_transfer.next_desc, desc->last_descriptor, desc->buffer1_size); + num_desc, next, s_cur_transfer.size_remaining, + s_cur_transfer.next_desc, desc->last_descriptor, desc->buffer1_size); #if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE esp_err_t ret = esp_cache_msync((void *)desc, sizeof(sdmmc_desc_t), ESP_CACHE_MSYNC_FLAG_DIR_C2M); assert(ret == ESP_OK); @@ -284,16 +282,15 @@ static esp_err_t handle_idle_state_events(void) } if (evt.sdmmc_status != 0 || evt.dma_status != 0) { ESP_LOGE(TAG, "handle_idle_state_events unhandled: %08"PRIx32" %08"PRIx32, - evt.sdmmc_status, evt.dma_status); + evt.sdmmc_status, evt.dma_status); } } return ESP_OK; } - static esp_err_t handle_event(sdmmc_command_t* cmd, sdmmc_req_state_t* state, - sdmmc_event_t* unhandled_events) + sdmmc_event_t* unhandled_events) { sdmmc_event_t event; esp_err_t err = sdmmc_host_wait_for_event(cmd->timeout_ms / portTICK_PERIOD_MS, &event); @@ -305,8 +302,8 @@ static esp_err_t handle_event(sdmmc_command_t* cmd, sdmmc_req_state_t* state, return err; } ESP_LOGV(TAG, "sdmmc_handle_event: event %08"PRIx32" %08"PRIx32", unhandled %08"PRIx32" %08"PRIx32, - event.sdmmc_status, event.dma_status, - unhandled_events->sdmmc_status, unhandled_events->dma_status); + event.sdmmc_status, event.dma_status, + unhandled_events->sdmmc_status, unhandled_events->dma_status); event.sdmmc_status |= unhandled_events->sdmmc_status; event.dma_status |= unhandled_events->dma_status; process_events(event, cmd, state, unhandled_events); @@ -357,8 +354,8 @@ static sdmmc_hw_cmd_t make_hw_cmd(sdmmc_command_t* cmd) res.send_auto_stop = cmd_needs_auto_stop(cmd) ? 1 : 0; } ESP_LOGV(TAG, "%s: opcode=%d, rexp=%d, crc=%d, auto_stop=%d", __func__, - res.cmd_index, res.response_expect, res.check_response_crc, - res.send_auto_stop); + res.cmd_index, res.response_expect, res.check_response_crc, + res.send_auto_stop); return res; } @@ -402,7 +399,7 @@ static void process_data_status(uint32_t status, sdmmc_command_t* cmd) } else if (status & SDMMC_INTMASK_DCRC) { cmd->error = ESP_ERR_INVALID_CRC; } else if ((status & SDMMC_INTMASK_EBE) && - (cmd->flags & SCF_CMD_READ) == 0) { + (cmd->flags & SCF_CMD_READ) == 0) { cmd->error = ESP_ERR_TIMEOUT; } else { cmd->error = ESP_FAIL; @@ -418,14 +415,15 @@ static void process_data_status(uint32_t status, sdmmc_command_t* cmd) } -static inline bool mask_check_and_clear(uint32_t* state, uint32_t mask) { +static inline bool mask_check_and_clear(uint32_t* state, uint32_t mask) +{ bool ret = ((*state) & mask) != 0; *state &= ~mask; return ret; } static esp_err_t process_events(sdmmc_event_t evt, sdmmc_command_t* cmd, - sdmmc_req_state_t* pstate, sdmmc_event_t* unhandled_events) + sdmmc_req_state_t* pstate, sdmmc_event_t* unhandled_events) { const char* const s_state_names[] __attribute__((unused)) = { "IDLE", @@ -435,68 +433,67 @@ static esp_err_t process_events(sdmmc_event_t evt, sdmmc_command_t* cmd, }; sdmmc_event_t orig_evt = evt; ESP_LOGV(TAG, "%s: state=%s evt=%"PRIx32" dma=%"PRIx32, __func__, s_state_names[*pstate], - evt.sdmmc_status, evt.dma_status); + evt.sdmmc_status, evt.dma_status); sdmmc_req_state_t next_state = *pstate; sdmmc_req_state_t state = (sdmmc_req_state_t) -1; while (next_state != state) { state = next_state; switch (state) { - case SDMMC_IDLE: - break; + case SDMMC_IDLE: + break; - case SDMMC_SENDING_CMD: - if (mask_check_and_clear(&evt.sdmmc_status, SDMMC_CMD_ERR_MASK)) { - process_command_response(orig_evt.sdmmc_status, cmd); - // In addition to the error interrupt, CMD_DONE will also be - // reported. It may occur immediately (in the same sdmmc_event_t) or - // be delayed until the next interrupt. - } - if (mask_check_and_clear(&evt.sdmmc_status, SDMMC_INTMASK_CMD_DONE)) { - process_command_response(orig_evt.sdmmc_status, cmd); - if (cmd->error != ESP_OK) { - next_state = SDMMC_IDLE; - break; - } - - if (cmd->data == NULL) { - next_state = SDMMC_IDLE; - } else { - next_state = SDMMC_SENDING_DATA; - } - } - break; - - - case SDMMC_SENDING_DATA: - if (mask_check_and_clear(&evt.sdmmc_status, SDMMC_DATA_ERR_MASK)) { - process_data_status(orig_evt.sdmmc_status, cmd); - sdmmc_host_dma_stop(); - } - if (mask_check_and_clear(&evt.dma_status, SDMMC_DMA_DONE_MASK)) { - s_cur_transfer.desc_remaining--; - if (s_cur_transfer.size_remaining) { - int desc_to_fill = get_free_descriptors_count(); - fill_dma_descriptors(desc_to_fill); - sdmmc_host_dma_resume(); - } - if (s_cur_transfer.desc_remaining == 0) { - next_state = SDMMC_BUSY; - } - } - if (orig_evt.sdmmc_status & (SDMMC_INTMASK_SBE | SDMMC_INTMASK_DATA_OVER)) { - // On start bit error, DATA_DONE interrupt will not be generated + case SDMMC_SENDING_CMD: + if (mask_check_and_clear(&evt.sdmmc_status, SDMMC_CMD_ERR_MASK)) { + process_command_response(orig_evt.sdmmc_status, cmd); + // In addition to the error interrupt, CMD_DONE will also be + // reported. It may occur immediately (in the same sdmmc_event_t) or + // be delayed until the next interrupt. + } + if (mask_check_and_clear(&evt.sdmmc_status, SDMMC_INTMASK_CMD_DONE)) { + process_command_response(orig_evt.sdmmc_status, cmd); + if (cmd->error != ESP_OK) { next_state = SDMMC_IDLE; break; } - break; - case SDMMC_BUSY: - if (!mask_check_and_clear(&evt.sdmmc_status, SDMMC_INTMASK_DATA_OVER)) { - break; + if (cmd->data == NULL) { + next_state = SDMMC_IDLE; + } else { + next_state = SDMMC_SENDING_DATA; } + } + break; + + case SDMMC_SENDING_DATA: + if (mask_check_and_clear(&evt.sdmmc_status, SDMMC_DATA_ERR_MASK)) { process_data_status(orig_evt.sdmmc_status, cmd); + sdmmc_host_dma_stop(); + } + if (mask_check_and_clear(&evt.dma_status, SDMMC_DMA_DONE_MASK)) { + s_cur_transfer.desc_remaining--; + if (s_cur_transfer.size_remaining) { + int desc_to_fill = get_free_descriptors_count(); + fill_dma_descriptors(desc_to_fill); + sdmmc_host_dma_resume(); + } + if (s_cur_transfer.desc_remaining == 0) { + next_state = SDMMC_BUSY; + } + } + if (orig_evt.sdmmc_status & (SDMMC_INTMASK_SBE | SDMMC_INTMASK_DATA_OVER)) { + // On start bit error, DATA_DONE interrupt will not be generated next_state = SDMMC_IDLE; break; + } + break; + + case SDMMC_BUSY: + if (!mask_check_and_clear(&evt.sdmmc_status, SDMMC_INTMASK_DATA_OVER)) { + break; + } + process_data_status(orig_evt.sdmmc_status, cmd); + next_state = SDMMC_IDLE; + break; } ESP_LOGV(TAG, "%s state=%s next_state=%s", __func__, s_state_names[state], s_state_names[next_state]); } diff --git a/components/fatfs/CMakeLists.txt b/components/fatfs/CMakeLists.txt index e9ae1f8874..4e36c1b50a 100644 --- a/components/fatfs/CMakeLists.txt +++ b/components/fatfs/CMakeLists.txt @@ -22,7 +22,7 @@ else() list(APPEND include_dirs "vfs") - list(APPEND requires "sdmmc") + list(APPEND requires "sdmmc" "driver") # `driver` will be replaced with `esp_driver_sdspi` list(APPEND priv_requires "vfs" "esp_driver_gpio") endif() diff --git a/components/fatfs/diskio/diskio_sdmmc.h b/components/fatfs/diskio/diskio_sdmmc.h index 2ba4c2d9be..d6c881ae58 100644 --- a/components/fatfs/diskio/diskio_sdmmc.h +++ b/components/fatfs/diskio/diskio_sdmmc.h @@ -7,7 +7,7 @@ #pragma once #include "sdmmc_cmd.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #ifdef __cplusplus extern "C" { diff --git a/components/fatfs/vfs/esp_vfs_fat.h b/components/fatfs/vfs/esp_vfs_fat.h index 3e7b165b4e..983dc8d6b7 100644 --- a/components/fatfs/vfs/esp_vfs_fat.h +++ b/components/fatfs/vfs/esp_vfs_fat.h @@ -7,8 +7,7 @@ #pragma once #include #include "esp_err.h" -#include "driver/gpio.h" -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #include "driver/sdspi_host.h" #include "ff.h" #include "wear_levelling.h" diff --git a/components/fatfs/vfs/vfs_fat_sdmmc.c b/components/fatfs/vfs/vfs_fat_sdmmc.c index 1a5ac2150b..976025ca05 100644 --- a/components/fatfs/vfs/vfs_fat_sdmmc.c +++ b/components/fatfs/vfs/vfs_fat_sdmmc.c @@ -15,7 +15,7 @@ #include "diskio_impl.h" #include "diskio_sdmmc.h" #include "soc/soc_caps.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #if SOC_SDMMC_HOST_SUPPORTED #include "driver/sdmmc_host.h" diff --git a/components/sdmmc/CMakeLists.txt b/components/sdmmc/CMakeLists.txt index 0b65cf19b5..243b26c4d6 100644 --- a/components/sdmmc/CMakeLists.txt +++ b/components/sdmmc/CMakeLists.txt @@ -11,5 +11,4 @@ idf_component_register(SRCS "sdmmc_cmd.c" "sdmmc_mmc.c" "sdmmc_sd.c" INCLUDE_DIRS include - REQUIRES driver PRIV_REQUIRES soc esp_timer) diff --git a/components/driver/sdmmc/include/driver/sdmmc_defs.h b/components/sdmmc/include/sd_protocol_defs.h similarity index 99% rename from components/driver/sdmmc/include/driver/sdmmc_defs.h rename to components/sdmmc/include/sd_protocol_defs.h index 56cff2407e..a1b6a8ec02 100644 --- a/components/driver/sdmmc/include/driver/sdmmc_defs.h +++ b/components/sdmmc/include/sd_protocol_defs.h @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: ISC * - * SPDX-FileContributor: 2016-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileContributor: 2016-2023 Espressif Systems (Shanghai) CO LTD */ /* * Copyright (c) 2006 Uwe Stuehler @@ -75,7 +75,6 @@ extern "C" { #define SD_IO_RW_DIRECT 52 /* R5 */ #define SD_IO_RW_EXTENDED 53 /* R5 */ - /* OCR bits */ #define MMC_OCR_MEM_READY (1<<31) /* memory power-up status bit */ #define MMC_OCR_ACCESS_MODE_MASK 0x60000000 /* bits 30:29 */ @@ -528,7 +527,6 @@ static inline uint32_t MMC_RSP_BITS(uint32_t *src, int start, int len) #define CISTPL_CODE_SDIO_EXT 0x92 #define CISTPL_CODE_END 0xFF - /* Timing */ #define SDMMC_TIMING_LEGACY 0 #define SDMMC_TIMING_HIGHSPEED 1 diff --git a/components/driver/sdmmc/include/driver/sdmmc_types.h b/components/sdmmc/include/sd_protocol_types.h similarity index 94% rename from components/driver/sdmmc/include/driver/sdmmc_types.h rename to components/sdmmc/include/sd_protocol_types.h index 6804ffbf7b..61af3f8037 100644 --- a/components/driver/sdmmc/include/driver/sdmmc_types.h +++ b/components/sdmmc/include/sd_protocol_types.h @@ -110,15 +110,15 @@ typedef struct { * SD/MMC command information */ typedef struct { - uint32_t opcode; /*!< SD or MMC command index */ - uint32_t arg; /*!< SD/MMC command argument */ - sdmmc_response_t response; /*!< response buffer */ - void* data; /*!< buffer to send or read into */ - size_t datalen; /*!< length of data in the buffer */ - size_t buflen; /*!< length of the buffer */ - size_t blklen; /*!< block length */ - int flags; /*!< see below */ -/** @cond */ + uint32_t opcode; /*!< SD or MMC command index */ + uint32_t arg; /*!< SD/MMC command argument */ + sdmmc_response_t response; /*!< response buffer */ + void* data; /*!< buffer to send or read into */ + size_t datalen; /*!< length of data in the buffer */ + size_t buflen; /*!< length of the buffer */ + size_t blklen; /*!< block length */ + int flags; /*!< see below */ + /** @cond */ #define SCF_ITSDONE 0x0001 /*!< command is complete */ #define SCF_CMD(flags) ((flags) & 0x00f0) #define SCF_CMD_AC 0x0000 @@ -131,7 +131,7 @@ typedef struct { #define SCF_RSP_CRC 0x0400 #define SCF_RSP_IDX 0x0800 #define SCF_RSP_PRESENT 0x1000 -/* response types */ + /* response types */ #define SCF_RSP_R0 0 /*!< none */ #define SCF_RSP_R1 (SCF_RSP_PRESENT|SCF_RSP_CRC|SCF_RSP_IDX) #define SCF_RSP_R1B (SCF_RSP_PRESENT|SCF_RSP_CRC|SCF_RSP_IDX|SCF_RSP_BSY) @@ -142,11 +142,11 @@ typedef struct { #define SCF_RSP_R5B (SCF_RSP_PRESENT|SCF_RSP_CRC|SCF_RSP_IDX|SCF_RSP_BSY) #define SCF_RSP_R6 (SCF_RSP_PRESENT|SCF_RSP_CRC|SCF_RSP_IDX) #define SCF_RSP_R7 (SCF_RSP_PRESENT|SCF_RSP_CRC|SCF_RSP_IDX) -/* special flags */ + /* special flags */ #define SCF_WAIT_BUSY 0x2000 /*!< Wait for completion of card busy signal before returning */ -/** @endcond */ - esp_err_t error; /*!< error returned from transfer */ - uint32_t timeout_ms; /*!< response timeout, in milliseconds */ + /** @endcond */ + esp_err_t error; /*!< error returned from transfer */ + uint32_t timeout_ms; /*!< response timeout, in milliseconds */ } sdmmc_command_t; /** diff --git a/components/sdmmc/include/sdmmc_cmd.h b/components/sdmmc/include/sdmmc_cmd.h index 3b15682655..96889fbf99 100644 --- a/components/sdmmc/include/sdmmc_cmd.h +++ b/components/sdmmc/include/sdmmc_cmd.h @@ -8,7 +8,7 @@ #include #include "esp_err.h" -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #ifdef __cplusplus extern "C" { diff --git a/components/sdmmc/sdmmc_common.h b/components/sdmmc/sdmmc_common.h index ac4923a037..f48f2cf0cc 100644 --- a/components/sdmmc/sdmmc_common.h +++ b/components/sdmmc/sdmmc_common.h @@ -21,8 +21,8 @@ #include "esp_heap_caps.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "driver/sdmmc_defs.h" -#include "driver/sdmmc_types.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" diff --git a/components/sdmmc/test_apps/.build-test-rules.yml b/components/sdmmc/test_apps/.build-test-rules.yml deleted file mode 100644 index 47c051efab..0000000000 --- a/components/sdmmc/test_apps/.build-test-rules.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps - -components/sdmmc/test_apps: - disable: - - if: IDF_TARGET in ["esp32h2"] - temporary: true - reason: Console component not supported on H2 yet - disable_test: - - if: IDF_TARGET not in ["esp32", "esp32s2", "esp32c3"] - temporary: true - reason: No runners for other targets yet diff --git a/components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/CMakeLists.txt b/components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/CMakeLists.txt deleted file mode 100644 index 5ba0a13810..0000000000 --- a/components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -idf_component_register(SRCS cmd_sdmmc.c - INCLUDE_DIRS . - PRIV_REQUIRES console sdmmc sdmmc_test_board -) diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index a56cbec54a..62489bee8d 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -98,9 +98,9 @@ INPUT = \ $(PROJECT_PATH)/components/driver/rmt/include/driver/rmt_types.h \ $(PROJECT_PATH)/components/driver/sdio_slave/include/driver/sdio_slave.h \ $(PROJECT_PATH)/components/driver/sigma_delta/include/driver/sdm.h \ - $(PROJECT_PATH)/components/driver/sdmmc/include/driver/sdmmc_default_configs.h \ - $(PROJECT_PATH)/components/driver/sdmmc/include/driver/sdmmc_host.h \ - $(PROJECT_PATH)/components/driver/sdmmc/include/driver/sdmmc_types.h \ + $(PROJECT_PATH)/components/esp_driver_sdmmc/include/driver/sdmmc_default_configs.h \ + $(PROJECT_PATH)/components/esp_driver_sdmmc/include/driver/sdmmc_host.h \ + $(PROJECT_PATH)/components/esp_driver_sdmmc/include/driver/sdmmc_types.h \ $(PROJECT_PATH)/components/driver/sdspi/include/driver/sdspi_host.h \ $(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_common.h \ $(PROJECT_PATH)/components/esp_driver_spi/include/driver/spi_master.h \ diff --git a/docs/en/api-reference/storage/sdmmc.rst b/docs/en/api-reference/storage/sdmmc.rst index b27dc476d8..c2b5eef35e 100644 --- a/docs/en/api-reference/storage/sdmmc.rst +++ b/docs/en/api-reference/storage/sdmmc.rst @@ -8,7 +8,7 @@ Overview The SD/SDIO/MMC driver currently supports SD memory, SDIO cards, and eMMC chips. This is a protocol level driver built on top of SDMMC and SD SPI host drivers. -SDMMC and SD SPI host drivers (:component_file:`driver/sdmmc/include/driver/sdmmc_host.h` and :component_file:`driver/sdspi/include/driver/sdspi_host.h`) provide API functions for: +SDMMC and SD SPI host drivers (:component_file:`esp_driver_sdmmc/include/driver/sdmmc_host.h` and :component_file:`driver/sdspi/include/driver/sdspi_host.h`) provide API functions for: - Sending commands to slave devices - Sending and receiving data diff --git a/docs/en/migration-guides/release-5.x/5.3/peripherals.rst b/docs/en/migration-guides/release-5.x/5.3/peripherals.rst index 25e7641e9d..eb5d4e8851 100644 --- a/docs/en/migration-guides/release-5.x/5.3/peripherals.rst +++ b/docs/en/migration-guides/release-5.x/5.3/peripherals.rst @@ -10,6 +10,7 @@ In order to control the dependence of other components on drivers at a smaller g - `esp_driver_gpio` - Driver for GPIO - `esp_driver_spi` - Driver for GPSPI - `esp_driver_mcpwm` - Driver for Motor Control PWM +- `esp_driver_sdmmc` - Driver for SDMMC For compatibility, the original `driver`` component is still treated as an all-in-one component by registering these `esp_driver_xyz`` components as its public dependencies. In other words, you do not need to modify the CMake file of an existing project, but you now have a way to specify the specific peripheral driver that your project depends on. diff --git a/docs/zh_CN/api-reference/storage/sdmmc.rst b/docs/zh_CN/api-reference/storage/sdmmc.rst index d422c18f71..5c955f5a3d 100644 --- a/docs/zh_CN/api-reference/storage/sdmmc.rst +++ b/docs/zh_CN/api-reference/storage/sdmmc.rst @@ -8,7 +8,7 @@ SD/SDIO/MMC 驱动程序 SD/SDIO/MMC 驱动是一种基于 SDMMC 和 SD SPI 主机驱动的协议级驱动程序,目前已支持 SD 存储器、SDIO 卡和 eMMC 芯片。 -SDMMC 主机驱动和 SD SPI 主机驱动(:component_file:`driver/sdmmc/include/driver/sdmmc_host.h` 和 :component_file:`driver/sdspi/include/driver/sdspi_host.h`)为以下功能提供 API: +SDMMC 主机驱动和 SD SPI 主机驱动(:component_file:`esp_driver_sdmmc/include/driver/sdmmc_host.h` 和 :component_file:`driver/sdspi/include/driver/sdspi_host.h`)为以下功能提供 API: - 发送命令至从设备 - 接收和发送数据 diff --git a/docs/zh_CN/migration-guides/release-5.x/5.3/peripherals.rst b/docs/zh_CN/migration-guides/release-5.x/5.3/peripherals.rst index e5a8d8a23e..8924c354a5 100644 --- a/docs/zh_CN/migration-guides/release-5.x/5.3/peripherals.rst +++ b/docs/zh_CN/migration-guides/release-5.x/5.3/peripherals.rst @@ -10,6 +10,7 @@ - `esp_driver_gpio` - GPIO 驱动 - `esp_driver_spi` - 通用 SPI 驱动 - `esp_driver_mcpwm` - 电机控制 PWM 驱动 +- `esp_driver_sdmmc` - SDMMC 驱动 为了兼容性,原来的 `driver` 组件仍然存在,并作为一个 “all-in-one" 的组件,将以上这些 `esp_driver_xyz` 组件注册成自己的公共依赖。换句话说,你无需修改既有项目的 CMake 文件,但是你现在多了一个途径去指定你项目依赖的具体的外设驱动。 diff --git a/examples/storage/.build-test-rules.yml b/examples/storage/.build-test-rules.yml index 7840ae2ad7..7455aa8ca1 100644 --- a/examples/storage/.build-test-rules.yml +++ b/examples/storage/.build-test-rules.yml @@ -11,9 +11,10 @@ examples/storage/custom_flash_driver: examples/storage/emmc: depends_components: - sdmmc - - driver + - driver # `driver` will be replaced with `esp_driver_sdspi` - fatfs - vfs + - esp_driver_sdmmc enable: - if: IDF_TARGET == "esp32s3" reason: only support on esp32s3 @@ -107,7 +108,7 @@ examples/storage/perf_benchmark: - spiffs - wear_levelling - esp_partition - - driver + - esp_driver_sdmmc disable: - if: IDF_TARGET == "esp32p4" and CONFIG_NAME in ["sdmmc_1line", "sdmmc_4line", "sdspi_1line"] temporary: true @@ -121,7 +122,7 @@ examples/storage/sd_card/sdmmc: depends_components: - vfs - sdmmc - - driver + - esp_driver_sdmmc disable: - if: SOC_SDMMC_HOST_SUPPORTED != 1 disable_test: @@ -133,7 +134,7 @@ examples/storage/sd_card/sdspi: depends_components: - vfs - sdmmc - - driver + - driver # To be updated to `esp_driver_sdspi` disable: - if: SOC_GPSPI_SUPPORTED != 1 disable_test: diff --git a/tools/ci/check_copyright_config.yaml b/tools/ci/check_copyright_config.yaml index 2d4e49f493..1401cfac26 100644 --- a/tools/ci/check_copyright_config.yaml +++ b/tools/ci/check_copyright_config.yaml @@ -121,7 +121,7 @@ spiffs: sdmmc: include: - - 'components/driver/sdmmc/include/driver/' + - 'components/esp_driver_sdmmc/include/driver/' - 'components/sdmmc/' allowed_licenses: - Apache-2.0 diff --git a/tools/test_apps/.build-test-rules.yml b/tools/test_apps/.build-test-rules.yml index faef23a9e2..6be7a2df80 100644 --- a/tools/test_apps/.build-test-rules.yml +++ b/tools/test_apps/.build-test-rules.yml @@ -87,6 +87,20 @@ tools/test_apps/storage/partition_table_readonly: - fatfs - spiffs +tools/test_apps/storage/sdmmc_console: + disable: + - if: IDF_TARGET in ["esp32h2"] + temporary: true + reason: Console component not supported on H2 yet + disable_test: + - if: IDF_TARGET not in ["esp32", "esp32s2", "esp32c3"] + temporary: true + reason: No runners for other targets yet + depends_components: + - sdmmc + - esp_driver_sdmmc + - driver # driver will be replaced with esp_driver_sdspi + tools/test_apps/system/bootloader_sections: disable: - if: IDF_TARGET == "esp32c2" diff --git a/components/sdmmc/test_apps/sdmmc_console/CMakeLists.txt b/tools/test_apps/storage/sdmmc_console/CMakeLists.txt similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/CMakeLists.txt rename to tools/test_apps/storage/sdmmc_console/CMakeLists.txt diff --git a/components/sdmmc/test_apps/sdmmc_console/README.md b/tools/test_apps/storage/sdmmc_console/README.md similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/README.md rename to tools/test_apps/storage/sdmmc_console/README.md diff --git a/tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/CMakeLists.txt b/tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/CMakeLists.txt new file mode 100644 index 0000000000..be7d6f78e7 --- /dev/null +++ b/tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/CMakeLists.txt @@ -0,0 +1,5 @@ +idf_component_register(SRCS cmd_sdmmc.c + INCLUDE_DIRS . + PRIV_REQUIRES console sdmmc esp_driver_sdmmc esp_driver_gpio sdmmc_test_board + driver # driver will be replaced with esp_driver_sdspi later +) diff --git a/components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.c b/tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.c similarity index 98% rename from components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.c rename to tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.c index b5ec697617..4a41fbd7c8 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.c +++ b/tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.c @@ -11,8 +11,8 @@ #include "esp_check.h" #include "esp_console.h" #include "soc/soc_caps.h" -#include "driver/sdmmc_defs.h" -#include "driver/sdmmc_types.h" +#include "sd_protocol_defs.h" +#include "sd_protocol_types.h" #include "sdmmc_cmd.h" #ifdef SOC_SDMMC_HOST_SUPPORTED #include "driver/sdmmc_host.h" diff --git a/components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.h b/tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.h similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.h rename to tools/test_apps/storage/sdmmc_console/components/cmd_sdmmc/cmd_sdmmc.h diff --git a/components/sdmmc/test_apps/sdmmc_console/components/cmd_unity/CMakeLists.txt b/tools/test_apps/storage/sdmmc_console/components/cmd_unity/CMakeLists.txt similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/cmd_unity/CMakeLists.txt rename to tools/test_apps/storage/sdmmc_console/components/cmd_unity/CMakeLists.txt diff --git a/components/sdmmc/test_apps/sdmmc_console/components/cmd_unity/cmd_unity.c b/tools/test_apps/storage/sdmmc_console/components/cmd_unity/cmd_unity.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/cmd_unity/cmd_unity.c rename to tools/test_apps/storage/sdmmc_console/components/cmd_unity/cmd_unity.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/cmd_unity/cmd_unity.h b/tools/test_apps/storage/sdmmc_console/components/cmd_unity/cmd_unity.h similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/cmd_unity/cmd_unity.h rename to tools/test_apps/storage/sdmmc_console/components/cmd_unity/cmd_unity.h diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/CMakeLists.txt b/tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/CMakeLists.txt similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/CMakeLists.txt rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/CMakeLists.txt diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/Kconfig.projbuild b/tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/Kconfig.projbuild similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/Kconfig.projbuild rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/Kconfig.projbuild diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/include/sdmmc_test_board.h b/tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/include/sdmmc_test_board.h similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/include/sdmmc_test_board.h rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/include/sdmmc_test_board.h diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board_defs.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board_defs.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board_defs.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_test_board/sdmmc_test_board_defs.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/CMakeLists.txt b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/CMakeLists.txt similarity index 81% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/CMakeLists.txt rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/CMakeLists.txt index 16361f9bb6..f363ef58ed 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/CMakeLists.txt +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/CMakeLists.txt @@ -3,7 +3,8 @@ idf_component_register( sdmmc_test_cd_wp_common.c sdmmc_test_rw_common.c PRIV_REQUIRES - sdmmc sdmmc_test_board esp_timer unity test_utils + sdmmc esp_driver_sdmmc sdmmc_test_board esp_timer unity test_utils + driver # driver will be replaced with esp_driver_sdspi later WHOLE_ARCHIVE TRUE ) diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end.h b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end.h similarity index 98% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end.h rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end.h index da5126b6c3..8072937e95 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end.h +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end.h @@ -5,7 +5,7 @@ */ #pragma once -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #ifdef __cplusplus extern "C" { diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_sd.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_sd.c similarity index 99% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_sd.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_sd.c index f67be4ead6..01cfacb692 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_sd.c +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_sd.c @@ -11,7 +11,7 @@ #include "unity.h" #include "sdmmc_test_board.h" #include "driver/sdmmc_host.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #include "sdmmc_cmd.h" #include "sdmmc_test_begin_end.h" #include "hal/gpio_hal.h" diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_spi.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_spi.c similarity index 99% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_spi.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_spi.c index d69dc80565..9ed663f98a 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_spi.c +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_begin_end_spi.c @@ -11,7 +11,7 @@ #include "esp_log.h" #include "sdmmc_test_board.h" #include "driver/sdspi_host.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #include "sdmmc_cmd.h" #include "sdmmc_test_begin_end.h" diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.h b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.h similarity index 97% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.h rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.h index 0b8e248f3a..f1f61a7657 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.h +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_common.h @@ -5,7 +5,7 @@ */ #pragma once -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #ifdef __cplusplus extern "C" { #endif diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_sd.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_sd.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_sd.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_sd.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_spi.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_spi.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_spi.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_cd_wp_spi.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_sd.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_sd.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_sd.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_sd.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_spi.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_spi.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_spi.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_probe_spi.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.c similarity index 99% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.c index 8bed8e394f..cf889efd5f 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.c +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.c @@ -12,7 +12,7 @@ #include "sdkconfig.h" #include "soc/soc_caps.h" #include "unity.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #include "sdmmc_cmd.h" #include "sdmmc_test_rw_common.h" diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.h b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.h similarity index 98% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.h rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.h index 3ca55aeb12..3398c79f02 100644 --- a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.h +++ b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_common.h @@ -5,7 +5,7 @@ */ #pragma once -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #ifdef __cplusplus extern "C" { diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_sd.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_sd.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_sd.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_sd.c diff --git a/components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_spi.c b/tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_spi.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_spi.c rename to tools/test_apps/storage/sdmmc_console/components/sdmmc_tests/sdmmc_test_rw_spi.c diff --git a/components/sdmmc/test_apps/sdmmc_console/main/CMakeLists.txt b/tools/test_apps/storage/sdmmc_console/main/CMakeLists.txt similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/main/CMakeLists.txt rename to tools/test_apps/storage/sdmmc_console/main/CMakeLists.txt diff --git a/components/sdmmc/test_apps/sdmmc_console/main/sdmmc_console_main.c b/tools/test_apps/storage/sdmmc_console/main/sdmmc_console_main.c similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/main/sdmmc_console_main.c rename to tools/test_apps/storage/sdmmc_console/main/sdmmc_console_main.c diff --git a/components/sdmmc/test_apps/sdmmc_console/partitions.csv b/tools/test_apps/storage/sdmmc_console/partitions.csv similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/partitions.csv rename to tools/test_apps/storage/sdmmc_console/partitions.csv diff --git a/components/sdmmc/test_apps/sdmmc_console/sdkconfig.defaults b/tools/test_apps/storage/sdmmc_console/sdkconfig.defaults similarity index 100% rename from components/sdmmc/test_apps/sdmmc_console/sdkconfig.defaults rename to tools/test_apps/storage/sdmmc_console/sdkconfig.defaults