[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 04/22] sd: emmc: update OCR fields for eMMC
From: |
Sai Pavan Boddu |
Subject: |
[PATCH v2 04/22] sd: emmc: update OCR fields for eMMC |
Date: |
Mon, 22 Feb 2021 13:50:21 +0530 |
From: Vincent Palatin <vpalatin@chromium.org>
eMMC OCR register doesn't has UHS-II field and voltage fields are
different.
Signed-off-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
---
hw/sd/sd.c | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 42ee49c..430bea5 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -283,6 +283,15 @@ FIELD(OCR, UHS_II_CARD, 29, 1) /* Only
UHS-II */
FIELD(OCR, CARD_CAPACITY, 30, 1) /* 0:SDSC, 1:SDHC/SDXC */
FIELD(OCR, CARD_POWER_UP, 31, 1)
+/*
+ * eMMC OCR register
+ */
+FIELD(EMMC_OCR, VDD_WINDOW_0, 7, 1)
+FIELD(EMMC_OCR, VDD_WINDOW_1, 8, 7)
+FIELD(EMMC_OCR, VDD_WINDOW_2, 15, 9)
+FIELD(EMMC_OCR, ACCESS_MODE, 29, 2)
+FIELD(EMMC_OCR, POWER_UP, 31, 1)
+
#define ACMD41_ENQUIRY_MASK 0x00ffffff
#define ACMD41_R3_MASK (R_OCR_VDD_VOLTAGE_WIN_HI_MASK \
| R_OCR_ACCEPT_SWITCH_1V8_MASK \
@@ -292,8 +301,16 @@ FIELD(OCR, CARD_POWER_UP, 31, 1)
static void sd_set_ocr(SDState *sd)
{
- /* All voltages OK */
- sd->ocr = R_OCR_VDD_VOLTAGE_WIN_HI_MASK;
+ if (sd->emmc) {
+ /*
+ * Dual Voltage eMMC card
+ */
+ sd->ocr = R_EMMC_OCR_VDD_WINDOW_0_MASK |
+ R_EMMC_OCR_VDD_WINDOW_2_MASK;
+ } else {
+ /* All voltages OK */
+ sd->ocr = R_OCR_VDD_VOLTAGE_WIN_HI_MASK;
+ }
}
static void sd_ocr_powerup(void *opaque)
@@ -521,7 +538,11 @@ static void sd_response_r1_make(SDState *sd, uint8_t
*response)
static void sd_response_r3_make(SDState *sd, uint8_t *response)
{
- stl_be_p(response, sd->ocr & ACMD41_R3_MASK);
+ if (sd->emmc) {
+ stl_be_p(response, sd->ocr);
+ } else {
+ stl_be_p(response, sd->ocr & ACMD41_R3_MASK);
+ }
}
static void sd_response_r6_make(SDState *sd, uint8_t *response)
--
2.7.4
- [PATCH v2 00/22] eMMC support, Sai Pavan Boddu, 2021/02/22
- [PATCH v2 04/22] sd: emmc: update OCR fields for eMMC,
Sai Pavan Boddu <=
- [PATCH v2 13/22] sd: emmc: Make ACMD41 illegal for mmc, Sai Pavan Boddu, 2021/02/22
- [PATCH v2 07/22] sd: sdmmc-internal: Add command string for SEND_OP_CMD, Sai Pavan Boddu, 2021/02/22
- [PATCH v2 03/22] sd: emmc: Add support for eMMC cards, Sai Pavan Boddu, 2021/02/22
- [PATCH v2 09/22] sd: emmc: Update CMD1 definition for eMMC, Sai Pavan Boddu, 2021/02/22
- [PATCH v2 16/22] sd: emmc: Add Extended CSD register definitions, Sai Pavan Boddu, 2021/02/22
- [PATCH v2 01/22] block: add eMMC block device type, Sai Pavan Boddu, 2021/02/22