Add in the 1st version of ECP.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2832 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2007-06-28 07:00:39 +00:00
parent 30d4a0c7ec
commit 3eb9473ea9
1433 changed files with 266617 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
/*++
Copyright (c) 1999 - 2002, 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:
LegacyBiosPlatform.c
Abstract:
EFI Legacy BIOS Platform Protocol
Revision History
--*/
#include "Tiano.h"
#include EFI_PROTOCOL_DEFINITION (LegacyBiosPlatform)
EFI_GUID gEfiLegacyBiosPlatformProtocolGuid = EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID;
EFI_GUID_STRING(&gEfiLegacyBiosPlatformProtocolGuid, "Legacy BIOS Platform Protocol", "Legacy BIOS Platform Protocol");

View File

@@ -0,0 +1,328 @@
/*++
Copyright (c) 1999 - 2006, 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:
LegacyBiosPlatform.h
Abstract:
The EFI Legacy BIOS Patform Protocol is used to mate a Legacy16
implementation with this EFI code. The EFI driver that produces
the Legacy BIOS protocol is generic and consumes this protocol.
A driver that matches the Legacy16 produces this protocol
Revision History
The EFI Legacy BIOS Platform Protocol is compliant with CSM spec 0.96.
--*/
#ifndef _EFI_LEGACY_BIOS_PLATFORM_H
#define _EFI_LEGACY_BIOS_PLATFORM_H
#define EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID \
{ \
0x783658a3, 0x4172, 0x4421, 0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4 \
}
EFI_FORWARD_DECLARATION (EFI_LEGACY_BIOS_PLATFORM_PROTOCOL);
#include "Tiano.h"
#include EFI_PROTOCOL_DEFINITION (LegacyBios)
#pragma pack(1)
//
// Define structures for GetOemIntData
// Note:
// OemIntDataElenent is an array of structures from 0 to Count-1.
// RawData is an array of bytes from 0 to RamDataLength-1.
//
typedef struct {
UINT16 Int;
UINT16 Ax;
UINT32 RawDataLength;
UINT8 RawData[1];
} EFI_OEM_INT_DATA_ELEMENT;
typedef struct {
UINT16 Count;
EFI_OEM_INT_DATA_ELEMENT OemIntDataElement[1];
} EFI_OEM_INT_DATA;
#pragma pack()
typedef enum {
EfiGetPlatformBinaryMpTable = 0,
EfiGetPlatformBinaryOemIntData = 1,
EfiGetPlatformBinaryOem16Data = 2,
EfiGetPlatformBinaryOem32Data = 3,
EfiGetPlatformBinaryTpmBinary = 4,
EfiGetPlatformBinarySystemRom = 5,
EfiGetPlatformPciExpressBase = 6,
EfiGetPlatformPmmSize = 7,
EfiGetPlatformEndOfOpromShadowAddr = 8
} EFI_GET_PLATFORM_INFO_MODE;
typedef enum {
EfiGetPlatformVgaHandle = 0,
EfiGetPlatformIdeHandle = 1,
EfiGetPlatformIsaBusHandle = 2,
EfiGetPlatformUsbHandle = 3
} EFI_GET_PLATFORM_HANDLE_MODE;
typedef enum {
EfiPlatformHookPrepareToScanRom = 0,
EfiPlatformHookShadowServiceRoms= 1,
EfiPlatformHookAfterRomInit = 2
} EFI_GET_PLATFORM_HOOK_MODE;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
IN EFI_GET_PLATFORM_INFO_MODE Mode,
OUT VOID **Table,
OUT UINTN *TableSize,
OUT UINTN *Location,
OUT UINTN *Alignment,
IN UINT16 LegacySegment,
IN UINT16 LegacyOffset
)
/*++
Routine Description:
Return a System ROM image for the platform
Arguments:
This - Protocol instance pointer.
Mode - Specifies what data to return
Table - Pointer to MP table.
TableSize - Size in bytes of table.
Location - Legacy region requested
0x00 = Any location
Bit 0 = 0xF0000 region
Bit 1 = 0xE0000 region
Multiple bits can be set
Alignment - Address alignment for allocation.
Bit mapped. First non-zero bit from right
is alignment.
LegacySegment - Segment in LegacyBios where Table is stored
LegacyOffset - Offset in LegacyBios where Table is stored
Returns:
EFI_SUCCESS - Data was returned successfully.
EFI_UNSUPPORTED - Mode is not supported on the platform.
EFI_NOT_FOUND - Binary image or table not found.
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
IN EFI_GET_PLATFORM_HANDLE_MODE Mode,
IN UINT16 Type,
OUT EFI_HANDLE **HandleBuffer,
OUT UINTN *HandleCount,
IN VOID **AdditionalData OPTIONAL
)
/*++
Routine Description:
Return the Legacy16 policy for which device should be the VGA controller
used during a Legacy16 boot.
Arguments:
This - Protocol instance pointer.
Mode - Specifies what handle to return.
Type - Type from Device Path for Handle to represent.
HandleBuffer - Handles of the device/controller in priority order
with HandleBuffer[0] highest priority.
HandleCount - Number of handles in the buffer.
AdditionalData - Mode specific.
Returns:
EFI_SUCCESS - Handle is valid
EFI_UNSUPPORTED - Mode is not supported on the platform.
EFI_NOT_FOUND - Handle is not known
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_SMM_INIT) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
IN VOID *EfiToLegacy16BootTable
);
/*++
Routine Description:
Load and initialize the Legacy BIOS SMM handler.
Arguments:
This - Protocol instance pointer.
EfiToLegacy16BootTable - Pointer to Legacy16 boot table.
Returns:
EFI_SUCCESS - SMM code loaded.
EFI_DEVICE_ERROR - SMM code failed to load
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_HOOKS) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
IN EFI_GET_PLATFORM_HOOK_MODE Mode,
IN UINT16 Type,
IN EFI_HANDLE DeviceHandle,
IN OUT UINTN *ShadowAddress,
IN EFI_COMPATIBILITY16_TABLE * Compatibility16Table,
IN VOID **AdditionalData OPTIONAL
)
/*++
Routine Description:
Prepare to scan a ROM.
Arguments:
This - Protocol instance pointer.
Handle - Device handle
ShadowAddress - Address that ROM is shadowed at prior to
initialization or first free ROM address,
depending upon mode.
Compatibility16Table - Pointer to Compatibility16Table.
AdditionalData - Mode specific.
Returns:
EFI_SUCCESS - RomImage is valid
EFI_UNSUPPORTED - Mode is not supported on the platform or platform
policy is to not install this OPROM.
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
OUT VOID **RoutingTable,
OUT UINTN *RoutingTableEntries,
OUT VOID **LocalPirqTable, OPTIONAL
OUT UINTN *PirqTableSize, OPTIONAL
OUT VOID **LocalIrqPriorityTable, OPTIONAL
OUT UINTN *IrqPriorityTableEntries OPTIONAL
)
/*++
Routine Description:
1. List of IRQ routing entries and number of entries.
2. Pointer to Entire $PIR table and length.
3. List of IRQs to assign to PCI in priority.
Arguments:
This - Protocol instance pointer.
RoutingTable - Pointer to PCI IRQ Routing table.
RoutingTableEntries - Number of entries in table.
LocalPirqTable - $PIR table
PirqTableSize - $PIR table size
LocalIrqPriorityTable - List of interrupts in priority order to assign
IrqPriorityTableEntries- Number of entries in priority table
Returns:
EFI_SUCCESS - Table pointer returned
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
IN UINTN PciBus,
IN UINTN PciDevice,
IN UINTN PciFunction,
IN OUT UINT8 *Pirq,
OUT UINT8 *PciIrq
)
/*++
Routine Description:
Translate the PIRQ reported by the PCI device into the true PIRQ
from the internal IRQ routing information and IRQ assigned or to be
assigned to device.
Arguments:
This - Protocol instance pointer.
Base as defined below is the bus,device, function in
IRQ routing table.
PciBus - Base Bus for this device.
PciDevice - Base Device for this device.
PciFunction - Base Function for this device.
Pirq - Input is PIRQ reported by device, output is true PIRQ.
PciIrq - The IRQ already assigned to the PIRQ or the IRQ to be
assigned to the PIRQ.
Returns:
EFI_SUCCESS - Irq translated
--*/
;
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT) (
IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This,
IN BBS_BBS_DEVICE_PATH * BbsDevicePath,
IN VOID *BbsTable,
IN UINT32 LoadOptionsSize,
IN VOID *LoadOptions,
IN VOID *EfiToLegacy16BootTable
)
/*++
Routine Description:
Attempt to legacy boot the BootOption. If the EFI contexted has been
compromised this function will not return.
Arguments:
This - Protocol instance pointer.
BbsDevicePath - EFI Device Path from BootXXXX variable.
BbsTable - Internal BBS table.
LoadOptionSize - Size of LoadOption in size.
LoadOption - LoadOption from BootXXXX variable
EfiToLegacy16BootTable - Pointer to BootTable structure
Returns:
EFI_SUCCESS - Removable media not present
--*/
;
typedef struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL {
EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO GetPlatformInfo;
EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE GetPlatformHandle;
EFI_LEGACY_BIOS_PLATFORM_SMM_INIT SmmInit;
EFI_LEGACY_BIOS_PLATFORM_HOOKS PlatformHooks;
EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE GetRoutingTable;
EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ TranslatePirq;
EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT PrepareToBoot;
} EFI_LEGACY_BIOS_PLATFORM_PROTOCOL;
extern EFI_GUID gEfiLegacyBiosPlatformProtocolGuid;
#endif