mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
fix(sdmmc): fix sdmmc re-init error on legacy driver
This commit is contained in:
@@ -66,7 +66,7 @@ typedef struct {
|
|||||||
* @return
|
* @return
|
||||||
* - ESP_OK: On success
|
* - ESP_OK: On success
|
||||||
* - ESP_ERR_NO_MEM: Out of memory
|
* - ESP_ERR_NO_MEM: Out of memory
|
||||||
* - ESP_ERR_NOT_FOUND: Controller not found
|
* - ESP_ERR_NOT_FOUND: No free controller
|
||||||
* - ESP_ERR_INVALID_ARG: Invalid argument
|
* - ESP_ERR_INVALID_ARG: Invalid argument
|
||||||
*/
|
*/
|
||||||
esp_err_t sd_host_create_sdmmc_controller(const sd_host_sdmmc_cfg_t *config, sd_host_ctlr_handle_t *ret_handle);
|
esp_err_t sd_host_create_sdmmc_controller(const sd_host_sdmmc_cfg_t *config, sd_host_ctlr_handle_t *ret_handle);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -77,6 +77,11 @@ esp_err_t sdmmc_host_set_input_delayline(int slot, sdmmc_delay_line_t delay_line
|
|||||||
|
|
||||||
esp_err_t sdmmc_host_init(void)
|
esp_err_t sdmmc_host_init(void)
|
||||||
{
|
{
|
||||||
|
if (s_ctlr) {
|
||||||
|
ESP_LOGI(TAG, "SDMMC host controller already created, returning existing handle");
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
sd_host_sdmmc_cfg_t cfg = {
|
sd_host_sdmmc_cfg_t cfg = {
|
||||||
.event_queue_items = SDMMC_EVENT_QUEUE_LENGTH,
|
.event_queue_items = SDMMC_EVENT_QUEUE_LENGTH,
|
||||||
};
|
};
|
||||||
@@ -158,6 +163,8 @@ esp_err_t sdmmc_host_deinit_slot(int slot)
|
|||||||
//for backward compatibility, return ESP_OK when only slot is removed and host is still there
|
//for backward compatibility, return ESP_OK when only slot is removed and host is still there
|
||||||
if (ret == ESP_ERR_INVALID_STATE) {
|
if (ret == ESP_ERR_INVALID_STATE) {
|
||||||
ret = ESP_OK;
|
ret = ESP_OK;
|
||||||
|
} else if (ret == ESP_OK) {
|
||||||
|
s_ctlr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -176,6 +183,7 @@ esp_err_t sdmmc_host_deinit(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ESP_RETURN_ON_ERROR(sd_host_del_controller(s_ctlr), TAG, "failed to delete controller");
|
ESP_RETURN_ON_ERROR(sd_host_del_controller(s_ctlr), TAG, "failed to delete controller");
|
||||||
|
s_ctlr = NULL;
|
||||||
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user