diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/commonlib/include/commonlib/sd_mmc_ctrlr.h | 3 | ||||
-rw-r--r-- | src/soc/mediatek/common/msdc.c | 12 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/commonlib/include/commonlib/sd_mmc_ctrlr.h b/src/commonlib/include/commonlib/sd_mmc_ctrlr.h index 6ac274090f..c5da967d89 100644 --- a/src/commonlib/include/commonlib/sd_mmc_ctrlr.h +++ b/src/commonlib/include/commonlib/sd_mmc_ctrlr.h @@ -17,8 +17,9 @@ enum { MMC_STATUS_NEED_RESET = 0, MMC_STATUS_CMD1_READY_OR_IN_PROGRESS, - MMC_STATUS_CMD1_READY, + MMC_STATUS_CMD1_READY, /* Byte mode */ MMC_STATUS_CMD1_IN_PROGRESS, + MMC_STATUS_CMD1_READY_HCS, /* Sector mode (High capacity support) */ }; struct mmc_command { diff --git a/src/soc/mediatek/common/msdc.c b/src/soc/mediatek/common/msdc.c index 8208886c20..6e0086ba75 100644 --- a/src/soc/mediatek/common/msdc.c +++ b/src/soc/mediatek/common/msdc.c @@ -474,12 +474,16 @@ int mtk_emmc_early_init(void *base, void *top_base) /* Send CMD1 */ err = mmc_send_op_cond(&media); - if (err == 0) - set_early_mmc_wake_status(MMC_STATUS_CMD1_READY); - else if (err == CARD_IN_PROGRESS) + if (err == 0) { + if (media.op_cond_response & OCR_HCS) + set_early_mmc_wake_status(MMC_STATUS_CMD1_READY_HCS); + else + set_early_mmc_wake_status(MMC_STATUS_CMD1_READY); + } else if (err == CARD_IN_PROGRESS) { set_early_mmc_wake_status(MMC_STATUS_CMD1_IN_PROGRESS); - else + } else { goto out_err; + } return 0; |