]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add Add Driver Diagnostic 2 Protocol support for IdeBus driver.
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 30 Oct 2007 06:45:44 +0000 (06:45 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 30 Oct 2007 06:45:44 +0000 (06:45 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4241 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/DriverDiagnostics.c
IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/idebus.c
IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/idebus.h

index 8aa6d057125f5d45b5e6827b45a124b8843f9761..f3f649c163e2c8fbc4162e744925c5da2f939171 100644 (file)
 //\r
 // EFI Driver Diagnostics Protocol\r
 //\r
-EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics = {\r
   IDEBusDriverDiagnosticsRunDiagnostics,\r
   "eng"\r
 };\r
 \r
+//\r
+// EFI Driver Diagnostics 2 Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gIDEBusDriverDiagnostics2 = {\r
+  (EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS) IDEBusDriverDiagnosticsRunDiagnostics,\r
+  "en"\r
+};\r
+\r
 /**\r
   Runs diagnostics on a controller.\r
 \r
@@ -98,6 +106,49 @@ IDEBusDriverDiagnosticsRunDiagnostics (
   IDE_BLK_IO_DEV        *IdeBlkIoDevice;\r
   UINT32                VendorDeviceId;\r
   VOID                  *BlockBuffer;\r
+  CHAR8                 *SupportedLanguages;\r
+  BOOLEAN               Iso639Language;\r
+  BOOLEAN               Found;\r
+  UINTN                 Index;\r
+\r
+  if (Language         == NULL ||\r
+      ErrorType        == NULL ||\r
+      Buffer           == NULL ||\r
+      ControllerHandle == NULL ||\r
+      BufferSize       == NULL) {\r
+\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  SupportedLanguages = This->SupportedLanguages;\r
+  Iso639Language = (BOOLEAN)(This == &gIDEBusDriverDiagnostics);\r
+  //\r
+  // Make sure Language is in the set of Supported Languages\r
+  //\r
+  Found = FALSE;\r
+  while (*SupportedLanguages != 0) {\r
+    if (Iso639Language) {\r
+      if (CompareMem (Language, SupportedLanguages, 3) == 0) {\r
+        Found = TRUE;\r
+        break;\r
+      }\r
+      SupportedLanguages += 3;\r
+    } else {\r
+      for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
+      if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {\r
+        Found = TRUE;\r
+        break;\r
+      }\r
+      SupportedLanguages += Index;\r
+      for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
+    }\r
+  }\r
+  //\r
+  // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED\r
+  //\r
+  if (!Found) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
 \r
   *ErrorType  = NULL;\r
   *BufferSize = 0;\r
index 48c2184696494da8e0de3300f94d3a52b79339a2..666b81768cfeddb427e57f281f5f48f3c4e27c2b 100644 (file)
@@ -1419,13 +1419,16 @@ InitializeIdeBus(
   //\r
   // Install driver model protocol(s).\r
   //\r
-  Status = EfiLibInstallDriverBindingComponentName2 (\r
+  Status = EfiLibInstallAllDriverProtocols2 (\r
              ImageHandle,\r
              SystemTable,\r
              &gIDEBusDriverBinding,\r
              ImageHandle,\r
              &gIDEBusComponentName,\r
-             &gIDEBusComponentName2\r
+             &gIDEBusComponentName2,\r
+             NULL,\r
+             &gIDEBusDriverDiagnostics,\r
+             &gIDEBusDriverDiagnostics2\r
              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
index 9c6e41bc95888fe17c1c8c26532806981e5f88ff..da7a03f71b45699fac30c35da138eea2e4d5b0a0 100644 (file)
@@ -111,7 +111,9 @@ typedef struct {
 //\r
 // Global Variables\r
 //\r
-extern EFI_DRIVER_BINDING_PROTOCOL  gIDEBusDriverBinding;\r
+extern EFI_DRIVER_BINDING_PROTOCOL      gIDEBusDriverBinding;\r
+extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL  gIDEBusDriverDiagnostics;\r
+extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gIDEBusDriverDiagnostics2;\r
 \r
 #include "ide.h"\r
 \r