diff options
| author | Bernard Xiong <[email protected]> | 2020-03-13 16:48:59 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-03-13 16:48:59 +0800 |
| commit | 23d02c68c03c2a50a09309150425bc31e843c696 (patch) | |
| tree | 672ba0ab47feda7c9cffead2d2c3315d60fe23a0 /components | |
| parent | ea968f6833c98bd6768ffdcb43fa03f8c3bc71d3 (diff) | |
| parent | 11277014a3361a67e5f939f58aa0540f2016cc02 (diff) | |
Merge pull request #3441 from shawn1221/mmc-upstream-20200312
component sdio fix
Diffstat (limited to 'components')
| -rw-r--r-- | components/drivers/sdio/block_dev.c | 2 | ||||
| -rw-r--r-- | components/drivers/sdio/mmc.c | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/components/drivers/sdio/block_dev.c b/components/drivers/sdio/block_dev.c index 5db0f38c08..602acb9aa7 100644 --- a/components/drivers/sdio/block_dev.c +++ b/components/drivers/sdio/block_dev.c @@ -460,8 +460,6 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card) rt_device_register(&blk_dev->dev, "sd0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE); rt_list_insert_after(&blk_devices, &blk_dev->list); - - break; } else { diff --git a/components/drivers/sdio/mmc.c b/components/drivers/sdio/mmc.c index 7b1f7ee193..f77fbd959e 100644 --- a/components/drivers/sdio/mmc.c +++ b/components/drivers/sdio/mmc.c @@ -318,8 +318,17 @@ static int mmc_select_bus_width(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd) * the device to work in 8bit transfer mode. If the * mmc switch command returns error then switch to * 4bit transfer mode. On success set the corresponding - * bus width on the host. + * bus width on the host. Meanwhile, mmc core would + * bail out early if corresponding bus capable wasn't + * set by drivers. */ + if ((!(host->flags & MMCSD_BUSWIDTH_8) && + ext_csd_bits[idx] == EXT_CSD_BUS_WIDTH_8) || + (!(host->flags & MMCSD_BUSWIDTH_4) && + (ext_csd_bits[idx] == EXT_CSD_BUS_WIDTH_4 || + ext_csd_bits[idx] == EXT_CSD_BUS_WIDTH_8))) + continue; + err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BUS_WIDTH, ext_csd_bits[idx]); |
