aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaojian Zhuang <haojian.zhuang@linaro.org>2018-02-10 15:02:58 +0800
committerGitHub <noreply@github.com>2018-02-10 15:02:58 +0800
commita7098f916f0ce2cd902745c02aec3d4c7e14428f (patch)
tree5b42cd3f9955294f0a8a92fb1f56321fa6aa7330
parent69a8c5fc495a5fd524c7187382c2b82bc253b2ad (diff)
parentb195820461509b3d0ab04674a457a928bdc3a07c (diff)
downloadOpenPlatformPkg-a7098f916f0ce2cd902745c02aec3d4c7e14428f.tar.gz
Merge pull request #94 from hzhuang1/fix_sd_2
Fix sd 2
-rw-r--r--Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c4
-rw-r--r--Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c3
-rw-r--r--Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.h7
-rw-r--r--Include/Protocol/PlatformDwMmc.h1
-rw-r--r--Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c8
5 files changed, 13 insertions, 10 deletions
diff --git a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c
index 55e2fa4..f3c9156 100644
--- a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c
+++ b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c
@@ -248,7 +248,7 @@ return;
for (Slot = 0; Slot < DW_MMC_HC_MAX_SLOT; Slot++) {
if ((Private->Slot[Slot].Enable) && (Private->Slot[Slot].SlotType == RemovableSlot)) {
- Status = DwMmcHcCardDetect (Private->PciIo, Slot, &MediaPresent);
+ Status = DwMmcHcCardDetect (Private->PciIo, Private->ControllerHandle, Slot, &MediaPresent);
if ((Status == EFI_MEDIA_CHANGED) && !MediaPresent) {
DEBUG ((DEBUG_INFO, "DwMmcHcEnumerateDevice: device disconnected at slot %d of pci %p\n", Slot, Private->PciIo));
Private->Slot[Slot].MediaPresent = FALSE;
@@ -679,7 +679,7 @@ DwMmcHcDriverBindingStart (
DumpCapabilityReg (Slot, &Private->Capability[Slot]);
MediaPresent = FALSE;
- Status = DwMmcHcCardDetect (Private->PciIo, Slot, &MediaPresent);
+ Status = DwMmcHcCardDetect (Private->PciIo, Controller, Slot, &MediaPresent);
if (MediaPresent == FALSE) {
continue;
}
diff --git a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c
index 533f911..3d03780 100644
--- a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c
+++ b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c
@@ -524,6 +524,7 @@ DwMmcHcGetMaxCurrent (
EFI_STATUS
DwMmcHcCardDetect (
IN EFI_PCI_IO_PROTOCOL *PciIo,
+ IN EFI_HANDLE Controller,
IN UINT8 Slot,
OUT BOOLEAN *MediaPresent
)
@@ -542,7 +543,7 @@ DwMmcHcCardDetect (
if (EFI_ERROR (Status)) {
return Status;
}
- *MediaPresent = PlatformDwMmc->CardDetect (Slot);
+ *MediaPresent = PlatformDwMmc->CardDetect (Controller, Slot);
return EFI_SUCCESS;
}
diff --git a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.h b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.h
index 228b20f..d9c6211 100644
--- a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.h
+++ b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.h
@@ -522,9 +522,10 @@ DwMmcHcGetMaxCurrent (
**/
EFI_STATUS
DwMmcHcCardDetect (
- IN EFI_PCI_IO_PROTOCOL *PciIo,
- IN UINT8 Slot,
- OUT BOOLEAN *MediaPresent
+ IN EFI_PCI_IO_PROTOCOL *PciIo,
+ IN EFI_HANDLE Controller,
+ IN UINT8 Slot,
+ OUT BOOLEAN *MediaPresent
);
/**
diff --git a/Include/Protocol/PlatformDwMmc.h b/Include/Protocol/PlatformDwMmc.h
index fe2259b..bf315c4 100644
--- a/Include/Protocol/PlatformDwMmc.h
+++ b/Include/Protocol/PlatformDwMmc.h
@@ -65,6 +65,7 @@ EFI_STATUS
typedef
BOOLEAN
(EFIAPI *PLATFORM_DW_MMC_CARD_DETECT) (
+ IN EFI_HANDLE Controller,
IN UINT8 Slot
);
diff --git a/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c b/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c
index 0f58697..e7d3c6c 100644
--- a/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c
+++ b/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c
@@ -79,6 +79,7 @@ HiKeyGetCapability (
BOOLEAN
EFIAPI
HiKeyCardDetect (
+ IN EFI_HANDLE Controller,
IN UINT8 Slot
)
{
@@ -86,9 +87,9 @@ HiKeyCardDetect (
EMBEDDED_GPIO *Gpio;
UINTN Value;
- if (Slot == 0) {
+ if (DwMmcCapability[0].Controller == Controller) {
return TRUE;
- } else if (Slot == 1) {
+ } else if (DwMmcCapability[1].Controller == Controller) {
Status = gBS->LocateProtocol (&gEmbeddedGpioProtocolGuid, NULL, (VOID **)&Gpio);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "Failed to get GPIO protocol: %r\n", Status));
@@ -108,9 +109,8 @@ HiKeyCardDetect (
return TRUE;
}
return FALSE;
- } else {
- return FALSE;
}
+ return FALSE;
}
PLATFORM_DW_MMC_PROTOCOL mDwMmcDevice = {