From bbce001515bbfcad24c216b1c9c25057e8c461e9 Mon Sep 17 00:00:00 2001 From: Jeff Brasen Date: Wed, 10 Oct 2018 01:50:37 +0800 Subject: [PATCH] MdeModulePkg/SdMmcPciHcDxe: Allow additional SDHCI versions Clock control is similar in SDHCI versions greater then version 2. Add support for more recent versions of the controller specification. SD card support for 1.8V is also present in controller versions 3 and greater. https://bugzilla.tianocore.org/show_bug.cgi?id=1233 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jeff Brasen Reviewed-by: Hao Wu --- MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c | 3 ++- MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c index d3f77edfea..6ee9ed7f14 100644 --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c @@ -978,7 +978,8 @@ SdCardIdentification ( return Status; } - if ((ControllerVer & 0xFF) == SD_MMC_HC_CTRL_VER_300) { + if (((ControllerVer & 0xFF) >= SD_MMC_HC_CTRL_VER_300) && + ((ControllerVer & 0xFF) <= SD_MMC_HC_CTRL_VER_420)) { S18r = TRUE; } else if (((ControllerVer & 0xFF) == SD_MMC_HC_CTRL_VER_100) || ((ControllerVer & 0xFF) == SD_MMC_HC_CTRL_VER_200)) { S18r = FALSE; diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c index 3b9a184bc4..bedc96863c 100644 --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c @@ -782,7 +782,8 @@ SdMmcHcClockSupply ( // // Set SDCLK Frequency Select and Internal Clock Enable fields in Clock Control register. // - if ((ControllerVer & 0xFF) == SD_MMC_HC_CTRL_VER_300) { + if (((ControllerVer & 0xFF) >= SD_MMC_HC_CTRL_VER_300) && + ((ControllerVer & 0xFF) <= SD_MMC_HC_CTRL_VER_420)) { ASSERT (Divisor <= 0x3FF); ClockCtrl = ((Divisor & 0xFF) << 8) | ((Divisor & 0x300) >> 2); } else if (((ControllerVer & 0xFF) == 0) || ((ControllerVer & 0xFF) == 1)) {