mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 23:24:03 +02:00
A sample driver produces driver health protocol. This driver use DiskIO driver as a template.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9516 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
baf46e70a5
commit
432cf05bcf
269
OptionRomPkg/DriverHealthDxe/ComponentName.c
Normal file
269
OptionRomPkg/DriverHealthDxe/ComponentName.c
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
/** @file
|
||||||
|
UEFI Component Name(2) protocol implementation for DiskIo driver.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2009, Intel Corporation. <BR>
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "DriverHealthDxe.h"
|
||||||
|
|
||||||
|
#define DISK_IO_CONTRORLLER_NAME "Disk Io Controller # "
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Protocol
|
||||||
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gDiskIoComponentName = {
|
||||||
|
DiskIoComponentNameGetDriverName,
|
||||||
|
DiskIoComponentNameGetControllerName,
|
||||||
|
"eng"
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name 2 Protocol
|
||||||
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDiskIoComponentName2 = {
|
||||||
|
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) DiskIoComponentNameGetDriverName,
|
||||||
|
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) DiskIoComponentNameGetControllerName,
|
||||||
|
"en"
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Driver name table for DiskIo module.
|
||||||
|
// It is shared by the implementation of ComponentName & ComponentName2 Protocol.
|
||||||
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDiskIoDriverNameTable[] = {
|
||||||
|
{
|
||||||
|
"eng;en",
|
||||||
|
(CHAR16 *)L"Generic Disk I/O Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of a driver in the form of a
|
||||||
|
Unicode string. If the driver specified by This has a user readable name in
|
||||||
|
the language specified by Language, then a pointer to the driver name is
|
||||||
|
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||||
|
by This does not support the language specified by Language,
|
||||||
|
then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name that the caller is
|
||||||
|
requesting, and it must match one of the
|
||||||
|
languages specified in SupportedLanguages. The
|
||||||
|
number of languages supported by a driver is up
|
||||||
|
to the driver writer. Language is specified
|
||||||
|
in RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param DriverName[out] A pointer to the Unicode string to return.
|
||||||
|
This Unicode string is the name of the
|
||||||
|
driver specified by This in the language
|
||||||
|
specified by Language.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||||
|
This and the language specified by Language was
|
||||||
|
returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return LookupUnicodeString2 (
|
||||||
|
Language,
|
||||||
|
This->SupportedLanguages,
|
||||||
|
mDiskIoDriverNameTable,
|
||||||
|
DriverName,
|
||||||
|
(BOOLEAN)(This == &gDiskIoComponentName)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by a driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of the controller specified by
|
||||||
|
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||||
|
driver specified by This has a user readable name in the language specified by
|
||||||
|
Language, then a pointer to the controller name is returned in ControllerName,
|
||||||
|
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||||
|
managing the controller specified by ControllerHandle and ChildHandle,
|
||||||
|
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||||
|
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] The handle of a controller that the driver
|
||||||
|
specified by This is managing. This handle
|
||||||
|
specifies the controller whose name is to be
|
||||||
|
returned.
|
||||||
|
|
||||||
|
@param ChildHandle[in] The handle of the child controller to retrieve
|
||||||
|
the name of. This is an optional parameter that
|
||||||
|
may be NULL. It will be NULL for device
|
||||||
|
drivers. It will also be NULL for a bus drivers
|
||||||
|
that wish to retrieve the name of the bus
|
||||||
|
controller. It will not be NULL for a bus
|
||||||
|
driver that wishes to retrieve the name of a
|
||||||
|
child controller.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name that the caller is
|
||||||
|
requesting, and it must match one of the
|
||||||
|
languages specified in SupportedLanguages. The
|
||||||
|
number of languages supported by a driver is up
|
||||||
|
to the driver writer. Language is specified in
|
||||||
|
RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param ControllerName[out] A pointer to the Unicode string to return.
|
||||||
|
This Unicode string is the name of the
|
||||||
|
controller specified by ControllerHandle and
|
||||||
|
ChildHandle in the language specified by
|
||||||
|
Language from the point of view of the driver
|
||||||
|
specified by This.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the user readable name in
|
||||||
|
the language specified by Language for the
|
||||||
|
driver specified by This was returned in
|
||||||
|
DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoComponentNameGetControllerName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_DISK_IO_PROTOCOL *DiskIo;
|
||||||
|
DISK_IO_PRIVATE_DATA *Private;
|
||||||
|
|
||||||
|
//
|
||||||
|
// This is a device driver, so ChildHandle must be NULL.
|
||||||
|
//
|
||||||
|
if (ChildHandle != NULL) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Make sure this driver is currently managing ControllerHandle
|
||||||
|
//
|
||||||
|
Status = EfiTestManagedDevice (
|
||||||
|
ControllerHandle,
|
||||||
|
gDiskIoDriverBinding.DriverBindingHandle,
|
||||||
|
&gEfiBlockIoProtocolGuid
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Get the Block I/O Protocol on Controller
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
ControllerHandle,
|
||||||
|
&gEfiDiskIoProtocolGuid,
|
||||||
|
(VOID **) &DiskIo,
|
||||||
|
gDiskIoDriverBinding.DriverBindingHandle,
|
||||||
|
ControllerHandle,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Get the Serial Controller's Device structure
|
||||||
|
//
|
||||||
|
Private = DISK_IO_PRIVATE_DATA_FROM_THIS (DiskIo);
|
||||||
|
|
||||||
|
return LookupUnicodeString2 (
|
||||||
|
Language,
|
||||||
|
This->SupportedLanguages,
|
||||||
|
Private->ControllerNameTable,
|
||||||
|
ControllerName,
|
||||||
|
(BOOLEAN)(This == &gDiskIoComponentName)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the ISO639-2 and RFC4646 component name both for the Disk IO device
|
||||||
|
|
||||||
|
@param DiskIoDevice A pointer to the DISK_IO_PRIVATE_DATA instance.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
AddName (
|
||||||
|
IN DISK_IO_PRIVATE_DATA *DiskIoDevice
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CHAR16 DiskIoControllerName[sizeof (DISK_IO_CONTRORLLER_NAME)];
|
||||||
|
|
||||||
|
StrCpy (DiskIoControllerName, L"Disk Io Controller # ");
|
||||||
|
DiskIoControllerName[sizeof (DISK_IO_CONTRORLLER_NAME) - 2] = (CHAR16) (L'0' + DiskIoDevice->ControllerIndex);
|
||||||
|
AddUnicodeString2 (
|
||||||
|
"eng",
|
||||||
|
gDiskIoComponentName.SupportedLanguages,
|
||||||
|
&DiskIoDevice->ControllerNameTable,
|
||||||
|
(CHAR16 *) DiskIoControllerName,
|
||||||
|
TRUE
|
||||||
|
);
|
||||||
|
AddUnicodeString2 (
|
||||||
|
"en",
|
||||||
|
gDiskIoComponentName2.SupportedLanguages,
|
||||||
|
&DiskIoDevice->ControllerNameTable,
|
||||||
|
(CHAR16 *) DiskIoControllerName,
|
||||||
|
FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
1961
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.c
Normal file
1961
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.c
Normal file
File diff suppressed because it is too large
Load Diff
643
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.h
Normal file
643
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.h
Normal file
@ -0,0 +1,643 @@
|
|||||||
|
/** @file
|
||||||
|
DiskIo driver that layers it's self on every Block IO protocol in the system.
|
||||||
|
DiskIo converts a block oriented device to a byte oriented device.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2009, Intel Corporation
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef _DISK_IO_H
|
||||||
|
#define _DISK_IO_H
|
||||||
|
|
||||||
|
#include <Uefi.h>
|
||||||
|
#include <Protocol/BlockIo.h>
|
||||||
|
#include <Protocol/ComponentName.h>
|
||||||
|
#include <Protocol/DriverBinding.h>
|
||||||
|
#include <Protocol/DriverConfiguration.h>
|
||||||
|
#include <Protocol/DriverConfiguration2.h>
|
||||||
|
#include <Protocol/DriverHealth.h>
|
||||||
|
#include <Protocol/DiskIo.h>
|
||||||
|
#include <Protocol/HiiDatabase.h>
|
||||||
|
#include <Protocol/HiiConfigAccess.h>
|
||||||
|
#include <Protocol/HiiConfigRouting.h>
|
||||||
|
#include <Protocol/DevicePath.h>
|
||||||
|
#include <Protocol/HiiString.h>
|
||||||
|
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
|
#include <Library/UefiLib.h>
|
||||||
|
#include <Library/BaseLib.h>
|
||||||
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/MemoryAllocationLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||||
|
#include <Library/DevicePathLib.h>
|
||||||
|
#include <Library/HiiLib.h>
|
||||||
|
#include <Library/PrintLib.h>
|
||||||
|
#include "NVDataStruc.h"
|
||||||
|
|
||||||
|
#define DISK_IO_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('d', 's', 'k', 'I')
|
||||||
|
|
||||||
|
#define DISK_IO_CONTROLLER_STATE_SIGNATURE SIGNATURE_32 ('c', 't', 's', 'S')
|
||||||
|
|
||||||
|
#define DATA_BUFFER_BLOCK_NUM (64)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
VENDOR_DEVICE_PATH VendorDevicePath;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL End;
|
||||||
|
} HII_VENDOR_DEVICE_PATH;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINTN Signature;
|
||||||
|
EFI_DISK_IO_PROTOCOL DiskIo;
|
||||||
|
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
||||||
|
EFI_HANDLE Handle;
|
||||||
|
//
|
||||||
|
// Consumed protocol
|
||||||
|
//
|
||||||
|
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
||||||
|
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Produced protocol
|
||||||
|
//
|
||||||
|
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
|
||||||
|
|
||||||
|
DISK_IO_NV_DATA NVdata;
|
||||||
|
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||||
|
UINT8 ControllerIndex;
|
||||||
|
} DISK_IO_PRIVATE_DATA;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
BOOLEAN StartState;
|
||||||
|
UINTN CurrentState;
|
||||||
|
UINTN NextState;
|
||||||
|
EFI_STRING_ID StringId;
|
||||||
|
BOOLEAN RepairNotify;
|
||||||
|
EFI_DRIVER_HEALTH_STATUS HealthStatus;
|
||||||
|
} DEVICE_STATE;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINTN Signature;
|
||||||
|
LIST_ENTRY Link;
|
||||||
|
|
||||||
|
EFI_HANDLE ControllerHandle;
|
||||||
|
UINTN ControllerIndex;
|
||||||
|
EFI_HANDLE ChildHandle;
|
||||||
|
UINTN DeviceStateNum;
|
||||||
|
} CONTROLLER_STATE;
|
||||||
|
|
||||||
|
#define DISK_IO_PRIVATE_DATA_FROM_THIS(a) CR (a, DISK_IO_PRIVATE_DATA, DiskIo, DISK_IO_PRIVATE_DATA_SIGNATURE)
|
||||||
|
#define DISK_IO_PRIVATE_DATA_FROM_CONFIG_ACCESS(a) CR (a, DISK_IO_PRIVATE_DATA, ConfigAccess, DISK_IO_PRIVATE_DATA_SIGNATURE)
|
||||||
|
|
||||||
|
#define DISK_IO_CONTROLLER_STATE_FROM_HANDLE(a) CR (a, CONTROLLER_STATE, ControllerHandle, DISK_IO_CONTROLLER_STATE_SIGNATURE)
|
||||||
|
#define DISK_IO_CONTROLLER_STATE_FROM_LINK(a) CR (a, CONTROLLER_STATE, Link, DISK_IO_CONTROLLER_STATE_SIGNATURE)
|
||||||
|
//
|
||||||
|
// Global Variables
|
||||||
|
//
|
||||||
|
extern EFI_DRIVER_BINDING_PROTOCOL gDiskIoDriverBinding;
|
||||||
|
extern EFI_COMPONENT_NAME_PROTOCOL gDiskIoComponentName;
|
||||||
|
extern EFI_COMPONENT_NAME2_PROTOCOL gDiskIoComponentName2;
|
||||||
|
extern EFI_DRIVER_HEALTH_PROTOCOL gDiskIoDriverHealth;
|
||||||
|
|
||||||
|
//
|
||||||
|
// This is the generated String package data for all .UNI files.
|
||||||
|
// This data array is ready to be used as input of HiiAddPackages() to
|
||||||
|
// create a packagelist (which contains Form packages, String packages, etc).
|
||||||
|
//
|
||||||
|
extern UINT8 DriverHealthDxeStrings[];
|
||||||
|
extern UINT8 DriverHealthVfrBin[];
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prototypes
|
||||||
|
// Driver model protocol interface
|
||||||
|
//
|
||||||
|
/**
|
||||||
|
Test to see if this driver supports ControllerHandle.
|
||||||
|
|
||||||
|
@param This Protocol instance pointer.
|
||||||
|
@param ControllerHandle Handle of device to test
|
||||||
|
@param RemainingDevicePath Optional parameter use to pick a specific child
|
||||||
|
device to start.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS This driver supports this device
|
||||||
|
@retval EFI_ALREADY_STARTED This driver is already running on this device
|
||||||
|
@retval other This driver does not support this device
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoDriverBindingSupported (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Start this driver on ControllerHandle by opening a Block IO protocol and
|
||||||
|
installing a Disk IO protocol on ControllerHandle.
|
||||||
|
|
||||||
|
@param This Protocol instance pointer.
|
||||||
|
@param ControllerHandle Handle of device to bind driver to
|
||||||
|
@param RemainingDevicePath Optional parameter use to pick a specific child
|
||||||
|
device to start.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS This driver is added to ControllerHandle
|
||||||
|
@retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle
|
||||||
|
@retval other This driver does not support this device
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoDriverBindingStart (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Stop this driver on ControllerHandle by removing Disk IO protocol and closing
|
||||||
|
the Block IO protocol on ControllerHandle.
|
||||||
|
|
||||||
|
@param This Protocol instance pointer.
|
||||||
|
@param ControllerHandle Handle of device to stop driver on
|
||||||
|
@param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
|
||||||
|
children is zero stop the entire bus driver.
|
||||||
|
@param ChildHandleBuffer List of Child Handles to Stop.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS This driver is removed ControllerHandle
|
||||||
|
@retval other This driver was not removed from this device
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoDriverBindingStop (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN UINTN NumberOfChildren,
|
||||||
|
IN EFI_HANDLE *ChildHandleBuffer
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disk I/O Protocol Interface
|
||||||
|
//
|
||||||
|
/**
|
||||||
|
Read BufferSize bytes from Offset into Buffer.
|
||||||
|
Reads may support reads that are not aligned on
|
||||||
|
sector boundaries. There are three cases:
|
||||||
|
UnderRun - The first byte is not on a sector boundary or the read request is
|
||||||
|
less than a sector in length.
|
||||||
|
Aligned - A read of N contiguous sectors.
|
||||||
|
OverRun - The last byte is not on a sector boundary.
|
||||||
|
|
||||||
|
@param This Protocol instance pointer.
|
||||||
|
@param MediaId Id of the media, changes every time the media is replaced.
|
||||||
|
@param Offset The starting byte offset to read from
|
||||||
|
@param BufferSize Size of Buffer
|
||||||
|
@param Buffer Buffer containing read data
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read correctly from the device.
|
||||||
|
@retval EFI_DEVICE_ERROR The device reported an error while performing the read.
|
||||||
|
@retval EFI_NO_MEDIA There is no media in the device.
|
||||||
|
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
|
||||||
|
@retval EFI_INVALID_PARAMETER The read request contains device addresses that are not
|
||||||
|
valid for the device.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoReadDisk (
|
||||||
|
IN EFI_DISK_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN UINT64 Offset,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes BufferSize bytes from Buffer into Offset.
|
||||||
|
Writes may require a read modify write to support writes that are not
|
||||||
|
aligned on sector boundaries. There are three cases:
|
||||||
|
UnderRun - The first byte is not on a sector boundary or the write request
|
||||||
|
is less than a sector in length. Read modify write is required.
|
||||||
|
Aligned - A write of N contiguous sectors.
|
||||||
|
OverRun - The last byte is not on a sector boundary. Read modified write
|
||||||
|
required.
|
||||||
|
|
||||||
|
@param This Protocol instance pointer.
|
||||||
|
@param MediaId Id of the media, changes every time the media is replaced.
|
||||||
|
@param Offset The starting byte offset to read from
|
||||||
|
@param BufferSize Size of Buffer
|
||||||
|
@param Buffer Buffer containing read data
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was written correctly to the device.
|
||||||
|
@retval EFI_WRITE_PROTECTED The device can not be written to.
|
||||||
|
@retval EFI_DEVICE_ERROR The device reported an error while performing the write.
|
||||||
|
@retval EFI_NO_MEDIA There is no media in the device.
|
||||||
|
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
|
||||||
|
@retval EFI_INVALID_PARAMETER The write request contains device addresses that are not
|
||||||
|
valid for the device.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoWriteDisk (
|
||||||
|
IN EFI_DISK_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN UINT64 Offset,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Functions
|
||||||
|
//
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of a driver in the form of a
|
||||||
|
Unicode string. If the driver specified by This has a user readable name in
|
||||||
|
the language specified by Language, then a pointer to the driver name is
|
||||||
|
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||||
|
by This does not support the language specified by Language,
|
||||||
|
then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name that the caller is
|
||||||
|
requesting, and it must match one of the
|
||||||
|
languages specified in SupportedLanguages. The
|
||||||
|
number of languages supported by a driver is up
|
||||||
|
to the driver writer. Language is specified
|
||||||
|
in RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param DriverName[out] A pointer to the Unicode string to return.
|
||||||
|
This Unicode string is the name of the
|
||||||
|
driver specified by This in the language
|
||||||
|
specified by Language.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||||
|
This and the language specified by Language was
|
||||||
|
returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by a driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of the controller specified by
|
||||||
|
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||||
|
driver specified by This has a user readable name in the language specified by
|
||||||
|
Language, then a pointer to the controller name is returned in ControllerName,
|
||||||
|
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||||
|
managing the controller specified by ControllerHandle and ChildHandle,
|
||||||
|
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||||
|
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] The handle of a controller that the driver
|
||||||
|
specified by This is managing. This handle
|
||||||
|
specifies the controller whose name is to be
|
||||||
|
returned.
|
||||||
|
|
||||||
|
@param ChildHandle[in] The handle of the child controller to retrieve
|
||||||
|
the name of. This is an optional parameter that
|
||||||
|
may be NULL. It will be NULL for device
|
||||||
|
drivers. It will also be NULL for a bus drivers
|
||||||
|
that wish to retrieve the name of the bus
|
||||||
|
controller. It will not be NULL for a bus
|
||||||
|
driver that wishes to retrieve the name of a
|
||||||
|
child controller.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name that the caller is
|
||||||
|
requesting, and it must match one of the
|
||||||
|
languages specified in SupportedLanguages. The
|
||||||
|
number of languages supported by a driver is up
|
||||||
|
to the driver writer. Language is specified in
|
||||||
|
RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param ControllerName[out] A pointer to the Unicode string to return.
|
||||||
|
This Unicode string is the name of the
|
||||||
|
controller specified by ControllerHandle and
|
||||||
|
ChildHandle in the language specified by
|
||||||
|
Language from the point of view of the driver
|
||||||
|
specified by This.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the user readable name in
|
||||||
|
the language specified by Language for the
|
||||||
|
driver specified by This was returned in
|
||||||
|
DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DiskIoComponentNameGetControllerName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Driver Health Functions
|
||||||
|
//
|
||||||
|
/**
|
||||||
|
Retrieves the health status of a controller in the platform. This function can also
|
||||||
|
optionally return warning messages, error messages, and a set of HII Forms that may
|
||||||
|
be repair a controller that is not proper configured.
|
||||||
|
|
||||||
|
@param This A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle The handle of the controller to retrieve the health status
|
||||||
|
on. This is an optional parameter that may be NULL. If
|
||||||
|
this parameter is NULL, then the value of ChildHandle is
|
||||||
|
ignored, and the combined health status of all the devices
|
||||||
|
that the driver is managing is returned.
|
||||||
|
|
||||||
|
@param ChildHandle The handle of the child controller to retrieve the health
|
||||||
|
status on. This is an optional parameter that may be NULL.
|
||||||
|
This parameter is ignored of ControllerHandle is NULL. It
|
||||||
|
will be NULL for device drivers. It will also be NULL for
|
||||||
|
bus drivers when an attempt is made to collect the health
|
||||||
|
status of the bus controller. If will not be NULL when an
|
||||||
|
attempt is made to collect the health status for a child
|
||||||
|
controller produced by the driver.
|
||||||
|
|
||||||
|
@param HealthStatus A pointer to the health status that is returned by this
|
||||||
|
function. This is an optional parameter that may be NULL.
|
||||||
|
This parameter is ignored of ControllerHandle is NULL.
|
||||||
|
The health status for the controller specified by
|
||||||
|
ControllerHandle and ChildHandle is returned.
|
||||||
|
|
||||||
|
@param MessageList A pointer to an array of warning or error messages associated
|
||||||
|
with the controller specified by ControllerHandle and
|
||||||
|
ChildHandle. This is an optional parameter that may be NULL.
|
||||||
|
MessageList is allocated by this function with the EFI Boot
|
||||||
|
Service AllocatePool(), and it is the caller's responsibility
|
||||||
|
to free MessageList with the EFI Boot Service FreePool().
|
||||||
|
Each message is specified by tuple of an EFI_HII_HANDLE and
|
||||||
|
an EFI_STRING_ID. The array of messages is terminated by tuple
|
||||||
|
containing a EFI_HII_HANDLE with a value of NULL. The
|
||||||
|
EFI_HII_STRING_PROTOCOL.GetString() function can be used to
|
||||||
|
retrieve the warning or error message as a Null-terminated
|
||||||
|
Unicode string in a specific language. Messages may be
|
||||||
|
returned for any of the HealthStatus values except
|
||||||
|
EfiDriverHealthStatusReconnectRequired and
|
||||||
|
EfiDriverHealthStatusRebootRequired.
|
||||||
|
|
||||||
|
@param FormHiiHandle A pointer to the HII handle for an HII form associated with the
|
||||||
|
controller specified by ControllerHandle and ChildHandle.
|
||||||
|
This is an optional parameter that may be NULL. An HII form
|
||||||
|
is specified by a combination of an EFI_HII_HANDLE and an
|
||||||
|
EFI_GUID that identifies the Form Set GUID. The
|
||||||
|
EFI_FORM_BROWSER2_PROTOCOL.SendForm() function can be used
|
||||||
|
to display and allow the user to make configuration changes
|
||||||
|
to the HII Form. An HII form may only be returned with a
|
||||||
|
HealthStatus value of EfiDriverHealthStatusConfigurationRequired.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS ControllerHandle is NULL, and all the controllers
|
||||||
|
managed by this driver specified by This have a health
|
||||||
|
status of EfiDriverHealthStatusHealthy with no warning
|
||||||
|
messages to be returned. The ChildHandle, HealthStatus,
|
||||||
|
MessageList, and FormList parameters are ignored.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR ControllerHandle is NULL, and one or more of the
|
||||||
|
controllers managed by this driver specified by This
|
||||||
|
do not have a health status of EfiDriverHealthStatusHealthy.
|
||||||
|
The ChildHandle, HealthStatus, MessageList, and
|
||||||
|
FormList parameters are ignored.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR ControllerHandle is NULL, and one or more of the
|
||||||
|
controllers managed by this driver specified by This
|
||||||
|
have one or more warning and/or error messages.
|
||||||
|
The ChildHandle, HealthStatus, MessageList, and
|
||||||
|
FormList parameters are ignored.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS ControllerHandle is not NULL and the health status
|
||||||
|
of the controller specified by ControllerHandle and
|
||||||
|
ChildHandle was returned in HealthStatus. A list
|
||||||
|
of warning and error messages may be optionally
|
||||||
|
returned in MessageList, and a list of HII Forms
|
||||||
|
may be optionally returned in FormList.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED ControllerHandle is not NULL, and the controller
|
||||||
|
specified by ControllerHandle and ChildHandle is not
|
||||||
|
currently being managed by the driver specified by This.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER HealthStatus is NULL.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES MessageList is not NULL, and there are not enough
|
||||||
|
resource available to allocate memory for MessageList.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
DiskIoDriverHealthGetHealthStatus (
|
||||||
|
IN EFI_DRIVER_HEALTH_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle OPTIONAL,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
OUT EFI_DRIVER_HEALTH_STATUS *HealthStatus,
|
||||||
|
OUT EFI_DRIVER_HEALTH_HII_MESSAGE **MessageList OPTIONAL,
|
||||||
|
OUT EFI_HII_HANDLE *FormHiiHandle OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Performs a repair operation on a controller in the platform. This function can
|
||||||
|
optionally report repair progress information back to the platform.
|
||||||
|
|
||||||
|
@param This A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
|
||||||
|
@param ControllerHandle The handle of the controller to repair.
|
||||||
|
@param ChildHandle The handle of the child controller to repair. This is
|
||||||
|
an optional parameter that may be NULL. It will be NULL
|
||||||
|
for device drivers. It will also be NULL for bus
|
||||||
|
drivers when an attempt is made to repair a bus controller.
|
||||||
|
If will not be NULL when an attempt is made to repair a
|
||||||
|
child controller produced by the driver.
|
||||||
|
@param RepairNotify A notification function that may be used by a driver to
|
||||||
|
report the progress of the repair operation. This is
|
||||||
|
an optional parameter that may be NULL.
|
||||||
|
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS An attempt to repair the controller specified by
|
||||||
|
ControllerHandle and ChildHandle was performed.
|
||||||
|
The result of the repair operation can be
|
||||||
|
determined by calling GetHealthStatus().
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||||
|
managing the controller specified by ControllerHandle
|
||||||
|
and ChildHandle.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources to perform the
|
||||||
|
repair operation.
|
||||||
|
|
||||||
|
*/
|
||||||
|
EFI_STATUS
|
||||||
|
DiskIoDriverHealthRepair (
|
||||||
|
IN EFI_DRIVER_HEALTH_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN EFI_DRIVER_HEALTH_REPAIR_PROGRESS_NOTIFY RepairNotify OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the serial configuration form.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The serial configuration form is initialized.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
@retval Others Other errors as indicated.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
DiskIoConfigFormInit (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function allows a caller to extract the current configuration for one
|
||||||
|
or more named elements from the target driver.
|
||||||
|
|
||||||
|
@param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
@param Request A null-terminated Unicode string in
|
||||||
|
<ConfigRequest> format.
|
||||||
|
@param Progress On return, points to a character in the Request
|
||||||
|
string. Points to the string's null terminator if
|
||||||
|
request was successful. Points to the most recent
|
||||||
|
'&' before the first failing name/value pair (or
|
||||||
|
the beginning of the string if the failure is in
|
||||||
|
the first name/value pair) if the request was not
|
||||||
|
successful.
|
||||||
|
@param Results A null-terminated Unicode string in
|
||||||
|
<ConfigAltResp> format which has all values filled
|
||||||
|
in for the names in the Request string. String to
|
||||||
|
be allocated by the called function.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Results is filled with the requested values.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Not enough memory to store the results.
|
||||||
|
@retval EFI_INVALID_PARAMETER Request is NULL, illegal syntax, or unknown name.
|
||||||
|
@retval EFI_NOT_FOUND Routing data doesn't match any storage in this
|
||||||
|
driver.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DummyExtractConfig (
|
||||||
|
IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
|
||||||
|
IN CONST EFI_STRING Request,
|
||||||
|
OUT EFI_STRING *Progress,
|
||||||
|
OUT EFI_STRING *Results
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function processes the results of changes in configuration.
|
||||||
|
|
||||||
|
@param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
@param Configuration A null-terminated Unicode string in <ConfigResp>
|
||||||
|
format.
|
||||||
|
@param Progress A pointer to a string filled in with the offset of
|
||||||
|
the most recent '&' before the first failing
|
||||||
|
name/value pair (or the beginning of the string if
|
||||||
|
the failure is in the first name/value pair) or
|
||||||
|
the terminating NULL if all was successful.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Results is processed successfully.
|
||||||
|
@retval EFI_INVALID_PARAMETER Configuration is NULL.
|
||||||
|
@retval EFI_NOT_FOUND Routing data doesn't match any storage in this
|
||||||
|
driver.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DummyRouteConfig (
|
||||||
|
IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
|
||||||
|
IN CONST EFI_STRING Configuration,
|
||||||
|
OUT EFI_STRING *Progress
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function processes the results of changes in configuration.
|
||||||
|
|
||||||
|
@param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
@param Action Specifies the type of action taken by the browser.
|
||||||
|
@param QuestionId A unique value which is sent to the original
|
||||||
|
exporting driver so that it can identify the type
|
||||||
|
of data to expect.
|
||||||
|
@param Type The type of value for the question.
|
||||||
|
@param Value A pointer to the data being sent to the original
|
||||||
|
exporting driver.
|
||||||
|
@param ActionRequest On return, points to the action requested by the
|
||||||
|
callback function.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The callback successfully handled the action.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the
|
||||||
|
variable and its data.
|
||||||
|
@retval EFI_DEVICE_ERROR The variable could not be saved.
|
||||||
|
@retval EFI_UNSUPPORTED The specified Action is not supported by the
|
||||||
|
callback.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DummyDriverCallback (
|
||||||
|
IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
|
||||||
|
IN EFI_BROWSER_ACTION Action,
|
||||||
|
IN EFI_QUESTION_ID QuestionId,
|
||||||
|
IN UINT8 Type,
|
||||||
|
IN EFI_IFR_TYPE_VALUE *Value,
|
||||||
|
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the ISO639-2 and RFC4646 component name both for the Disk IO device
|
||||||
|
|
||||||
|
@param DiskIoDevice A pointer to the DISK_IO_PRIVATE_DATA instance.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
AddName (
|
||||||
|
IN DISK_IO_PRIVATE_DATA *DiskIoDevice
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
72
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.inf
Normal file
72
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.inf
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#/** @file
|
||||||
|
# This is a sample driver produces Driver Health Protocol.
|
||||||
|
#
|
||||||
|
# It demos how to use Driver Health Protocol. The protocol is produced optional and make
|
||||||
|
# the driver easier to be managed.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2009, Intel Corporation
|
||||||
|
# All rights reserved. This program and the accompanying materials
|
||||||
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
|
# http://opensource.org/licenses/bsd-license.php
|
||||||
|
#
|
||||||
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#**/
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Defines Section - statements that will be processed to create a Makefile.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = DriverHealthDxe
|
||||||
|
FILE_GUID = D1D9694C-90B4-46a7-8753-60413CEFE0A1
|
||||||
|
MODULE_TYPE = UEFI_DRIVER
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
ENTRY_POINT = InitializeDiskIo
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||||
|
#
|
||||||
|
# DRIVER_BINDING = gDiskIoDriverBinding
|
||||||
|
# COMPONENT_NAME = gDiskIoComponentName
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
ComponentName.c
|
||||||
|
DriverHealthDxe.h
|
||||||
|
DriverHealthDxe.c
|
||||||
|
DriverHealthStrings.uni
|
||||||
|
NVDataStruc.h
|
||||||
|
DriverHealthVfr.Vfr
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
UefiBootServicesTableLib
|
||||||
|
UefiRuntimeServicesTableLib
|
||||||
|
MemoryAllocationLib
|
||||||
|
BaseMemoryLib
|
||||||
|
BaseLib
|
||||||
|
UefiLib
|
||||||
|
UefiDriverEntryPoint
|
||||||
|
DebugLib
|
||||||
|
HiiLib
|
||||||
|
|
||||||
|
[Protocols]
|
||||||
|
gEfiDiskIoProtocolGuid ## PROTOCOL BY_START
|
||||||
|
gEfiBlockIoProtocolGuid ## PROTOCOL TO_START
|
||||||
|
gEfiDriverHealthProtocolGuid ## PROTOCOL PRODUCES
|
||||||
|
gEfiHiiConfigRoutingProtocolGuid ## PROTOCOL CONSUMES
|
||||||
|
gEfiHiiDatabaseProtocolGuid ## PROTOCOL CONSUMES
|
||||||
|
gEfiHiiConfigAccessProtocolGuid ## PROTOCOL CONSUMES
|
BIN
OptionRomPkg/DriverHealthDxe/DriverHealthStrings.uni
Normal file
BIN
OptionRomPkg/DriverHealthDxe/DriverHealthStrings.uni
Normal file
Binary file not shown.
60
OptionRomPkg/DriverHealthDxe/DriverHealthVfr.Vfr
Normal file
60
OptionRomPkg/DriverHealthDxe/DriverHealthVfr.Vfr
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
// *++
|
||||||
|
//
|
||||||
|
// Copyright (c) 2009, Intel Corporation
|
||||||
|
// All rights reserved. This program and the accompanying materials
|
||||||
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
// which accompanies this distribution. The full text of the license may be found at
|
||||||
|
// http://opensource.org/licenses/bsd-license.php
|
||||||
|
//
|
||||||
|
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
//
|
||||||
|
// Module Name:
|
||||||
|
//
|
||||||
|
// Vfr.vfr
|
||||||
|
//
|
||||||
|
// Abstract:
|
||||||
|
//
|
||||||
|
// Sample Setup formset
|
||||||
|
//
|
||||||
|
// Revision History:
|
||||||
|
//
|
||||||
|
// --*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "NVDataStruc.h"
|
||||||
|
#include <Guid/HiiPlatformSetupFormset.h>
|
||||||
|
|
||||||
|
formset
|
||||||
|
guid = EFI_CALLER_ID_GUID,
|
||||||
|
title = STRING_TOKEN(STR_FORM_SET_TITLE),
|
||||||
|
help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
|
||||||
|
classguid = EFI_HII_DRIVER_HEALTH_FORMSET_GUID,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Define a Buffer Storage (EFI_IFR_VARSTORE)
|
||||||
|
//
|
||||||
|
varstore DISK_IO_NV_DATA, // This is the data structure type
|
||||||
|
varid = 0x1234, // Optional VarStore ID
|
||||||
|
name = Config, // Define referenced name in vfr
|
||||||
|
guid = EFI_CALLER_ID_GUID; // GUID of this buffer storage
|
||||||
|
|
||||||
|
form formid = 1,
|
||||||
|
|
||||||
|
title = STRING_TOKEN(STR_TITLE);
|
||||||
|
//
|
||||||
|
// Define a numeric
|
||||||
|
//
|
||||||
|
numeric varid = Config.ConfigGood,
|
||||||
|
prompt = STRING_TOKEN(STR_CONFIG_CONTROLLER_LIST),
|
||||||
|
help = STRING_TOKEN(STR_CONFIG_CONTROLLER_LIST_HELP),
|
||||||
|
flags = DISPLAY_UINT_DEC,
|
||||||
|
key = 0x1236,
|
||||||
|
minimum = 0,
|
||||||
|
maximum = 0xff,
|
||||||
|
default = 0,
|
||||||
|
endnumeric;
|
||||||
|
endform;
|
||||||
|
|
||||||
|
endformset;
|
35
OptionRomPkg/DriverHealthDxe/NVDataStruc.h
Normal file
35
OptionRomPkg/DriverHealthDxe/NVDataStruc.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2009, Intel Corporation
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
NVDataStruc.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
NVData structure used by the sample driver
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _NVDATASTRUC_H
|
||||||
|
#define _NVDATASTRUC_H
|
||||||
|
|
||||||
|
#define EFI_CALLER_ID_GUID {0xD1D9694C, 0x90B4, 0x46a7, {0x87, 0x53, 0x60, 0x41, 0x3C, 0xEF, 0xE0, 0xA1}}
|
||||||
|
|
||||||
|
#pragma pack(1)
|
||||||
|
typedef struct {
|
||||||
|
UINT8 ConfigGood;
|
||||||
|
} DISK_IO_NV_DATA;
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
#endif
|
@ -56,6 +56,8 @@
|
|||||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||||
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
||||||
UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
|
UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
|
||||||
|
UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
|
||||||
|
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
@ -103,4 +105,5 @@
|
|||||||
OptionRomPkg/AtapiPassThruDxe/AtapiPassThruDxe.inf
|
OptionRomPkg/AtapiPassThruDxe/AtapiPassThruDxe.inf
|
||||||
OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
|
OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
|
||||||
OptionRomPkg/UndiRuntimeDxe/UndiRuntimeDxe.inf
|
OptionRomPkg/UndiRuntimeDxe/UndiRuntimeDxe.inf
|
||||||
|
OptionRomPkg/DriverHealthDxe/DriverHealthDxe.inf
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user