Synchronize code with specs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8366 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
gikidy 2009-05-21 06:08:25 +00:00
parent de482998ed
commit 534b8251cc
9 changed files with 111 additions and 19 deletions

@ -1,17 +1,20 @@
/** @file
This protocol is used to prepare all information that is needed for the S3 resume boot path. This
protocol is not required for all platforms.
This protocol is defined in framework S3Resume v0.9, page 21.
Copyright (c) 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
Copyright (c) 2006 - 2009, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@par Revision Reference:
This Protocol is defined in Framework of S3 Resume Boot Path Spec.
Version 0.9.
**/
#ifndef _ACPI_S3_SAVE_PROTOCOL_H_
@ -35,6 +38,23 @@ typedef struct _EFI_ACPI_S3_SAVE_PROTOCOL EFI_ACPI_S3_SAVE_PROTOCOL;
//
// Protocol Data Structures
//
/**
This function returns the size of the legacy memory below 1 MB that is required during an S3
resume. Before the Framework-based firmware transfers control to the OS, it has to transition from
flat mode into real mode in case the OS supplies only a real-mode waking vector. This transition
requires a certain amount of legacy memory below 1 MB. After getting the size of legacy memory
below 1 MB, the caller is responsible for allocating the legacy memory below 1 MB according to
the size that is returned. The specific implementation of allocating the legacy memory is out of the
scope of this specification.
@param This A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.
@param LegacyMemoryAddress The returned size of legacy memory below 1MB.
@retval EFI_SUCCESS Size is successfully returned.
@retval EFI_INVALID_PARAMETER The pointer Size is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_S3_SAVE)(
@ -42,6 +62,31 @@ EFI_STATUS
IN VOID * LegacyMemoryAddress
);
/**
This function is used to do the following:
- Prepare all information that is needed in the S3 resume boot path. This information can include
the following:
-- Framework boot script table
-- RSDT pointer
-- Reserved memory for the S3 resume
- Get the minimum memory length below 1 MB that is required for the S3 resume boot path.
If LegacyMemoryAddress is NULL, the firmware will be unable to jump into a real-mode
waking vector. However, it might still be able to jump into a flat-mode waking vector as long as the
OS provides a flat-mode waking vector. It is the callers responsibility to ensure the
LegacyMemoryAddress is valid. If the LegacyMemoryAddress is higher than 1 MB,
EFI_INVALID_PARAMETER will be returned.
@param This A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.
@param LegacyMemoryAddress The base of legacy memory.
@retval EFI_SUCCESS All information was saved successfully.
@retval EFI_INVALID_PARAMETER The memory range is not located below 1 MB.
@retval EFI_OUT_OF_RESOURCES Resources were insufficient to save all the information.
@retval EFI_NOT_FOUND Some necessary information cannot be found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE)(
@ -49,6 +94,34 @@ EFI_STATUS
OUT UINTN * Size
);
/**
@par Protocol Description:
The EFI_ACPI_S3_SAVE_PROTOCOL is responsible for preparing all the information that the
Framework needs to restore the platforms preboot state during an S3 resume boot. This
information can include the following:
- The Framework boot script table, containing all necessary operations to initialize the platform
- ACPI table information, such as RSDT, through which the OS waking vector can be located
- Range of reserved memory that can be used on the S3 resume boot path
This protocol can be used after the Framework makes sure that the boot process is complete and
that no hardware has been left unconfigured. It is implementation specific where to call this
protocol to save all the information.
In the case of an EFI-aware OS, ExitBootServices()can be a choice to provide this hook.
The currently executing EFI OS loader image calls ExitBootServices()to terminate all boot
services. After ExitBootServices() successfully completes, the loader becomes responsible
for the continued operation of the system.
On a normal boot, ExitBootServices() checks if the platform supports S3 by looking for
EFI_ACPI_S3_SAVE_PROTOCOL. If the protocol exists, ExitBootServices()will assume
that the target platform supports an S3 resume and then call EFI_ACPI_S3_SAVE_PROTOCOL
to save the S3 resume information. The entire Framework boot script table will then be generated,
assuming the platform currently is in the preboot state.
@param GetLegacyMemorySize
Gets the size of legacy memory below 1 MB that is required for S3 resume.
@param S3Save
Prepare all information for an S3 resume.
**/
struct _EFI_ACPI_S3_SAVE_PROTOCOL {
EFI_ACPI_GET_LEGACY_MEMORY_SIZE GetLegacyMemorySize;
EFI_ACPI_S3_SAVE S3Save;

@ -7,9 +7,7 @@
- Ensure that tables are properly aligned and use correct types of memory.
- Update checksum values and IDs.
- Complete the final installation of the tables.
This is defined in the ACPI Specification 0.9.
Copyright (c) 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
@ -19,6 +17,10 @@
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@par Revision Reference:
This Protocol is defined in Framework of ACPI Specification.
Version 0.9.
**/
#ifndef _ACPI_SUPPORT_PROTOCOL_H_
@ -119,6 +121,11 @@ EFI_STATUS
Causes one or more versions of the ACPI tables to be published in
the EFI system configuration tables.
The PublishTables() function installs the ACPI tables for the versions that are specified in
Version. No tables are published for Version equal to EFI_ACPI_VERSION_NONE. Once
published, tables will continue to be updated as tables are modified with
EFI_ACPI_SUPPORT_PROTOCOL.SetAcpiTable().
@param This A pointer to the EFI_ACPI_SUPPORT_PROTOCOL instance.
@param Version Indicates to which version(s) of ACPI that the table should be published.
@ -137,7 +144,6 @@ EFI_STATUS
// ACPI Support Protocol
//
/**
@par Protocol Description:
This protocol provides some basic services to support publishing ACPI system
tables. The services handle many of the more mundane tasks that are required
to publish a set of tables.

@ -101,7 +101,6 @@ typedef struct {
// *******************************************************
//
/**
@par Protocol Description:
Provides the basic memory and I/O interfaces that are used to abstract
accesses to devices in a system.

@ -101,10 +101,10 @@ EFI_STATUS
IN BOOLEAN UseDatabase,
IN FRAMEWORK_EFI_HII_HANDLE *Handle,
IN UINTN HandleCount,
IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL
IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL
IN EFI_HANDLE CallbackHandle, OPTIONAL
IN UINT8 *NvMapOverride, OPTIONAL
IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL
IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL
OUT BOOLEAN *ResetRequired OPTIONAL
);

@ -178,7 +178,7 @@ EFI_STATUS
(EFIAPI *EFI_FORM_CALLBACK)(
IN EFI_FORM_CALLBACK_PROTOCOL *This,
IN UINT16 KeyValue,
IN FRAMEWORK_EFI_IFR_DATA_ARRAY *Data,
IN FRAMEWORK_EFI_IFR_DATA_ARRAY *Data,
OUT EFI_HII_CALLBACK_PACKET **Packet
);

@ -311,7 +311,7 @@ typedef struct _EFI_HII_VARIABLE_PACK_LIST {
@param This A pointer to the EFI_HII_PROTOCOL instance.
@param Packages A pointer to an EFI_HII_PACKAGES package instance.
@param Handle A pointer to the FRAMEWORK_EFI_HII_HANDLE instance.
@param Handle A pointer to the FRAMEWORK_EFI_HII_HANDLE instance.
@retval EFI_SUCCESS Data was extracted from Packages, the database
was updated with the data, and Handle returned successfully.

@ -355,7 +355,8 @@ EFI_STATUS
@retval EFI_SUCCESS The modes were accepted without any errors.
@retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
Or Device is invalid.
Or Device is invalid,
Or IdentifyData is NULL.
**/
typedef

@ -144,6 +144,7 @@ typedef enum {
@retval EFI_SUCCESS Success
@retval EFI_OUT_OF_RESOURCES If SubmitResources ( ) could not allocate resources
@retval EFI_INVALID_PARAMETER The Phase is invalid
@retval EFI_NOT_READY This phase cannot be entered at this time
@retval EFI_DEVICE_ERROR SetResources failed due to HW error.
@ -168,6 +169,7 @@ EFI_STATUS
@retval EFI_SUCCESS Success
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
@retval EFI_NOT_FOUND There are no more PCI root bridge device handles.
**/
typedef
@ -265,7 +267,7 @@ EFI_STATUS
@retval EFI_INVALID_PARAMETER Configuration is NULL
@retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI resource descriptor
@retval EFI_INVALID_PARAMETER Configuration includes a resource descriptor of unsupported type
**/
typedef
EFI_STATUS

@ -41,7 +41,18 @@ typedef enum {
} EFI_USB_SMI_TYPE;
typedef struct {
///
/// Describes whether this child handler will be invoked in response to a USB legacy
/// emulation event, such as port-trap on the PS/2* keyboard control registers, or to a
/// USB wake event, such as resumption from a sleep state.
///
EFI_USB_SMI_TYPE Type;
///
/// The device path is part of the context structure and describes the location of the
/// particular USB host controller in the system for which this register event will occur.
/// This location is important because of the possible integration of several USB host
/// controllers in a system.
///
EFI_DEVICE_PATH_PROTOCOL *Device;
} EFI_SMM_USB_DISPATCH_CONTEXT;