summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorMarcin Wojtas <mw@semihalf.com>2018-09-18 16:59:07 +0800
committerHao Wu <hao.a.wu@intel.com>2018-09-21 10:47:48 +0800
commit4cd9d7fc6f2ece01a46f2156ba009e83a2951907 (patch)
treed9cc4036adbc373c203dd21af2c8198eca1a8b71 /MdeModulePkg
parent064d301fb07566ab6d3d89010b9666f320698f34 (diff)
downloadedk2-4cd9d7fc6f2ece01a46f2156ba009e83a2951907.tar.gz
edk2-4cd9d7fc6f2ece01a46f2156ba009e83a2951907.tar.bz2
edk2-4cd9d7fc6f2ece01a46f2156ba009e83a2951907.zip
MdeModulePkg/SdMmcPciHcDxe: Execute card detect only for RemovableSlot
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1182 Some devices can be non removable (such as eMMC) and checking Present State Register on host controller may falsely return an information that device is not present. Execute this check conditionally on the SloType field value. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marcin Wojtas <mw@semihalf.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c
index f923930bba..bf9869dbb5 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c
@@ -661,12 +661,18 @@ SdMmcPciHcDriverBindingStart (
//
// Check whether there is a SD/MMC card attached
//
- Status = SdMmcHcCardDetect (PciIo, Slot, &MediaPresent);
- if (EFI_ERROR (Status) && (Status != EFI_MEDIA_CHANGED)) {
- continue;
- } else if (!MediaPresent) {
- DEBUG ((DEBUG_INFO, "SdMmcHcCardDetect: No device attached in Slot[%d]!!!\n", Slot));
- continue;
+ if (Private->Slot[Slot].SlotType == RemovableSlot) {
+ Status = SdMmcHcCardDetect (PciIo, Slot, &MediaPresent);
+ if (EFI_ERROR (Status) && (Status != EFI_MEDIA_CHANGED)) {
+ continue;
+ } else if (!MediaPresent) {
+ DEBUG ((
+ DEBUG_INFO,
+ "SdMmcHcCardDetect: No device attached in Slot[%d]!!!\n",
+ Slot
+ ));
+ continue;
+ }
}
Status = SdMmcHcInitHost (Private, Slot);