//\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
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
//\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