summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commonlib/include/commonlib/sd_mmc_ctrlr.h3
-rw-r--r--src/soc/mediatek/common/msdc.c12
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;