mirror of https://github.com/acidanthera/audk.git
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:
parent
db168de9b0
commit
dfc4846489
|
@ -18,11 +18,19 @@
|
|||
//
|
||||
// EFI Driver Diagnostics Protocol
|
||||
//
|
||||
EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics = {
|
||||
IDEBusDriverDiagnosticsRunDiagnostics,
|
||||
"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.
|
||||
|
||||
|
@ -98,6 +106,49 @@ IDEBusDriverDiagnosticsRunDiagnostics (
|
|||
IDE_BLK_IO_DEV *IdeBlkIoDevice;
|
||||
UINT32 VendorDeviceId;
|
||||
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;
|
||||
*BufferSize = 0;
|
||||
|
|
|
@ -1419,13 +1419,16 @@ InitializeIdeBus(
|
|||
//
|
||||
// Install driver model protocol(s).
|
||||
//
|
||||
Status = EfiLibInstallDriverBindingComponentName2 (
|
||||
Status = EfiLibInstallAllDriverProtocols2 (
|
||||
ImageHandle,
|
||||
SystemTable,
|
||||
&gIDEBusDriverBinding,
|
||||
ImageHandle,
|
||||
&gIDEBusComponentName,
|
||||
&gIDEBusComponentName2
|
||||
&gIDEBusComponentName2,
|
||||
NULL,
|
||||
&gIDEBusDriverDiagnostics,
|
||||
&gIDEBusDriverDiagnostics2
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
|
|
|
@ -111,7 +111,9 @@ typedef struct {
|
|||
//
|
||||
// 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"
|
||||
|
||||
|
|
Loading…
Reference in New Issue