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>
//\r
// Check whether there is a SD/MMC card attached\r
//\r
//\r
// Check whether there is a SD/MMC card attached\r
//\r
- Status = SdMmcHcCardDetect (PciIo, Slot, &MediaPresent);\r
- if (EFI_ERROR (Status) && (Status != EFI_MEDIA_CHANGED)) {\r
- continue;\r
- } else if (!MediaPresent) {\r
- DEBUG ((DEBUG_INFO, "SdMmcHcCardDetect: No device attached in Slot[%d]!!!\n", Slot));\r
- continue;\r
+ if (Private->Slot[Slot].SlotType == RemovableSlot) {\r
+ Status = SdMmcHcCardDetect (PciIo, Slot, &MediaPresent);\r
+ if (EFI_ERROR (Status) && (Status != EFI_MEDIA_CHANGED)) {\r
+ continue;\r
+ } else if (!MediaPresent) {\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "SdMmcHcCardDetect: No device attached in Slot[%d]!!!\n",\r
+ Slot\r
+ ));\r
+ continue;\r
+ }\r
}\r
\r
Status = SdMmcHcInitHost (Private, Slot);\r
}\r
\r
Status = SdMmcHcInitHost (Private, Slot);\r