From: Haojian Zhuang Date: Thu, 2 Aug 2018 06:48:17 +0000 (+0800) Subject: drivers/mmc: send CMD8 only for SD card in initialization X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=e74dc940c6e71d665716fcad5124ee9c4af0abd8;p=project%2Fbcm63xx%2Fatf.git drivers/mmc: send CMD8 only for SD card in initialization Sending CMD8 before CMD1 just causes to fetch data failure in eMMC. Check whether it's eMMC first. If it's eMMC, send CMD1 command instead. Signed-off-by: Haojian Zhuang --- diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 0c9ec101..c8eac26b 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -363,8 +363,6 @@ static int mmc_reset_to_idle(void) { int ret; - mdelay(1); - /* CMD0: reset to IDLE */ ret = mmc_send_cmd(MMC_CMD(0), 0, 0, NULL); if (ret != 0) { @@ -413,14 +411,16 @@ static int mmc_enumerate(unsigned int clk, unsigned int bus_width) mmc_reset_to_idle(); - /* CMD8: Send Interface Condition Command */ - ret = mmc_send_cmd(MMC_CMD(8), VHS_2_7_3_6_V | CMD8_CHECK_PATTERN, - MMC_RESPONSE_R(7), &resp_data[0]); - - if ((ret == 0) && ((resp_data[0] & 0xffU) == CMD8_CHECK_PATTERN)) { - ret = sd_send_op_cond(); - } else { + if (mmc_dev_info->mmc_dev_type == MMC_IS_EMMC) { ret = mmc_send_op_cond(); + } else { + /* CMD8: Send Interface Condition Command */ + ret = mmc_send_cmd(MMC_CMD(8), VHS_2_7_3_6_V | CMD8_CHECK_PATTERN, + MMC_RESPONSE_R(7), &resp_data[0]); + + if ((ret == 0) && ((resp_data[0] & 0xffU) == CMD8_CHECK_PATTERN)) { + ret = sd_send_op_cond(); + } } if (ret != 0) { return ret;