]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Universal/MmcDxe/Mmc.c
EmbeddedPkg/MmcDxe: Card Presence Detect Race Condition
[mirror_edk2.git] / EmbeddedPkg / Universal / MmcDxe / Mmc.c
index cfa9a51f50773b3d65c42cf6e50179ad61d32ad9..48d32513d40915882819a6133879f9cbd73c989c 100644 (file)
@@ -299,6 +299,9 @@ MmcDriverBindingStart (
     InsertMmcHost (MmcHostInstance);\r
 \r
     MmcHostInstance->Initialized = FALSE;\r
+\r
+    // Detect card presence now\r
+    CheckCardsCallback (NULL, NULL);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -366,6 +369,10 @@ CheckCardsCallback (
       MmcHostInstance->BlockIo.Media->MediaPresent = !MmcHostInstance->Initialized;\r
       MmcHostInstance->Initialized = !MmcHostInstance->Initialized;\r
 \r
+      if(MmcHostInstance->BlockIo.Media->MediaPresent) {\r
+        InitializeMmcDevice(MmcHostInstance);\r
+      }\r
+\r
       Status = gBS->ReinstallProtocolInterface (\r
                     (MmcHostInstance->MmcHandle),\r
                     &gEfiBlockIoProtocolGuid,\r
@@ -382,6 +389,7 @@ CheckCardsCallback (
   }\r
 }\r
 \r
+\r
 EFI_DRIVER_BINDING_PROTOCOL gMmcDriverBinding = {\r
   MmcDriverBindingSupported,\r
   MmcDriverBindingStart,\r