diff options
| author | Bernard Xiong <[email protected]> | 2021-04-19 00:29:09 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-04-19 00:29:09 +0800 |
| commit | 1916135b89ea365963e3dabf4539fc7fa6e5d899 (patch) | |
| tree | 447a6803391a6830c17eedb62b6d59a48df77e1e | |
| parent | 57da8b57321652b61b8a60a944da3a99aef8a516 (diff) | |
| parent | 398718f0f9323d62a03a6ce441f9ff1cb36d61d1 (diff) | |
Merge pull request #4608 from majianjia/master
Add more trys when switching MMC card data width
| -rw-r--r-- | components/drivers/sdio/mmc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/components/drivers/sdio/mmc.c b/components/drivers/sdio/mmc.c index 5aba3dba7a..d8f3a9e0a5 100644 --- a/components/drivers/sdio/mmc.c +++ b/components/drivers/sdio/mmc.c @@ -300,7 +300,7 @@ static int mmc_select_bus_width(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd) MMCSD_BUS_WIDTH_1 }; struct rt_mmcsd_host *host = card->host; - unsigned idx, bus_width = 0; + unsigned idx, trys, bus_width = 0; int err = 0; if (GET_BITS(card->resp_cid, 122, 4) < 4) @@ -335,10 +335,13 @@ static int mmc_select_bus_width(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd) if (err) continue; - bus_width = bus_widths[idx]; - mmcsd_set_bus_width(host, bus_width); - mmcsd_delay_ms(20); //delay 10ms - err = mmc_compare_ext_csds(card, ext_csd, bus_width); + for(trys = 0; trys < 5; trys++){ + mmcsd_set_bus_width(host, bus_width); + mmcsd_delay_ms(10); + err = mmc_compare_ext_csds(card, ext_csd, bus_width); + if(!err) + break; + } if (!err) { err = bus_width; break; |
