mirror of https://github.com/acidanthera/audk.git
Add DxeBootScriptLibNull in IntelFrameworkPkg.
Add IsaBusDxe in IntelFrameworkModulePkg. Add Pcat.h in "IntelFrameworkModulePkg/IndustryStandard" git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2948 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9262714181
commit
c3902377a9
|
@ -0,0 +1,56 @@
|
||||||
|
/**@file
|
||||||
|
Common header file shared by all source files.
|
||||||
|
|
||||||
|
This file includes package header files, library classes and protocol, PPI & GUID definitions.
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation.
|
||||||
|
All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef __COMMON_HEADER_H_
|
||||||
|
#define __COMMON_HEADER_H_
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// The package level header files this module uses
|
||||||
|
//
|
||||||
|
#include <PiDxe.h>
|
||||||
|
#include <FrameworkDxe.h>
|
||||||
|
//
|
||||||
|
// The protocols, PPI and GUID defintions for this module
|
||||||
|
//
|
||||||
|
#include <Protocol/PciIo.h>
|
||||||
|
#include <Protocol/ComponentName.h>
|
||||||
|
#include <Protocol/IsaIo.h>
|
||||||
|
#include <Protocol/DevicePath.h>
|
||||||
|
#include <Protocol/IsaAcpi.h>
|
||||||
|
#include <Protocol/DriverBinding.h>
|
||||||
|
#include <Protocol/GenericMemoryTest.h>
|
||||||
|
#include <Guid/StatusCodeDataTypeId.h>
|
||||||
|
//
|
||||||
|
// The Library classes this module consumes
|
||||||
|
//
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
|
#include <Library/UefiLib.h>
|
||||||
|
#include <Library/DevicePathLib.h>
|
||||||
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/MemoryAllocationLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/ReportStatusCodeLib.h>
|
||||||
|
#include <Library/BootScriptLib.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
//
|
||||||
|
// Driver Binding Externs
|
||||||
|
//
|
||||||
|
extern EFI_DRIVER_BINDING_PROTOCOL gIsaBusControllerDriver;
|
||||||
|
extern EFI_COMPONENT_NAME_PROTOCOL gIsaBusComponentName;
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,141 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation. All rights reserved. <BR>
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
ComponentName.c
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#include "ComponentName.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Protocol
|
||||||
|
//
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL gIsaBusComponentName = {
|
||||||
|
IsaBusComponentNameGetDriverName,
|
||||||
|
IsaBusComponentNameGetControllerName,
|
||||||
|
"eng"
|
||||||
|
};
|
||||||
|
|
||||||
|
STATIC EFI_UNICODE_STRING_TABLE mIsaBusDriverNameTable[] = {
|
||||||
|
{
|
||||||
|
"eng",
|
||||||
|
L"ISA Bus Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
Retrieves a Unicode string that is the user readable name of the EFI Driver.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
Language - A pointer to a three character ISO 639-2 language identifier.
|
||||||
|
This is the language of the driver name that 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.
|
||||||
|
DriverName - 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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
EFI_SUCCESS - The Unicode string for the Driver specified by This
|
||||||
|
and the language specified by Language was returned
|
||||||
|
in DriverName.
|
||||||
|
EFI_INVALID_PARAMETER - Language is NULL.
|
||||||
|
EFI_INVALID_PARAMETER - DriverName is NULL.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return LookupUnicodeString (
|
||||||
|
Language,
|
||||||
|
gIsaBusComponentName.SupportedLanguages,
|
||||||
|
mIsaBusDriverNameTable,
|
||||||
|
DriverName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusComponentNameGetControllerName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by an EFI Driver.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
ControllerHandle - The handle of a controller that the driver specified by
|
||||||
|
This is managing. This handle specifies the controller
|
||||||
|
whose name is to be returned.
|
||||||
|
ChildHandle - 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.
|
||||||
|
Language - A pointer to a three character ISO 639-2 language
|
||||||
|
identifier. This is the language of the controller name
|
||||||
|
that 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.
|
||||||
|
ControllerName - 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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
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.
|
||||||
|
EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
EFI_INVALID_PARAMETER - Language is NULL.
|
||||||
|
EFI_INVALID_PARAMETER - ControllerName is NULL.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
EFI_UNSUPPORTED - The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation. All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
ComponentName.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _EFI_ISA_BUS_COMPONENT_NAME_H
|
||||||
|
#define _EFI_ISA_BUS_COMPONENT_NAME_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include common header file for this module.
|
||||||
|
//
|
||||||
|
#include "CommonHeader.h"
|
||||||
|
|
||||||
|
extern EFI_COMPONENT_NAME_PROTOCOL gIsaBusComponentName;
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Functions
|
||||||
|
//
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
GC_TODO: Add function description
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - GC_TODO: add argument description
|
||||||
|
Language - GC_TODO: add argument description
|
||||||
|
DriverName - GC_TODO: add argument description
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
GC_TODO: add return values
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusComponentNameGetControllerName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
GC_TODO: Add function description
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - GC_TODO: add argument description
|
||||||
|
ControllerHandle - GC_TODO: add argument description
|
||||||
|
ChildHandle - GC_TODO: add argument description
|
||||||
|
Language - GC_TODO: add argument description
|
||||||
|
ControllerName - GC_TODO: add argument description
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
GC_TODO: add return values
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,58 @@
|
||||||
|
/**@file
|
||||||
|
Entry Point Source file.
|
||||||
|
|
||||||
|
This file contains the user entry point
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation.
|
||||||
|
All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include common header file for this module.
|
||||||
|
//
|
||||||
|
#include "InternalIsaBus.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
The user Entry Point for module IsaBus. The user code starts with this function.
|
||||||
|
|
||||||
|
@param[in] ImageHandle The firmware allocated handle for the EFI image.
|
||||||
|
@param[in] SystemTable A pointer to the EFI System Table.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The entry point is executed successfully.
|
||||||
|
@retval other Some error occurs when executing this entry point.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
InitializeIsaBus(
|
||||||
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install driver model protocol(s).
|
||||||
|
//
|
||||||
|
Status = EfiLibInstallAllDriverProtocols (
|
||||||
|
ImageHandle,
|
||||||
|
SystemTable,
|
||||||
|
&gIsaBusControllerDriver,
|
||||||
|
ImageHandle,
|
||||||
|
&gIsaBusComponentName,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
|
@ -0,0 +1,253 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
IsaBus.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
The header file for ISA bus driver
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _EFI_ISA_BUS_H
|
||||||
|
#define _EFI_ISA_BUS_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include common header file for this module.
|
||||||
|
//
|
||||||
|
#include "CommonHeader.h"
|
||||||
|
|
||||||
|
#include "ComponentName.h"
|
||||||
|
|
||||||
|
extern EFI_ISA_IO_PROTOCOL IsaIoInterface;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
IsaAccessTypeUnknown,
|
||||||
|
IsaAccessTypeIo,
|
||||||
|
IsaAccessTypeMem,
|
||||||
|
IsaAccessTypeMaxType
|
||||||
|
} ISA_ACCESS_TYPE;
|
||||||
|
|
||||||
|
//
|
||||||
|
// 16 MB Memory Range
|
||||||
|
//
|
||||||
|
#define ISA_MAX_MEMORY_ADDRESS 0x1000000
|
||||||
|
//
|
||||||
|
// 64K I/O Range
|
||||||
|
//
|
||||||
|
#define ISA_MAX_IO_ADDRESS 0x10000
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Address;
|
||||||
|
UINT8 Page;
|
||||||
|
UINT8 Count;
|
||||||
|
} EFI_ISA_DMA_REGISTERS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISA I/O Device Structure
|
||||||
|
//
|
||||||
|
#define ISA_IO_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('i', 's', 'a', 'i')
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT32 Signature;
|
||||||
|
EFI_HANDLE Handle;
|
||||||
|
EFI_ISA_IO_PROTOCOL IsaIo;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
|
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||||
|
} ISA_IO_DEVICE;
|
||||||
|
|
||||||
|
#define ISA_IO_DEVICE_FROM_ISA_IO_THIS(a) CR (a, ISA_IO_DEVICE, IsaIo, ISA_IO_DEVICE_SIGNATURE)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Global Variables
|
||||||
|
//
|
||||||
|
extern EFI_DRIVER_BINDING_PROTOCOL gIsaBusControllerDriver;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Mapping structure for performing ISA DMA to a buffer above 16 MB
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
EFI_ISA_IO_PROTOCOL_OPERATION Operation;
|
||||||
|
UINTN NumberOfBytes;
|
||||||
|
UINTN NumberOfPages;
|
||||||
|
EFI_PHYSICAL_ADDRESS HostAddress;
|
||||||
|
EFI_PHYSICAL_ADDRESS MappedHostAddress;
|
||||||
|
} ISA_MAP_INFO;
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Driver Binding Protocol Interface Functions
|
||||||
|
//
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusControllerDriverSupported (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
This function checks to see if a controller can be managed by the ISA Bus
|
||||||
|
Driver. This is done by checking to see if the controller supports the
|
||||||
|
EFI_PCI_IO_PROTOCOL protocol, and then looking at the PCI Configuration
|
||||||
|
Header to see if the device is a PCI to ISA bridge. The class code of
|
||||||
|
PCI to ISA bridge: Base class 06h, Sub class 01h Interface 00h
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - The handle of the device to check.
|
||||||
|
RemainingDevicePath - A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The device is supported by this driver.
|
||||||
|
EFI_UNSUPPORTED - The device is not supported by this driver.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusControllerDriverStart (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
This function tells the ISA Bus Driver to start managing a PCI to ISA
|
||||||
|
Bridge controller.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - A handle to the device being started.
|
||||||
|
RemainingDevicePath - A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The device was started.
|
||||||
|
EFI_UNSUPPORTED - The device is not supported.
|
||||||
|
EFI_DEVICE_ERROR - The device could not be started due to a device error.
|
||||||
|
EFI_ALREADY_STARTED - The device has already been started.
|
||||||
|
EFI_INVALID_PARAMETER - One of the parameters has an invalid value.
|
||||||
|
EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
|
||||||
|
resources.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusControllerDriverStop (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN UINTN NumberOfChildren,
|
||||||
|
IN EFI_HANDLE * ChildHandleBuffer OPTIONAL
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
This function tells the ISA Bus Driver to stop managing a PCI to ISA
|
||||||
|
Bridge controller.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - A handle to the device being stopped.
|
||||||
|
NumberOfChindren - The number of child device handles in ChildHandleBuffer.
|
||||||
|
ChildHandleBuffer - An array of child handles to be freed.
|
||||||
|
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The device was stopped.
|
||||||
|
EFI_DEVICE_ERROR - The device could not be stopped due to a device error.
|
||||||
|
EFI_NOT_STARTED - The device has not been started.
|
||||||
|
EFI_INVALID_PARAMETER - One of the parameters has an invalid value.
|
||||||
|
EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
|
||||||
|
resources.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Function Prototypes
|
||||||
|
//
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
IsaCreateDevice (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||||
|
IN EFI_ISA_ACPI_RESOURCE_LIST *IsaDeviceResourceList,
|
||||||
|
OUT EFI_DEVICE_PATH_PROTOCOL **ChildDevicePath
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Create ISA device found by IsaPnpProtocol
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - The handle of ISA bus controller(PCI to ISA bridge)
|
||||||
|
PciIo - The Pointer to the PCI protocol
|
||||||
|
ParentDevicePath - Device path of the ISA bus controller
|
||||||
|
IsaDeviceResourceList - The resource list of the ISA device
|
||||||
|
ChildDevicePath - The pointer to the child device.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - Create the child device.
|
||||||
|
EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
|
||||||
|
resources.
|
||||||
|
EFI_DEVICE_ERROR - Can not create child device.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
InitializeIsaIoInstance (
|
||||||
|
IN ISA_IO_DEVICE *IsaIoDevice,
|
||||||
|
IN EFI_ISA_ACPI_RESOURCE_LIST *IsaDevice
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Initializes an ISA I/O Instance
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
IsaIoDevice - The iso device to be initialized.
|
||||||
|
IsaDevice - The resource list.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - Initial success.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,163 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
IsaIo.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
The header file for EFI_ISA_IO protocol implementation.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _EFI_ISA_IO_LOCAL_H
|
||||||
|
#define _EFI_ISA_IO_LOCAL_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include common header file for this module.
|
||||||
|
//
|
||||||
|
#include "CommonHeader.h"
|
||||||
|
|
||||||
|
#include "InternalIsaBus.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISA I/O Support Function Prototypes
|
||||||
|
//
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
IsaIoVerifyAccess (
|
||||||
|
IN ISA_IO_DEVICE *IsaIoDevice,
|
||||||
|
IN ISA_ACCESS_TYPE Type,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN OUT UINT32 *Offset
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoIoRead (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoIoWrite (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoMap (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_OPERATION Operation,
|
||||||
|
IN UINT8 ChannelNumber OPTIONAL,
|
||||||
|
IN UINT32 ChannelAttributes,
|
||||||
|
IN VOID *HostAddress,
|
||||||
|
IN OUT UINTN *NumberOfBytes,
|
||||||
|
OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
|
||||||
|
OUT VOID **Mapping
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoUnmap (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN VOID *Mapping
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoFlush (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
ReportErrorStatusCode (
|
||||||
|
EFI_STATUS_CODE_VALUE code
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
WriteDmaPort (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 AddrOffset,
|
||||||
|
IN UINT32 PageOffset,
|
||||||
|
IN UINT32 CountOffset,
|
||||||
|
IN UINT32 BaseAddress,
|
||||||
|
IN UINT16 Count
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
WritePort (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINT8 Value
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoMemRead (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoMemWrite (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoCopyMem (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 DestOffset,
|
||||||
|
IN UINT32 SrcOffset,
|
||||||
|
IN UINTN Count
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoAllocateBuffer (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ALLOCATE_TYPE Type,
|
||||||
|
IN EFI_MEMORY_TYPE MemoryType,
|
||||||
|
IN UINTN Pages,
|
||||||
|
OUT VOID **HostAddress,
|
||||||
|
IN UINT64 Attributes
|
||||||
|
);
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoFreeBuffer (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINTN Pages,
|
||||||
|
IN VOID *HostAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,653 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved. <BR>
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
IsaBus.c
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
Discovers all the ISA Controllers and their resources by using the ISA PnP
|
||||||
|
Protocol, produces an instance of the ISA I/O Protocol for every ISA
|
||||||
|
Controller found, loads and initializes all ISA Device Drivers, matches ISA
|
||||||
|
Device Drivers with their respective ISA Controllers in a deterministic
|
||||||
|
manner, and informs a ISA Device Driver when it is to start managing an ISA
|
||||||
|
Controller.
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#include "InternalIsaBus.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISA Bus Driver Global Variables
|
||||||
|
//
|
||||||
|
EFI_DRIVER_BINDING_PROTOCOL gIsaBusControllerDriver = {
|
||||||
|
IsaBusControllerDriverSupported,
|
||||||
|
IsaBusControllerDriverStart,
|
||||||
|
IsaBusControllerDriverStop,
|
||||||
|
0xa,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusControllerDriverSupported (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
This function checks to see if a controller can be managed by the ISA Bus
|
||||||
|
Driver. This is done by checking to see if the controller supports the
|
||||||
|
EFI_PCI_IO_PROTOCOL protocol, and then looking at the PCI Configuration
|
||||||
|
Header to see if the device is a PCI to ISA bridge. The class code of
|
||||||
|
PCI to ISA bridge: Base class 06h, Sub class 01h Interface 00h
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - The handle of the device to check.
|
||||||
|
RemainingDevicePath - A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The device is supported by this driver.
|
||||||
|
EFI_UNSUPPORTED - The device is not supported by this driver.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_ISA_ACPI_PROTOCOL *IsaAcpi;
|
||||||
|
|
||||||
|
//
|
||||||
|
// If RemainingDevicePath is not NULL, it should verify that the first device
|
||||||
|
// path node in RemainingDevicePath is an ACPI Device path node
|
||||||
|
//
|
||||||
|
if (RemainingDevicePath != NULL) {
|
||||||
|
if (RemainingDevicePath->Type != ACPI_DEVICE_PATH) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
} else if (RemainingDevicePath->SubType == ACPI_DP) {
|
||||||
|
if (DevicePathNodeLength (RemainingDevicePath) != sizeof (ACPI_HID_DEVICE_PATH)) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
} else if (RemainingDevicePath->SubType == ACPI_EXTENDED_DP) {
|
||||||
|
if (DevicePathNodeLength (RemainingDevicePath) != sizeof (ACPI_EXTENDED_HID_DEVICE_PATH)) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Test the existence of DEVICE_PATH protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
NULL,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_TEST_PROTOCOL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Get the Isa Acpi protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiIsaAcpiProtocolGuid,
|
||||||
|
(VOID **) &IsaAcpi,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||||
|
);
|
||||||
|
if (Status == EFI_ALREADY_STARTED) {
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiIsaAcpiProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusControllerDriverStart (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
This function tells the ISA Bus Driver to start managing a PCI to ISA
|
||||||
|
Bridge controller.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - A handle to the device being started.
|
||||||
|
RemainingDevicePath - A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The device was started.
|
||||||
|
EFI_UNSUPPORTED - The device is not supported.
|
||||||
|
EFI_DEVICE_ERROR - The device could not be started due to a device error.
|
||||||
|
EFI_ALREADY_STARTED - The device has already been started.
|
||||||
|
EFI_INVALID_PARAMETER - One of the parameters has an invalid value.
|
||||||
|
EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
|
||||||
|
resources.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||||
|
EFI_ISA_ACPI_PROTOCOL *IsaAcpi;
|
||||||
|
EFI_ISA_ACPI_DEVICE_ID *IsaDevice;
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST *ResourceList;
|
||||||
|
EFI_GENERIC_MEMORY_TEST_PROTOCOL *GenMemoryTest;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Local variables declaration for StatusCode reporting
|
||||||
|
//
|
||||||
|
EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA AllocFailExtendedData;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *DevicePathData;
|
||||||
|
|
||||||
|
BootScriptSaveInformationAsciiString (
|
||||||
|
EFI_ACPI_S3_RESUME_SCRIPT_TABLE,
|
||||||
|
"IsaBusBindingStartBegin"
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize status code structure
|
||||||
|
//
|
||||||
|
AllocFailExtendedData.DataHeader.HeaderSize = sizeof (EFI_STATUS_CODE_DATA);
|
||||||
|
AllocFailExtendedData.DataHeader.Size = sizeof (EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA) - sizeof (EFI_STATUS_CODE_DATA);
|
||||||
|
CopyMem (
|
||||||
|
&AllocFailExtendedData.DataHeader.Type,
|
||||||
|
&gEfiStatusCodeSpecificDataGuid,
|
||||||
|
sizeof (EFI_GUID)
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Open Device Path Protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
(VOID **) &ParentDevicePath,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Open Pci IO Protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiPciIoProtocolGuid,
|
||||||
|
(VOID **) &PciIo,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
//
|
||||||
|
// Close opened protocol
|
||||||
|
//
|
||||||
|
gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Open ISA Acpi Protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiIsaAcpiProtocolGuid,
|
||||||
|
(VOID **) &IsaAcpi,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) {
|
||||||
|
//
|
||||||
|
// Close opened protocol
|
||||||
|
//
|
||||||
|
gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiPciIoProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// The IsaBus driver will use memory below 16M, which is not tested yet,
|
||||||
|
// so call CompatibleRangeTest to test them. Since memory below 1M should
|
||||||
|
// be reserved to CSM, and 15M~16M might be reserved for Isa hole, test 1M
|
||||||
|
// ~15M here
|
||||||
|
//
|
||||||
|
Status = gBS->LocateProtocol (
|
||||||
|
&gEfiGenericMemTestProtocolGuid,
|
||||||
|
NULL,
|
||||||
|
(VOID **) &GenMemoryTest
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
Status = GenMemoryTest->CompatibleRangeTest (
|
||||||
|
GenMemoryTest,
|
||||||
|
0x100000,
|
||||||
|
0xE00000
|
||||||
|
);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Report Status Code here since we will initialize the host controller
|
||||||
|
//
|
||||||
|
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
||||||
|
EFI_PROGRESS_CODE,
|
||||||
|
(EFI_IO_BUS_LPC | EFI_IOB_PC_INIT),
|
||||||
|
ParentDevicePath
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// first init ISA interface
|
||||||
|
//
|
||||||
|
IsaAcpi->InterfaceInit (IsaAcpi);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Report Status Code here since we will enable the host controller
|
||||||
|
//
|
||||||
|
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
||||||
|
EFI_PROGRESS_CODE,
|
||||||
|
(EFI_IO_BUS_LPC | EFI_IOB_PC_ENABLE),
|
||||||
|
ParentDevicePath
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Create each ISA device handle in this ISA bus
|
||||||
|
//
|
||||||
|
IsaDevice = NULL;
|
||||||
|
do {
|
||||||
|
Status = IsaAcpi->DeviceEnumerate (IsaAcpi, &IsaDevice);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Get current resource of this ISA device
|
||||||
|
//
|
||||||
|
ResourceList = NULL;
|
||||||
|
Status = IsaAcpi->GetCurResource (IsaAcpi, IsaDevice, &ResourceList);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Create handle for this ISA device
|
||||||
|
//
|
||||||
|
Status = IsaCreateDevice (
|
||||||
|
This,
|
||||||
|
Controller,
|
||||||
|
PciIo,
|
||||||
|
ParentDevicePath,
|
||||||
|
ResourceList,
|
||||||
|
&DevicePathData
|
||||||
|
//&AllocFailExtendedData.DevicePath
|
||||||
|
);
|
||||||
|
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Initialize ISA device
|
||||||
|
//
|
||||||
|
IsaAcpi->InitDevice (IsaAcpi, IsaDevice);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set resources for this ISA device
|
||||||
|
//
|
||||||
|
Status = IsaAcpi->SetResource (IsaAcpi, IsaDevice, ResourceList);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Report Status Code here when failed to resource conflicts
|
||||||
|
//
|
||||||
|
if (EFI_ERROR (Status) && (Status != EFI_UNSUPPORTED)) {
|
||||||
|
//
|
||||||
|
// It's hard to tell which resource conflicts
|
||||||
|
//
|
||||||
|
AllocFailExtendedData.Bar = 0;
|
||||||
|
AllocFailExtendedData.ReqRes = NULL;
|
||||||
|
AllocFailExtendedData.AllocRes = NULL;
|
||||||
|
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
|
||||||
|
EFI_ERROR_CODE,
|
||||||
|
(EFI_IO_BUS_LPC | EFI_IOB_EC_RESOURCE_CONFLICT),
|
||||||
|
DevicePathData
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Set power for this ISA device
|
||||||
|
//
|
||||||
|
IsaAcpi->SetPower (IsaAcpi, IsaDevice, TRUE);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable this ISA device
|
||||||
|
//
|
||||||
|
IsaAcpi->EnableDevice (IsaAcpi, IsaDevice, TRUE);
|
||||||
|
|
||||||
|
} while (TRUE);
|
||||||
|
|
||||||
|
BootScriptSaveInformationAsciiString (
|
||||||
|
EFI_ACPI_S3_RESUME_SCRIPT_TABLE,
|
||||||
|
"IsaBusBindingStartEnd"
|
||||||
|
);
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaBusControllerDriverStop (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN UINTN NumberOfChildren,
|
||||||
|
IN EFI_HANDLE * ChildHandleBuffer OPTIONAL
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
This function tells the ISA Bus Driver to stop managing a PCI to ISA
|
||||||
|
Bridge controller.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - A handle to the device being stopped.
|
||||||
|
NumberOfChindren - The number of child device handles in ChildHandleBuffer.
|
||||||
|
ChildHandleBuffer - An array of child handles to be freed.
|
||||||
|
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - The device was stopped.
|
||||||
|
EFI_DEVICE_ERROR - The device could not be stopped due to a device error.
|
||||||
|
EFI_NOT_STARTED - The device has not been started.
|
||||||
|
EFI_INVALID_PARAMETER - One of the parameters has an invalid value.
|
||||||
|
EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
|
||||||
|
resources.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
UINTN Index;
|
||||||
|
BOOLEAN AllChildrenStopped;
|
||||||
|
ISA_IO_DEVICE *IsaIoDevice;
|
||||||
|
EFI_ISA_IO_PROTOCOL *IsaIo;
|
||||||
|
|
||||||
|
if (NumberOfChildren == 0) {
|
||||||
|
//
|
||||||
|
// Close the bus driver
|
||||||
|
//
|
||||||
|
Status = gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiPciIoProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiIsaAcpiProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Complete all outstanding transactions to Controller.
|
||||||
|
// Don't allow any new transaction to Controller to be started.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Stop all the children
|
||||||
|
// Find all the ISA devices that were discovered on this PCI to ISA Bridge
|
||||||
|
// with the Start() function.
|
||||||
|
//
|
||||||
|
AllChildrenStopped = TRUE;
|
||||||
|
|
||||||
|
for (Index = 0; Index < NumberOfChildren; Index++) {
|
||||||
|
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
ChildHandleBuffer[Index],
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
(VOID **) &IsaIo,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
|
||||||
|
IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (IsaIo);
|
||||||
|
|
||||||
|
Status = gBS->UninstallMultipleProtocolInterfaces (
|
||||||
|
ChildHandleBuffer[Index],
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
IsaIoDevice->DevicePath,
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
&IsaIoDevice->IsaIo,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
//
|
||||||
|
// Close the child handle
|
||||||
|
//
|
||||||
|
Status = gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiPciIoProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
ChildHandleBuffer[Index]
|
||||||
|
);
|
||||||
|
|
||||||
|
gBS->FreePool (IsaIoDevice->DevicePath);
|
||||||
|
gBS->FreePool (IsaIoDevice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
AllChildrenStopped = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!AllChildrenStopped) {
|
||||||
|
return EFI_DEVICE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Internal Function
|
||||||
|
//
|
||||||
|
EFI_STATUS
|
||||||
|
IsaCreateDevice (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||||
|
IN EFI_ISA_ACPI_RESOURCE_LIST *IsaDeviceResourceList,
|
||||||
|
OUT EFI_DEVICE_PATH_PROTOCOL **ChildDevicePath
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Create ISA device found by IsaPnpProtocol
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
This - The EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
Controller - The handle of ISA bus controller(PCI to ISA bridge)
|
||||||
|
PciIo - The Pointer to the PCI protocol
|
||||||
|
ParentDevicePath - Device path of the ISA bus controller
|
||||||
|
IsaDeviceResourceList - The resource list of the ISA device
|
||||||
|
ChildDevicePath - The pointer to the child device.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_SUCCESS - Create the child device.
|
||||||
|
EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
|
||||||
|
resources.
|
||||||
|
EFI_DEVICE_ERROR - Can not create child device.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
ISA_IO_DEVICE *IsaIoDevice;
|
||||||
|
EFI_DEV_PATH Node;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize the PCI_IO_DEVICE structure
|
||||||
|
//
|
||||||
|
IsaIoDevice = AllocateZeroPool (sizeof (ISA_IO_DEVICE));
|
||||||
|
if (IsaIoDevice == NULL) {
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
|
IsaIoDevice->Signature = ISA_IO_DEVICE_SIGNATURE;
|
||||||
|
IsaIoDevice->Handle = NULL;
|
||||||
|
IsaIoDevice->PciIo = PciIo;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize the ISA I/O instance structure
|
||||||
|
//
|
||||||
|
Status = InitializeIsaIoInstance (IsaIoDevice, IsaDeviceResourceList);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
gBS->FreePool (IsaIoDevice);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Build the child device path
|
||||||
|
//
|
||||||
|
Node.DevPath.Type = ACPI_DEVICE_PATH;
|
||||||
|
Node.DevPath.SubType = ACPI_DP;
|
||||||
|
SetDevicePathNodeLength (&Node.DevPath, sizeof (ACPI_HID_DEVICE_PATH));
|
||||||
|
Node.Acpi.HID = IsaDeviceResourceList->Device.HID;
|
||||||
|
Node.Acpi.UID = IsaDeviceResourceList->Device.UID;
|
||||||
|
|
||||||
|
IsaIoDevice->DevicePath = AppendDevicePathNode (
|
||||||
|
ParentDevicePath,
|
||||||
|
&Node.DevPath
|
||||||
|
);
|
||||||
|
|
||||||
|
if (IsaIoDevice->DevicePath == NULL) {
|
||||||
|
Status = EFI_DEVICE_ERROR;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ChildDevicePath = IsaIoDevice->DevicePath;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Create a child handle and attach the DevicePath,
|
||||||
|
// PCI I/O, and Controller State
|
||||||
|
//
|
||||||
|
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||||
|
&IsaIoDevice->Handle,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
IsaIoDevice->DevicePath,
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
&IsaIoDevice->IsaIo,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiPciIoProtocolGuid,
|
||||||
|
(VOID **) &PciIo,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
IsaIoDevice->Handle,
|
||||||
|
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
gBS->UninstallMultipleProtocolInterfaces (
|
||||||
|
IsaIoDevice->Handle,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
IsaIoDevice->DevicePath,
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
&IsaIoDevice->IsaIo,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Done:
|
||||||
|
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
if (IsaIoDevice->DevicePath != NULL) {
|
||||||
|
gBS->FreePool (IsaIoDevice->DevicePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
gBS->FreePool (IsaIoDevice);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
#/** @file
|
||||||
|
# Component description file for IsaBus module.
|
||||||
|
#
|
||||||
|
# Discovers all the ISA Controllers and their resources by using the ISA PnP
|
||||||
|
# Protocol, produces an instance of the ISA I/O Protocol for every ISA
|
||||||
|
# Controller found, loads and initializes all ISA Device Drivers, matches ISA
|
||||||
|
# Device Drivers with their respective ISA Controllers in a deterministic
|
||||||
|
# manner, and informs a ISA Device Driver when it is to start managing an ISA
|
||||||
|
# Controller.
|
||||||
|
# Copyright (c) 2006 - 2007, Intel Corporation.
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
# This software and associated documentation (if any) is furnished
|
||||||
|
# under a license and may only be used or copied in accordance
|
||||||
|
# with the terms of the license. Except as permitted by such
|
||||||
|
# license, no part of this software or documentation may be
|
||||||
|
# reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
# form or by any means without the express written consent of
|
||||||
|
# Intel Corporation.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#**/
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Defines Section - statements that will be processed to create a Makefile.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = IsaBus
|
||||||
|
FILE_GUID = 240612B5-A063-11d4-9A3A-0090273FC14D
|
||||||
|
MODULE_TYPE = DXE_DRIVER
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
EDK_RELEASE_VERSION = 0x00020000
|
||||||
|
EFI_SPECIFICATION_VERSION = 0x00020000
|
||||||
|
|
||||||
|
ENTRY_POINT = InitializeIsaBus
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||||
|
#
|
||||||
|
# DRIVER_BINDING = gIsaBusControllerDriver
|
||||||
|
# COMPONENT_NAME = gIsaBusComponentName
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Sources Section - list of files that are required for the build to succeed.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
ComponentName.c
|
||||||
|
IsaIo.c
|
||||||
|
IsaBus.c
|
||||||
|
IsaIo.h
|
||||||
|
IsaBus.h
|
||||||
|
IsaAcpi.h
|
||||||
|
ComponentName.h
|
||||||
|
CommonHeader.h
|
||||||
|
EntryPoint.c
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Includes Section - list of Include locations that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Includes]
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Package Dependency Section - list of Package files that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Library Class Section - list of Library Classes that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
PcdLib
|
||||||
|
BootScriptLib
|
||||||
|
ReportStatusCodeLib
|
||||||
|
UefiBootServicesTableLib
|
||||||
|
MemoryAllocationLib
|
||||||
|
BaseMemoryLib
|
||||||
|
DevicePathLib
|
||||||
|
UefiLib
|
||||||
|
UefiDriverEntryPoint
|
||||||
|
DebugLib
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Guid C Name Section - list of Guids that this module uses or produces.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Guids]
|
||||||
|
gEfiStatusCodeSpecificDataGuid # ALWAYS_CONSUMED
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Protocol C Name Section - list of Protocol and Protocol Notify C Names
|
||||||
|
# that this module uses or produces.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Protocols]
|
||||||
|
gEfiIsaIoProtocolGuid # PROTOCOL BY_START
|
||||||
|
gEfiIsaAcpiProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiPciIoProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiDevicePathProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiGenericMemTestProtocolGuid # PROTOCOL TO_START
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Pcd FEATURE_FLAG - list of PCDs that this module is coded for.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[PcdsFeatureFlag.common]
|
||||||
|
PcdIsaBusOnlySupportSlaveDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid
|
||||||
|
PcdIsaBusSupportDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid
|
||||||
|
PcdIsaBusSupportIsaMemory|gEfiIntelFrameworkModulePkgTokenSpaceGuid
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ModuleSurfaceArea xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0 http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd" xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<MsaHeader>
|
||||||
|
<ModuleName>IsaBus</ModuleName>
|
||||||
|
<ModuleType>DXE_DRIVER</ModuleType>
|
||||||
|
<GuidValue>240612B5-A063-11d4-9A3A-0090273FC14D</GuidValue>
|
||||||
|
<Version>1.0</Version>
|
||||||
|
<Abstract>Component description file for IsaBus module.</Abstract>
|
||||||
|
<Description>Discovers all the ISA Controllers and their resources by using the ISA PnP
|
||||||
|
Protocol, produces an instance of the ISA I/O Protocol for every ISA
|
||||||
|
Controller found, loads and initializes all ISA Device Drivers, matches ISA
|
||||||
|
Device Drivers with their respective ISA Controllers in a deterministic
|
||||||
|
manner, and informs a ISA Device Driver when it is to start managing an ISA
|
||||||
|
Controller.</Description>
|
||||||
|
<Copyright>Copyright (c) 2006 - 2007, Intel Corporation.</Copyright>
|
||||||
|
<License>All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.</License>
|
||||||
|
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
||||||
|
</MsaHeader>
|
||||||
|
<ModuleDefinitions>
|
||||||
|
<SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
|
||||||
|
<BinaryModule>false</BinaryModule>
|
||||||
|
<OutputFileBasename>IsaBus</OutputFileBasename>
|
||||||
|
</ModuleDefinitions>
|
||||||
|
<LibraryClassDefinitions>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>DebugLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiDriverModelLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiDriverEntryPoint</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>DevicePathLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>BaseMemoryLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>MemoryAllocationLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>UefiBootServicesTableLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>ReportStatusCodeLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>BootScriptLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||||
|
<Keyword>PcdLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
</LibraryClassDefinitions>
|
||||||
|
<SourceFiles>
|
||||||
|
<Filename>ComponentName.h</Filename>
|
||||||
|
<Filename>IsaAcpi.h</Filename>
|
||||||
|
<Filename>IsaBus.h</Filename>
|
||||||
|
<Filename>IsaIo.h</Filename>
|
||||||
|
<Filename>IsaBus.c</Filename>
|
||||||
|
<Filename>IsaIo.c</Filename>
|
||||||
|
<Filename>ComponentName.c</Filename>
|
||||||
|
</SourceFiles>
|
||||||
|
<PackageDependencies>
|
||||||
|
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||||
|
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
|
||||||
|
<Package PackageGuid="bea835f9-fd62-464a-81ff-f3a806360c6b"/>
|
||||||
|
</PackageDependencies>
|
||||||
|
<Protocols>
|
||||||
|
<Protocol Usage="TO_START">
|
||||||
|
<ProtocolCName>gEfiGenericMemTestProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol Usage="TO_START">
|
||||||
|
<ProtocolCName>gEfiDevicePathProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol Usage="TO_START">
|
||||||
|
<ProtocolCName>gEfiPciIoProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol Usage="TO_START">
|
||||||
|
<ProtocolCName>gEfiIsaAcpiProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
<Protocol Usage="BY_START">
|
||||||
|
<ProtocolCName>gEfiIsaIoProtocolGuid</ProtocolCName>
|
||||||
|
</Protocol>
|
||||||
|
</Protocols>
|
||||||
|
<Guids>
|
||||||
|
<GuidCNames Usage="ALWAYS_CONSUMED">
|
||||||
|
<GuidCName>gEfiStatusCodeSpecificDataGuid</GuidCName>
|
||||||
|
</GuidCNames>
|
||||||
|
</Guids>
|
||||||
|
<Externs>
|
||||||
|
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
||||||
|
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
||||||
|
<Extern>
|
||||||
|
<DriverBinding>gIsaBusControllerDriver</DriverBinding>
|
||||||
|
<ComponentName>gIsaBusComponentName</ComponentName>
|
||||||
|
</Extern>
|
||||||
|
</Externs>
|
||||||
|
<PcdCoded>
|
||||||
|
<PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
|
||||||
|
<C_Name>PcdIsaBusSupportIsaMemory</C_Name>
|
||||||
|
<TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
|
||||||
|
<DefaultValue>TRUE</DefaultValue>
|
||||||
|
<HelpText>This feature flag is used to enable the implementation for interface
|
||||||
|
_EFI_ISA_IO_PROTOCOL.Mem.Read, _EFI_ISA_IO_PROTOCOL.Mem.Write and _EFI_ISA_IO_PROTOCOL.CopyMem.
|
||||||
|
If it is unset, these interfaces will return EFI_UNSUPPORTED. When it is disabled,
|
||||||
|
it is will save code size if a platform does not have ISA device with ISA memory.</HelpText>
|
||||||
|
</PcdEntry>
|
||||||
|
<PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
|
||||||
|
<C_Name>PcdIsaBusSupportDma</C_Name>
|
||||||
|
<TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
|
||||||
|
<DefaultValue>TRUE</DefaultValue>
|
||||||
|
<HelpText>This feature flag is used to enable the implementation for interface
|
||||||
|
_EFI_ISA_IO_PROTOCOL.AllocateBuffer, _EFI_ISA_IO_PROTOCOL.FreeBuffer, _EFI_ISA_IO_PROTOCOL.Map
|
||||||
|
and _EFI_ISA_IO_PROTOCOL.UnMap. If it is unset, these interfaces will return EFI_UNSUPPORTED.
|
||||||
|
It is useful to save code size if a platform does not have ISA device which did DMA transfer.</HelpText>
|
||||||
|
</PcdEntry>
|
||||||
|
<PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
|
||||||
|
<C_Name>PcdIsaBusOnlySupportSlaveDma</C_Name>
|
||||||
|
<TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
|
||||||
|
<DefaultValue>FALSE</DefaultValue>
|
||||||
|
<HelpText>This feature flag is used to enable the implementation for interface
|
||||||
|
_EFI_ISA_IO_PROTOCOL.Map and _EFI_ISA_IO_PROTOCOL.UnMap to only support Slave DMA
|
||||||
|
transfers. In addition, unsetting this feature flag also make AllocateBuffer() and
|
||||||
|
FreeBuffer() to return EFI_UNSUPPORTED. It is useful to save code size if a platform have only
|
||||||
|
ISA device to do slave DMA R/W transfer. This flag is only effective when PcdIsaBusSupportDma
|
||||||
|
is set to TRUE. If PcdIsaBusSupportDma is set to FALSE, Map() and UnMap() will simply
|
||||||
|
return EFI_UNSUPPORTED. Please check description for PcdIsaBusSupportDma for details.</HelpText>
|
||||||
|
</PcdEntry>
|
||||||
|
</PcdCoded>
|
||||||
|
</ModuleSurfaceArea>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,105 @@
|
||||||
|
/** @file
|
||||||
|
Include file for PC-AT compatability.
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation. All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef _PC_AT_H_
|
||||||
|
#define _PC_AT_H_
|
||||||
|
|
||||||
|
//
|
||||||
|
// 8254 Timer
|
||||||
|
//
|
||||||
|
#define TIMER0_COUNT_PORT 0x40
|
||||||
|
#define TIMER1_COUNT_PORT 0x41
|
||||||
|
#define TIMER2_COUNT_PORT 0x42
|
||||||
|
#define TIMER_CONTROL_PORT 0x43
|
||||||
|
|
||||||
|
//
|
||||||
|
// 8259 PIC interrupt controller
|
||||||
|
//
|
||||||
|
|
||||||
|
#define PIC_CONTROL_REGISTER_MASTER 0x20
|
||||||
|
#define PIC_MASK_REGISTER_MASTER 0x21
|
||||||
|
#define PIC_CONTROL_REGISTER_SLAVE 0xA0
|
||||||
|
#define PIC_MASK_REGISTER_SLAVE 0xA1
|
||||||
|
#define PIC_EDGE_LEVEL_TRIGGERED_REGISTER_MASTER 0x4D0
|
||||||
|
#define PIC_EDGE_LEVEL_TRIGGERED_REGISTER_SLAVE 0x4D1
|
||||||
|
|
||||||
|
#define PIC_EOI 0x20
|
||||||
|
|
||||||
|
//
|
||||||
|
// 8237 DMA registers
|
||||||
|
//
|
||||||
|
#define R_8237_DMA_BASE_CA_CH0 0x00
|
||||||
|
#define R_8237_DMA_BASE_CA_CH1 0x02
|
||||||
|
#define R_8237_DMA_BASE_CA_CH2 0x04
|
||||||
|
#define R_8237_DMA_BASE_CA_CH3 0xd6
|
||||||
|
#define R_8237_DMA_BASE_CA_CH5 0xc4
|
||||||
|
#define R_8237_DMA_BASE_CA_CH6 0xc8
|
||||||
|
#define R_8237_DMA_BASE_CA_CH7 0xcc
|
||||||
|
|
||||||
|
#define R_8237_DMA_BASE_CC_CH0 0x01
|
||||||
|
#define R_8237_DMA_BASE_CC_CH1 0x03
|
||||||
|
#define R_8237_DMA_BASE_CC_CH2 0x05
|
||||||
|
#define R_8237_DMA_BASE_CC_CH3 0xd7
|
||||||
|
#define R_8237_DMA_BASE_CC_CH5 0xc6
|
||||||
|
#define R_8237_DMA_BASE_CC_CH6 0xca
|
||||||
|
#define R_8237_DMA_BASE_CC_CH7 0xce
|
||||||
|
|
||||||
|
#define R_8237_DMA_MEM_LP_CH0 0x87
|
||||||
|
#define R_8237_DMA_MEM_LP_CH1 0x83
|
||||||
|
#define R_8237_DMA_MEM_LP_CH2 0x81
|
||||||
|
#define R_8237_DMA_MEM_LP_CH3 0x82
|
||||||
|
#define R_8237_DMA_MEM_LP_CH5 0x8B
|
||||||
|
#define R_8237_DMA_MEM_LP_CH6 0x89
|
||||||
|
#define R_8237_DMA_MEM_LP_CH7 0x8A
|
||||||
|
|
||||||
|
|
||||||
|
#define R_8237_DMA_COMMAND_CH0_3 0x08
|
||||||
|
#define R_8237_DMA_COMMAND_CH4_7 0xd0
|
||||||
|
#define B_8237_DMA_COMMAND_GAP 0x10
|
||||||
|
#define B_8237_DMA_COMMAND_CGE 0x04
|
||||||
|
|
||||||
|
|
||||||
|
#define R_8237_DMA_STA_CH0_3 0xd8
|
||||||
|
#define R_8237_DMA_STA_CH4_7 0xd0
|
||||||
|
|
||||||
|
#define R_8237_DMA_WRSMSK_CH0_3 0x0a
|
||||||
|
#define R_8237_DMA_WRSMSK_CH4_7 0xd4
|
||||||
|
#define B_8237_DMA_WRSMSK_CMS 0x04
|
||||||
|
|
||||||
|
|
||||||
|
#define R_8237_DMA_CHMODE_CH0_3 0x0b
|
||||||
|
#define R_8237_DMA_CHMODE_CH4_7 0xd6
|
||||||
|
#define V_8237_DMA_CHMODE_DEMAND 0x00
|
||||||
|
#define V_8237_DMA_CHMODE_SINGLE 0x40
|
||||||
|
#define V_8237_DMA_CHMODE_CASCADE 0xc0
|
||||||
|
#define B_8237_DMA_CHMODE_DECREMENT 0x20
|
||||||
|
#define B_8237_DMA_CHMODE_INCREMENT 0x00
|
||||||
|
#define B_8237_DMA_CHMODE_AE 0x10
|
||||||
|
#define V_8237_DMA_CHMODE_VERIFY 0
|
||||||
|
#define V_8237_DMA_CHMODE_IO2MEM 0x04
|
||||||
|
#define V_8237_DMA_CHMODE_MEM2IO 0x08
|
||||||
|
|
||||||
|
#define R_8237_DMA_CBPR_CH0_3 0x0c
|
||||||
|
#define R_8237_DMA_CBPR_CH4_7 0xd8
|
||||||
|
|
||||||
|
#define R_8237_DMA_MCR_CH0_3 0x0d
|
||||||
|
#define R_8237_DMA_MCR_CH4_7 0xda
|
||||||
|
|
||||||
|
#define R_8237_DMA_CLMSK_CH0_3 0x0e
|
||||||
|
#define R_8237_DMA_CLMSK_CH4_7 0xdc
|
||||||
|
|
||||||
|
#define R_8237_DMA_WRMSK_CH0_3 0x0f
|
||||||
|
#define R_8237_DMA_WRMSK_CH4_7 0xde
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,177 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006 - 2007, 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:
|
||||||
|
|
||||||
|
IsaIo.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
EFI ISA I/O Protocol
|
||||||
|
|
||||||
|
Revision History
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _EFI_ISA_IO_H
|
||||||
|
#define _EFI_ISA_IO_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <Protocol/IsaAcpi.h>
|
||||||
|
|
||||||
|
//
|
||||||
|
// Global ID for the ISA I/O Protocol
|
||||||
|
//
|
||||||
|
|
||||||
|
#define EFI_ISA_IO_PROTOCOL_GUID \
|
||||||
|
{ 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
|
||||||
|
|
||||||
|
typedef struct _EFI_ISA_IO_PROTOCOL EFI_ISA_IO_PROTOCOL;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prototypes for the ISA I/O Protocol
|
||||||
|
//
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
EfiIsaIoWidthUint8,
|
||||||
|
EfiIsaIoWidthUint16,
|
||||||
|
EfiIsaIoWidthUint32,
|
||||||
|
EfiIsaIoWidthReserved,
|
||||||
|
EfiIsaIoWidthFifoUint8,
|
||||||
|
EfiIsaIoWidthFifoUint16,
|
||||||
|
EfiIsaIoWidthFifoUint32,
|
||||||
|
EfiIsaIoWidthFifoReserved,
|
||||||
|
EfiIsaIoWidthFillUint8,
|
||||||
|
EfiIsaIoWidthFillUint16,
|
||||||
|
EfiIsaIoWidthFillUint32,
|
||||||
|
EfiIsaIoWidthFillReserved,
|
||||||
|
EfiIsaIoWidthMaximum
|
||||||
|
} EFI_ISA_IO_PROTOCOL_WIDTH;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Attributes for common buffer allocations
|
||||||
|
//
|
||||||
|
#define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 // Map a memory range so write are combined
|
||||||
|
#define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 // Map a memory range so all r/w accesses are cached
|
||||||
|
#define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 // Disable a memory range
|
||||||
|
|
||||||
|
//
|
||||||
|
// Channel attribute for DMA operations
|
||||||
|
//
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080
|
||||||
|
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
EfiIsaIoOperationBusMasterRead,
|
||||||
|
EfiIsaIoOperationBusMasterWrite,
|
||||||
|
EfiIsaIoOperationBusMasterCommonBuffer,
|
||||||
|
EfiIsaIoOperationSlaveRead,
|
||||||
|
EfiIsaIoOperationSlaveWrite,
|
||||||
|
EfiIsaIoOperationMaximum
|
||||||
|
} EFI_ISA_IO_PROTOCOL_OPERATION;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_IO_MEM) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_ISA_IO_PROTOCOL_IO_MEM Read;
|
||||||
|
EFI_ISA_IO_PROTOCOL_IO_MEM Write;
|
||||||
|
} EFI_ISA_IO_PROTOCOL_ACCESS;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_COPY_MEM) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 DestOffset,
|
||||||
|
IN UINT32 SrcOffset,
|
||||||
|
IN UINTN Count
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_MAP) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_OPERATION Operation,
|
||||||
|
IN UINT8 ChannelNumber OPTIONAL,
|
||||||
|
IN UINT32 ChannelAttributes,
|
||||||
|
IN VOID *HostAddress,
|
||||||
|
IN OUT UINTN *NumberOfBytes,
|
||||||
|
OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
|
||||||
|
OUT VOID **Mapping
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_UNMAP) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN VOID *Mapping
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ALLOCATE_TYPE Type,
|
||||||
|
IN EFI_MEMORY_TYPE MemoryType,
|
||||||
|
IN UINTN Pages,
|
||||||
|
OUT VOID **HostAddress,
|
||||||
|
IN UINT64 Attributes
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_FREE_BUFFER) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINTN Pages,
|
||||||
|
IN VOID *HostAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_ISA_IO_PROTOCOL_FLUSH) (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Interface structure for the ISA I/O Protocol
|
||||||
|
//
|
||||||
|
struct _EFI_ISA_IO_PROTOCOL {
|
||||||
|
EFI_ISA_IO_PROTOCOL_ACCESS Mem;
|
||||||
|
EFI_ISA_IO_PROTOCOL_ACCESS Io;
|
||||||
|
EFI_ISA_IO_PROTOCOL_COPY_MEM CopyMem;
|
||||||
|
EFI_ISA_IO_PROTOCOL_MAP Map;
|
||||||
|
EFI_ISA_IO_PROTOCOL_UNMAP Unmap;
|
||||||
|
EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
|
||||||
|
EFI_ISA_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
|
||||||
|
EFI_ISA_IO_PROTOCOL_FLUSH Flush;
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST *ResourceList;
|
||||||
|
UINT32 RomSize;
|
||||||
|
VOID *RomImage;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern EFI_GUID gEfiIsaIoProtocolGuid;
|
||||||
|
|
||||||
|
#endif
|
|
@ -65,8 +65,6 @@
|
||||||
gMemoryStatusCodeRecordGuid = { 0x060CC026, 0x4C0D, 0x4DDA, { 0x8F, 0x41, 0x59, 0x5F, 0xEF, 0x00, 0xA5, 0x02 }}
|
gMemoryStatusCodeRecordGuid = { 0x060CC026, 0x4C0D, 0x4DDA, { 0x8F, 0x41, 0x59, 0x5F, 0xEF, 0x00, 0xA5, 0x02 }}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Global Protocols Definition section - list of Global Protocols C Name Data
|
# Global Protocols Definition section - list of Global Protocols C Name Data
|
||||||
|
@ -78,8 +76,7 @@
|
||||||
gEfiVgaMiniPortProtocolGuid = { 0xc7735a2f, 0x88f5, 0x4882, { 0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 }}
|
gEfiVgaMiniPortProtocolGuid = { 0xc7735a2f, 0x88f5, 0x4882, { 0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 }}
|
||||||
gEfiPciHotPlugInitProtocolGuid = { 0xAA0E8BC1, 0xDABC, 0x46B0, { 0xA8, 0x44, 0x37, 0xB8, 0x16, 0x9B, 0x2B, 0xEA }}
|
gEfiPciHotPlugInitProtocolGuid = { 0xAA0E8BC1, 0xDABC, 0x46B0, { 0xA8, 0x44, 0x37, 0xB8, 0x16, 0x9B, 0x2B, 0xEA }}
|
||||||
gEfiPciHotPlugRequestProtocolGuid = { 0x19CB87AB, 0x2CB9, 0x4665, { 0x83, 0x60, 0xDD, 0xCF, 0x60, 0x54, 0xF7, 0x9D }}
|
gEfiPciHotPlugRequestProtocolGuid = { 0x19CB87AB, 0x2CB9, 0x4665, { 0x83, 0x60, 0xDD, 0xCF, 0x60, 0x54, 0xF7, 0x9D }}
|
||||||
|
gEfiIsaIoProtocolGuid = { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d }}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -109,6 +106,9 @@
|
||||||
PcdPciIsaEnable|0x00010039|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
|
PcdPciIsaEnable|0x00010039|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
PcdPciVgaEnable|0x0001003a|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
|
PcdPciVgaEnable|0x0001003a|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
PcdPciBusHotplugDeviceSupport|0x0001003d|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
|
PcdPciBusHotplugDeviceSupport|0x0001003d|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
|
||||||
|
PcdIsaBusSupportDma|0x00010040|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
|
||||||
|
PcdIsaBusOnlySupportSlaveDma|0x00010041|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
|
PcdIsaBusSupportIsaMemory|0x00010042|gEfiIntelFrameworkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
|
||||||
|
|
||||||
[PcdsFixedAtBuild.common]
|
[PcdsFixedAtBuild.common]
|
||||||
PcdStatusCodeMemorySize|0x00010025|gEfiIntelFrameworkModulePkgTokenSpaceGuid|UINT16|1
|
PcdStatusCodeMemorySize|0x00010025|gEfiIntelFrameworkModulePkgTokenSpaceGuid|UINT16|1
|
||||||
|
|
|
@ -77,6 +77,7 @@
|
||||||
DxeServicesTableLib|${WORKSPACE}/MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
|
DxeServicesTableLib|${WORKSPACE}/MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
|
||||||
FvbServiceLib|${WORKSPACE}/MdeModulePkg/Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
|
FvbServiceLib|${WORKSPACE}/MdeModulePkg/Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
|
||||||
ReportStatusCodeLib|${WORKSPACE}/IntelFrameworkPkg/Library/DxeReportStatusCodeLibFramework/DxeReportStatusCodeLib.inf
|
ReportStatusCodeLib|${WORKSPACE}/IntelFrameworkPkg/Library/DxeReportStatusCodeLibFramework/DxeReportStatusCodeLib.inf
|
||||||
|
BootScriptLib|${WORKSPACE}/IntelFrameworkPkg/Library/DxeBootScriptLibNull/DxeBootScriptLibNull.inf
|
||||||
HiiLibFramework|$(WORKSPACE)/IntelFrameworkPkg/Library/HiiLibFramework/HiiLib.inf
|
HiiLibFramework|$(WORKSPACE)/IntelFrameworkPkg/Library/HiiLibFramework/HiiLib.inf
|
||||||
IfrSupportLibFramework|$(WORKSPACE)/IntelFrameworkPkg/Library/IfrSupportLibFramework/IfrSupportLib.inf
|
IfrSupportLibFramework|$(WORKSPACE)/IntelFrameworkPkg/Library/IfrSupportLibFramework/IfrSupportLib.inf
|
||||||
PciIncompatibleDeviceSupportLib|${WORKSPACE}/IntelFrameworkModulePkg/Library/PciIncompatibleDeviceSupportLib/PciIncompatibleDeviceSupportLib.inf
|
PciIncompatibleDeviceSupportLib|${WORKSPACE}/IntelFrameworkModulePkg/Library/PciIncompatibleDeviceSupportLib/PciIncompatibleDeviceSupportLib.inf
|
||||||
|
@ -121,6 +122,9 @@
|
||||||
PcdPciIsaEnable|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
PcdPciIsaEnable|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
||||||
PcdPciVgaEnable|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
PcdPciVgaEnable|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
||||||
PcdPciBusHotplugDeviceSupport|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
PcdPciBusHotplugDeviceSupport|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
||||||
|
PcdIsaBusSupportDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
||||||
|
PcdIsaBusOnlySupportSlaveDma|gEfiIntelFrameworkModulePkgTokenSpaceGuid|FALSE
|
||||||
|
PcdIsaBusSupportIsaMemory|gEfiIntelFrameworkModulePkgTokenSpaceGuid|TRUE
|
||||||
|
|
||||||
[PcdsFixedAtBuild.common]
|
[PcdsFixedAtBuild.common]
|
||||||
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
||||||
|
@ -160,6 +164,7 @@
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Library\GraphicsLib\GraphicsLib.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Library\GraphicsLib\GraphicsLib.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus\Pci\PciBus\Dxe\PciBus.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus\Pci\PciBus\Dxe\PciBus.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Bus\Pci\IdeBus\Dxe\IdeBus.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Bus\Pci\IdeBus\Dxe\IdeBus.inf
|
||||||
|
$(WORKSPACE)\IntelFrameworkModulePkg\Bus\Isa\IsaBusDxe\IsaBus.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DataHub/DataHub/Dxe/DataHub.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DataHub/DataHub/Dxe/DataHub.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DataHub/DataHubStdErr/Dxe/DataHubStdErr.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DataHub/DataHubStdErr/Dxe/DataHubStdErr.inf
|
||||||
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.inf
|
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.inf
|
||||||
|
|
|
@ -0,0 +1,530 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation. All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
EfiScriptLib.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#ifndef _BOOT_SCRIPT_LIB_H_
|
||||||
|
#define _BOOT_SCRIPT_LIB_H_
|
||||||
|
|
||||||
|
#include <PiPei.h>
|
||||||
|
#include <Ppi/BootScriptExecuter.h>
|
||||||
|
|
||||||
|
#include <IndustryStandard/SmBus.h>
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveIoWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script with opcode EFI_BOOT_SCRIPT_IO_WRITE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Width - The width of the I/O operations.
|
||||||
|
|
||||||
|
Address - The base address of the I/O operations.
|
||||||
|
|
||||||
|
Count - The number of I/O operations to perform.
|
||||||
|
|
||||||
|
Buffer - The source buffer from which to write data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveIoReadWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN VOID *Data,
|
||||||
|
IN VOID *DataMask
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O modify to boot script with opcode EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Width - The width of the I/O operations.
|
||||||
|
|
||||||
|
Address - The base address of the I/O operations.
|
||||||
|
|
||||||
|
Data - A pointer to the data to be OR-ed.
|
||||||
|
|
||||||
|
DataMask - A pointer to the data mask to be AND-ed with the data read from the register.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveMemWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save memory write to boot script with opcode EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Width - The width of the memory operations.
|
||||||
|
|
||||||
|
Address - The base address of the memory operations.
|
||||||
|
|
||||||
|
Count - The number of memory operations to perform.
|
||||||
|
|
||||||
|
Buffer - The source buffer from which to write the data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveMemReadWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN VOID *Data,
|
||||||
|
IN VOID *DataMask
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save memory modify to boot script with opcode EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Width - The width of the memory operations.
|
||||||
|
|
||||||
|
Address - The base address of the memory operations.
|
||||||
|
|
||||||
|
Data - A pointer to the data to be OR-ed.
|
||||||
|
|
||||||
|
DataMask - A pointer to the data mask to be AND-ed with the data read from the register.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSavePciCfgWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save PCI configuration space write operation to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Width - The width of the PCI operations
|
||||||
|
|
||||||
|
Address - The address within the PCI configuration space.
|
||||||
|
|
||||||
|
Count - The number of PCI operations to perform.
|
||||||
|
|
||||||
|
Buffer - The source buffer from which to write the data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSavePciCfgReadWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN VOID *Data,
|
||||||
|
IN VOID *DataMask
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save PCI configuration space modify operation to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Width - The width of the PCI operations
|
||||||
|
|
||||||
|
Address - The address within the PCI configuration space.
|
||||||
|
|
||||||
|
Data - A pointer to the data to be OR-ed.
|
||||||
|
|
||||||
|
DataMask - A pointer to the data mask to be AND-ed with the data read from the register.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveSmbusExecute (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
|
||||||
|
IN EFI_SMBUS_DEVICE_COMMAND Command,
|
||||||
|
IN EFI_SMBUS_OPERATION Operation,
|
||||||
|
IN BOOLEAN PecCheck,
|
||||||
|
IN UINTN *Length,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save SMBus command execution to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
SlaveAddress - The SMBus address for the slave device that the operation is targeting.
|
||||||
|
Command - The command that is transmitted by the SMBus host controller to the
|
||||||
|
SMBus slave device.
|
||||||
|
Operation - Indicates which particular SMBus protocol it will use to execute the
|
||||||
|
SMBus transactions.
|
||||||
|
PecCheck - Defines if Packet Error Code (PEC) checking is required for this operation.
|
||||||
|
Length - A pointer to signify the number of bytes that this operation will do.
|
||||||
|
Buffer - Contains the value of data to execute to the SMBUS slave device.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveStall (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN UINTN Duration
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save execution stall on the processor to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_STALL_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
Duration - Duration in microseconds of the stall.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveDispatch (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS EntryPoint
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save dispatching specified arbitrary code to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_DISPATCH_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
EntryPoint - Entry point of the code to be dispatched.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveDispatch2 (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS EntryPoint,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS Context
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save dispatching specified arbitrary code to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_DISPATCH_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
EntryPoint - Entry point of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveDispatch2Image (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_GUID *FfsName,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS Context,
|
||||||
|
IN EFI_HANDLE ParentHandle
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save dispatching specified arbitrary code to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_DISPATCH_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInformation (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN UINT32 Length,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save information specified by Buffer, length is specified by Length, to
|
||||||
|
boot script with opcode EFI_BOOT_SCRIPT_INFORMATION_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInformationUnicodeString (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN CONST CHAR16 *String
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save unicode string information specified by Buffer to
|
||||||
|
boot script with opcode EFI_BOOT_SCRIPT_INFORMATION_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInformationAsciiString (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN CONST CHAR8 *String
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save ASCII string information specified by Buffer to
|
||||||
|
boot script with opcode EFI_BOOT_SCRIPT_INFORMATION_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInitialize (
|
||||||
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Intialize Boot Script Lib if it has not yet been initialized.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
ImageHandle - The firmware allocated handle for the EFI image.
|
||||||
|
|
||||||
|
SystemTable - A pointer to the EFI System Table.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_STATUS always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,51 @@
|
||||||
#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H
|
#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H
|
||||||
#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H
|
#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H
|
||||||
|
|
||||||
#include <PiPei.h>
|
#define EFI_ACPI_S3_RESUME_SCRIPT_TABLE 0x00
|
||||||
|
|
||||||
|
//
|
||||||
|
// Boot Script Opcode Definitions
|
||||||
|
//
|
||||||
|
|
||||||
|
#define EFI_BOOT_SCRIPT_IO_WRITE_OPCODE 0x00
|
||||||
|
#define EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE 0x01
|
||||||
|
#define EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE 0x02
|
||||||
|
#define EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE 0x03
|
||||||
|
#define EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE 0x04
|
||||||
|
#define EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE 0x05
|
||||||
|
#define EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE 0x06
|
||||||
|
#define EFI_BOOT_SCRIPT_STALL_OPCODE 0x07
|
||||||
|
#define EFI_BOOT_SCRIPT_DISPATCH_OPCODE 0x08
|
||||||
|
|
||||||
|
//
|
||||||
|
// Extensions to boot script definitions
|
||||||
|
//
|
||||||
|
#define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE 0x09
|
||||||
|
#define EFI_BOOT_SCRIPT_INFORMATION_OPCODE 0x0A
|
||||||
|
#define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE 0x0B
|
||||||
|
#define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE 0x0C
|
||||||
|
#define EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE 0x0D
|
||||||
|
#define EFI_BOOT_SCRIPT_TABLE_OPCODE 0xAA
|
||||||
|
#define EFI_BOOT_SCRIPT_TERMINATE_OPCODE 0xFF
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Boot Script Width
|
||||||
|
//
|
||||||
|
typedef enum {
|
||||||
|
EfiBootScriptWidthUint8,
|
||||||
|
EfiBootScriptWidthUint16,
|
||||||
|
EfiBootScriptWidthUint32,
|
||||||
|
EfiBootScriptWidthUint64,
|
||||||
|
EfiBootScriptWidthFifoUint8,
|
||||||
|
EfiBootScriptWidthFifoUint16,
|
||||||
|
EfiBootScriptWidthFifoUint32,
|
||||||
|
EfiBootScriptWidthFifoUint64,
|
||||||
|
EfiBootScriptWidthFillUint8,
|
||||||
|
EfiBootScriptWidthFillUint16,
|
||||||
|
EfiBootScriptWidthFillUint32,
|
||||||
|
EfiBootScriptWidthFillUint64,
|
||||||
|
EfiBootScriptWidthMaximum
|
||||||
|
} EFI_BOOT_SCRIPT_WIDTH;
|
||||||
|
|
||||||
#define EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \
|
#define EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \
|
||||||
{ \
|
{ \
|
||||||
|
|
|
@ -0,0 +1,508 @@
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2007, Intel Corporation. All rights reserved. <BR>
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
BootScriptLib.c
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
Support for EFI script.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// The package level header files this module uses
|
||||||
|
//
|
||||||
|
#include <PiDxe.h>
|
||||||
|
//
|
||||||
|
// The protocols, PPI and GUID defintions for this module
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// The Library classes this module consumes
|
||||||
|
//
|
||||||
|
#include <Library/BootScriptLib.h>
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveIoWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI IO write script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Width - add argument and description to function comment
|
||||||
|
// GC_TODO: Address - add argument and description to function comment
|
||||||
|
// GC_TODO: Count - add argument and description to function comment
|
||||||
|
// GC_TODO: Buffer - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveIoReadWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN VOID *Data,
|
||||||
|
IN VOID *DataMask
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI IO read write script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Width - add argument and description to function comment
|
||||||
|
// GC_TODO: Address - add argument and description to function comment
|
||||||
|
// GC_TODO: Data - add argument and description to function comment
|
||||||
|
// GC_TODO: DataMask - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveMemWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI MEM write script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Width - add argument and description to function comment
|
||||||
|
// GC_TODO: Address - add argument and description to function comment
|
||||||
|
// GC_TODO: Count - add argument and description to function comment
|
||||||
|
// GC_TODO: Buffer - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveMemReadWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN VOID *Data,
|
||||||
|
IN VOID *DataMask
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI MEM read write script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Width - add argument and description to function comment
|
||||||
|
// GC_TODO: Address - add argument and description to function comment
|
||||||
|
// GC_TODO: Data - add argument and description to function comment
|
||||||
|
// GC_TODO: DataMask - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSavePciCfgWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI PCI write script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Width - add argument and description to function comment
|
||||||
|
// GC_TODO: Address - add argument and description to function comment
|
||||||
|
// GC_TODO: Count - add argument and description to function comment
|
||||||
|
// GC_TODO: Buffer - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSavePciCfgReadWrite (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_BOOT_SCRIPT_WIDTH Width,
|
||||||
|
IN UINT64 Address,
|
||||||
|
IN VOID *Data,
|
||||||
|
IN VOID *DataMask
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI PCI read write script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Width - add argument and description to function comment
|
||||||
|
// GC_TODO: Address - add argument and description to function comment
|
||||||
|
// GC_TODO: Data - add argument and description to function comment
|
||||||
|
// GC_TODO: DataMask - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveSmbusExecute (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
|
||||||
|
IN EFI_SMBUS_DEVICE_COMMAND Command,
|
||||||
|
IN EFI_SMBUS_OPERATION Operation,
|
||||||
|
IN BOOLEAN PecCheck,
|
||||||
|
IN UINTN *Length,
|
||||||
|
IN VOID *Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI Smbus execute script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: SlaveAddress - add argument and description to function comment
|
||||||
|
// GC_TODO: Command - add argument and description to function comment
|
||||||
|
// GC_TODO: Operation - add argument and description to function comment
|
||||||
|
// GC_TODO: PecCheck - add argument and description to function comment
|
||||||
|
// GC_TODO: Length - add argument and description to function comment
|
||||||
|
// GC_TODO: Buffer - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveStall (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN UINTN Duration
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save I/O write to boot script
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
(Standard EFI stall script parameter)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
// GC_TODO: Duration - add argument and description to function comment
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveDispatch2 (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS EntryPoint,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS Context
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
GC_TODO: Add function description
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - GC_TODO: add argument description
|
||||||
|
EntryPoint - GC_TODO: add argument description
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - GC_TODO: Add description for return value
|
||||||
|
EFI_SUCCESS - GC_TODO: Add description for return value
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInformation (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN UINT32 Length,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS Buffer
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
GC_TODO: Add function description
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - GC_TODO: add argument description
|
||||||
|
EntryPoint - GC_TODO: add argument description
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - GC_TODO: Add description for return value
|
||||||
|
EFI_SUCCESS - GC_TODO: Add description for return value
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInformationUnicodeString (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN CONST CHAR16 *String
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save unicode string information specified by Buffer to
|
||||||
|
boot script with opcode EFI_BOOT_SCRIPT_INFORMATION_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveInformationAsciiString (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN CONST CHAR8 *String
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save ASCII string information specified by Buffer to
|
||||||
|
boot script with opcode EFI_BOOT_SCRIPT_INFORMATION_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveDispatch (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS EntryPoint
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
GC_TODO: Add function description
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - GC_TODO: add argument description
|
||||||
|
EntryPoint - GC_TODO: add argument description
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - GC_TODO: Add description for return value
|
||||||
|
EFI_SUCCESS - GC_TODO: Add description for return value
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
BootScriptSaveDispatch2Image (
|
||||||
|
IN UINT16 TableName,
|
||||||
|
IN EFI_GUID *FfsName,
|
||||||
|
IN EFI_PHYSICAL_ADDRESS Context,
|
||||||
|
IN EFI_HANDLE ParentHandle
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Save dispatching specified arbitrary code to boot script with opcode
|
||||||
|
EFI_BOOT_SCRIPT_DISPATCH_OPCODE
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
TableName - Desired boot script table
|
||||||
|
|
||||||
|
FfsName - The file name of the code to be dispatched.
|
||||||
|
|
||||||
|
Context - The data that will be passed into code.
|
||||||
|
|
||||||
|
ParentHandle - The caller's image handle.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
EFI_NOT_FOUND - BootScriptSave Protocol not exist.
|
||||||
|
|
||||||
|
EFI_STATUS - BootScriptSave Protocol exist, always returns EFI_SUCCESS
|
||||||
|
|
||||||
|
--*/
|
||||||
|
{
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
#/** @file
|
||||||
|
# BootScriptLib instance that always produces NOP operation.
|
||||||
|
#
|
||||||
|
# This library is primarily used by platform that does not support ACPI S3 resume.
|
||||||
|
# All the library interfaces simply return EFI_SUCCESS without performing any operation.
|
||||||
|
# Copyright (c) 2007, Intel Corporation.
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
# This software and associated documentation (if any) is furnished
|
||||||
|
# under a license and may only be used or copied in accordance
|
||||||
|
# with the terms of the license. Except as permitted by such
|
||||||
|
# license, no part of this software or documentation may be
|
||||||
|
# reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
# form or by any means without the express written consent of
|
||||||
|
# Intel Corporation.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#**/
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Defines Section - statements that will be processed to create a Makefile.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = DxeBootScriptLibNull
|
||||||
|
FILE_GUID = 9A6DC1AC-94C0-43b1-8714-4C70FD58A815
|
||||||
|
MODULE_TYPE = DXE_DRIVER
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
LIBRARY_CLASS = BootScriptLib
|
||||||
|
EDK_RELEASE_VERSION = 0x00020000
|
||||||
|
EFI_SPECIFICATION_VERSION = 0x00020000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Sources Section - list of files that are required for the build to succeed.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
BootScriptLib.c
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Includes Section - list of Include locations that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Includes]
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Package Dependency Section - list of Package files that are required for
|
||||||
|
# this module.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<MsaHeader>
|
||||||
|
<ModuleName>DxeBootScriptLibNull</ModuleName>
|
||||||
|
<ModuleType>DXE_DRIVER</ModuleType>
|
||||||
|
<GuidValue>9A6DC1AC-94C0-43b1-8714-4C70FD58A815</GuidValue>
|
||||||
|
<Version>1.0</Version>
|
||||||
|
<Abstract>BootScriptLib instance that always produces NOP operation.</Abstract>
|
||||||
|
<Description>This library is primarily used by platform that does not support ACPI S3 resume.
|
||||||
|
All the library interfaces simply return EFI_SUCCESS without performing any operation.</Description>
|
||||||
|
<Copyright>Copyright (c) 2007, Intel Corporation.</Copyright>
|
||||||
|
<License>All rights reserved.
|
||||||
|
This software and associated documentation (if any) is furnished
|
||||||
|
under a license and may only be used or copied in accordance
|
||||||
|
with the terms of the license. Except as permitted by such
|
||||||
|
license, no part of this software or documentation may be
|
||||||
|
reproduced, stored in a retrieval system, or transmitted in any
|
||||||
|
form or by any means without the express written consent of
|
||||||
|
Intel Corporation.</License>
|
||||||
|
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
||||||
|
</MsaHeader>
|
||||||
|
<ModuleDefinitions>
|
||||||
|
<SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
|
||||||
|
<BinaryModule>false</BinaryModule>
|
||||||
|
<OutputFileBasename>DxeBootScriptLibNull</OutputFileBasename>
|
||||||
|
</ModuleDefinitions>
|
||||||
|
<LibraryClassDefinitions>
|
||||||
|
<LibraryClass Usage="ALWAYS_PRODUCED">
|
||||||
|
<Keyword>BootScriptLib</Keyword>
|
||||||
|
</LibraryClass>
|
||||||
|
</LibraryClassDefinitions>
|
||||||
|
<SourceFiles>
|
||||||
|
<Filename>BootScriptLib.c</Filename>
|
||||||
|
</SourceFiles>
|
||||||
|
<PackageDependencies>
|
||||||
|
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||||
|
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
|
||||||
|
<Package PackageGuid="bea835f9-fd62-464a-81ff-f3a806360c6b"/>
|
||||||
|
</PackageDependencies>
|
||||||
|
<Externs>
|
||||||
|
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
||||||
|
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
||||||
|
</Externs>
|
||||||
|
</ModuleSurfaceArea>
|
Loading…
Reference in New Issue