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
|
||||||
//
|
//
|
||||||
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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue