Add Add Driver Diagnostic 2 Protocol support for IdeBus driver.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4241 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qhuang8 2007-10-30 06:45:44 +00:00
parent db168de9b0
commit dfc4846489
3 changed files with 60 additions and 4 deletions

View File

@ -18,11 +18,19 @@
// //
// EFI Driver Diagnostics Protocol // EFI Driver Diagnostics Protocol
// //
EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics = { GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics = {
IDEBusDriverDiagnosticsRunDiagnostics, IDEBusDriverDiagnosticsRunDiagnostics,
"eng" "eng"
}; };
//
// EFI Driver Diagnostics 2 Protocol
//
GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gIDEBusDriverDiagnostics2 = {
(EFI_DRIVER_DIAGNOSTICS2_RUN_DIAGNOSTICS) IDEBusDriverDiagnosticsRunDiagnostics,
"en"
};
/** /**
Runs diagnostics on a controller. Runs diagnostics on a controller.
@ -98,6 +106,49 @@ IDEBusDriverDiagnosticsRunDiagnostics (
IDE_BLK_IO_DEV *IdeBlkIoDevice; IDE_BLK_IO_DEV *IdeBlkIoDevice;
UINT32 VendorDeviceId; UINT32 VendorDeviceId;
VOID *BlockBuffer; VOID *BlockBuffer;
CHAR8 *SupportedLanguages;
BOOLEAN Iso639Language;
BOOLEAN Found;
UINTN Index;
if (Language == NULL ||
ErrorType == NULL ||
Buffer == NULL ||
ControllerHandle == NULL ||
BufferSize == NULL) {
return EFI_INVALID_PARAMETER;
}
SupportedLanguages = This->SupportedLanguages;
Iso639Language = (BOOLEAN)(This == &gIDEBusDriverDiagnostics);
//
// Make sure Language is in the set of Supported Languages
//
Found = FALSE;
while (*SupportedLanguages != 0) {
if (Iso639Language) {
if (CompareMem (Language, SupportedLanguages, 3) == 0) {
Found = TRUE;
break;
}
SupportedLanguages += 3;
} else {
for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);
if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {
Found = TRUE;
break;
}
SupportedLanguages += Index;
for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);
}
}
//
// If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED
//
if (!Found) {
return EFI_UNSUPPORTED;
}
*ErrorType = NULL; *ErrorType = NULL;
*BufferSize = 0; *BufferSize = 0;

View File

@ -1419,13 +1419,16 @@ InitializeIdeBus(
// //
// Install driver model protocol(s). // Install driver model protocol(s).
// //
Status = EfiLibInstallDriverBindingComponentName2 ( Status = EfiLibInstallAllDriverProtocols2 (
ImageHandle, ImageHandle,
SystemTable, SystemTable,
&gIDEBusDriverBinding, &gIDEBusDriverBinding,
ImageHandle, ImageHandle,
&gIDEBusComponentName, &gIDEBusComponentName,
&gIDEBusComponentName2 &gIDEBusComponentName2,
NULL,
&gIDEBusDriverDiagnostics,
&gIDEBusDriverDiagnostics2
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -112,6 +112,8 @@ typedef struct {
// Global Variables // Global Variables
// //
extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding; extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding;
extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics;
extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gIDEBusDriverDiagnostics2;
#include "ide.h" #include "ide.h"