+VOID\r
+EFIAPI\r
+CheckCardsCallback (\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
+ )\r
+{\r
+ LIST_ENTRY *CurrentLink;\r
+ MMC_HOST_INSTANCE *MmcHostInstance;\r
+ EFI_STATUS Status;\r
+\r
+ CurrentLink = mMmcHostPool.ForwardLink;\r
+ while (CurrentLink != NULL && CurrentLink != &mMmcHostPool) {\r
+ MmcHostInstance = MMC_HOST_INSTANCE_FROM_LINK(CurrentLink);\r
+ ASSERT(MmcHostInstance != NULL);\r
+\r
+ if (MmcHostInstance->MmcHost->IsCardPresent() == !MmcHostInstance->Initialized) {\r
+ MmcHostInstance->State = MmcHwInitializationState;\r
+ MmcHostInstance->BlockIo.Media->MediaPresent = !MmcHostInstance->Initialized;\r
+ MmcHostInstance->Initialized = !MmcHostInstance->Initialized;\r
+\r
+ Status = gBS->ReinstallProtocolInterface (\r
+ (MmcHostInstance->MmcHandle),\r
+ &gEfiBlockIoProtocolGuid,\r
+ &(MmcHostInstance->BlockIo),\r
+ &(MmcHostInstance->BlockIo)\r
+ );\r
+\r
+ if (EFI_ERROR(Status)) {\r
+ Print(L"MMC Card: Error reinstalling BlockIo interface\n");\r
+ }\r
+ }\r
+\r
+ CurrentLink = CurrentLink->ForwardLink;\r
+ }\r
+}\r
+\r