Merge branch 'bugfix/sdmmc_freq_set_probing' into 'master'

sdmmc: also set card->real_freq_khz field for probing frequency

See merge request espressif/esp-idf!22908
This commit is contained in:
Ivan Grokhotkov
2023-03-24 18:01:46 +08:00

View File

@@ -195,20 +195,21 @@ esp_err_t sdmmc_init_host_bus_width(sdmmc_card_t* card)
esp_err_t sdmmc_init_host_frequency(sdmmc_card_t* card) esp_err_t sdmmc_init_host_frequency(sdmmc_card_t* card)
{ {
esp_err_t err;
assert(card->max_freq_khz <= card->host.max_freq_khz); assert(card->max_freq_khz <= card->host.max_freq_khz);
if (card->max_freq_khz > SDMMC_FREQ_PROBING) { if (card->max_freq_khz > SDMMC_FREQ_PROBING) {
esp_err_t err = (*card->host.set_card_clk)(card->host.slot, card->max_freq_khz); err = (*card->host.set_card_clk)(card->host.slot, card->max_freq_khz);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "failed to switch bus frequency (0x%x)", err); ESP_LOGE(TAG, "failed to switch bus frequency (0x%x)", err);
return err; return err;
} }
}
err = (*card->host.get_real_freq)(card->host.slot, &(card->real_freq_khz)); err = (*card->host.get_real_freq)(card->host.slot, &(card->real_freq_khz));
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "failed to get real working frequency (0x%x)", err); ESP_LOGE(TAG, "failed to get real working frequency (0x%x)", err);
return err; return err;
}
} }
if (card->is_ddr) { if (card->is_ddr) {
@@ -216,7 +217,7 @@ esp_err_t sdmmc_init_host_frequency(sdmmc_card_t* card)
ESP_LOGE(TAG, "host doesn't support DDR mode or voltage switching"); ESP_LOGE(TAG, "host doesn't support DDR mode or voltage switching");
return ESP_ERR_NOT_SUPPORTED; return ESP_ERR_NOT_SUPPORTED;
} }
esp_err_t err = (*card->host.set_bus_ddr_mode)(card->host.slot, true); err = (*card->host.set_bus_ddr_mode)(card->host.slot, true);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "failed to switch bus to DDR mode (0x%x)", err); ESP_LOGE(TAG, "failed to switch bus to DDR mode (0x%x)", err);
return err; return err;