From 87fc0601fa9a98d5f86a81fc20d2cc8ef936e064 Mon Sep 17 00:00:00 2001 From: Hao A Wu Date: Mon, 27 May 2019 14:22:37 +0800 Subject: Remove IntelFrameworkPkg REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1604 Please note a subsequent commit will followed to update the information in Maintainers.txt to reflect this package removal. Cc: Andrew Fish Cc: Leif Lindholm Cc: Michael D Kinney Signed-off-by: Hao A Wu Acked-by: Laszlo Ersek Reviewed-by: Liming Gao Reviewed-by: Ray Ni --- IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h | 122 -- IntelFrameworkPkg/Include/Protocol/AcpiSupport.h | 142 -- .../Include/Protocol/BootScriptSave.h | 80 - IntelFrameworkPkg/Include/Protocol/CpuIo.h | 40 - IntelFrameworkPkg/Include/Protocol/DataHub.h | 216 --- .../Include/Protocol/FirmwareVolume.h | 340 ----- .../Protocol/FrameworkFirmwareVolumeBlock.h | 347 ----- .../Include/Protocol/FrameworkFormBrowser.h | 169 --- .../Include/Protocol/FrameworkFormCallback.h | 216 --- IntelFrameworkPkg/Include/Protocol/FrameworkHii.h | 1026 ------------- .../Include/Protocol/FrameworkMpService.h | 656 --------- IntelFrameworkPkg/Include/Protocol/Legacy8259.h | 291 ---- IntelFrameworkPkg/Include/Protocol/LegacyBios.h | 1553 -------------------- .../Include/Protocol/LegacyBiosPlatform.h | 755 ---------- .../Include/Protocol/LegacyInterrupt.h | 122 -- IntelFrameworkPkg/Include/Protocol/LegacyRegion.h | 119 -- .../Include/Protocol/SectionExtraction.h | 155 -- IntelFrameworkPkg/Include/Protocol/SmmAccess.h | 124 -- IntelFrameworkPkg/Include/Protocol/SmmBase.h | 304 ---- IntelFrameworkPkg/Include/Protocol/SmmControl.h | 174 --- IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h | 82 -- .../Include/Protocol/SmmCpuSaveState.h | 169 --- .../Include/Protocol/SmmGpiDispatch.h | 130 -- .../Include/Protocol/SmmIchnDispatch.h | 183 --- .../Include/Protocol/SmmPeriodicTimerDispatch.h | 170 --- .../Include/Protocol/SmmPowerButtonDispatch.h | 135 -- .../Include/Protocol/SmmStandbyButtonDispatch.h | 137 -- IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h | 145 -- IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h | 129 -- .../Include/Protocol/SmmUsbDispatch.h | 130 -- 30 files changed, 8361 deletions(-) delete mode 100644 IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/AcpiSupport.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/BootScriptSave.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/CpuIo.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/DataHub.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/FrameworkHii.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/Legacy8259.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/LegacyBios.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/LegacyRegion.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SectionExtraction.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmAccess.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmBase.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmControl.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h delete mode 100644 IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h (limited to 'IntelFrameworkPkg/Include/Protocol') diff --git a/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h b/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h deleted file mode 100644 index 67e6327..0000000 --- a/IntelFrameworkPkg/Include/Protocol/AcpiS3Save.h +++ /dev/null @@ -1,122 +0,0 @@ -/** @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. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of S3 Resume Boot Path Spec. - Version 0.9. - -**/ - -#ifndef _ACPI_S3_SAVE_PROTOCOL_H_ -#define _ACPI_S3_SAVE_PROTOCOL_H_ - -// -// Forward reference for pure ANSI compatability -// -typedef struct _EFI_ACPI_S3_SAVE_PROTOCOL EFI_ACPI_S3_SAVE_PROTOCOL; - -// -// S3 Save Protocol GUID -// -#define EFI_ACPI_S3_SAVE_GUID \ - { \ - 0x125f2de1, 0xfb85, 0x440c, {0xa5, 0x4c, 0x4d, 0x99, 0x35, 0x8a, 0x8d, 0x38 } \ - } - -// -// Protocol Data Structures -// - -/** - This function is used to: - - - 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 legacy memory length (meaning 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 caller's 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_S3_SAVE)( - IN EFI_ACPI_S3_SAVE_PROTOCOL * This, - IN VOID * LegacyMemoryAddress - ); - -/** - This function returns the size of the legacy memory (meaning 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. After getting the size of legacy memory - below, 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 Size The returned size of legacy memory below 1MB. - - @retval EFI_SUCCESS Size was successfully returned. - @retval EFI_INVALID_PARAMETER The pointer Size is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE)( - IN EFI_ACPI_S3_SAVE_PROTOCOL * This, - OUT UINTN * Size -); - -/** - The EFI_ACPI_S3_SAVE_PROTOCOL is responsible for preparing all the information that the - Framework needs to restore the platform's 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. - - The 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. Where to call this protocol to save information is implementation-specific. - 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. -**/ -struct _EFI_ACPI_S3_SAVE_PROTOCOL { - /// - /// Gets the size of legacy memory below 1 MB that is required for S3 resume. - /// - EFI_ACPI_GET_LEGACY_MEMORY_SIZE GetLegacyMemorySize; - - /// - /// Prepare all information for an S3 resume. - /// - EFI_ACPI_S3_SAVE S3Save; -}; - -extern EFI_GUID gEfiAcpiS3SaveProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/AcpiSupport.h b/IntelFrameworkPkg/Include/Protocol/AcpiSupport.h deleted file mode 100644 index d900597..0000000 --- a/IntelFrameworkPkg/Include/Protocol/AcpiSupport.h +++ /dev/null @@ -1,142 +0,0 @@ -/** @file - 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. The - services will: - - Generate common tables. - - Update the table links. - - Ensure that tables are properly aligned and use correct types of memory. - - Update checksum values and IDs. - - Complete the final installation of the tables. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework ACPI Specification. - Version 0.9. - -**/ - -#ifndef _ACPI_SUPPORT_PROTOCOL_H_ -#define _ACPI_SUPPORT_PROTOCOL_H_ - -#include - -typedef struct _EFI_ACPI_SUPPORT_PROTOCOL EFI_ACPI_SUPPORT_PROTOCOL; - -// -// ACPI Support Protocol GUID -// -#define EFI_ACPI_SUPPORT_GUID \ - { \ - 0xdbff9d55, 0x89b7, 0x46da, {0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d } \ - } - - -// -// Protocol Member Functions -// - -/** - Returns a requested ACPI table. - - @param This A pointer to the EFI_ACPI_SUPPORT_PROTOCOL instance. - @param Index The zero-based index of the table to retrieve. - @param Table The pointer for returning the table buffer. - @param Version Updated with the ACPI versions to which this table belongs. - @param Handle The pointer for identifying the table. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_NOT_FOUND The requested index is too large and a table was not found. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_ACPI_GET_ACPI_TABLE)( - IN EFI_ACPI_SUPPORT_PROTOCOL *This, - IN INTN Index, - OUT VOID **Table, - OUT EFI_ACPI_TABLE_VERSION *Version, - OUT UINTN *Handle - ); - -/** - Used to add, remove, or update ACPI tables. - - @param This A pointer to the EFI_ACPI_SUPPORT_PROTOCOL instance. - @param Table The pointer to the new table to add or update. - @param Checksum If TRUE, indicates that the checksum should be - calculated for this table. - @param Version Indicates to which version(s) of ACPI the table should be added. - @param Handle The pointer to the handle of the table to remove or update. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_INVALID_PARAMETER *Handle was zero and Table was NULL. - @retval EFI_ABORTED Could not complete the desired action. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_ACPI_SET_ACPI_TABLE)( - IN EFI_ACPI_SUPPORT_PROTOCOL *This, - IN VOID *Table OPTIONAL, - IN BOOLEAN Checksum, - IN EFI_ACPI_TABLE_VERSION Version, - IN OUT UINTN *Handle - ); - -/** - 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 the table should be published. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_ABORTED An error occurred and the function could not complete successfully. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_ACPI_PUBLISH_TABLES)( - IN EFI_ACPI_SUPPORT_PROTOCOL *This, - IN EFI_ACPI_TABLE_VERSION Version - ); - -// -// ACPI Support Protocol -// -/** - 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. -**/ -struct _EFI_ACPI_SUPPORT_PROTOCOL { - /// - /// Returns a table specified by an index if it exists. - /// - EFI_ACPI_GET_ACPI_TABLE GetAcpiTable; - - /// - /// Adds, removes, or updates ACPI tables. - /// - EFI_ACPI_SET_ACPI_TABLE SetAcpiTable; - - /// - /// Publishes the ACPI tables. - /// - EFI_ACPI_PUBLISH_TABLES PublishTables; -}; - -// -// Extern the GUID for protocol users. -// -extern EFI_GUID gEfiAcpiSupportProtocolGuid; - -#endif - diff --git a/IntelFrameworkPkg/Include/Protocol/BootScriptSave.h b/IntelFrameworkPkg/Include/Protocol/BootScriptSave.h deleted file mode 100644 index 0a9976f..0000000 --- a/IntelFrameworkPkg/Include/Protocol/BootScriptSave.h +++ /dev/null @@ -1,80 +0,0 @@ -/** @file - This protocol is used to store or record various boot scripts into boot - script tables. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol defined in the Boot Script Specification, Version 0.91. - -**/ - -#ifndef _BOOT_SCRIPT_SAVE_PROTOCOL_H_ -#define _BOOT_SCRIPT_SAVE_PROTOCOL_H_ - -/// -/// S3 Save Protocol GUID. -/// -#define EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID \ - { \ - 0x470e1529, 0xb79e, 0x4e32, {0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 } \ - } - -typedef struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL EFI_BOOT_SCRIPT_SAVE_PROTOCOL; - -/** - Adds a record into a specified Framework boot script table. - - @param This A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance. - @param TableName The name of the script table. Currently, the only meaningful - value is EFI_ACPI_S3_RESUME_SCRIPT_TABLE. - @param OpCode The operation code (opcode) number. - @param ... The argument list that is specific to each opcode. - - @retval EFI_SUCCESS The operation succeeded. A record was added into the specified script table. - @retval EFI_INVALID_PARAMETER The parameter is illegal, or the given boot script is not supported. - @retval EFI_OUT_OF_RESOURCES There is insufficient memory to store the boot script. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_BOOT_SCRIPT_WRITE)( - IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL *This, - IN UINT16 TableName, - IN UINT16 OpCode, - ... - ); - -/** - Closes the specified script table. - - @param This A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance. - @param TableName The name of the script table. - @param Address A pointer to the physical address where the table begins. - - @retval EFI_SUCCESS The table was successfully returned. - @retval EFI_NOT_FOUND The specified table was not created previously. - @retval EFI_OUT_OF_RESOURCES Memory is insufficient to hold the reorganized boot script table. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_BOOT_SCRIPT_CLOSE_TABLE)( - IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL *This, - IN UINT16 TableName, - OUT EFI_PHYSICAL_ADDRESS *Address - ); - -/// -/// The EFI_BOOT_SCRIPT_SAVE_PROTOCOL publishes the Framework boot script abstractions -/// to store or record various boot scripts into boot script tables. -/// -struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL { - EFI_BOOT_SCRIPT_WRITE Write; ///< Writes various boot scripts to a boot script table. - EFI_BOOT_SCRIPT_CLOSE_TABLE CloseTable; ///< Retrieves and closes a script table. -}; - -extern EFI_GUID gEfiBootScriptSaveProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/CpuIo.h b/IntelFrameworkPkg/Include/Protocol/CpuIo.h deleted file mode 100644 index 18741df..0000000 --- a/IntelFrameworkPkg/Include/Protocol/CpuIo.h +++ /dev/null @@ -1,40 +0,0 @@ -/** @file - This code abstracts the CPU IO Protocol which installed by some platform or chipset-specific - PEIM that abstracts the processor-visible I/O operations. - - Note: This is a runtime protocol and can be used by runtime drivers after ExitBootServices(). - It is different from the PI 1.2 CPU I/O 2 Protocol, which is a boot services only protocol - and may not be used by runtime drivers after ExitBootServices(). - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - CPU IO Protocol is defined in Framework of EFI CPU IO Protocol Spec - Version 0.9. - -**/ - -#ifndef _CPUIO_H_ -#define _CPUIO_H_ - -#include - -#define EFI_CPU_IO_PROTOCOL_GUID \ - { \ - 0xB0732526, 0x38C8, 0x4b40, {0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45 } \ - } - -// -// Framework CPU IO protocol structure is the same as CPU IO 2 protocol defined in PI 1.2 spec. -// However, there is a significant different between the Framework CPU I/O -// Protocol and the PI 1.2 CPU I/O 2 Protocol. The Framework one is a runtime -// protocol, which means it can be used by runtime drivers after ExitBootServices(). -// The PI one is not runtime safe, so it is a boot services only protocol and may -// not be used by runtime drivers after ExitBootServices(). -// -typedef EFI_CPU_IO2_PROTOCOL EFI_CPU_IO_PROTOCOL; - -extern EFI_GUID gEfiCpuIoProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/DataHub.h b/IntelFrameworkPkg/Include/Protocol/DataHub.h deleted file mode 100644 index 56bbcdd..0000000 --- a/IntelFrameworkPkg/Include/Protocol/DataHub.h +++ /dev/null @@ -1,216 +0,0 @@ -/** @file - The data hub protocol is used both by agents wishing to log - data and those wishing to be made aware of all information that - has been logged. This protocol may only be called <= TPL_NOTIFY. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - The Data Hub Protocol is defined in Framework for EFI Data Hub Specification - Version 0.9. - -**/ - -#ifndef __DATA_HUB_H__ -#define __DATA_HUB_H__ - -#define EFI_DATA_HUB_PROTOCOL_GUID \ - { \ - 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \ - } - -// -// EFI generic Data Hub Header -// -// A Data Record is an EFI_DATA_RECORD_HEADER followed by RecordSize bytes of -// data. The format of the data is defined by the DataRecordGuid. -// -// If EFI_DATA_RECORD_HEADER is extended in the future, the Version number and HeaderSize must -// change. -// -// The logger is responcible for initializing: -// Version, HeaderSize, RecordSize, DataRecordGuid, DataRecordClass -// -// The Data Hub driver is responcible for initializing: -// LogTime and LogMonotonicCount. -// -#define EFI_DATA_RECORD_HEADER_VERSION 0x0100 -typedef struct { - UINT16 Version; - UINT16 HeaderSize; - UINT32 RecordSize; - EFI_GUID DataRecordGuid; - EFI_GUID ProducerName; - UINT64 DataRecordClass; - EFI_TIME LogTime; - UINT64 LogMonotonicCount; -} EFI_DATA_RECORD_HEADER; - -// -// Definition of DataRecordClass. These are used to filter out class types -// at a very high level. The DataRecordGuid still defines the format of -// the data. See the Data Hub Specification for rules on what can and can not be a -// new DataRecordClass -// -#define EFI_DATA_RECORD_CLASS_DEBUG 0x0000000000000001 -#define EFI_DATA_RECORD_CLASS_ERROR 0x0000000000000002 -#define EFI_DATA_RECORD_CLASS_DATA 0x0000000000000004 -#define EFI_DATA_RECORD_CLASS_PROGRESS_CODE 0x0000000000000008 - -// -// Forward reference for pure ANSI compatability -// -typedef struct _EFI_DATA_HUB_PROTOCOL EFI_DATA_HUB_PROTOCOL; - -/** - Logs a data record to the system event log. - - @param This The EFI_DATA_HUB_PROTOCOL instance. - @param DataRecordGuid A GUID that indicates the format of the data passed into RawData. - @param ProducerName A GUID that indicates the identity of the caller to this API. - @param DataRecordClass This class indicates the generic type of the data record. - @param RawData The DataRecordGuid-defined data to be logged. - @param RawDataSize The size in bytes of RawData. - - @retval EFI_SUCCESS Data was logged. - @retval EFI_OUT_OF_RESOURCES Data was not logged due to lack of system resources. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_DATA_HUB_LOG_DATA)( - IN EFI_DATA_HUB_PROTOCOL *This, - IN EFI_GUID *DataRecordGuid, - IN EFI_GUID *ProducerName, - IN UINT64 DataRecordClass, - IN VOID *RawData, - IN UINT32 RawDataSize - ); - -/** - Allows the system data log to be searched. - - @param This The EFI_DATA_HUB_PROTOCOL instance. - @param MonotonicCount On input, it specifies the Record to return. - An input of zero means to return the first record, - as does an input of one. - @param FilterDriver If FilterDriver is not passed in a MonotonicCount - of zero, it means to return the first data record. - If FilterDriver is passed in, then a MonotonicCount - of zero means to return the first data not yet read - by FilterDriver. - @param Record Returns a dynamically allocated memory buffer with - a data record that matches MonotonicCount. - - @retval EFI_SUCCESS Data was returned in Record. - @retval EFI_INVALID_PARAMETER FilterDriver was passed in but does not exist. - @retval EFI_NOT_FOUND MonotonicCount does not match any data record - in the system. If a MonotonicCount of zero was - passed in, then no data records exist in the system. - @retval EFI_OUT_OF_RESOURCES Record was not returned due to lack - of system resources. - @note Inconsistent with specification here: - In Framework for EFI Data Hub Specification, Version 0.9, This definition - is named as EFI_DATA_HUB_GET_NEXT_DATA_RECORD. The inconsistency is - maintained for backward compatibility. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_DATA_HUB_GET_NEXT_RECORD)( - IN EFI_DATA_HUB_PROTOCOL *This, - IN OUT UINT64 *MonotonicCount, - IN EFI_EVENT *FilterDriver OPTIONAL, - OUT EFI_DATA_RECORD_HEADER **Record - ); - -/** - Registers an event to be signaled every time a data record is logged in the system. - - @param This The EFI_DATA_HUB_PROTOCOL instance. - @param FilterEvent The EFI_EVENT to signal whenever data that matches - FilterClass is logged in the system. - @param FilterTpl The maximum EFI_TPL at which FilterEvent can be - signaled. It is strongly recommended that you use - the lowest EFI_TPL possible. - @param FilterClass FilterEvent will be signaled whenever a bit - in EFI_DATA_RECORD_HEADER.DataRecordClass is also - set in FilterClass. If FilterClass is zero, no - class-based filtering will be performed. - @param FilterDataRecordGuid FilterEvent will be signaled whenever - FilterDataRecordGuid matches - EFI_DATA_RECORD_HEADER.DataRecordGuid. - If FilterDataRecordGuid is NULL, then no GUID-based - filtering will be performed. - - @retval EFI_SUCCESS The filter driver event was registered - @retval EFI_ALREADY_STARTED FilterEvent was previously registered and cannot - be registered again. - @retval EFI_OUT_OF_RESOURCES The filter driver event was not registered - due to lack of system resources. - @note Inconsistent with specification here: - In Framework for EFI Data Hub Specification, Version 0.9, This definition - is named as EFI_DATA_HUB_REGISTER_DATA_FILTER_DRIVER. The inconsistency - is maintained for backward compatibility. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_DATA_HUB_REGISTER_FILTER_DRIVER)( - IN EFI_DATA_HUB_PROTOCOL *This, - IN EFI_EVENT FilterEvent, - IN EFI_TPL FilterTpl, - IN UINT64 FilterClass, - IN EFI_GUID *FilterDataRecordGuid OPTIONAL - ); - -/** - Stops a filter driver from being notified when data records are logged. - - @param This The EFI_DATA_HUB_PROTOCOL instance. - @param FilterEvent The EFI_EVENT to remove from the list of events to be - signaled every time errors are logged. - - @retval EFI_SUCCESS The filter driver represented by FilterEvent was shut off. - @retval EFI_NOT_FOUND FilterEvent did not exist. - @note Inconsistent with specification here: - In Framework for EFI Data Hub Specification, Version 0.9, This definition - is named as EFI_DATA_HUB_UNREGISTER_DATA_FILTER_DRIVER. The inconsistency - is maintained for backward compatibility. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER)( - IN EFI_DATA_HUB_PROTOCOL *This, - IN EFI_EVENT FilterEvent - ); - -/** - This protocol is used to log information and register filter drivers - to receive data records. -**/ -struct _EFI_DATA_HUB_PROTOCOL { - /// - /// Logs a data record. - /// - EFI_DATA_HUB_LOG_DATA LogData; - - /// - /// Gets a data record. Used both to view the memory-based log and to - /// get information about which data records have been consumed by a filter driver. - /// - EFI_DATA_HUB_GET_NEXT_RECORD GetNextRecord; - - /// - /// Allows the registration of an EFI event to act as a filter driver for all data records that are logged. - /// - EFI_DATA_HUB_REGISTER_FILTER_DRIVER RegisterFilterDriver; - - /// - /// Used to remove a filter driver that was added with RegisterFilterDriver(). - /// - EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER UnregisterFilterDriver; -}; - -extern EFI_GUID gEfiDataHubProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h b/IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h deleted file mode 100644 index 5e0216c..0000000 --- a/IntelFrameworkPkg/Include/Protocol/FirmwareVolume.h +++ /dev/null @@ -1,340 +0,0 @@ -/** @file - This file declares the Firmware Volume Protocol. - - The Firmware Volume Protocol provides file-level access to the firmware volume. - Each firmware volume driver must produce an instance of the Firmware Volume - Protocol if the firmware volume is to be visible to the system. The Firmware - Volume Protocol also provides mechanisms for determining and modifying some - attributes of the firmware volume. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Firmware Volume specification. - Version 0.9. - -**/ - -#ifndef _FIRMWARE_VOLUME_H_ -#define _FIRMWARE_VOLUME_H_ - - -// -// Firmware Volume Protocol GUID definition -// -#define EFI_FIRMWARE_VOLUME_PROTOCOL_GUID \ - { \ - 0x389F751F, 0x1838, 0x4388, {0x83, 0x90, 0xCD, 0x81, 0x54, 0xBD, 0x27, 0xF8 } \ - } - -#define FV_DEVICE_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', '_') - -typedef struct _EFI_FIRMWARE_VOLUME_PROTOCOL EFI_FIRMWARE_VOLUME_PROTOCOL; - -// -// FRAMEWORK_EFI_FV_ATTRIBUTES bit definitions -// -typedef UINT64 FRAMEWORK_EFI_FV_ATTRIBUTES; - -// -// ************************************************************ -// FRAMEWORK_EFI_FV_ATTRIBUTES bit definitions -// ************************************************************ -// -#define EFI_FV_READ_DISABLE_CAP 0x0000000000000001ULL -#define EFI_FV_READ_ENABLE_CAP 0x0000000000000002ULL -#define EFI_FV_READ_STATUS 0x0000000000000004ULL - -#define EFI_FV_WRITE_DISABLE_CAP 0x0000000000000008ULL -#define EFI_FV_WRITE_ENABLE_CAP 0x0000000000000010ULL -#define EFI_FV_WRITE_STATUS 0x0000000000000020ULL - -#define EFI_FV_LOCK_CAP 0x0000000000000040ULL -#define EFI_FV_LOCK_STATUS 0x0000000000000080ULL -#define EFI_FV_WRITE_POLICY_RELIABLE 0x0000000000000100ULL - -#define EFI_FV_ALIGNMENT_CAP 0x0000000000008000ULL -#define EFI_FV_ALIGNMENT_2 0x0000000000010000ULL -#define EFI_FV_ALIGNMENT_4 0x0000000000020000ULL -#define EFI_FV_ALIGNMENT_8 0x0000000000040000ULL -#define EFI_FV_ALIGNMENT_16 0x0000000000080000ULL -#define EFI_FV_ALIGNMENT_32 0x0000000000100000ULL -#define EFI_FV_ALIGNMENT_64 0x0000000000200000ULL -#define EFI_FV_ALIGNMENT_128 0x0000000000400000ULL -#define EFI_FV_ALIGNMENT_256 0x0000000000800000ULL -#define EFI_FV_ALIGNMENT_512 0x0000000001000000ULL -#define EFI_FV_ALIGNMENT_1K 0x0000000002000000ULL -#define EFI_FV_ALIGNMENT_2K 0x0000000004000000ULL -#define EFI_FV_ALIGNMENT_4K 0x0000000008000000ULL -#define EFI_FV_ALIGNMENT_8K 0x0000000010000000ULL -#define EFI_FV_ALIGNMENT_16K 0x0000000020000000ULL -#define EFI_FV_ALIGNMENT_32K 0x0000000040000000ULL -#define EFI_FV_ALIGNMENT_64K 0x0000000080000000ULL - -// -// Protocol API definitions -// - -/** - Retrieves attributes, insures positive polarity of attribute bits, and returns - resulting attributes in an output parameter. - - @param This Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance. - @param Attributes Output buffer containing attributes. - - @retval EFI_SUCCESS The firmware volume attributes were returned. -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FV_GET_ATTRIBUTES)( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes - ); - -/** - Sets volume attributes - - @param This Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance. - @param Attributes On input, Attributes is a pointer to an - EFI_FV_ATTRIBUTES containing the desired firmware - volume settings. On successful return, it contains - the new settings of the firmware volume. On - unsuccessful return, Attributes is not modified - and the firmware volume settings are not changed. - - @retval EFI_INVALID_PARAMETER A bit in Attributes was invalid. - @retval EFI_SUCCESS The requested firmware volume attributes were set - and the resulting EFI_FV_ATTRIBUTES is returned in - Attributes. - @retval EFI_ACCESS_DENIED The Device is locked and does not permit modification. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FV_SET_ATTRIBUTES)( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN OUT FRAMEWORK_EFI_FV_ATTRIBUTES *Attributes - ); - -/** - Read the requested file (NameGuid) or file information from the firmware volume - and returns data in Buffer. - - @param This The EFI_FIRMWARE_VOLUME_PROTOCOL instance. - @param NameGuid The pointer to EFI_GUID, which is the filename of - the file to read. - @param Buffer The pointer to pointer to buffer in which contents of file are returned. -
- If Buffer is NULL, only type, attributes, and size - are returned as there is no output buffer. -
- If Buffer != NULL and *Buffer == NULL, the output - buffer is allocated from BS pool by ReadFile. -
- If Buffer != NULL and *Buffer != NULL, the output - buffer has been allocated by the caller and is being - passed in. - @param BufferSize On input: The buffer size. On output: The size - required to complete the read. - @param FoundType The pointer to the type of the file whose data - is returned. - @param FileAttributes The pointer to attributes of the file whose data - is returned. - @param AuthenticationStatus The pointer to the authentication status of the data. - - @retval EFI_SUCCESS The call completed successfully. - @retval EFI_WARN_BUFFER_TOO_SMALL The buffer is too small to contain the requested output. - The buffer filled, and the output is truncated. - @retval EFI_NOT_FOUND NameGuid was not found in the firmware volume. - @retval EFI_DEVICE_ERROR A hardware error occurred when attempting to - access the firmware volume. - @retval EFI_ACCESS_DENIED The firmware volume is configured to disallow reads. - @retval EFI_OUT_OF_RESOURCES An allocation failure occurred. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FV_READ_FILE)( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN EFI_GUID *NameGuid, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT EFI_FV_FILETYPE *FoundType, - OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, - OUT UINT32 *AuthenticationStatus - ); - -/** - Read the requested section from the specified file and returns data in Buffer. - - @param This Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance. - @param NameGuid Filename identifying the file from which to read. - @param SectionType The section type to retrieve. - @param SectionInstance The instance of SectionType to retrieve. - @param Buffer Pointer to pointer to buffer in which contents of - a file are returned. -
- If Buffer is NULL, only type, attributes, and size - are returned as there is no output buffer. -
- If Buffer != NULL and *Buffer == NULL, the output - buffer is allocated from BS pool by ReadFile. -
- If Buffer != NULL and *Buffer != NULL, the output - buffer has been allocated by the caller and is being - passed in. - @param BufferSize The pointer to the buffer size passed in, and on - output the size required to complete the read. - @param AuthenticationStatus The pointer to the authentication status of the data. - - @retval EFI_SUCCESS The call completed successfully. - @retval EFI_WARN_BUFFER_TOO_SMALL The buffer is too small to contain the requested output. - The buffer is filled and the output is truncated. - @retval EFI_OUT_OF_RESOURCES An allocation failure occurred. - @retval EFI_NOT_FOUND The name was not found in the firmware volume. - @retval EFI_DEVICE_ERROR A hardware error occurred when attempting to - access the firmware volume. - @retval EFI_ACCESS_DENIED The firmware volume is configured to disallow reads. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FV_READ_SECTION)( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN EFI_GUID *NameGuid, - IN EFI_SECTION_TYPE SectionType, - IN UINTN SectionInstance, - IN OUT VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT UINT32 *AuthenticationStatus - ); - -typedef UINT32 FRAMEWORK_EFI_FV_WRITE_POLICY; - -#define FRAMEWORK_EFI_FV_UNRELIABLE_WRITE 0x00000000 -#define FRAMEWORK_EFI_FV_RELIABLE_WRITE 0x00000001 - -typedef struct { - EFI_GUID *NameGuid; - EFI_FV_FILETYPE Type; - EFI_FV_FILE_ATTRIBUTES FileAttributes; - VOID *Buffer; - UINT32 BufferSize; -} FRAMEWORK_EFI_FV_WRITE_FILE_DATA; - -/** - Write the supplied file (NameGuid) to the FV. - - @param This Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance. - @param NumberOfFiles Indicates the number of file records pointed to - by FileData. - @param WritePolicy Indicates the level of reliability of the write - with respect to things like power failure events. - @param FileData A pointer to an array of EFI_FV_WRITE_FILE_DATA - structures. Each element in the array indicates - a file to write, and there are NumberOfFiles - elements in the input array. - - @retval EFI_SUCCESS The write completed successfully. - @retval EFI_OUT_OF_RESOURCES The firmware volume does not have enough free - space to store file(s). - @retval EFI_DEVICE_ERROR A hardware error occurred when attempting to - access the firmware volume. - @retval EFI_WRITE_PROTECTED The firmware volume is configured to disallow writes. - @retval EFI_NOT_FOUND A delete was requested, but the requested file was - not found in the firmware volume. - @retval EFI_INVALID_PARAMETER A delete was requested with a multiple file write. - An unsupported WritePolicy was requested. - An unknown file type was specified. - A file system specific error has occurred. -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FV_WRITE_FILE)( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN UINT32 NumberOfFiles, - IN FRAMEWORK_EFI_FV_WRITE_POLICY WritePolicy, - IN FRAMEWORK_EFI_FV_WRITE_FILE_DATA *FileData - ); - -/** - Given the input key, search for the next matching file in the volume. - - @param This Indicates the EFI_FIRMWARE_VOLUME_PROTOCOL instance. - @param Key Pointer to a caller allocated buffer that contains - an implementation-specific key that is used to track - where to begin searching on successive calls. - @param FileType The pointer to the file type to filter for. - @param NameGuid The pointer to Guid filename of the file found. - @param Attributes The pointer to Attributes of the file found. - @param Size The pointer to Size in bytes of the file found. - - @retval EFI_SUCCESS The output parameters are filled with data obtained from - the first matching file that was found. - @retval EFI_NOT_FOUND No files of type FileType were found. - @retval EFI_DEVICE_ERROR A hardware error occurred when attempting to access - the firmware volume. - @retval EFI_ACCESS_DENIED The firmware volume is configured to disallow reads. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FV_GET_NEXT_FILE)( - IN EFI_FIRMWARE_VOLUME_PROTOCOL *This, - IN OUT VOID *Key, - IN OUT EFI_FV_FILETYPE *FileType, - OUT EFI_GUID *NameGuid, - OUT EFI_FV_FILE_ATTRIBUTES *Attributes, - OUT UINTN *Size - ); - -// -// Protocol interface structure -// -struct _EFI_FIRMWARE_VOLUME_PROTOCOL { - /// - /// Retrieves volume capabilities and current settings. - /// - FRAMEWORK_EFI_FV_GET_ATTRIBUTES GetVolumeAttributes; - - /// - /// Modifies the current settings of the firmware volume. - /// - FRAMEWORK_EFI_FV_SET_ATTRIBUTES SetVolumeAttributes; - - /// - /// Reads an entire file from the firmware volume. - /// - FRAMEWORK_EFI_FV_READ_FILE ReadFile; - - /// - /// Reads a single section from a file into a buffer. - /// - FRAMEWORK_EFI_FV_READ_SECTION ReadSection; - - /// - /// Writes an entire file into the firmware volume. - /// - FRAMEWORK_EFI_FV_WRITE_FILE WriteFile; - - /// - /// Provides service to allow searching the firmware volume. - /// - FRAMEWORK_EFI_FV_GET_NEXT_FILE GetNextFile; - - /// - /// Data field that indicates the size in bytes of the Key input buffer for - /// the GetNextFile() API. - /// - UINT32 KeySize; - - /// - /// Handle of the parent firmware volume. - /// - EFI_HANDLE ParentHandle; -}; - -extern EFI_GUID gEfiFirmwareVolumeProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h b/IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h deleted file mode 100644 index 8de76ef..0000000 --- a/IntelFrameworkPkg/Include/Protocol/FrameworkFirmwareVolumeBlock.h +++ /dev/null @@ -1,347 +0,0 @@ -/** @file - This file provides control over block-oriented firmware devices. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in framework spec: Firmware Volume Block Specification. - -**/ - -#ifndef __FRAMEWORK_FIRMWARE_VOLUME_BLOCK_H__ -#define __FRAMEWORK_FIRMWARE_VOLUME_BLOCK_H__ - -#define FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \ -{ 0xDE28BC59, 0x6228, 0x41BD, {0xBD, 0xF6, 0xA3, 0xB9, 0xAD,0xB5, 0x8D, 0xA1 } } - -typedef struct _FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL; -/// -/// The type of EFI FVB attribute per the Framework specification. -/// -typedef UINT32 EFI_FVB_ATTRIBUTES; - -/** - The GetAttributes() function retrieves the attributes and - current settings of the block. - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. - - @param Attributes Pointer to EFI_FVB_ATTRIBUTES in which the - attributes and current settings are - returned. - - @retval EFI_SUCCESS The firmware volume attributes were - returned. - -**/ -typedef -EFI_STATUS -(EFIAPI * FRAMEWORK_EFI_FVB_GET_ATTRIBUTES)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - OUT EFI_FVB_ATTRIBUTES *Attributes -); - - -/** - The SetAttributes() function sets configurable firmware volume - attributes and returns the new settings of the firmware volume. - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. - - @param Attributes On input, Attributes is a pointer to - EFI_FVB_ATTRIBUTES that contains the - desired firmware volume settings. On - successful return, it contains the new - settings of the firmware volume. - - @retval EFI_SUCCESS The firmware volume attributes were returned. - - @retval EFI_INVALID_PARAMETER The attributes requested are in - conflict with the capabilities - as declared in the firmware - volume header. - -**/ -typedef -EFI_STATUS -(EFIAPI * FRAMEWORK_EFI_FVB_SET_ATTRIBUTES)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN OUT EFI_FVB_ATTRIBUTES *Attributes -); - - -/** - The GetPhysicalAddress() function retrieves the base address of - a memory-mapped firmware volume. This function should be called - only for memory-mapped firmware volumes. - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. - - @param Address Pointer to a caller-allocated - EFI_PHYSICAL_ADDRESS that, on successful - return from GetPhysicalAddress(), contains the - base address of the firmware volume. - - @retval EFI_SUCCESS The firmware volume base address is returned. - - @retval EFI_NOT_SUPPORTED The firmware volume is not memory mapped. - -**/ -typedef -EFI_STATUS -(EFIAPI * FRAMEWORK_EFI_FVB_GET_PHYSICAL_ADDRESS)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - OUT EFI_PHYSICAL_ADDRESS *Address -); - -/** - The GetBlockSize() function retrieves the size of the requested - block. It also returns the number of additional blocks with - the identical size. The GetBlockSize() function is used to - retrieve the block map (see EFI_FIRMWARE_VOLUME_HEADER). - - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. - - @param Lba Indicates the block for which to return the size. - - @param BlockSize The pointer to a caller-allocated UINTN in which - the size of the block is returned. - - @param NumberOfBlocks The pointer to a caller-allocated UINTN in - which the number of consecutive blocks, - starting with Lba, is returned. All - blocks in this range have a size of - BlockSize. - - - @retval EFI_SUCCESS The firmware volume base address was returned. - - @retval EFI_INVALID_PARAMETER The requested LBA is out of range. - -**/ -typedef -EFI_STATUS -(EFIAPI * FRAMEWORK_EFI_FVB_GET_BLOCK_SIZE)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - OUT UINTN *BlockSize, - OUT UINTN *NumberOfBlocks -); - - -/** - Reads the specified number of bytes into a buffer from the specified block. - - The Read() function reads the requested number of bytes from the - requested block and stores them in the provided buffer. - Implementations should be mindful that the firmware volume - might be in the ReadDisabled state. If it is in this state, - the Read() function must return the status code - EFI_ACCESS_DENIED without modifying the contents of the - buffer. The Read() function must also prevent spanning block - boundaries. If a read is requested that would span a block - boundary, the read must read up to the boundary but not - beyond. The output parameter NumBytes must be set to correctly - indicate the number of bytes actually read. The caller must be - aware that a read may be partially completed. - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. - - @param Lba The starting logical block index - from which to read. - - @param Offset Offset into the block at which to begin reading. - - @param NumBytes The pointer to a UINTN. At entry, *NumBytes - contains the total size of the buffer. At - exit, *NumBytes contains the total number of - bytes read. - - @param Buffer The pointer to a caller-allocated buffer that will - be used to hold the data that is read. - - @retval EFI_SUCCESS The firmware volume was read successfully - and contents are in Buffer. - - @retval EFI_BAD_BUFFER_SIZE A read was attempted across an LBA - boundary. On output, NumBytes - contains the total number of bytes - returned in Buffer. - - @retval EFI_ACCESS_DENIED The firmware volume is in the - ReadDisabled state. - - @retval EFI_DEVICE_ERROR The block device is not - functioning correctly and could - not be read. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_FVB_READ)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Offset, - IN OUT UINTN *NumBytes, - IN OUT UINT8 *Buffer -); - -/** - Writes the specified number of bytes from the input buffer to the block. - - The Write() function writes the specified number of bytes from - the provided buffer to the specified block and offset. If the - firmware volume is sticky write, the caller must ensure that - all the bits of the specified range to write are in the - EFI_FVB_ERASE_POLARITY state before calling the Write() - function, or else the result will be unpredictable. This - unpredictability arises because, for a sticky-write firmware - volume, a write may negate a bit in the EFI_FVB_ERASE_POLARITY - state but cannot flip it back again. In general, before - calling the Write() function, the caller should call the - EraseBlocks() function first to erase the specified block to - write. A block erase cycle will transition bits from the - (NOT)EFI_FVB_ERASE_POLARITY state back to the - EFI_FVB_ERASE_POLARITY state. Implementors should note - that the firmware volume might be in the WriteDisabled - state. If it is in this state, the Write() function must - return the status code EFI_ACCESS_DENIED without modifying the - contents of the firmware volume. The Write() function must - also prevent spanning block boundaries. If a write is - requested that spans a block boundary, the write must store up - to the boundary but not beyond. The output parameter NumBytes - must be set to correctly indicate the number of bytes actually - written. The caller must be aware that a write may be - partially completed. All writes, partial or otherwise, must be - fully flushed to the hardware before the Write() service - returns. - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. - - @param Lba The starting logical block index to write to. - - @param Offset Offset into the block at which to begin writing. - - @param NumBytes The pointer to a UINTN. Input: the total size of the buffer. - Output: the total number of bytes actually written. - - @param Buffer The pointer to a caller-allocated buffer that - contains the source for the write. - - @retval EFI_SUCCESS The firmware volume was written successfully. - - @retval EFI_BAD_BUFFER_SIZE The write was attempted across an - LBA boundary. On output, NumBytes - contains the total number of bytes - actually written. - - @retval EFI_ACCESS_DENIED The firmware volume is in the - WriteDisabled state. - - @retval EFI_DEVICE_ERROR The block device is malfunctioning - and could not be written. - - -**/ -typedef -EFI_STATUS -(EFIAPI * FRAMEWORK_EFI_FVB_WRITE)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Offset, - IN OUT UINTN *NumBytes, - IN UINT8 *Buffer -); - - - - -/// -/// EFI_LBA_LIST_TERMINATOR. -/// -#define FRAMEWORK_EFI_LBA_LIST_TERMINATOR 0xFFFFFFFFFFFFFFFFULL - - -/** - Erases and initializes a firmware volume block. - - The EraseBlocks() function erases one or more blocks as denoted - by the variable argument list. The entire parameter list of - blocks must be verified before erasing any blocks. If a block is - requested that does not exist within the associated firmware - volume (it has a larger index than the last block of the - firmware volume), the EraseBlocks() function must return the - status code EFI_INVALID_PARAMETER without modifying the contents - of the firmware volume. Implementors should note that - the firmware volume might be in the WriteDisabled state. If it - is in this state, the EraseBlocks() function must return the - status code EFI_ACCESS_DENIED without modifying the contents of - the firmware volume. All calls to EraseBlocks() must be fully - flushed to the hardware before the EraseBlocks() service - returns. - - @param This Indicates the FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL - instance. - - @param ... A list of tuples. - Each tuple describes a range of LBAs to erase - and consists of the following: - - An EFI_LBA that indicates the starting LBA - - A UINTN that indicates the number of blocks to - erase - - The list is terminated with an - EFI_LBA_LIST_TERMINATOR. For example, the - following indicates that two ranges of blocks - (5-7 and 10-11) are to be erased: EraseBlocks - (This, 5, 3, 10, 2, EFI_LBA_LIST_TERMINATOR); - - @retval EFI_SUCCESS The erase request successfully - completed. - - @retval EFI_ACCESS_DENIED The firmware volume is in the - WriteDisabled state. - @retval EFI_DEVICE_ERROR The block device is not functioning - correctly and could not be written. - The firmware device may have been - partially erased. - @retval EFI_INVALID_PARAMETER One or more of the LBAs listed - in the variable argument list do - not exist in the firmware volume. - -**/ -typedef -EFI_STATUS -(EFIAPI * FRAMEWORK_EFI_FVB_ERASE_BLOCKS)( - IN FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, - ... -); - -/// -/// The Firmware Volume Block Protocol is the low-level interface -/// to a firmware volume. File-level access to a firmware volume -/// should not be done using the Firmware Volume Block Protocol. -/// Normal access to a firmware volume must use the Firmware -/// Volume Protocol. Typically, only the file system driver that -/// produces the Firmware Volume Protocol will bind to the -/// Firmware Volume Block Protocol. -/// -struct _FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL { - FRAMEWORK_EFI_FVB_GET_ATTRIBUTES GetAttributes; - FRAMEWORK_EFI_FVB_SET_ATTRIBUTES SetAttributes; - FRAMEWORK_EFI_FVB_GET_PHYSICAL_ADDRESS GetPhysicalAddress; - FRAMEWORK_EFI_FVB_GET_BLOCK_SIZE GetBlockSize; - FRAMEWORK_EFI_FVB_READ Read; - FRAMEWORK_EFI_FVB_WRITE Write; - FRAMEWORK_EFI_FVB_ERASE_BLOCKS EraseBlocks; - /// - /// The handle of the parent firmware volume. - /// - EFI_HANDLE ParentHandle; -}; - -extern EFI_GUID gFramerworkEfiFirmwareVolumeBlockProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h b/IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h deleted file mode 100644 index fa9bbf1..0000000 --- a/IntelFrameworkPkg/Include/Protocol/FrameworkFormBrowser.h +++ /dev/null @@ -1,169 +0,0 @@ -/** @file - The EFI_FORM_BROWSER_PROTOCOL is the interface to the EFI - Configuration Driver. This interface enables the caller to direct the - configuration driver to use either the HII database or the passed-in - packet of data. This will also allow the caller to post messages - into the configuration drivers internal mailbox. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - Module Name: FrameworkFormBrowser.h - - @par Revision Reference: - This protocol is defined in HII spec 0.92. - -**/ - -#ifndef __FRAMEWORK_FORM_BROWSER_H__ -#define __FRAMEWORK_FORM_BROWSER_H__ - -#include - - -#define EFI_FORM_BROWSER_PROTOCOL_GUID \ - { \ - 0xe5a1333e, 0xe1b4, 0x4d55, {0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 } \ - } - -#define EFI_FORM_BROWSER_COMPATIBILITY_PROTOCOL_GUID \ - { \ - 0xfb7c852, 0xadca, 0x4853, { 0x8d, 0xf, 0xfb, 0xa7, 0x1b, 0x1c, 0xe1, 0x1a } \ - } - -typedef struct _EFI_FORM_BROWSER_PROTOCOL EFI_FORM_BROWSER_PROTOCOL; - -typedef struct { - UINT32 Length; - UINT16 Type; - UINT8 Data[1]; -} EFI_HII_PACKET; - -typedef struct { - EFI_HII_IFR_PACK *IfrData; - EFI_HII_STRING_PACK *StringData; -} EFI_IFR_PACKET; - -typedef struct { - UINTN LeftColumn; - UINTN RightColumn; - UINTN TopRow; - UINTN BottomRow; -} FRAMEWORK_EFI_SCREEN_DESCRIPTOR; - -/** - Provides direction to the configuration driver whether to use the HII - database or a passed-in set of data. This function also establishes a - pointer to the calling driver's callback interface. - - @param This A pointer to the EFI_FORM_BROWSER_PROTOCOL instance. - @param UseDatabase Determines whether the HII database is to be - used to gather information. If the value is FALSE, - the configuration driver will get the information - provided in the passed-in Packet parameters. - @param Handle A pointer to an array of HII handles to display. - This value should correspond to the value of the - HII form package that is required to be displayed. - @param HandleCount The number of handles in the array specified by Handle. - @param Packet A pointer to a set of data containing pointers to IFR - and/or string data. - @param CallbackHandle The handle to the driver's callback interface. - This parameter is used only when the UseDatabase - parameter is FALSE and an application wants to - register a callback with the browser. - @param NvMapOverride This buffer is used only when there is no NV variable - to define the current settings and the caller needs - to provide to the browser the current settings for - the "fake" NV variable. - @param ScreenDimensions Allows the browser to be called so that it occupies - a portion of the physical screen instead of dynamically - determining the screen dimensions. - @param ResetRequired This BOOLEAN value denotes whether a reset is required - based on the data that might have been changed. - The ResetRequired parameter is primarily applicable - for configuration applications, and is an - optional parameter. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_NOT_FOUND The variable was not found. - @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result. - DataSize has been updated with the size needed to - complete the request. - @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. - @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SEND_FORM)( - IN EFI_FORM_BROWSER_PROTOCOL *This, - IN BOOLEAN UseDatabase, - IN FRAMEWORK_EFI_HII_HANDLE *Handle, - IN UINTN HandleCount, - IN EFI_IFR_PACKET *Packet, OPTIONAL - IN EFI_HANDLE CallbackHandle, OPTIONAL - IN UINT8 *NvMapOverride, OPTIONAL - IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL - OUT BOOLEAN *ResetRequired OPTIONAL - ); - -/** - Routine used to abstract a generic dialog interface and return the selected - key or string. - - @param NumberOfLines The number of lines for the dialog box. - @param HotKey Defines whether a single character is parsed (TRUE) - and returned in KeyValue, or if a string is returned - in StringBuffer. - @param MaximumStringSize The maximum size in bytes of a typed-in string. - Because each character is a CHAR16, the minimum - string returned is two bytes. - @param StringBuffer The passed-in pointer to the buffer that will hold - the typed in string if HotKey is FALSE. - @param KeyValue The EFI_INPUT_KEY value returned if HotKey is TRUE. - @param String The pointer to the first string in the list of strings - that comprise the dialog box. - @param ... A series of NumberOfLines text strings that will be used - to construct the dialog box. - - @retval EFI_SUCCESS The dialog was displayed and user interaction was received. - @retval EFI_DEVICE_ERROR The user typed in an ESC character to exit the routine. - @retval EFI_INVALID_PARAMETER One of the parameters was invalid - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CREATE_POP_UP)( - IN UINTN NumberOfLines, - IN BOOLEAN HotKey, - IN UINTN MaximumStringSize, - OUT CHAR16 *StringBuffer, - OUT EFI_INPUT_KEY *KeyValue, - IN CHAR16 *String, - ... - ); - -/** - The EFI_FORM_BROWSER_PROTOCOL is the interface to call for drivers to - leverage the EFI configuration driver interface. -**/ -struct _EFI_FORM_BROWSER_PROTOCOL { - /// - /// Provides direction to the configuration driver whether to use the HII - /// database or to use a passed-in set of data. This function also establishes - /// a pointer to the calling driver's callback interface. - /// - EFI_SEND_FORM SendForm; - - /// - /// Routine used to abstract a generic dialog interface and return the - /// selected key or string. - /// - EFI_CREATE_POP_UP CreatePopUp; -}; - -extern EFI_GUID gEfiFormBrowserProtocolGuid; -extern EFI_GUID gEfiFormBrowserCompatibilityProtocolGuid; - - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h b/IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h deleted file mode 100644 index a679b15..0000000 --- a/IntelFrameworkPkg/Include/Protocol/FrameworkFormCallback.h +++ /dev/null @@ -1,216 +0,0 @@ -/** @file - The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to custom - NV storage devices and for communication of user selections in a more - interactive environment. This protocol should be published by hardware - specific drivers that want to export access to custom hardware storage or - publish IFR that need to call back the original driver. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in HII spec 0.92. - -**/ - -#ifndef __FRAMEWORK_FORM_CALLBACK_H__ -#define __FRAMEWORK_FORM_CALLBACK_H__ - -#include -#include - -#define EFI_FORM_CALLBACK_PROTOCOL_GUID \ - { \ - 0xf3e4543d, 0xcf35, 0x6cef, {0x35, 0xc4, 0x4f, 0xe6, 0x34, 0x4d, 0xfc, 0x54 } \ - } - -// -// Forward reference for pure ANSI compatability -// -typedef struct _EFI_FORM_CALLBACK_PROTOCOL EFI_FORM_CALLBACK_PROTOCOL; - -/// -/// Inconsistent with specification here: -/// RESET_REQUIRED, EXIT_REQUIRED, SAVE_REQUIRED, NV_CHANGED and NV_NOT_CHANGED are not -/// defined in HII specification. These Flags of EFI_IFR_DATA_ENTRY should be defined -/// to describe the standard behavior of the browser after the callback. -/// -/// If this flag is set, the browser will exit and reset after processing callback results. -/// -#define RESET_REQUIRED 1 -/// -/// If this flag is set, the browser will exit after processing callback results. -/// -#define EXIT_REQUIRED 2 -/// -/// If this flag is set, the browser will save the NV data after processing callback results. -/// -#define SAVE_REQUIRED 4 -/// -/// If this flag is set, the browser will turn the NV flag on after processing callback results. -/// -#define NV_CHANGED 8 -/// -/// If this flag is set, the browser will turn the NV flag off after processing callback results. -/// -#define NV_NOT_CHANGED 16 - -#pragma pack(1) -typedef struct { - UINT8 OpCode; ///< Likely a string, numeric, or one-of - UINT8 Length; ///< Length of the EFI_IFR_DATA_ENTRY packet. - UINT16 Flags; ///< Flags settings to determine what behavior is desired from the browser after the callback. - VOID *Data; ///< The data in the form based on the op-code type. This is not a pointer to the data; the data follows immediately. - /// - /// If the OpCode is a OneOf or Numeric type - Data is a UINT16 value. - /// If the OpCode is a String type - Data is a CHAR16[x] type. - /// If the OpCode is a Checkbox type - Data is a UINT8 value. - /// If the OpCode is a NV Access type - Data is a EFI_IFR_NV_DATA structure. - /// -} EFI_IFR_DATA_ENTRY; - -typedef struct { - VOID *NvRamMap; ///< If the flag of the op-code specified retrieval of a copy of the NVRAM map. - // - // this is a pointer to a buffer copy - // - UINT32 EntryCount; ///< Number of EFI_IFR_DATA_ENTRY entries. - // - // EFI_IFR_DATA_ENTRY Data[1]; // The in-line Data entries. - // -} EFI_IFR_DATA_ARRAY; - - -typedef union { - EFI_IFR_DATA_ARRAY DataArray; ///< Primarily used by those that call back to their drivers and use HII as a repository. - EFI_IFR_PACKET DataPacket; ///< Primarily used by those that do not use HII as a repository. - CHAR16 String[1]; ///< If returning an error - fill the string with null-terminated contents. -} EFI_HII_CALLBACK_PACKET; - -typedef struct { - FRAMEWORK_EFI_IFR_OP_HEADER Header; - UINT16 QuestionId; ///< Offset into the map. - UINT8 StorageWidth; ///< Width of the value. - // - // CHAR8 Data[1]; // The Data itself - // -} EFI_IFR_NV_DATA; - -#pragma pack() -// -// The following types are currently defined: -// -/** - Returns the value of a variable. - - @param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance. - @param VariableName A NULL-terminated Unicode string that is the - name of the vendor's variable. - @param VendorGuid A unique identifier for the vendor. - @param Attributes If not NULL, a pointer to the memory location to - return the attribute's bit-mask for the variable. - @param DataSize The size in bytes of the Buffer. A size of zero causes - the variable to be deleted. - @param Buffer The buffer to return the contents of the variable. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_NOT_FOUND The variable was not found. - @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result. - DataSize has been updated with the size needed to complete the request. - @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. - @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_NV_READ)( - IN EFI_FORM_CALLBACK_PROTOCOL *This, - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - OUT UINT32 *Attributes OPTIONAL, - IN OUT UINTN *DataSize, - OUT VOID *Buffer - ); - -/** - Sets the value of a variable. - - @param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance. - @param VariableName A NULL-terminated Unicode string that is the - name of the vendor's variable. Each VariableName - is unique for each VendorGuid. - @param VendorGuid A unique identifier for the vendor. - @param Attributes Attributes bit-mask to set for the variable. - Inconsistent with specification here: - Attributes data type has been changed from - UINT32 * to UINT32, because the input parameter is - not necessary to use a pointer date type. - @param DataSize The size in bytes of the Buffer. A size of zero causes - the variable to be deleted. - @param Buffer The buffer containing the contents of the variable. - @param ResetRequired Returns a value from the driver that abstracts this - information and will enable a system to know if a - system reset is required to achieve the configuration - changes being enabled through this function. - - @retval EFI_SUCCESS The firmware has successfully stored the variable and - its data as defined by the Attributes. - @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold - the variable and its data. - @retval EFI_INVALID_PARAMETER An invalid combination of Attributes bits - was supplied, or the DataSize exceeds the maximum allowed. - @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_NV_WRITE)( - IN EFI_FORM_CALLBACK_PROTOCOL *This, - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - IN UINT32 Attributes, - IN UINTN DataSize, - IN VOID *Buffer, - OUT BOOLEAN *ResetRequired - ); - -/** - This function is called to provide results data to the driver. - - @param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance. - @param KeyValue A unique value which is sent to the original exporting - driver so that it can identify the type of data - to expect. The format of the data tends to vary based - on the opcode that generated the callback. - @param Data A pointer to the data being sent to the original exporting driver. - @param Packet A pointer to a packet of information that a driver passes - back to the browser. - - @return Status Code - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_FORM_CALLBACK)( - IN EFI_FORM_CALLBACK_PROTOCOL *This, - IN UINT16 KeyValue, - IN EFI_IFR_DATA_ARRAY *Data, - OUT EFI_HII_CALLBACK_PACKET **Packet - ); - -/** - The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to - custom NVS devices as well as communication of user selections in a more - interactive environment. This protocol should be published by platform-specific - drivers that want to export access to custom hardware storage or publish IFR - that has a requirement to call back the original driver. -**/ -struct _EFI_FORM_CALLBACK_PROTOCOL { - EFI_NV_READ NvRead; ///< The read operation to access the NV data serviced by a hardware-specific driver. - EFI_NV_WRITE NvWrite; ///< The write operation to access the NV data serviced by a hardware-specific driver. - EFI_FORM_CALLBACK Callback; ///< The function that is called from the configuration browser to communicate key value pairs. -}; - -extern EFI_GUID gEfiFormCallbackProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkHii.h b/IntelFrameworkPkg/Include/Protocol/FrameworkHii.h deleted file mode 100644 index 7b833f7..0000000 --- a/IntelFrameworkPkg/Include/Protocol/FrameworkHii.h +++ /dev/null @@ -1,1026 +0,0 @@ -/** @file - This file defines the Human Interface Infrastructure protocol, which is - used by resources that want to publish IFR/Font/String data and have it - collected by the Configuration engine. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Framework for EFI Human Interface Infrastructure - Specification Version 0.92. - -**/ - -#ifndef _FRAMEWORK_HII_H_ -#define _FRAMEWORK_HII_H_ - -// -// EFI_GRAPHICS_OUTPUT_BLT_PIXEL is defined in MdePkg/Protocol/GraphicsOutput.h -// -#include -/// -/// In both EDK and EDK II, there is an incompatbile change in the Framework HII protocol. -/// This change should cause a change of GUID in both of code and HII specification. But we -/// updated the GUID in code in EDK and EDK II. The 0.92 specification is not updated. This -/// is a known issue. -/// -/// -/// Note that EFI_HII_PROTOCOL_GUID is different from that defined in the Framework HII -/// 0.92 specification because the specification changed part of HII interfaces but did not update the protocol -/// GUID. -/// -#define EFI_HII_PROTOCOL_GUID \ - { \ - 0xd7ad636e, 0xb997, 0x459b, {0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1} \ - } - -#define EFI_HII_COMPATIBILITY_PROTOCOL_GUID \ - { \ - 0x5542cce1, 0xdf5c, 0x4d1b, { 0xab, 0xca, 0x36, 0x4f, 0x77, 0xd3, 0x99, 0xfb } \ - } - -typedef UINT32 RELOFST; - -typedef struct _EFI_HII_PROTOCOL EFI_HII_PROTOCOL; - -/// -/// Note: Name difference between code and the Framework HII 0.92 specificaiton. -/// Add FRAMEWORK_ prefix to avoid a name confict with EFI_HII_HANDLE, defined in the -/// UEFI 2.1d specification. -/// -typedef UINT16 FRAMEWORK_EFI_HII_HANDLE; - -/// -/// HII package type values -/// -#define EFI_HII_FONT 1 -#define EFI_HII_STRING 2 -#define EFI_HII_IFR 3 -#define EFI_HII_KEYBOARD 4 -#define EFI_HII_HANDLES 5 -#define EFI_HII_VARIABLE 6 -#define EFI_HII_DEVICE_PATH 7 - -// -// References to string tokens must use this macro to enable scanning for -// token usages. -// -#define STRING_TOKEN(t) t - -// -// The following types are currently defined: -// EFI_FORM_ID has been defined in UEFI spec. -// -typedef UINT16 EFI_FORM_LABEL; - -#pragma pack(1) - -/// -/// The header found at the start of each package. -/// -typedef struct { - UINT32 Length; ///< The size of the package in bytes. - UINT16 Type; ///< The type of the package. -} EFI_HII_PACK_HEADER; - -/// -/// The IFR package structure. -/// Immediately following the EFI_HII_IFR_PACK structure will be a series of IFR opcodes. -/// -typedef struct { - EFI_HII_PACK_HEADER Header; ///< Header of the IFR package. -} EFI_HII_IFR_PACK; - -/// -/// HII Handle package structure. -/// -typedef struct { - /// - /// Header of the package. - /// - EFI_HII_PACK_HEADER Header; ///< Must be filled in. - /// - /// The image handle of the driver to which the package is referring. - /// - EFI_HANDLE ImageHandle; ///< Must be filled in. - /// - /// The handle of the device that is being described by this package. - /// - EFI_HANDLE DeviceHandle; ///< Optional. - /// - /// The handle of the parent of the device that is being described by this package. - /// - EFI_HANDLE ControllerHandle; ///< Optional. - /// - /// The handle that was registered to receive EFI_FORM_CALLBACK_PROTOCOL calls from other drivers. - /// - EFI_HANDLE CallbackHandle; ///< Optional. - /// - /// Note this field is not defined in the Framework HII 0.92 specificaiton. - /// Unused. Reserved for source code compatibility. - /// - EFI_HANDLE COBExportHandle; ///< Optional. -} EFI_HII_HANDLE_PACK; - -/// -/// The variable package structure. -/// -typedef struct { - /// - /// The header of the package. - /// - EFI_HII_PACK_HEADER Header; - /// - /// The GUID of the EFI variable. - /// - EFI_GUID VariableGuid; - /// - /// The length in bytes of the EFI variable. - /// - UINT32 VariableNameLength; - /// - /// The unique value for this variable. - /// - UINT16 VariableId; - // - // CHAR16 VariableName[]; //Null-terminated - // -} EFI_HII_VARIABLE_PACK; - -/// -/// The device path package structure. -/// -typedef struct { - /// - /// The header of the package. - /// - EFI_HII_PACK_HEADER Header; - // - // EFI_DEVICE_PATH DevicePath[]; - // -} EFI_HII_DEVICE_PATH_PACK; - -typedef struct { - /// - /// A unique value that correlates to the original HII handle. - /// - FRAMEWORK_EFI_HII_HANDLE HiiHandle; - /// - /// If an IFR pack exists in a data table that does not contain strings, - /// then the strings for that IFR pack are located in another data table - /// that contains a string pack and has a matching HiiDataTable.PackageGuid. - /// - EFI_GUID PackageGuid; - /// - /// The size of the EFI_HII_DATA_TABLE in bytes. - /// - UINT32 DataTableSize; - /// - /// The byte offset from the start of this structure to the IFR data. - /// If the offset value is 0, then no IFR data is enclosed. - /// - UINT32 IfrDataOffset; - /// - /// The byte offset from the start of this structure to the string data. - /// If the offset value is 0, then no string data is enclosed. - /// - UINT32 StringDataOffset; - /// - /// The byte offset from the start of this structure to the variable data. - /// If the offset value is 0, then no variable data is enclosed. - /// - UINT32 VariableDataOffset; - /// - /// The byte offset from the start of this structure to the device path data. - /// If the offset value is 0, then no DevicePath data is enclosed. - /// - UINT32 DevicePathOffset; - /// - /// The number of VariableData[] elements in the array. - /// - UINT32 NumberOfVariableData; - /// - /// The number of language string packages. - /// - UINT32 NumberOfLanguages; - // - // EFI_HII_DEVICE_PATH_PACK DevicePath[]; - // EFI_HII_VARIABLE_PACK VariableData[]; - // EFI_HII_IFR_PACK IfrData; - // EFI_HII_STRING_PACK StringData[]; - // -} EFI_HII_DATA_TABLE; - -/// -/// The structure defining the format for exporting data from the HII Database. -/// -typedef struct { - /// - /// Number of EFI_HII_DATA_TABLE entries. - /// - UINT32 NumberOfHiiDataTables; - /// - /// Defines the revision of the EFI_HII_DATA_TABLE structure. - /// - EFI_GUID Revision; - // - // EFI_HII_DATA_TABLE HiiDataTable[]; - // -} EFI_HII_EXPORT_TABLE; - -/// -/// The structure used to pass data to update a form or form package -/// that has previously been registered with the EFI HII database. -/// -typedef struct { - /// - /// If TRUE, indicates that the FormCallbackHandle value will - /// be used to update the contents of the CallBackHandle entry in the form set. - /// - BOOLEAN FormSetUpdate; - /// - /// This parameter is valid only when FormSetUpdate is TRUE. - /// The value in this parameter will be used to update the contents - /// of the CallbackHandle entry in the form set. - /// - EFI_PHYSICAL_ADDRESS FormCallbackHandle; - /// - /// If TRUE, indicates that the FormTitle contents will be - /// used to update the FormValue's title. - /// - BOOLEAN FormUpdate; - /// - /// Specifies which form is to be updated if the FormUpdate value is TRUE. - /// - UINT16 FormValue; - /// - /// This parameter is valid only when the FormUpdate parameter is TRUE. - /// The value in this parameter will be used to update the contents of the form title. - /// - STRING_REF FormTitle; - /// - /// The number of Data entries in this structure. - UINT16 DataCount; - /// - /// An array of 1+ opcodes, specified by DataCount. - /// - UINT8 *Data; -} EFI_HII_UPDATE_DATA; - -// -// String attributes -// -#define LANG_RIGHT_TO_LEFT 0x00000001 - -/// -/// A string package is used to localize strings to a particular -/// language. The package is associated with a particular driver -/// or set of drivers. Tools are used to associate tokens with -/// string references in forms and in programs. These tokens are -/// language agnostic. When paired with a language pack (directly -/// or indirectly), the string token resolves into an actual -/// UNICODE string. NumStringPointers determines how many -/// StringPointers (offset values) there are, as well as the total -/// number of Strings that are defined. -/// -typedef struct { - /// - /// The header of the package. - /// - EFI_HII_PACK_HEADER Header; - /// - /// The string containing one or more ISO 639-2 three-character designator(s) - /// of the language or languages whose translations are contained in this language pack. - /// The first designator indicates the primary language, while the others are secondary languages. - /// - RELOFST LanguageNameString; - /// - /// Contains the offset into this structure of a printable name of the language - /// for use when prompting the user. The language printed is to be the primary language. - /// - RELOFST PrintableLanguageName; - /// - /// The number of Strings and StringPointers contained within the string package. - /// - UINT32 NumStringPointers; - /// - /// Indicates the direction the language is to be printed. - /// - UINT32 Attributes; - // - // RELOFST StringPointers[]; - // EFI_STRING Strings[]; - // -} EFI_HII_STRING_PACK; - - -/// -/// A font list consists of a font header followed by a series -/// of glyph structures. Note that fonts are not language specific. -/// -typedef struct { - /// - /// The header of the package. - /// - EFI_HII_PACK_HEADER Header; - /// - /// The number of NarrowGlyphs that are included in the font package. - /// - UINT16 NumberOfNarrowGlyphs; - /// - /// The number of WideGlyphs that are included in the font package. - /// - UINT16 NumberOfWideGlyphs; - //EFI_NARROW_GLYPH NarrowGlyphs[]; - //EFI_WIDE_GLYPH WideGlyphs[]; -} EFI_HII_FONT_PACK; - -/// -/// The definition of a specific physical key -/// -/// Note: The name difference between code and the Framework HII 0.92 specification. -/// Add FRAMEWORK_ prefix to avoid name confict with EFI_KEY_DESCRIPTOR defined in the -/// UEFI 2.1d specification. -/// -typedef struct { - /// - /// Used to describe a physical key on a keyboard. - /// - EFI_KEY Key; - /// - /// The Unicode value for the Key. - CHAR16 Unicode; - /// - /// The Unicode value for the key with the shift key being held down. - /// - CHAR16 ShiftedUnicode; - /// - /// The Unicode value for the key with the Alt-GR being held down. - /// - CHAR16 AltGrUnicode; - /// - /// The Unicode value for the key with the Alt-GR and shift keys being held down. - /// - CHAR16 ShiftedAltGrUnicode; - /// - /// Modifier keys are defined to allow for special functionality that - /// is not necessarily accomplished by a printable character. - /// - UINT16 Modifier; -} FRAMEWORK_EFI_KEY_DESCRIPTOR; - -/// -/// This structure allows a sparse set of keys to be redefined -/// or a complete redefinition of the keyboard layout. Most -/// keyboards have a lot of commonality in their layouts, therefore -/// only defining those keys that need to change from the default -/// minimizes the passed in information. -/// -/// Additionally, when an update occurs, the active keyboard layout -/// will be switched to the newly updated keyboard layout. This -/// allows for situations that when a keyboard layout driver is -/// loaded as part of system initialization, the system will default -/// the keyboard behavior to the new layout. -/// -typedef struct { - /// - /// The header of the package. - EFI_HII_PACK_HEADER Header; - /// - /// A pointer to a buffer containing an array of EFI_KEY_DESCRIPTOR entries. - /// Each entry will reflect the definition of a specific physical key. - /// - FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor; - /// - /// The number of Descriptor entries being described. - /// - UINT8 DescriptorCount; -} EFI_HII_KEYBOARD_PACK; - -/// -/// The packages structure that will be used to pass contents into the HII database. -/// -/// The EFI_HII_PACKAGES can contain various number of packages of different types just -/// after the structure as inline data. -/// -typedef struct { - /// - /// The number of packages being defined in this structure. - /// - UINTN NumberOfPackages; - /// - /// The GUID to be used to identify this set of packages that are being exported - /// to the HII database. - /// - EFI_GUID *GuidId; - // - // EFI_HII_HANDLE_PACK *HandlePack; // Only one pack. - // EFI_HII_IFR_PACK *IfrPack; // Only one pack. - // EFI_HII_FONT_PACK *FontPack[]; // Multiple packs ok - // EFI_HII_STRING_PACK *StringPack[]; // Multiple packs ok - // EFI_HII_KEYBOARD_PACK *KeyboardPack[]; // Multiple packs ok - // -} EFI_HII_PACKAGES; - -/// -/// The packed link list that contains all the discernable defaults of variables -/// for the opcodes that are defined in this Handle's domain of data. -/// -typedef struct _EFI_HII_VARIABLE_PACK_LIST { - /// - /// A pointer points to the next data structure of type - /// EFI_HII_VARIABLE_PACK_LIST in the packed link list. - /// - struct _EFI_HII_VARIABLE_PACK_LIST *NextVariablePack; - /// - /// A pointer points to the content of the variable entry defined by GUID/name/data. - /// - EFI_HII_VARIABLE_PACK *VariablePack; - //EFI_HII_VARIABLE_PACK Content -} EFI_HII_VARIABLE_PACK_LIST; - - -#pragma pack() - -/** - Registers the various packs that are passed in via the Packages parameter. - - @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. - - @retval EFI_SUCCESS Data was extracted from Packages, the database - was updated with the data, and Handle returned successfully. - @retval EFI_INVALID_PARAMETER The content of Packages was invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_NEW_PACK)( - IN EFI_HII_PROTOCOL *This, - IN EFI_HII_PACKAGES *Packages, - OUT FRAMEWORK_EFI_HII_HANDLE *Handle - ); - -/** - Removes a package from the HII database. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The handle that was registered to the data that - is requested for removal. - - @retval EFI_SUCCESS The data associated with the Handle was removed - from the HII database. - @retval EFI_INVALID_PARAMETER The Handle was not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_REMOVE_PACK)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ); - -/** - Determines the handles that are currently active in the database. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param HandleBufferLength On input, a pointer to the length of the handle - buffer. On output, the length of the handle buffer that is required - for the handles found. - @param Handle An array of FRAMEWORK_EFI_HII_HANDLE instances returned. - - @retval EFI_SUCCESS Handle was updated successfully. - @retval EFI_BUFFER_TOO_SMALL The HandleBufferLength parameter indicates - that Handle is too small to support the number of handles. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_FIND_HANDLES)( - IN EFI_HII_PROTOCOL *This, - IN OUT UINT16 *HandleBufferLength, - OUT FRAMEWORK_EFI_HII_HANDLE *Handle - ); - -/** - Exports the contents of the database into a buffer. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle A FRAMEWORK_EFI_HII_HANDLE that corresponds to the desired - handle to export. If the value is 0, the entire database will be exported. - The data is exported in a format described by the - structure definition of EFI_HII_EXPORT_TABLE. - @param BufferSize - On input, a pointer to the length of the buffer. On output, the length - of the buffer that is required for the export data. - @param Buffer A pointer to a buffer that will contain the results of the export function. - - @retval EFI_SUCCESS The buffer was successfully filled with BufferSize amount of data. - @retval EFI_BUFFER_TOO_SMALL The value in BufferSize was too small to contain the export data. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_EXPORT)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ); - -/** - Remove any new strings that were added after the initial string export - for this handle. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The handle on which the string resides. - - @retval EFI_SUCCESS Successfully removed strings from the handle. - @retval EFI_INVALID_PARAMETER The Handle was unknown. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_RESET_STRINGS)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ); - -/** - Tests if all of the characters in a string have corresponding font characters. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param StringToTest A pointer to a Unicode string. - @param FirstMissing A pointer to an index into the string. On input, - the index of the first character in the StringToTest - to examine. On exit, the index of the first character - encountered for which a glyph is unavailable. - If all glyphs in the string are available, the - index is the index of the terminator of the string. - @param GlyphBufferSize A pointer to a value. On output, if the function - returns EFI_SUCCESS, it contains the amount of - memory that is required to store the string's - glyph equivalent. - - @retval EFI_SUCCESS All glyphs are available. Note that an empty string - always returns this value. - @retval EFI_NOT_FOUND A glyph was not found for a character. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_TEST_STRING)( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *StringToTest, - IN OUT UINT32 *FirstMissing, - OUT UINT32 *GlyphBufferSize - ); - -/** - Translates a Unicode character into the corresponding font glyph. - - Note that this function prototype name is different from that in the Framework HII 0.92 specification - to avoid name confict with EFI_HII_GET_GLYPH defined in the UEFI 2.1d specification. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Source A pointer to a Unicode string. - @param Index On input, the offset into the string from which to - fetch the character. On successful completion, the - index is updated to the first character past the - character(s) making up the just extracted glyph. - @param GlyphBuffer Pointer to an array where the glyphs corresponding - to the characters in the source may be stored. - GlyphBuffer is assumed to be wide enough to accept - a wide glyph character. - @param BitWidth If EFI_SUCCESS was returned, the UINT16 pointed to by - this value is filled with the length of the glyph in - pixels. It is unchanged if the call was unsuccessful. - @param InternalStatus The cell pointed to by this parameter must be - initialized to zero prior to invoking the call the - first time for any string. - - @retval EFI_SUCCESS Found the corresponding font glyph for a Unicode - character. - @retval EFI_NOT_FOUND A glyph for a character was not found. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_HII_GET_GLYPH)( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Source, - IN OUT UINT16 *Index, - OUT UINT8 **GlyphBuffer, - OUT UINT16 *BitWidth, - IN OUT UINT32 *InternalStatus - ); - -/** - Translates a glyph into the format required for input to the Universal - Graphics Adapter (UGA) Block Transfer (BLT) routines. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param GlyphBuffer A pointer to the buffer that contains glyph data. - @param Foreground The foreground setting requested to be used for the - generated BltBuffer data. - @param Background The background setting requested to be used for the - generated BltBuffer data. - @param Count The entry in the BltBuffer upon which to act. - @param Width The width in bits of the glyph being converted. - @param Height The height in bits of the glyph being converted - @param BltBuffer A pointer to the buffer that contains the data that is - ready to be used by the UGA BLT routines. - - @retval EFI_SUCCESS Successfully translated a glyph into the required - format for input to UGA BLT routines. - @retval EFI_NOT_FOUND A glyph for a character was not found. - @note Inconsistent with specification here: - In Framework Spec, HII specification 0.92. The type of 3rd, 4th and 8th parameter is EFI_UGA_PIXEL. - Here the definition uses the EFI_GRAPHICS_OUTPUT_BLT_PIXEL, which is defined in UEFI 2.1 specification. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_GLYPH_TO_BLT)( - IN EFI_HII_PROTOCOL *This, - IN UINT8 *GlyphBuffer, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background, - IN UINTN Count, - IN UINTN Width, - IN UINTN Height, - IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer - ); - -/** - Allows a new string to be added to an already existing string package. - - Note that this function prototype name is different from that in the Framework HII 0.92 specification - to avoid name confict with EFI_HII_NEW_STRING defined in the UEFI 2.1d specification. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Pointer to a NULL-terminated string containing a single - ISO 639-2 language identifier, indicating the language - in which the string is translated. - @param Handle The handle of the language pack to which the string - is to be added. - @param Reference The identifier of the string to be added. If the - reference value is zero, then the string will be - assigned a new identifier on that handle for - the language specified. Otherwise, the string will - be updated with the NewString Value. - @param NewString The string to be added. - - @retval EFI_SUCCESS The string was effectively registered. - @retval EFI_INVALID_PARAMETER The Handle was unknown. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_HII_NEW_STRING)( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Language, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT STRING_REF *Reference, - IN CHAR16 *NewString - ); - -/** - Allows a program to determine the primary languages that are supported - on a given handle. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The handle on which the strings reside. - @param LanguageString A string allocated by GetPrimaryLanguages() that - contains a list of all primary languages registered - on the handle. - - @retval EFI_SUCCESS LanguageString was correctly returned. - @retval EFI_INVALID_PARAMETER The Handle was unknown. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_GET_PRI_LANGUAGES)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - OUT EFI_STRING *LanguageString - ); - -/** - Allows a program to determine which secondary languages are supported - on a given handle for a given primary language. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The handle on which the strings reside. - @param PrimaryLanguage Pointer to a NULL-terminated string containing a - single ISO 639-2 language identifier, indicating - the primary language. - @param LanguageString A string allocated by GetSecondaryLanguages() - containing a list of all secondary languages - registered on the handle. - - @retval EFI_SUCCESS LanguageString was correctly returned. - @retval EFI_INVALID_PARAMETER The Handle was unknown. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_GET_SEC_LANGUAGES)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN CHAR16 *PrimaryLanguage, - OUT EFI_STRING *LanguageString - ); - -/** - Extracts a string from a package already registered with the EFI HII database. - - Note that this function prototype name is different from that in the Framework HII 0.92 specification - to avoid name confict with EFI_HII_GET_STRING defined in the UEFI 2.1d specification. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The handle on which the string resides. - @param Token The string token assigned to the string. - @param Raw If TRUE, the string is returned unedited in the - internal storage format. If false, the string - returned is edited by replacing with - and by removing special characters such as the - prefix. - @param LanguageString Pointer to a NULL-terminated string containing a - single ISO 639-2 language identifier, indicating - the language to print. If the LanguageString is - empty (starts with a NULL), the default system - language will be used to determine the language. - @param BufferLength Length of the StringBuffer. - @param StringBuffer The buffer designed to receive the characters in the string. - - @retval EFI_SUCCESS StringBuffer is filled with a NULL-terminated string. - @retval EFI_INVALID_PARAMETER The handle or string token is unknown. - @retval EFI_BUFFER_TOO_SMALL The buffer provided was not large enough to - allow the entire string to be stored. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_HII_GET_STRING)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN BOOLEAN Raw, - IN CHAR16 *LanguageString, - IN OUT UINTN *BufferLength, - OUT EFI_STRING StringBuffer - ); - -/** - Allows a program to extract a part of a string of not more than a given width. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The handle on which the string resides. - @param Token The string token assigned to the string. - @param Index On input, the offset into the string where the - line is to start. On output, the index is updated - to point beyond the last character returned in - the call. - @param LineWidth The maximum width of the line in units of narrow glyphs. - @param LanguageString The pointer to a NULL-terminated string containing a - single ISO 639-2 language identifier, indicating - the language to print. - @param BufferLength The pointer to the length of the StringBuffer. - @param StringBuffer The buffer designed to receive the characters in - the string. - - @retval EFI_SUCCESS StringBuffer filled with characters that will fit - on the line. - @retval EFI_NOT_FOUND The font glyph for at least one of the characters in - the string is not in the font database. - @retval EFI_BUFFER_TOO_SMALL The buffer provided was not large enough - to allow the entire string to be stored. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_GET_LINE)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN OUT UINT16 *Index, - IN UINT16 LineWidth, - IN CHAR16 *LanguageString, - IN OUT UINT16 *BufferLength, - OUT EFI_STRING StringBuffer - ); - -/** - Allows a program to extract a form or form package that has previously - been registered with the HII database. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle Handle on which the form resides. - @param FormId The ID of the form to return. If the ID is zero, - the entire form package is returned. - @param BufferLength On input, the length of the Buffer. On output, - the length of the returned buffer, - @param Buffer The buffer designed to receive the form(s). - - @retval EFI_SUCCESS Buffer filled with the requested forms. BufferLength - was updated. - @retval EFI_INVALID_PARAMETER The handle is unknown. - @retval EFI_NOT_FOUND A form on the requested handle cannot be found with - the requested FormId. - @retval EFI_BUFFER_TOO_SMALL The buffer provided was not large enough - to allow the form to be stored. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_GET_FORMS)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN EFI_FORM_ID FormId, - IN OUT UINTN *BufferLength, - OUT UINT8 *Buffer - ); - -/** - Extracts the defaults that are associated with a given handle in the HII database. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The HII handle from which will have default data retrieved. - @param DefaultMask The mask used to specify some type of default - override when extracting the default image data. - @param VariablePackList An indirect pointer to the first entry of a link - list with type EFI_HII_VARIABLE_PACK_LIST. - - @retval EFI_SUCCESS The VariablePackList was populated with the appropriate - default setting data. - @retval EFI_NOT_FOUND The IFR does not have any explicit or default map(s). - @retval EFI_INVALID_PARAMETER The HII database entry associated with Handle - contains invalid data. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_GET_DEFAULT_IMAGE)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN UINTN DefaultMask, - OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList - ); - -/** - Allows the caller to update a form or form package that has previously been - registered with the EFI HII database. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle Handle of the package where the form to be updated resides. - @param Label The label inside the form package where the update is to take place. - @param AddData If TRUE, adding data at a given Label; otherwise, - if FALSE, removing data at a given Label. - @param Data The buffer containing the new tags to insert after the Label - - @retval EFI_SUCCESS The form was updated with the new tags. - @retval EFI_INVALID_PARAMETER The buffer for the buffer length does not - contain an integral number of tags. - @retval EFI_NOT_FOUND The Handle, Label, or FormId was not found. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HII_UPDATE_FORM)( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN EFI_FORM_LABEL Label, - IN BOOLEAN AddData, - IN EFI_HII_UPDATE_DATA *Data - ); - -/** - Retrieves the current keyboard layout. - - Note that this function prototype name is different from that in the Framework HII 0.92 specification - to avoid name confict with EFI_HII_GET_KEYBOARD_LAYOUT defined in the UEFI 2.1d specification. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param DescriptorCount A pointer to the number of Descriptor entries being - described in the keyboard layout being retrieved. - @param Descriptor A pointer to a buffer containing an array of - FRAMEWORK_EFI_KEY_DESCRIPTOR entries. Each entry - will reflect the definition of a specific physical key. - - @retval EFI_SUCCESS The keyboard layout was retrieved successfully. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_HII_GET_KEYBOARD_LAYOUT)( - IN EFI_HII_PROTOCOL *This, - OUT UINT16 *DescriptorCount, - OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor - ); - -/// -/// The HII Protocol manages the HII database, which is a repository for data -/// having to do with fonts, strings, forms, keyboards, and other future human -/// interface items. -/// -struct _EFI_HII_PROTOCOL { - /// - /// Extracts the various packs from a package list. - /// - EFI_HII_NEW_PACK NewPack; - - /// - /// Removes a package from the HII database. - /// - EFI_HII_REMOVE_PACK RemovePack; - - /// - /// Determines the handles that are currently active in the database. - /// - EFI_HII_FIND_HANDLES FindHandles; - - /// - /// Exports the entire contents of the database to a buffer. - /// - EFI_HII_EXPORT ExportDatabase; - - /// - /// Tests if all of the characters in a string have corresponding font characters. - /// - EFI_HII_TEST_STRING TestString; - - /// - /// Translates a Unicode character into the corresponding font glyph. - /// - FRAMEWORK_EFI_HII_GET_GLYPH GetGlyph; - - /// - /// Converts a glyph value into a format that is ready for a UGA BLT command. - /// - EFI_HII_GLYPH_TO_BLT GlyphToBlt; - - /// - /// Allows a new string to be added to an already existing string package. - /// - FRAMEWORK_EFI_HII_NEW_STRING NewString; - - /// - /// Allows a program to determine the primary languages that are supported - /// on a given handle. - /// - EFI_HII_GET_PRI_LANGUAGES GetPrimaryLanguages; - - /// - /// Allows a program to determine which secondary languages are supported - /// on a given handle for a given primary language. - /// - EFI_HII_GET_SEC_LANGUAGES GetSecondaryLanguages; - - /// - /// Extracts a string from a package that is already registered with the - /// EFI HII database. - /// - FRAMEWORK_EFI_HII_GET_STRING GetString; - - /// - /// Removes any new strings that were added after the initial string export - /// for this handle. - /// - /// Note this function is not defined in the Framework HII 0.92 specification. - /// - EFI_HII_RESET_STRINGS ResetStrings; - - /// - /// Allows a program to extract a part of a string of not more than a given width. - /// - EFI_HII_GET_LINE GetLine; - - /// - /// Allows a program to extract a form or form package that has been previously registered. - /// - EFI_HII_GET_FORMS GetForms; - - /// - /// Allows a program to extract the nonvolatile image that represents the default storage image. - /// - EFI_HII_GET_DEFAULT_IMAGE GetDefaultImage; - - /// - /// Allows a program to update a previously registered form. - /// - EFI_HII_UPDATE_FORM UpdateForm; - - /// - /// Allows a program to extract the current keyboard layout. - /// - FRAMEWORK_EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout; -}; - -extern EFI_GUID gEfiHiiProtocolGuid; -extern EFI_GUID gEfiHiiCompatibilityProtocolGuid; - -#endif - diff --git a/IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h b/IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h deleted file mode 100644 index 3f9a6c9..0000000 --- a/IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h +++ /dev/null @@ -1,656 +0,0 @@ -/** @file - When installed, the Framework MP Services Protocol produces a collection of - services that are needed for MP management, such as initialization and management - of application processors. - - @par Note: - This protocol has been deprecated and has been replaced by the MP Services - Protocol from the UEFI Platform Initialization Specification 1.2, Volume 2: - Driver Execution Environment Core Interface. - - The MP Services Protocol provides a generalized way of performing following tasks: - - Retrieving information of multi-processor environment and MP-related status of - specific processors. - - Dispatching user-provided function to APs. - - Maintain MP-related processor status. - - The MP Services Protocol must be produced on any system with more than one logical - processor. - - The Protocol is available only during boot time. - - MP Services Protocol is hardware-independent. Most of the logic of this protocol - is architecturally neutral. It abstracts the multi-processor environment and - status of processors, and provides interfaces to retrieve information, maintain, - and dispatch. - - MP Services Protocol may be consumed by ACPI module. The ACPI module may use this - protocol to retrieve data that are needed for an MP platform and report them to OS. - MP Services Protocol may also be used to program and configure processors, such - as MTRR synchronization for memory space attributes setting in DXE Services. - MP Services Protocol may be used by non-CPU DXE drivers to speed up platform boot - by taking advantage of the processing capabilities of the APs, for example, using - APs to help test system memory in parallel with other device initialization. - Diagnostics applications may also use this protocol for multi-processor. - -Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _FRAMEWORK_MP_SERVICE_PROTOCOL_H_ -#define _FRAMEWORK_MP_SERVICE_PROTOCOL_H_ - -#include - -/// -/// Global ID for the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL. -/// -#define FRAMEWORK_EFI_MP_SERVICES_PROTOCOL_GUID \ - { \ - 0xf33261e7, 0x23cb, 0x11d5, {0xbd, 0x5c, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \ - } - -/// -/// Forward declaration for the EFI_MP_SERVICES_PROTOCOL. -/// -typedef struct _FRAMEWORK_EFI_MP_SERVICES_PROTOCOL FRAMEWORK_EFI_MP_SERVICES_PROTOCOL; - -/// -/// Fixed delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_FIXED 0x0 - -/// -/// Lowest priority delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_LOWEST_PRIORITY 0x1 - -/// -/// SMI delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_SMI 0x2 - -/// -/// Remote read delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_REMOTE_READ 0x3 - -/// -/// NMI delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_NMI 0x4 - -/// -/// INIT delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_INIT 0x5 - -/// -/// Startup IPI delivery mode that may be used as the DeliveryMode parameter in SendIpi(). -/// -#define DELIVERY_MODE_SIPI 0x6 - -/// -/// The DeliveryMode parameter in SendIpi() must be less than this maximum value. -/// -#define DELIVERY_MODE_MAX 0x7 - -/// -/// IPF specific value for the state field of the Self Test State Parameter. -/// -#define EFI_MP_HEALTH_FLAGS_STATUS_HEALTHY 0x0 - -/// -/// IPF specific value for the state field of the Self Test State Parameter. -/// -#define EFI_MP_HEALTH_FLAGS_STATUS_PERFORMANCE_RESTRICTED 0x1 - -/// -/// IPF specific value for the state field of the Self Test State Parameter. -/// -#define EFI_MP_HEALTH_FLAGS_STATUS_FUNCTIONALLY_RESTRICTED 0x2 - -typedef union { - /// - /// Bitfield structure for the IPF Self Test State Parameter. - /// - struct { - UINT32 Status:2; - UINT32 Tested:1; - UINT32 Reserved1:13; - UINT32 VirtualMemoryUnavailable:1; - UINT32 Ia32ExecutionUnavailable:1; - UINT32 FloatingPointUnavailable:1; - UINT32 MiscFeaturesUnavailable:1; - UINT32 Reserved2:12; - } Bits; - /// - /// IA32 and X64 BIST data of the processor. - /// - UINT32 Uint32; -} EFI_MP_HEALTH_FLAGS; - -typedef struct { - /// - /// @par IA32, X64: - /// BIST (built-in self-test) data of the processor. - /// - /// @par IPF: - /// Lower 32 bits of the self-test state parameter. For definition of self-test - /// state parameter, please refer to Intel(R) Itanium(R) Architecture Software - /// Developer's Manual, Volume 2: System Architecture. - /// - EFI_MP_HEALTH_FLAGS Flags; - /// - /// @par IA32, X64: - /// Not used. - /// - /// @par IPF: - /// Higher 32 bits of self test state parameter. - /// - UINT32 TestStatus; -} EFI_MP_HEALTH; - -typedef enum { - EfiCpuAP = 0, ///< The CPU is an AP (Application Processor). - EfiCpuBSP, ///< The CPU is the BSP (Boot-Strap Processor). - EfiCpuDesignationMaximum -} EFI_CPU_DESIGNATION; - -typedef struct { - /// - /// @par IA32, X64: - /// The lower 8 bits contains local APIC ID, and higher bits are reserved. - /// - /// @par IPF: - /// The lower 16 bits contains id/eid as physical address of local SAPIC - /// unit, and higher bits are reserved. - /// - UINT32 ApicID; - /// - /// This field indicates whether the processor is enabled. If the value is - /// TRUE, then the processor is enabled. Otherwise, it is disabled. - /// - BOOLEAN Enabled; - /// - /// This field indicates whether the processor is playing the role of BSP. - /// If the value is EfiCpuAP, then the processor is AP. If the value is - /// EfiCpuBSP, then the processor is BSP. - /// - EFI_CPU_DESIGNATION Designation; - /// - /// @par IA32, X64: - /// The Flags field of this EFI_MP_HEALTH data structure holds BIST (built-in - /// self test) data of the processor. The TestStatus field is not used, and - /// the value is always zero. - /// - /// @par IPF: - /// Bit format of this field is the same as the definition of self-test state - /// parameter, in Intel(R) Itanium(R) Architecture Software Developer's Manual, - /// Volume 2: System Architecture. - /// - EFI_MP_HEALTH Health; - /// - /// Zero-based physical package number that identifies the cartridge of the - /// processor. - /// - UINTN PackageNumber; - /// - /// Zero-based physical core number within package of the processor. - /// - UINTN NumberOfCores; - /// - /// Zero-based logical thread number within core of the processor. - /// - UINTN NumberOfThreads; - /// - /// This field is reserved. - /// - UINT64 ProcessorPALCompatibilityFlags; - /// - /// @par IA32, X64: - /// This field is not used, and the value is always zero. - /// - /// @par IPF: - /// This field is a mask number that is handed off by the PAL about which - /// processor tests are performed and which are masked. - /// - UINT64 ProcessorTestMask; -} EFI_MP_PROC_CONTEXT; - -/** - This service retrieves general information of multiprocessors in the system. - - This function is used to get the following information: - - Number of logical processors in system - - Maximal number of logical processors supported by system - - Number of enabled logical processors. - - Rendezvous interrupt number (IPF-specific) - - Length of the rendezvous procedure. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[out] NumberOfCPUs The pointer to the total number of logical processors - in the system, including the BSP and disabled - APs. If NULL, this parameter is ignored. - @param[out] MaximumNumberOfCPUs Pointer to the maximum number of processors - supported by the system. If NULL, this - parameter is ignored. - @param[out] NumberOfEnabledCPUs The pointer to the number of enabled logical - processors that exist in system, including - the BSP. If NULL, this parameter is ignored. - @param[out] RendezvousIntNumber This parameter is only meaningful for IPF. - - IA32, X64: The returned value is zero. - If NULL, this parameter is ignored. - - IPF: Pointer to the rendezvous interrupt - number that is used for AP wake-up. - @param[out] RendezvousProcLength The pointer to the length of rendezvous procedure. - - IA32, X64: The returned value is 0x1000. - If NULL, this parameter is ignored. - - IPF: The returned value is zero. - - @retval EFI_SUCCESS Multiprocessor general information was successfully retrieved. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_MP_SERVICES_GET_GENERAL_MP_INFO)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - OUT UINTN *NumberOfCPUs OPTIONAL, - OUT UINTN *MaximumNumberOfCPUs OPTIONAL, - OUT UINTN *NumberOfEnabledCPUs OPTIONAL, - OUT UINTN *RendezvousIntNumber OPTIONAL, - OUT UINTN *RendezvousProcLength OPTIONAL - ); - -/** - This service gets detailed MP-related information of the requested processor. - - This service gets detailed MP-related information of the requested processor - at the instant this call is made. Note the following: - - The processor information may change during the course of a boot session. - - The data of information presented here is entirely MP related. - Information regarding the number of caches and their sizes, frequency of operation, - slot numbers is all considered platform-related information and will not be - presented here. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[in] ProcessorNumber The handle number of the processor. The range - is from 0 to the total number of logical - processors minus 1. The total number of - logical processors can be retrieved by - GetGeneralMPInfo(). - @param[in,out] BufferLength On input, pointer to the size in bytes of - ProcessorContextBuffer. On output, if the - size of ProcessorContextBuffer is not large - enough, the value pointed by this parameter - is updated to size in bytes that is needed. - If the size of ProcessorContextBuffer is - sufficient, the value is not changed from - input. - @param[out] ProcessorContextBuffer The pointer to the buffer where the data of - requested processor will be deposited. - The buffer is allocated by caller. - - @retval EFI_SUCCESS Processor information was successfully returned. - @retval EFI_BUFFER_TOO_SMALL The size of ProcessorContextBuffer is too small. - The value pointed by BufferLength has been updated - to size in bytes that is needed. - @retval EFI_INVALID_PARAMETER IA32, X64:BufferLength is NULL. - @retval EFI_INVALID_PARAMETER IA32, X64:ProcessorContextBuffer is NULL. - @retval EFI_INVALID_PARAMETER IA32, X64:Processor with the handle specified by - ProcessorNumber does not exist. - @retval EFI_NOT_FOUND IPF: Processor with the handle specified by - ProcessorNumber does not exist. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_MP_SERVICES_GET_PROCESSOR_CONTEXT)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - IN UINTN ProcessorNumber, - IN OUT UINTN *BufferLength, - OUT EFI_MP_PROC_CONTEXT *ProcessorContextBuffer - ); - -/** - This function is used to dispatch all enabled APs to the function specified - by Procedure. APs can run either simultaneously or one by one. The caller can - also configure the BSP to either wait for APs or just proceed with the next - task. It is the responsibility of the caller of the StartupAllAPs() to make - sure that the nature of the code that will be run on the BSP and the dispatched - APs is well controlled. The MP Services Protocol does not guarantee that the - function that either processor is executing is MP-safe. Hence, the tasks that - can be run in parallel are limited to certain independent tasks and well- - controlled exclusive code. EFI services and protocols may not be called by APs - unless otherwise specified. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[in] Procedure A pointer to the function to be run on enabled - APs of the system. - @param[in] SingleThread Flag that requests APs to execute one at a - time or simultaneously. - - IA32, X64: - If TRUE, then all the enabled APs execute - the function specified by Procedure one by - one, in ascending order of processor handle - number. If FALSE, then all the enabled APs - execute the function specified by Procedure - simultaneously. - - IPF: - If TRUE, then all the enabled APs execute - the function specified by Procedure simultaneously. - If FALSE, then all the enabled APs execute the - function specified by Procedure one by one, in - ascending order of processor handle number. The - time interval of AP dispatching is determined - by WaitEvent and TimeoutInMicrosecs. - @param[in] WaitEvent Event to signal when APs have finished. - - IA32, X64: - If not NULL, when all APs finish after timeout - expires, the event will be signaled. If NULL, - the parameter is ignored. - - IPF: - If SingleThread is TRUE, this parameter - is ignored. If SingleThread is FALSE (i.e. - dispatch APs one by one), this parameter - determines whether the BSP waits after each - AP is dispatched. If it is NULL, the BSP - does not wait after each AP is dispatched. - If it is not NULL, the BSP waits after each - AP is dispatched, and the time interval is - determined by TimeoutInMicrosecs. Type - EFI_EVENT is defined in CreateEvent() in - the Unified Extensible Firmware Interface - Specification. - @param[in] TimeoutInMicrosecsond Time to wait for APs to finish. - - IA32, X64: - If the value is zero, it means no timeout - limit. The BSP waits until all APs finish. - If the value is not zero, the BSP waits - until all APs finish or timeout expires. - If timeout expires, EFI_TIMEOUT is returned, - and the BSP will then check APs?status - periodically, with time interval of 16 - microseconds. - - IPF: - If SingleThread is TRUE and FailedCPUList - is NULL, this parameter is ignored. If - SingleThread is TRUE and FailedCPUList is - not NULL, this parameter determines whether - the BSP waits until all APs finish their - procedure. If it is zero, the BSP does not - wait for APs. If it is non-zero, it waits - until all APs finish. If SingleThread is - FALSE and WaitEvent is NULL, this parameter - is ignored. If SingleThread is FALSE and - WaitEvent is not NULL, the BSP waits after - each AP is dispatched and this value - determines time interval. If the value is - zero, the length of time interval is 10ms. - If the value is non-zero, the BSP waits - until dispatched AP finishes and then - dispatch the next. - @param[in] ProcedureArgument The pointer to the optional parameter of the - function specified by Procedure. - @param[out] FailedCPUList List of APs that did not finish. - - IA32, X64: - If not NULL, it records handle numbers of - all logical processors that fail to accept - caller-provided function (busy or disabled). - If NULL, this parameter is ignored. - - IPF: - If not NULL, it records status of all - logical processors, with processor handle - number as index. If a logical processor - fails to accept caller-provided function - because it is busy, the status is EFI_NOT_READY. - If it fails to accept function due to other - reasons, the status is EFI_NOT_AVAILABLE_YET. - If timeout expires, the status is EFI_TIMEOUT. - Otherwise, the value is EFI_SUCCESS. If NULL, - this parameter is ignored. - - @retval EFI_SUCCESS IA32, X64: All dispatched APs have finished - before the timeout expires. - @retval EFI_SUCCESS IA32, X64: Only 1 logical processor exists - in system. - @retval EFI_INVALID_PARAMETER IA32, X64: Procedure is NULL. - @retval EFI_TIMEOUT IA32, X64: The timeout expires before all - dispatched APs have finished. - @retval EFI_SUCCESS IPF: This function always returns EFI_SUCCESS. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_STARTUP_ALL_APS)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - IN FRAMEWORK_EFI_AP_PROCEDURE Procedure, - IN BOOLEAN SingleThread, - IN EFI_EVENT WaitEvent OPTIONAL, - IN UINTN TimeoutInMicroSecs, - IN VOID *ProcArguments OPTIONAL, - OUT UINTN *FailedCPUList OPTIONAL - ); - -/** - This function is used to dispatch one enabled AP to the function provided by - the caller. The caller can request the BSP to either wait for the AP or just - proceed with the next task. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[in] Procedure A pointer to the function to be run on the - designated AP. - @param[in] ProcessorNumber The handle number of AP. The range is from - 0 to the total number of logical processors - minus 1. The total number of logical - processors can be retrieved by GetGeneralMPInfo(). - @param[in] WaitEvent Event to signal when APs have finished. - - IA32, X64: - If not NULL, when the AP finishes after timeout - expires, the event will be signaled. If NULL, - the parameter is ignored. - - IPF: - This parameter determines whether the BSP - waits after the AP is dispatched. If it is - NULL, the BSP does not wait after the AP - is dispatched. If it is not NULL, the BSP - waits after the AP is dispatched, and the - time interval is determined by TimeoutInMicrosecs. - Type EFI_EVENT is defined in CreateEvent() - in the Unified Extensible Firmware Interface - Specification. - @param[in] TimeoutInMicrosecsond Time to wait for APs to finish. - - IA32, X64: - If the value is zero, it means no timeout - limit. The BSP waits until the AP finishes. - If the value is not zero, the BSP waits until - the AP finishes or timeout expires. If timeout - expires, EFI_TIMEOUT is returned, and the - BSP will then check the AP's status periodically, - with time interval of 16 microseconds. - - IPF: - If WaitEvent is NULL, this parameter is ignored. - If WaitEvent is not NULL, the BSP waits after - the AP is dispatched and this value determines - time interval. If the value is zero, the length - of time interval is 10ms. If the value is - non-zero, the BSP waits until the AP finishes. - @param[in] ProcedureArgument The pointer to the optional parameter of the - function specified by Procedure. - - @retval EFI_SUCCESS Specified AP has finished before the timeout - expires. - @retval EFI_TIMEOUT The timeout expires before specified AP has - finished. - @retval EFI_INVALID_PARAMETER IA32, X64: Processor with the handle specified - by ProcessorNumber does not exist. - @retval EFI_INVALID_PARAMETER IA32, X64: Specified AP is busy or disabled. - @retval EFI_INVALID_PARAMETER IA32, X64: Procedure is NULL. - @retval EFI_INVALID_PARAMETER IA32, X64: ProcessorNumber specifies the BSP - @retval EFI_NOT_READY IPF: Specified AP is busy - @retval EFI_NOT_AVAILABLE_YET IPF: ProcessorNumber specifies the BSP - @retval EFI_NOT_AVAILABLE_YET IPF: Specified AP is disabled. - @retval EFI_NOT_AVAILABLE_YET IPF: Specified AP is unhealthy or untested. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_STARTUP_THIS_AP)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - IN FRAMEWORK_EFI_AP_PROCEDURE Procedure, - IN UINTN ProcessorNumber, - IN EFI_EVENT WaitEvent OPTIONAL, - IN UINTN TimeoutInMicroSecs, - IN OUT VOID *ProcArguments OPTIONAL - ); - -/** - This service switches the requested AP to be the BSP from that point onward. - The new BSP can take over the execution of the old BSP and continue seamlessly - from where the old one left off. This call can only be performed by the - current BSP. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[in] ProcessorNumber The handle number of AP. The range is from 0 to - the total number of logical processors minus 1. - The total number of logical processors can be - retrieved by GetGeneralMPInfo(). - @param[in] EnableOldBSP If TRUE, then the old BSP will be listed as an - enabled AP. Otherwise, it will be disabled. - - @retval EFI_SUCCESS BSP successfully switched. - @retval EFI_INVALID_PARAMETER The processor with the handle specified by - ProcessorNumber does not exist. - @retval EFI_INVALID_PARAMETER ProcessorNumber specifies the BSP. - @retval EFI_NOT_READY IA32, X64: Specified AP is busy or disabled. - @retval EFI_INVALID_PARAMETER IPF: Specified AP is disabled. - @retval EFI_INVALID_PARAMETER IPF: Specified AP is unhealthy or untested. - @retval EFI_NOT_READY IPF: Specified AP is busy. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_SWITCH_BSP)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - IN UINTN ProcessorNumber, - IN BOOLEAN EnableOldBSP - ); - -/** - This service sends an IPI to a specified AP. Caller can specify vector number - and delivery mode of the interrupt. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[in] ProcessorNumber The handle number of AP. The range is from 0 to - the total number of logical processors minus 1. - The total number of logical processors can be - retrieved by GetGeneralMPInfo(). - @param[in] VectorNumber The vector number of the interrupt. - @param[in] DeliveryMode The delivery mode of the interrupt. - - @retval EFI_SUCCESS IPI was successfully sent. - @retval EFI_INVALID_PARAMETER ProcessorNumber specifies the BSP. - @retval EFI_INVALID_PARAMETER IA32, X64: Processor with the handle specified - by ProcessorNumber does not exist. - @retval EFI_INVALID_PARAMETER IA32, X64: VectorNumber is greater than 255. - @retval EFI_INVALID_PARAMETER IA32, X64: DeliveryMode is greater than or equal - to DELIVERY_MODE_MAX. - @retval EFI_NOT_READY IA32, X64: IPI is not accepted by the target - processor within 10 microseconds. - @retval EFI_INVALID_PARAMETER IPF: Specified AP is disabled. - @retval EFI_INVALID_PARAMETER IPF: Specified AP is unhealthy or untested. - @retval EFI_NOT_READY IPF: Specified AP is busy. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_MP_SERVICES_SEND_IPI)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - IN UINTN ProcessorNumber, - IN UINTN VectorNumber, - IN UINTN DeliveryMode - ); - -/** - This service lets the caller enable or disable an AP. The caller can optionally - specify the health status of the AP by Health. It is usually used to update the - health status of the processor after some processor test. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[in] ProcessorNumber The handle number of AP. The range is from 0 to - the total number of logical processors minus 1. - The total number of logical processors can be - retrieved by GetGeneralMPInfo(). - @param[in] NewAPState Indicates whether the new, desired state of the - AP is enabled or disabled. TRUE for enabling, - FALSE otherwise. - @param[in] HealthState If not NULL, it points to the value that specifies - the new health status of the AP. If it is NULL, - this parameter is ignored. - - @retval EFI_SUCCESS AP successfully enabled or disabled. - @retval EFI_INVALID_PARAMETER ProcessorNumber specifies the BSP. - @retval EFI_INVALID_PARAMETER IA32, X64: Processor with the handle specified - by ProcessorNumber does not exist. - @retval EFI_INVALID_PARAMETER IPF: If an unhealthy or untested AP is to be - enabled. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_ENABLEDISABLEAP)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - IN UINTN ProcessorNumber, - IN BOOLEAN NewAPState, - IN EFI_MP_HEALTH *HealthState OPTIONAL - ); - -/** - This service lets the caller processor get its handle number, with which any - processor in the system can be uniquely identified. The range is from 0 to the - total number of logical processors minus 1. The total number of logical - processors can be retrieved by GetGeneralMPInfo(). This service may be called - from the BSP and APs. - - @param[in] This The pointer to the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL - instance. - @param[out] ProcessorNumber A pointer to the handle number of AP. The range is - from 0 to the total number of logical processors - minus 1. The total number of logical processors - can be retrieved by GetGeneralMPInfo(). - -@retval EFI_SUCCESS This function always returns EFI_SUCCESS. - -**/ -typedef -EFI_STATUS -(EFIAPI *FRAMEWORK_EFI_MP_SERVICES_WHOAMI)( - IN FRAMEWORK_EFI_MP_SERVICES_PROTOCOL *This, - OUT UINTN *ProcessorNumber - ); - -/// -/// Framework MP Services Protocol structure. -/// -struct _FRAMEWORK_EFI_MP_SERVICES_PROTOCOL { - EFI_MP_SERVICES_GET_GENERAL_MP_INFO GetGeneralMPInfo; - EFI_MP_SERVICES_GET_PROCESSOR_CONTEXT GetProcessorContext; - FRAMEWORK_EFI_MP_SERVICES_STARTUP_ALL_APS StartupAllAPs; - FRAMEWORK_EFI_MP_SERVICES_STARTUP_THIS_AP StartupThisAP; - FRAMEWORK_EFI_MP_SERVICES_SWITCH_BSP SwitchBSP; - EFI_MP_SERVICES_SEND_IPI SendIPI; - FRAMEWORK_EFI_MP_SERVICES_ENABLEDISABLEAP EnableDisableAP; - FRAMEWORK_EFI_MP_SERVICES_WHOAMI WhoAmI; -}; - -extern EFI_GUID gFrameworkEfiMpServiceProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/Legacy8259.h b/IntelFrameworkPkg/Include/Protocol/Legacy8259.h deleted file mode 100644 index 74bbb67..0000000 --- a/IntelFrameworkPkg/Include/Protocol/Legacy8259.h +++ /dev/null @@ -1,291 +0,0 @@ -/** @file - This protocol abstracts the 8259 interrupt controller. This includes - PCI IRQ routing needed to program the PCI Interrupt Line register. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Framework for EFI Compatibility Support Module spec - Version 0.97. - -**/ - -#ifndef _EFI_LEGACY_8259_H_ -#define _EFI_LEGACY_8259_H_ - - -#define EFI_LEGACY_8259_PROTOCOL_GUID \ - { \ - 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1 } \ - } - -typedef struct _EFI_LEGACY_8259_PROTOCOL EFI_LEGACY_8259_PROTOCOL; - -typedef enum { - Efi8259Irq0, - Efi8259Irq1, - Efi8259Irq2, - Efi8259Irq3, - Efi8259Irq4, - Efi8259Irq5, - Efi8259Irq6, - Efi8259Irq7, - Efi8259Irq8, - Efi8259Irq9, - Efi8259Irq10, - Efi8259Irq11, - Efi8259Irq12, - Efi8259Irq13, - Efi8259Irq14, - Efi8259Irq15, - Efi8259IrqMax -} EFI_8259_IRQ; - -typedef enum { - Efi8259LegacyMode, - Efi8259ProtectedMode, - Efi8259MaxMode -} EFI_8259_MODE; - -/** - Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for - the legacy mode mask and the protected mode mask. The base address for the 8259 - is different for legacy and protected mode, so two masks are required. - - @param This The protocol instance pointer. - @param MasterBase The base vector for the Master PIC in the 8259 controller. - @param SlaveBase The base vector for the Slave PIC in the 8259 controller. - - @retval EFI_SUCCESS The new bases were programmed. - @retval EFI_DEVICE_ERROR A device error occured programming the vector bases. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_SET_VECTOR_BASE)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN UINT8 MasterBase, - IN UINT8 SlaveBase - ); - -/** - Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for - the legacy mode mask and the protected mode mask. The base address for the 8259 - is different for legacy and protected mode, so two masks are required. - - @param This The protocol instance pointer. - @param LegacyMask Bit 0 is Irq0 - Bit 15 is Irq15. - @param LegacyEdgeLevel Bit 0 is Irq0 - Bit 15 is Irq15. - @param ProtectedMask Bit 0 is Irq0 - Bit 15 is Irq15. - @param ProtectedEdgeLevel Bit 0 is Irq0 - Bit 15 is Irq15. - - @retval EFI_SUCCESS 8259 status returned. - @retval EFI_DEVICE_ERROR Error reading 8259. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_GET_MASK)( - IN EFI_LEGACY_8259_PROTOCOL *This, - OUT UINT16 *LegacyMask, OPTIONAL - OUT UINT16 *LegacyEdgeLevel, OPTIONAL - OUT UINT16 *ProtectedMask, OPTIONAL - OUT UINT16 *ProtectedEdgeLevel OPTIONAL - ); - -/** - Set the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for - the legacy mode mask and the protected mode mask. The base address for the 8259 - is different for legacy and protected mode, so two masks are required. - Also set the edge/level masks. - - @param This The protocol instance pointer. - @param LegacyMask Bit 0 is Irq0 - Bit 15 is Irq15. - @param LegacyEdgeLevel Bit 0 is Irq0 - Bit 15 is Irq15. - @param ProtectedMask Bit 0 is Irq0 - Bit 15 is Irq15. - @param ProtectedEdgeLevel Bit 0 is Irq0 - Bit 15 is Irq15. - - @retval EFI_SUCCESS 8259 status returned. - @retval EFI_DEVICE_ERROR Error writing 8259. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_SET_MASK)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN UINT16 *LegacyMask, OPTIONAL - IN UINT16 *LegacyEdgeLevel, OPTIONAL - IN UINT16 *ProtectedMask, OPTIONAL - IN UINT16 *ProtectedEdgeLevel OPTIONAL - ); - -/** - Set the 8259 mode of operation. The base address for the 8259 is different for - legacy and protected mode. The legacy mode requires the master 8259 to have a - master base of 0x08 and the slave base of 0x70. The protected mode base locations - are not defined. Interrupts must be masked by the caller before this function - is called. The interrupt mask from the current mode is saved. The interrupt - mask for the new mode is Mask, or if Mask does not exist the previously saved - mask is used. - - @param This The protocol instance pointer. - @param Mode The mode of operation. i.e. the real mode or protected mode. - @param Mask Optional interupt mask for the new mode. - @param EdgeLevel Optional trigger mask for the new mode. - - @retval EFI_SUCCESS 8259 programmed. - @retval EFI_DEVICE_ERROR Error writing to 8259. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_SET_MODE)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN EFI_8259_MODE Mode, - IN UINT16 *Mask, OPTIONAL - IN UINT16 *EdgeLevel OPTIONAL - ); - -/** - Convert from IRQ to processor interrupt vector number. - - @param This The protocol instance pointer. - @param Irq 8259 IRQ0 - IRQ15. - @param Vector The processor vector number that matches an Irq. - - @retval EFI_SUCCESS The Vector matching Irq is returned. - @retval EFI_INVALID_PARAMETER The Irq not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_GET_VECTOR)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN EFI_8259_IRQ Irq, - OUT UINT8 *Vector - ); - -/** - Enable Irq by unmasking interrupt in 8259 - - @param This The protocol instance pointer. - @param Irq 8259 IRQ0 - IRQ15. - @param LevelTriggered TRUE if level triggered. FALSE if edge triggered. - - @retval EFI_SUCCESS The Irq was enabled on 8259. - @retval EFI_INVALID_PARAMETER The Irq is not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_ENABLE_IRQ)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN EFI_8259_IRQ Irq, - IN BOOLEAN LevelTriggered - ); - -/** - Disable Irq by masking interrupt in 8259 - - @param This The protocol instance pointer. - @param Irq 8259 IRQ0 - IRQ15. - - @retval EFI_SUCCESS The Irq was disabled on 8259. - @retval EFI_INVALID_PARAMETER The Irq is not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_DISABLE_IRQ)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN EFI_8259_IRQ Irq - ); - -/** - PciHandle represents a PCI config space of a PCI function. Vector - represents Interrupt Pin (from PCI config space) and it is the data - that is programmed into the Interrupt Line (from the PCI config space) - register. - - @param This The protocol instance pointer. - @param PciHandle The PCI function to return the vector for. - @param Vector The vector for the function it matches. - - @retval EFI_SUCCESS A valid Vector was returned. - @retval EFI_INVALID_PARAMETER PciHandle not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_GET_INTERRUPT_LINE)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN EFI_HANDLE PciHandle, - OUT UINT8 *Vector - ); - -/** - Send an EOI to 8259 - - @param This The protocol instance pointer. - @param Irq 8259 IRQ0 - IRQ15. - - @retval EFI_SUCCESS EOI was successfully sent to 8259. - @retval EFI_INVALID_PARAMETER The Irq isnot valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_8259_END_OF_INTERRUPT)( - IN EFI_LEGACY_8259_PROTOCOL *This, - IN EFI_8259_IRQ Irq - ); - -/** - @par Protocol Description: - Abstracts the 8259 and APIC hardware control between EFI usage and - Compatibility16 usage. - - @param SetVectorBase - Sets the vector bases for master and slave PICs. - - @param GetMask - Gets IRQ and edge/level masks for 16-bit real mode and 32-bit protected mode. - - @param SetMask - Sets the IRQ and edge\level masks for 16-bit real mode and 32-bit protected mode. - - @param SetMode - Sets PIC mode to 16-bit real mode or 32-bit protected mode. - - @param GetVector - Gets the base vector assigned to an IRQ. - - @param EnableIrq - Enables an IRQ. - - @param DisableIrq - Disables an IRQ. - - @param GetInterruptLine - Gets an IRQ that is assigned to a PCI device. - - @param EndOfInterrupt - Issues the end of interrupt command. - -**/ -struct _EFI_LEGACY_8259_PROTOCOL { - EFI_LEGACY_8259_SET_VECTOR_BASE SetVectorBase; - EFI_LEGACY_8259_GET_MASK GetMask; - EFI_LEGACY_8259_SET_MASK SetMask; - EFI_LEGACY_8259_SET_MODE SetMode; - EFI_LEGACY_8259_GET_VECTOR GetVector; - EFI_LEGACY_8259_ENABLE_IRQ EnableIrq; - EFI_LEGACY_8259_DISABLE_IRQ DisableIrq; - EFI_LEGACY_8259_GET_INTERRUPT_LINE GetInterruptLine; - EFI_LEGACY_8259_END_OF_INTERRUPT EndOfInterrupt; -}; - -extern EFI_GUID gEfiLegacy8259ProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyBios.h b/IntelFrameworkPkg/Include/Protocol/LegacyBios.h deleted file mode 100644 index 36761da..0000000 --- a/IntelFrameworkPkg/Include/Protocol/LegacyBios.h +++ /dev/null @@ -1,1553 +0,0 @@ -/** @file - The EFI Legacy BIOS Protocol is used to abstract legacy Option ROM usage - under EFI and Legacy OS boot. This file also includes all the related - COMPATIBILIY16 structures and defintions. - - Note: The names for EFI_IA32_REGISTER_SET elements were picked to follow - well known naming conventions. - - Thunk is the code that switches from 32-bit protected environment into the 16-bit real-mode - environment. Reverse thunk is the code that does the opposite. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Framework for EFI Compatibility Support Module spec - Version 0.98. - -**/ - -#ifndef _EFI_LEGACY_BIOS_H_ -#define _EFI_LEGACY_BIOS_H_ - -/// -/// -/// -#pragma pack(1) - -typedef UINT8 SERIAL_MODE; -typedef UINT8 PARALLEL_MODE; - -#define EFI_COMPATIBILITY16_TABLE_SIGNATURE SIGNATURE_32 ('I', 'F', 'E', '$') - -/// -/// There is a table located within the traditional BIOS in either the 0xF000:xxxx or 0xE000:xxxx -/// physical address range. It is located on a 16-byte boundary and provides the physical address of the -/// entry point for the Compatibility16 functions. These functions provide the platform-specific -/// information that is required by the generic EfiCompatibility code. The functions are invoked via -/// thunking by using EFI_LEGACY_BIOS_PROTOCOL.FarCall86() with the 32-bit physical -/// entry point. -/// -typedef struct { - /// - /// The string "$EFI" denotes the start of the EfiCompatibility table. Byte 0 is "I," byte - /// 1 is "F," byte 2 is "E," and byte 3 is "$" and is normally accessed as a DWORD or UINT32. - /// - UINT32 Signature; - - /// - /// The value required such that byte checksum of TableLength equals zero. - /// - UINT8 TableChecksum; - - /// - /// The length of this table. - /// - UINT8 TableLength; - - /// - /// The major EFI revision for which this table was generated. - /// - UINT8 EfiMajorRevision; - - /// - /// The minor EFI revision for which this table was generated. - /// - UINT8 EfiMinorRevision; - - /// - /// The major revision of this table. - /// - UINT8 TableMajorRevision; - - /// - /// The minor revision of this table. - /// - UINT8 TableMinorRevision; - - /// - /// Reserved for future usage. - /// - UINT16 Reserved; - - /// - /// The segment of the entry point within the traditional BIOS for Compatibility16 functions. - /// - UINT16 Compatibility16CallSegment; - - /// - /// The offset of the entry point within the traditional BIOS for Compatibility16 functions. - /// - UINT16 Compatibility16CallOffset; - - /// - /// The segment of the entry point within the traditional BIOS for EfiCompatibility - /// to invoke the PnP installation check. - /// - UINT16 PnPInstallationCheckSegment; - - /// - /// The Offset of the entry point within the traditional BIOS for EfiCompatibility - /// to invoke the PnP installation check. - /// - UINT16 PnPInstallationCheckOffset; - - /// - /// EFI system resources table. Type EFI_SYSTEM_TABLE is defined in the IntelPlatform - ///Innovation Framework for EFI Driver Execution Environment Core Interface Specification (DXE CIS). - /// - UINT32 EfiSystemTable; - - /// - /// The address of an OEM-provided identifier string. The string is null terminated. - /// - UINT32 OemIdStringPointer; - - /// - /// The 32-bit physical address where ACPI RSD PTR is stored within the traditional - /// BIOS. The remained of the ACPI tables are located at their EFI addresses. The size - /// reserved is the maximum for ACPI 2.0. The EfiCompatibility will fill in the ACPI - /// RSD PTR with either the ACPI 1.0b or 2.0 values. - /// - UINT32 AcpiRsdPtrPointer; - - /// - /// The OEM revision number. Usage is undefined but provided for OEM module usage. - /// - UINT16 OemRevision; - - /// - /// The 32-bit physical address where INT15 E820 data is stored within the traditional - /// BIOS. The EfiCompatibility code will fill in the E820Pointer value and copy the - /// data to the indicated area. - /// - UINT32 E820Pointer; - - /// - /// The length of the E820 data and is filled in by the EfiCompatibility code. - /// - UINT32 E820Length; - - /// - /// The 32-bit physical address where the $PIR table is stored in the traditional BIOS. - /// The EfiCompatibility code will fill in the IrqRoutingTablePointer value and - /// copy the data to the indicated area. - /// - UINT32 IrqRoutingTablePointer; - - /// - /// The length of the $PIR table and is filled in by the EfiCompatibility code. - /// - UINT32 IrqRoutingTableLength; - - /// - /// The 32-bit physical address where the MP table is stored in the traditional BIOS. - /// The EfiCompatibility code will fill in the MpTablePtr value and copy the data - /// to the indicated area. - /// - UINT32 MpTablePtr; - - /// - /// The length of the MP table and is filled in by the EfiCompatibility code. - /// - UINT32 MpTableLength; - - /// - /// The segment of the OEM-specific INT table/code. - /// - UINT16 OemIntSegment; - - /// - /// The offset of the OEM-specific INT table/code. - /// - UINT16 OemIntOffset; - - /// - /// The segment of the OEM-specific 32-bit table/code. - /// - UINT16 Oem32Segment; - - /// - /// The offset of the OEM-specific 32-bit table/code. - /// - UINT16 Oem32Offset; - - /// - /// The segment of the OEM-specific 16-bit table/code. - /// - UINT16 Oem16Segment; - - /// - /// The offset of the OEM-specific 16-bit table/code. - /// - UINT16 Oem16Offset; - - /// - /// The segment of the TPM binary passed to 16-bit CSM. - /// - UINT16 TpmSegment; - - /// - /// The offset of the TPM binary passed to 16-bit CSM. - /// - UINT16 TpmOffset; - - /// - /// A pointer to a string identifying the independent BIOS vendor. - /// - UINT32 IbvPointer; - - /// - /// This field is NULL for all systems not supporting PCI Express. This field is the base - /// value of the start of the PCI Express memory-mapped configuration registers and - /// must be filled in prior to EfiCompatibility code issuing the Compatibility16 function - /// Compatibility16InitializeYourself(). - /// Compatibility16InitializeYourself() is defined in Compatability16 - /// Functions. - /// - UINT32 PciExpressBase; - - /// - /// Maximum PCI bus number assigned. - /// - UINT8 LastPciBus; - - /// - /// Start Address of Upper Memory Area (UMA) to be set as Read/Write. If - /// UmaAddress is a valid address in the shadow RAM, it also indicates that the region - /// from 0xC0000 to (UmaAddress - 1) can be used for Option ROM. - /// - UINT32 UmaAddress; - - /// - /// Upper Memory Area size in bytes to be set as Read/Write. If zero, no UMA region - /// will be set as Read/Write (i.e. all Shadow RAM is set as Read-Only). - /// - UINT32 UmaSize; - - /// - /// Start Address of high memory that can be used for permanent allocation. If zero, - /// high memory is not available for permanent allocation. - /// - UINT32 HiPermanentMemoryAddress; - - /// - /// Size of high memory that can be used for permanent allocation in bytes. If zero, - /// high memory is not available for permanent allocation. - /// - UINT32 HiPermanentMemorySize; -} EFI_COMPATIBILITY16_TABLE; - -/// -/// Functions provided by the CSM binary which communicate between the EfiCompatibility -/// and Compatability16 code. -/// -/// Inconsistent with the specification here: -/// The member's name started with "Compatibility16" [defined in Intel Framework -/// Compatibility Support Module Specification / 0.97 version] -/// has been changed to "Legacy16" since keeping backward compatible. -/// -typedef enum { - /// - /// Causes the Compatibility16 code to do any internal initialization required. - /// Input: - /// AX = Compatibility16InitializeYourself - /// ES:BX = Pointer to EFI_TO_COMPATIBILITY16_INIT_TABLE - /// Return: - /// AX = Return Status codes - /// - Legacy16InitializeYourself = 0x0000, - - /// - /// Causes the Compatibility16 BIOS to perform any drive number translations to match the boot sequence. - /// Input: - /// AX = Compatibility16UpdateBbs - /// ES:BX = Pointer to EFI_TO_COMPATIBILITY16_BOOT_TABLE - /// Return: - /// AX = Returned status codes - /// - Legacy16UpdateBbs = 0x0001, - - /// - /// Allows the Compatibility16 code to perform any final actions before booting. The Compatibility16 - /// code is read/write. - /// Input: - /// AX = Compatibility16PrepareToBoot - /// ES:BX = Pointer to EFI_TO_COMPATIBILITY16_BOOT_TABLE structure - /// Return: - /// AX = Returned status codes - /// - Legacy16PrepareToBoot = 0x0002, - - /// - /// Causes the Compatibility16 BIOS to boot. The Compatibility16 code is Read/Only. - /// Input: - /// AX = Compatibility16Boot - /// Output: - /// AX = Returned status codes - /// - Legacy16Boot = 0x0003, - - /// - /// Allows the Compatibility16 code to get the last device from which a boot was attempted. This is - /// stored in CMOS and is the priority number of the last attempted boot device. - /// Input: - /// AX = Compatibility16RetrieveLastBootDevice - /// Output: - /// AX = Returned status codes - /// BX = Priority number of the boot device. - /// - Legacy16RetrieveLastBootDevice = 0x0004, - - /// - /// Allows the Compatibility16 code rehook INT13, INT18, and/or INT19 after dispatching a legacy OpROM. - /// Input: - /// AX = Compatibility16DispatchOprom - /// ES:BX = Pointer to EFI_DISPATCH_OPROM_TABLE - /// Output: - /// AX = Returned status codes - /// BX = Number of non-BBS-compliant devices found. Equals 0 if BBS compliant. - /// - Legacy16DispatchOprom = 0x0005, - - /// - /// Finds a free area in the 0xFxxxx or 0xExxxx region of the specified length and returns the address - /// of that region. - /// Input: - /// AX = Compatibility16GetTableAddress - /// BX = Allocation region - /// 00 = Allocate from either 0xE0000 or 0xF0000 64 KB blocks. - /// Bit 0 = 1 Allocate from 0xF0000 64 KB block - /// Bit 1 = 1 Allocate from 0xE0000 64 KB block - /// CX = Requested length in bytes. - /// DX = Required address alignment. Bit mapped. First non-zero bit from the right is the alignment. - /// Output: - /// AX = Returned status codes - /// DS:BX = Address of the region - /// - Legacy16GetTableAddress = 0x0006, - - /// - /// Enables the EfiCompatibility module to do any nonstandard processing of keyboard LEDs or state. - /// Input: - /// AX = Compatibility16SetKeyboardLeds - /// CL = LED status. - /// Bit 0 Scroll Lock 0 = Off - /// Bit 1 NumLock - /// Bit 2 Caps Lock - /// Output: - /// AX = Returned status codes - /// - Legacy16SetKeyboardLeds = 0x0007, - - /// - /// Enables the EfiCompatibility module to install an interrupt handler for PCI mass media devices that - /// do not have an OpROM associated with them. An example is SATA. - /// Input: - /// AX = Compatibility16InstallPciHandler - /// ES:BX = Pointer to EFI_LEGACY_INSTALL_PCI_HANDLER structure - /// Output: - /// AX = Returned status codes - /// - Legacy16InstallPciHandler = 0x0008 -} EFI_COMPATIBILITY_FUNCTIONS; - - -/// -/// EFI_DISPATCH_OPROM_TABLE -/// -typedef struct { - UINT16 PnPInstallationCheckSegment; ///< A pointer to the PnpInstallationCheck data structure. - UINT16 PnPInstallationCheckOffset; ///< A pointer to the PnpInstallationCheck data structure. - UINT16 OpromSegment; ///< The segment where the OpROM was placed. Offset is assumed to be 3. - UINT8 PciBus; ///< The PCI bus. - UINT8 PciDeviceFunction; ///< The PCI device * 0x08 | PCI function. - UINT8 NumberBbsEntries; ///< The number of valid BBS table entries upon entry and exit. The IBV code may - ///< increase this number, if BBS-compliant devices also hook INTs in order to force the - ///< OpROM BIOS Setup to be executed. - UINT32 BbsTablePointer; ///< A pointer to the BBS table. - UINT16 RuntimeSegment; ///< The segment where the OpROM can be relocated to. If this value is 0x0000, this - ///< means that the relocation of this run time code is not supported. - ///< Inconsistent with specification here: - ///< The member's name "OpromDestinationSegment" [defined in Intel Framework Compatibility Support Module Specification / 0.97 version] - ///< has been changed to "RuntimeSegment" since keeping backward compatible. - -} EFI_DISPATCH_OPROM_TABLE; - -/// -/// EFI_TO_COMPATIBILITY16_INIT_TABLE -/// -typedef struct { - /// - /// Starting address of memory under 1 MB. The ending address is assumed to be 640 KB or 0x9FFFF. - /// - UINT32 BiosLessThan1MB; - - /// - /// The starting address of the high memory block. - /// - UINT32 HiPmmMemory; - - /// - /// The length of high memory block. - /// - UINT32 HiPmmMemorySizeInBytes; - - /// - /// The segment of the reverse thunk call code. - /// - UINT16 ReverseThunkCallSegment; - - /// - /// The offset of the reverse thunk call code. - /// - UINT16 ReverseThunkCallOffset; - - /// - /// The number of E820 entries copied to the Compatibility16 BIOS. - /// - UINT32 NumberE820Entries; - - /// - /// The amount of usable memory above 1 MB, e.g., E820 type 1 memory. - /// - UINT32 OsMemoryAbove1Mb; - - /// - /// The start of thunk code in main memory. Memory cannot be used by BIOS or PMM. - /// - UINT32 ThunkStart; - - /// - /// The size of the thunk code. - /// - UINT32 ThunkSizeInBytes; - - /// - /// Starting address of memory under 1 MB. - /// - UINT32 LowPmmMemory; - - /// - /// The length of low Memory block. - /// - UINT32 LowPmmMemorySizeInBytes; -} EFI_TO_COMPATIBILITY16_INIT_TABLE; - -/// -/// DEVICE_PRODUCER_SERIAL. -/// -typedef struct { - UINT16 Address; ///< I/O address assigned to the serial port. - UINT8 Irq; ///< IRQ assigned to the serial port. - SERIAL_MODE Mode; ///< Mode of serial port. Values are defined below. -} DEVICE_PRODUCER_SERIAL; - -/// -/// DEVICE_PRODUCER_SERIAL's modes. -///@{ -#define DEVICE_SERIAL_MODE_NORMAL 0x00 -#define DEVICE_SERIAL_MODE_IRDA 0x01 -#define DEVICE_SERIAL_MODE_ASK_IR 0x02 -#define DEVICE_SERIAL_MODE_DUPLEX_HALF 0x00 -#define DEVICE_SERIAL_MODE_DUPLEX_FULL 0x10 -///@) - -/// -/// DEVICE_PRODUCER_PARALLEL. -/// -typedef struct { - UINT16 Address; ///< I/O address assigned to the parallel port. - UINT8 Irq; ///< IRQ assigned to the parallel port. - UINT8 Dma; ///< DMA assigned to the parallel port. - PARALLEL_MODE Mode; ///< Mode of the parallel port. Values are defined below. -} DEVICE_PRODUCER_PARALLEL; - -/// -/// DEVICE_PRODUCER_PARALLEL's modes. -///@{ -#define DEVICE_PARALLEL_MODE_MODE_OUTPUT_ONLY 0x00 -#define DEVICE_PARALLEL_MODE_MODE_BIDIRECTIONAL 0x01 -#define DEVICE_PARALLEL_MODE_MODE_EPP 0x02 -#define DEVICE_PARALLEL_MODE_MODE_ECP 0x03 -///@} - -/// -/// DEVICE_PRODUCER_FLOPPY -/// -typedef struct { - UINT16 Address; ///< I/O address assigned to the floppy. - UINT8 Irq; ///< IRQ assigned to the floppy. - UINT8 Dma; ///< DMA assigned to the floppy. - UINT8 NumberOfFloppy; ///< Number of floppies in the system. -} DEVICE_PRODUCER_FLOPPY; - -/// -/// LEGACY_DEVICE_FLAGS -/// -typedef struct { - UINT32 A20Kybd : 1; ///< A20 controller by keyboard controller. - UINT32 A20Port90 : 1; ///< A20 controlled by port 0x92. - UINT32 Reserved : 30; ///< Reserved for future usage. -} LEGACY_DEVICE_FLAGS; - -/// -/// DEVICE_PRODUCER_DATA_HEADER -/// -typedef struct { - DEVICE_PRODUCER_SERIAL Serial[4]; ///< Data for serial port x. Type DEVICE_PRODUCER_SERIAL is defined below. - DEVICE_PRODUCER_PARALLEL Parallel[3]; ///< Data for parallel port x. Type DEVICE_PRODUCER_PARALLEL is defined below. - DEVICE_PRODUCER_FLOPPY Floppy; ///< Data for floppy. Type DEVICE_PRODUCER_FLOPPY is defined below. - UINT8 MousePresent; ///< Flag to indicate if mouse is present. - LEGACY_DEVICE_FLAGS Flags; ///< Miscellaneous Boolean state information passed to CSM. -} DEVICE_PRODUCER_DATA_HEADER; - -/// -/// ATAPI_IDENTIFY -/// -typedef struct { - UINT16 Raw[256]; ///< Raw data from the IDE IdentifyDrive command. -} ATAPI_IDENTIFY; - -/// -/// HDD_INFO -/// -typedef struct { - /// - /// Status of IDE device. Values are defined below. There is one HDD_INFO structure - /// per IDE controller. The IdentifyDrive is per drive. Index 0 is master and index - /// 1 is slave. - /// - UINT16 Status; - - /// - /// PCI bus of IDE controller. - /// - UINT32 Bus; - - /// - /// PCI device of IDE controller. - /// - UINT32 Device; - - /// - /// PCI function of IDE controller. - /// - UINT32 Function; - - /// - /// Command ports base address. - /// - UINT16 CommandBaseAddress; - - /// - /// Control ports base address. - /// - UINT16 ControlBaseAddress; - - /// - /// Bus master address. - /// - UINT16 BusMasterAddress; - - UINT8 HddIrq; - - /// - /// Data that identifies the drive data; one per possible attached drive. - /// - ATAPI_IDENTIFY IdentifyDrive[2]; -} HDD_INFO; - -/// -/// HDD_INFO status bits -/// -#define HDD_PRIMARY 0x01 -#define HDD_SECONDARY 0x02 -#define HDD_MASTER_ATAPI_CDROM 0x04 -#define HDD_SLAVE_ATAPI_CDROM 0x08 -#define HDD_MASTER_IDE 0x20 -#define HDD_SLAVE_IDE 0x40 -#define HDD_MASTER_ATAPI_ZIPDISK 0x10 -#define HDD_SLAVE_ATAPI_ZIPDISK 0x80 - -/// -/// BBS_STATUS_FLAGS;\. -/// -typedef struct { - UINT16 OldPosition : 4; ///< Prior priority. - UINT16 Reserved1 : 4; ///< Reserved for future use. - UINT16 Enabled : 1; ///< If 0, ignore this entry. - UINT16 Failed : 1; ///< 0 = Not known if boot failure occurred. - ///< 1 = Boot attempted failed. - - /// - /// State of media present. - /// 00 = No bootable media is present in the device. - /// 01 = Unknown if a bootable media present. - /// 10 = Media is present and appears bootable. - /// 11 = Reserved. - /// - UINT16 MediaPresent : 2; - UINT16 Reserved2 : 4; ///< Reserved for future use. -} BBS_STATUS_FLAGS; - -/// -/// BBS_TABLE, device type values & boot priority values. -/// -typedef struct { - /// - /// The boot priority for this boot device. Values are defined below. - /// - UINT16 BootPriority; - - /// - /// The PCI bus for this boot device. - /// - UINT32 Bus; - - /// - /// The PCI device for this boot device. - /// - UINT32 Device; - - /// - /// The PCI function for the boot device. - /// - UINT32 Function; - - /// - /// The PCI class for this boot device. - /// - UINT8 Class; - - /// - /// The PCI Subclass for this boot device. - /// - UINT8 SubClass; - - /// - /// Segment:offset address of an ASCIIZ description string describing the manufacturer. - /// - UINT16 MfgStringOffset; - - /// - /// Segment:offset address of an ASCIIZ description string describing the manufacturer. - /// - UINT16 MfgStringSegment; - - /// - /// BBS device type. BBS device types are defined below. - /// - UINT16 DeviceType; - - /// - /// Status of this boot device. Type BBS_STATUS_FLAGS is defined below. - /// - BBS_STATUS_FLAGS StatusFlags; - - /// - /// Segment:Offset address of boot loader for IPL devices or install INT13 handler for - /// BCV devices. - /// - UINT16 BootHandlerOffset; - - /// - /// Segment:Offset address of boot loader for IPL devices or install INT13 handler for - /// BCV devices. - /// - UINT16 BootHandlerSegment; - - /// - /// Segment:offset address of an ASCIIZ description string describing this device. - /// - UINT16 DescStringOffset; - - /// - /// Segment:offset address of an ASCIIZ description string describing this device. - /// - UINT16 DescStringSegment; - - /// - /// Reserved. - /// - UINT32 InitPerReserved; - - /// - /// The use of these fields is IBV dependent. They can be used to flag that an OpROM - /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI - /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup - /// - UINT32 AdditionalIrq13Handler; - - /// - /// The use of these fields is IBV dependent. They can be used to flag that an OpROM - /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI - /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup - /// - UINT32 AdditionalIrq18Handler; - - /// - /// The use of these fields is IBV dependent. They can be used to flag that an OpROM - /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI - /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup - /// - UINT32 AdditionalIrq19Handler; - - /// - /// The use of these fields is IBV dependent. They can be used to flag that an OpROM - /// has hooked the specified IRQ. The OpROM may be BBS compliant as some SCSI - /// BBS-compliant OpROMs also hook IRQ vectors in order to run their BIOS Setup - /// - UINT32 AdditionalIrq40Handler; - UINT8 AssignedDriveNumber; - UINT32 AdditionalIrq41Handler; - UINT32 AdditionalIrq46Handler; - UINT32 IBV1; - UINT32 IBV2; -} BBS_TABLE; - -/// -/// BBS device type values -///@{ -#define BBS_FLOPPY 0x01 -#define BBS_HARDDISK 0x02 -#define BBS_CDROM 0x03 -#define BBS_PCMCIA 0x04 -#define BBS_USB 0x05 -#define BBS_EMBED_NETWORK 0x06 -#define BBS_BEV_DEVICE 0x80 -#define BBS_UNKNOWN 0xff -///@} - -/// -/// BBS boot priority values -///@{ -#define BBS_DO_NOT_BOOT_FROM 0xFFFC -#define BBS_LOWEST_PRIORITY 0xFFFD -#define BBS_UNPRIORITIZED_ENTRY 0xFFFE -#define BBS_IGNORE_ENTRY 0xFFFF -///@} - -/// -/// SMM_ATTRIBUTES -/// -typedef struct { - /// - /// Access mechanism used to generate the soft SMI. Defined types are below. The other - /// values are reserved for future usage. - /// - UINT16 Type : 3; - - /// - /// The size of "port" in bits. Defined values are below. - /// - UINT16 PortGranularity : 3; - - /// - /// The size of data in bits. Defined values are below. - /// - UINT16 DataGranularity : 3; - - /// - /// Reserved for future use. - /// - UINT16 Reserved : 7; -} SMM_ATTRIBUTES; - -/// -/// SMM_ATTRIBUTES type values. -///@{ -#define STANDARD_IO 0x00 -#define STANDARD_MEMORY 0x01 -///@} - -/// -/// SMM_ATTRIBUTES port size constants. -///@{ -#define PORT_SIZE_8 0x00 -#define PORT_SIZE_16 0x01 -#define PORT_SIZE_32 0x02 -#define PORT_SIZE_64 0x03 -///@} - -/// -/// SMM_ATTRIBUTES data size constants. -///@{ -#define DATA_SIZE_8 0x00 -#define DATA_SIZE_16 0x01 -#define DATA_SIZE_32 0x02 -#define DATA_SIZE_64 0x03 -///@} - -/// -/// SMM_FUNCTION & relating constants. -/// -typedef struct { - UINT16 Function : 15; - UINT16 Owner : 1; -} SMM_FUNCTION; - -/// -/// SMM_FUNCTION Function constants. -///@{ -#define INT15_D042 0x0000 -#define GET_USB_BOOT_INFO 0x0001 -#define DMI_PNP_50_57 0x0002 -///@} - -/// -/// SMM_FUNCTION Owner constants. -///@{ -#define STANDARD_OWNER 0x0 -#define OEM_OWNER 0x1 -///@} - -/// -/// This structure assumes both port and data sizes are 1. SmmAttribute must be -/// properly to reflect that assumption. -/// -typedef struct { - /// - /// Describes the access mechanism, SmmPort, and SmmData sizes. Type - /// SMM_ATTRIBUTES is defined below. - /// - SMM_ATTRIBUTES SmmAttributes; - - /// - /// Function Soft SMI is to perform. Type SMM_FUNCTION is defined below. - /// - SMM_FUNCTION SmmFunction; - - /// - /// SmmPort size depends upon SmmAttributes and ranges from2 bytes to 16 bytes. - /// - UINT8 SmmPort; - - /// - /// SmmData size depends upon SmmAttributes and ranges from2 bytes to 16 bytes. - /// - UINT8 SmmData; -} SMM_ENTRY; - -/// -/// SMM_TABLE -/// -typedef struct { - UINT16 NumSmmEntries; ///< Number of entries represented by SmmEntry. - SMM_ENTRY SmmEntry; ///< One entry per function. Type SMM_ENTRY is defined below. -} SMM_TABLE; - -/// -/// UDC_ATTRIBUTES -/// -typedef struct { - /// - /// This bit set indicates that the ServiceAreaData is valid. - /// - UINT8 DirectoryServiceValidity : 1; - - /// - /// This bit set indicates to use the Reserve Area Boot Code Address (RACBA) only if - /// DirectoryServiceValidity is 0. - /// - UINT8 RabcaUsedFlag : 1; - - /// - /// This bit set indicates to execute hard disk diagnostics. - /// - UINT8 ExecuteHddDiagnosticsFlag : 1; - - /// - /// Reserved for future use. Set to 0. - /// - UINT8 Reserved : 5; -} UDC_ATTRIBUTES; - -/// -/// UD_TABLE -/// -typedef struct { - /// - /// This field contains the bit-mapped attributes of the PARTIES information. Type - /// UDC_ATTRIBUTES is defined below. - /// - UDC_ATTRIBUTES Attributes; - - /// - /// This field contains the zero-based device on which the selected - /// ServiceDataArea is present. It is 0 for master and 1 for the slave device. - /// - UINT8 DeviceNumber; - - /// - /// This field contains the zero-based index into the BbsTable for the parent device. - /// This index allows the user to reference the parent device information such as PCI - /// bus, device function. - /// - UINT8 BbsTableEntryNumberForParentDevice; - - /// - /// This field contains the zero-based index into the BbsTable for the boot entry. - /// - UINT8 BbsTableEntryNumberForBoot; - - /// - /// This field contains the zero-based index into the BbsTable for the HDD diagnostics entry. - /// - UINT8 BbsTableEntryNumberForHddDiag; - - /// - /// The raw Beer data. - /// - UINT8 BeerData[128]; - - /// - /// The raw data of selected service area. - /// - UINT8 ServiceAreaData[64]; -} UD_TABLE; - -#define EFI_TO_LEGACY_MAJOR_VERSION 0x02 -#define EFI_TO_LEGACY_MINOR_VERSION 0x00 -#define MAX_IDE_CONTROLLER 8 - -/// -/// EFI_TO_COMPATIBILITY16_BOOT_TABLE -/// -typedef struct { - UINT16 MajorVersion; ///< The EfiCompatibility major version number. - UINT16 MinorVersion; ///< The EfiCompatibility minor version number. - UINT32 AcpiTable; ///< The location of the RSDT ACPI table. < 4G range. - UINT32 SmbiosTable; ///< The location of the SMBIOS table in EFI memory. < 4G range. - UINT32 SmbiosTableLength; - // - // Legacy SIO state - // - DEVICE_PRODUCER_DATA_HEADER SioData; ///< Standard traditional device information. - UINT16 DevicePathType; ///< The default boot type. - UINT16 PciIrqMask; ///< Mask of which IRQs have been assigned to PCI. - UINT32 NumberE820Entries; ///< Number of E820 entries. The number can change from the - ///< Compatibility16InitializeYourself() function. - // - // Controller & Drive Identify[2] per controller information - // - HDD_INFO HddInfo[MAX_IDE_CONTROLLER]; ///< Hard disk drive information, including raw Identify Drive data. - UINT32 NumberBbsEntries; ///< Number of entries in the BBS table - UINT32 BbsTable; ///< A pointer to the BBS table. Type BBS_TABLE is defined below. - UINT32 SmmTable; ///< A pointer to the SMM table. Type SMM_TABLE is defined below. - UINT32 OsMemoryAbove1Mb; ///< The amount of usable memory above 1 MB, i.e. E820 type 1 memory. This value can - ///< differ from the value in EFI_TO_COMPATIBILITY16_INIT_TABLE as more - ///< memory may have been discovered. - UINT32 UnconventionalDeviceTable; ///< Information to boot off an unconventional device like a PARTIES partition. Type - ///< UD_TABLE is defined below. -} EFI_TO_COMPATIBILITY16_BOOT_TABLE; - -/// -/// EFI_LEGACY_INSTALL_PCI_HANDLER -/// -typedef struct { - UINT8 PciBus; ///< The PCI bus of the device. - UINT8 PciDeviceFun; ///< The PCI device in bits 7:3 and function in bits 2:0. - UINT8 PciSegment; ///< The PCI segment of the device. - UINT8 PciClass; ///< The PCI class code of the device. - UINT8 PciSubclass; ///< The PCI subclass code of the device. - UINT8 PciInterface; ///< The PCI interface code of the device. - // - // Primary section - // - UINT8 PrimaryIrq; ///< The primary device IRQ. - UINT8 PrimaryReserved; ///< Reserved. - UINT16 PrimaryControl; ///< The primary device control I/O base. - UINT16 PrimaryBase; ///< The primary device I/O base. - UINT16 PrimaryBusMaster; ///< The primary device bus master I/O base. - // - // Secondary Section - // - UINT8 SecondaryIrq; ///< The secondary device IRQ. - UINT8 SecondaryReserved; ///< Reserved. - UINT16 SecondaryControl; ///< The secondary device control I/O base. - UINT16 SecondaryBase; ///< The secondary device I/O base. - UINT16 SecondaryBusMaster; ///< The secondary device bus master I/O base. -} EFI_LEGACY_INSTALL_PCI_HANDLER; - -// -// Restore default pack value -// -#pragma pack() - -#define EFI_LEGACY_BIOS_PROTOCOL_GUID \ - { \ - 0xdb9a1e3d, 0x45cb, 0x4abb, {0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d } \ - } - -typedef struct _EFI_LEGACY_BIOS_PROTOCOL EFI_LEGACY_BIOS_PROTOCOL; - -/// -/// Flags returned by CheckPciRom(). -/// -#define NO_ROM 0x00 -#define ROM_FOUND 0x01 -#define VALID_LEGACY_ROM 0x02 -#define ROM_WITH_CONFIG 0x04 ///< Not defined in the Framework CSM Specification. - -/// -/// The following macros do not appear in the Framework CSM Specification and -/// are kept for backward compatibility only. They convert 32-bit address (_Adr) -/// to Segment:Offset 16-bit form. -/// -///@{ -#define EFI_SEGMENT(_Adr) (UINT16) ((UINT16) (((UINTN) (_Adr)) >> 4) & 0xf000) -#define EFI_OFFSET(_Adr) (UINT16) (((UINT16) ((UINTN) (_Adr))) & 0xffff) -///@} - -#define CARRY_FLAG 0x01 - -/// -/// EFI_EFLAGS_REG -/// -typedef struct { - UINT32 CF:1; - UINT32 Reserved1:1; - UINT32 PF:1; - UINT32 Reserved2:1; - UINT32 AF:1; - UINT32 Reserved3:1; - UINT32 ZF:1; - UINT32 SF:1; - UINT32 TF:1; - UINT32 IF:1; - UINT32 DF:1; - UINT32 OF:1; - UINT32 IOPL:2; - UINT32 NT:1; - UINT32 Reserved4:2; - UINT32 VM:1; - UINT32 Reserved5:14; -} EFI_EFLAGS_REG; - -/// -/// EFI_DWORD_REGS -/// -typedef struct { - UINT32 EAX; - UINT32 EBX; - UINT32 ECX; - UINT32 EDX; - UINT32 ESI; - UINT32 EDI; - EFI_EFLAGS_REG EFlags; - UINT16 ES; - UINT16 CS; - UINT16 SS; - UINT16 DS; - UINT16 FS; - UINT16 GS; - UINT32 EBP; - UINT32 ESP; -} EFI_DWORD_REGS; - -/// -/// EFI_FLAGS_REG -/// -typedef struct { - UINT16 CF:1; - UINT16 Reserved1:1; - UINT16 PF:1; - UINT16 Reserved2:1; - UINT16 AF:1; - UINT16 Reserved3:1; - UINT16 ZF:1; - UINT16 SF:1; - UINT16 TF:1; - UINT16 IF:1; - UINT16 DF:1; - UINT16 OF:1; - UINT16 IOPL:2; - UINT16 NT:1; - UINT16 Reserved4:1; -} EFI_FLAGS_REG; - -/// -/// EFI_WORD_REGS -/// -typedef struct { - UINT16 AX; - UINT16 ReservedAX; - UINT16 BX; - UINT16 ReservedBX; - UINT16 CX; - UINT16 ReservedCX; - UINT16 DX; - UINT16 ReservedDX; - UINT16 SI; - UINT16 ReservedSI; - UINT16 DI; - UINT16 ReservedDI; - EFI_FLAGS_REG Flags; - UINT16 ReservedFlags; - UINT16 ES; - UINT16 CS; - UINT16 SS; - UINT16 DS; - UINT16 FS; - UINT16 GS; - UINT16 BP; - UINT16 ReservedBP; - UINT16 SP; - UINT16 ReservedSP; -} EFI_WORD_REGS; - -/// -/// EFI_BYTE_REGS -/// -typedef struct { - UINT8 AL, AH; - UINT16 ReservedAX; - UINT8 BL, BH; - UINT16 ReservedBX; - UINT8 CL, CH; - UINT16 ReservedCX; - UINT8 DL, DH; - UINT16 ReservedDX; -} EFI_BYTE_REGS; - -/// -/// EFI_IA32_REGISTER_SET -/// -typedef union { - EFI_DWORD_REGS E; - EFI_WORD_REGS X; - EFI_BYTE_REGS H; -} EFI_IA32_REGISTER_SET; - -/** - Thunk to 16-bit real mode and execute a software interrupt with a vector - of BiosInt. Regs will contain the 16-bit register context on entry and - exit. - - @param[in] This The protocol instance pointer. - @param[in] BiosInt The processor interrupt vector to invoke. - @param[in,out] Reg Register contexted passed into (and returned) from thunk to - 16-bit mode. - - @retval TRUE Thunk completed with no BIOS errors in the target code. See Regs for status. - @retval FALSE There was a BIOS error in the target code. -**/ -typedef -BOOLEAN -(EFIAPI *EFI_LEGACY_BIOS_INT86)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN UINT8 BiosInt, - IN OUT EFI_IA32_REGISTER_SET *Regs - ); - -/** - Thunk to 16-bit real mode and call Segment:Offset. Regs will contain the - 16-bit register context on entry and exit. Arguments can be passed on - the Stack argument - - @param[in] This The protocol instance pointer. - @param[in] Segment The segemnt of 16-bit mode call. - @param[in] Offset The offset of 16-bit mdoe call. - @param[in] Reg Register contexted passed into (and returned) from thunk to - 16-bit mode. - @param[in] Stack The caller allocated stack used to pass arguments. - @param[in] StackSize The size of Stack in bytes. - - @retval FALSE Thunk completed with no BIOS errors in the target code. See Regs for status. @retval TRUE There was a BIOS error in the target code. -**/ -typedef -BOOLEAN -(EFIAPI *EFI_LEGACY_BIOS_FARCALL86)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN UINT16 Segment, - IN UINT16 Offset, - IN EFI_IA32_REGISTER_SET *Regs, - IN VOID *Stack, - IN UINTN StackSize - ); - -/** - Test to see if a legacy PCI ROM exists for this device. Optionally return - the Legacy ROM instance for this PCI device. - - @param[in] This The protocol instance pointer. - @param[in] PciHandle The PCI PC-AT OPROM from this devices ROM BAR will be loaded - @param[out] RomImage Return the legacy PCI ROM for this device. - @param[out] RomSize The size of ROM Image. - @param[out] Flags Indicates if ROM found and if PC-AT. Multiple bits can be set as follows: - - 00 = No ROM. - - 01 = ROM Found. - - 02 = ROM is a valid legacy ROM. - - @retval EFI_SUCCESS The Legacy Option ROM available for this device - @retval EFI_UNSUPPORTED The Legacy Option ROM is not supported. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_CHECK_ROM)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN EFI_HANDLE PciHandle, - OUT VOID **RomImage, OPTIONAL - OUT UINTN *RomSize, OPTIONAL - OUT UINTN *Flags - ); - -/** - Load a legacy PC-AT OPROM on the PciHandle device. Return information - about how many disks were added by the OPROM and the shadow address and - size. DiskStart & DiskEnd are INT 13h drive letters. Thus 0x80 is C: - - @param[in] This The protocol instance pointer. - @param[in] PciHandle The PCI PC-AT OPROM from this devices ROM BAR will be loaded. - This value is NULL if RomImage is non-NULL. This is the normal - case. - @param[in] RomImage A PCI PC-AT ROM image. This argument is non-NULL if there is - no hardware associated with the ROM and thus no PciHandle, - otherwise is must be NULL. - Example is PXE base code. - @param[out] Flags The type of ROM discovered. Multiple bits can be set, as follows: - - 00 = No ROM. - - 01 = ROM found. - - 02 = ROM is a valid legacy ROM. - @param[out] DiskStart The disk number of first device hooked by the ROM. If DiskStart - is the same as DiskEnd no disked were hooked. - @param[out] DiskEnd disk number of the last device hooked by the ROM. - @param[out] RomShadowAddress Shadow address of PC-AT ROM. - @param[out] RomShadowSize Size of RomShadowAddress in bytes. - - @retval EFI_SUCCESS Thunk completed, see Regs for status. - @retval EFI_INVALID_PARAMETER PciHandle not found - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_INSTALL_ROM)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN EFI_HANDLE PciHandle, - IN VOID **RomImage, - OUT UINTN *Flags, - OUT UINT8 *DiskStart, OPTIONAL - OUT UINT8 *DiskEnd, OPTIONAL - OUT VOID **RomShadowAddress, OPTIONAL - OUT UINT32 *ShadowedRomSize OPTIONAL - ); - -/** - This function attempts to traditionally boot the specified BootOption. If the EFI context has - been compromised, this function will not return. This procedure is not used for loading an EFI-aware - OS off a traditional device. The following actions occur: - - Get EFI SMBIOS data structures, convert them to a traditional format, and copy to - Compatibility16. - - Get a pointer to ACPI data structures and copy the Compatibility16 RSD PTR to F0000 block. - - Find the traditional SMI handler from a firmware volume and register the traditional SMI - handler with the EFI SMI handler. - - Build onboard IDE information and pass this information to the Compatibility16 code. - - Make sure all PCI Interrupt Line registers are programmed to match 8259. - - Reconfigure SIO devices from EFI mode (polled) into traditional mode (interrupt driven). - - Shadow all PCI ROMs. - - Set up BDA and EBDA standard areas before the legacy boot. - - Construct the Compatibility16 boot memory map and pass it to the Compatibility16 code. - - Invoke the Compatibility16 table function Compatibility16PrepareToBoot(). This - invocation causes a thunk into the Compatibility16 code, which sets all appropriate internal - data structures. The boot device list is a parameter. - - Invoke the Compatibility16 Table function Compatibility16Boot(). This invocation - causes a thunk into the Compatibility16 code, which does an INT19. - - If the Compatibility16Boot() function returns, then the boot failed in a graceful - manner--meaning that the EFI code is still valid. An ungraceful boot failure causes a reset because the state - of EFI code is unknown. - - @param[in] This The protocol instance pointer. - @param[in] BootOption The EFI Device Path from BootXXXX variable. - @param[in] LoadOptionSize The size of LoadOption in size. - @param[in] LoadOption LThe oadOption from BootXXXX variable. - - @retval EFI_DEVICE_ERROR Failed to boot from any boot device and memory is uncorrupted. Note: This function normally does not returns. It will either boot the OS or reset the system if memory has been "corrupted" by loading a boot sector and passing control to it. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_BOOT)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN BBS_BBS_DEVICE_PATH *BootOption, - IN UINT32 LoadOptionsSize, - IN VOID *LoadOptions - ); - -/** - This function takes the Leds input parameter and sets/resets the BDA accordingly. - Leds is also passed to Compatibility16 code, in case any special processing is required. - This function is normally called from EFI Setup drivers that handle user-selectable - keyboard options such as boot with NUM LOCK on/off. This function does not - touch the keyboard or keyboard LEDs but only the BDA. - - @param[in] This The protocol instance pointer. - @param[in] Leds The status of current Scroll, Num & Cap lock LEDS: - - Bit 0 is Scroll Lock 0 = Not locked. - - Bit 1 is Num Lock. - - Bit 2 is Caps Lock. - - @retval EFI_SUCCESS The BDA was updated successfully. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN UINT8 Leds - ); - -/** - Retrieve legacy BBS info and assign boot priority. - - @param[in] This The protocol instance pointer. - @param[out] HddCount The number of HDD_INFO structures. - @param[out] HddInfo Onboard IDE controller information. - @param[out] BbsCount The number of BBS_TABLE structures. - @param[in,out] BbsTable Points to List of BBS_TABLE. - - @retval EFI_SUCCESS Tables were returned. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_GET_BBS_INFO)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - OUT UINT16 *HddCount, - OUT HDD_INFO **HddInfo, - OUT UINT16 *BbsCount, - IN OUT BBS_TABLE **BbsTable - ); - -/** - Assign drive number to legacy HDD drives prior to booting an EFI - aware OS so the OS can access drives without an EFI driver. - - @param[in] This The protocol instance pointer. - @param[out] BbsCount The number of BBS_TABLE structures - @param[out] BbsTable List of BBS entries - - @retval EFI_SUCCESS Drive numbers assigned. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - OUT UINT16 *BbsCount, - OUT BBS_TABLE **BbsTable - ); - -/** - To boot from an unconventional device like parties and/or execute - HDD diagnostics. - - @param[in] This The protocol instance pointer. - @param[in] Attributes How to interpret the other input parameters. - @param[in] BbsEntry The 0-based index into the BbsTable for the parent - device. - @param[in] BeerData A pointer to the 128 bytes of ram BEER data. - @param[in] ServiceAreaData A pointer to the 64 bytes of raw Service Area data. The - caller must provide a pointer to the specific Service - Area and not the start all Service Areas. - - @retval EFI_INVALID_PARAMETER If error. Does NOT return if no error. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN UDC_ATTRIBUTES Attributes, - IN UINTN BbsEntry, - IN VOID *BeerData, - IN VOID *ServiceAreaData - ); - -/** - Shadow all legacy16 OPROMs that haven't been shadowed. - Warning: Use this with caution. This routine disconnects all EFI - drivers. If used externally, then the caller must re-connect EFI - drivers. - - @param[in] This The protocol instance pointer. - - @retval EFI_SUCCESS OPROMs were shadowed. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS)( - IN EFI_LEGACY_BIOS_PROTOCOL *This - ); - -/** - Get a region from the LegacyBios for S3 usage. - - @param[in] This The protocol instance pointer. - @param[in] LegacyMemorySize The size of required region. - @param[in] Region The region to use. - 00 = Either 0xE0000 or 0xF0000 block. - - Bit0 = 1 0xF0000 block. - - Bit1 = 1 0xE0000 block. - @param[in] Alignment Address alignment. Bit mapped. The first non-zero - bit from right is alignment. - @param[out] LegacyMemoryAddress The Region Assigned - - @retval EFI_SUCCESS The Region was assigned. - @retval EFI_ACCESS_DENIED The function was previously invoked. - @retval Other The Region was not assigned. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_GET_LEGACY_REGION)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN UINTN LegacyMemorySize, - IN UINTN Region, - IN UINTN Alignment, - OUT VOID **LegacyMemoryAddress - ); - -/** - Get a region from the LegacyBios for Tiano usage. Can only be invoked once. - - @param[in] This The protocol instance pointer. - @param[in] LegacyMemorySize The size of data to copy. - @param[in] LegacyMemoryAddress The Legacy Region destination address. - Note: must be in region assigned by - LegacyBiosGetLegacyRegion. - @param[in] LegacyMemorySourceAddress The source of the data to copy. - - @retval EFI_SUCCESS The Region assigned. - @retval EFI_ACCESS_DENIED Destination was outside an assigned region. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_COPY_LEGACY_REGION)( - IN EFI_LEGACY_BIOS_PROTOCOL *This, - IN UINTN LegacyMemorySize, - IN VOID *LegacyMemoryAddress, - IN VOID *LegacyMemorySourceAddress - ); - -/// -/// Abstracts the traditional BIOS from the rest of EFI. The LegacyBoot() -/// member function allows the BDS to support booting a traditional OS. -/// EFI thunks drivers that make EFI bindings for BIOS INT services use -/// all the other member functions. -/// -struct _EFI_LEGACY_BIOS_PROTOCOL { - /// - /// Performs traditional software INT. See the Int86() function description. - /// - EFI_LEGACY_BIOS_INT86 Int86; - - /// - /// Performs a far call into Compatibility16 or traditional OpROM code. - /// - EFI_LEGACY_BIOS_FARCALL86 FarCall86; - - /// - /// Checks if a traditional OpROM exists for this device. - /// - EFI_LEGACY_BIOS_CHECK_ROM CheckPciRom; - - /// - /// Loads a traditional OpROM in traditional OpROM address space. - /// - EFI_LEGACY_BIOS_INSTALL_ROM InstallPciRom; - - /// - /// Boots a traditional OS. - /// - EFI_LEGACY_BIOS_BOOT LegacyBoot; - - /// - /// Updates BDA to reflect the current EFI keyboard LED status. - /// - EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS UpdateKeyboardLedStatus; - - /// - /// Allows an external agent, such as BIOS Setup, to get the BBS data. - /// - EFI_LEGACY_BIOS_GET_BBS_INFO GetBbsInfo; - - /// - /// Causes all legacy OpROMs to be shadowed. - /// - EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS ShadowAllLegacyOproms; - - /// - /// Performs all actions prior to boot. Used when booting an EFI-aware OS - /// rather than a legacy OS. - /// - EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI PrepareToBootEfi; - - /// - /// Allows EFI to reserve an area in the 0xE0000 or 0xF0000 block. - /// - EFI_LEGACY_BIOS_GET_LEGACY_REGION GetLegacyRegion; - - /// - /// Allows EFI to copy data to the area specified by GetLegacyRegion. - /// - EFI_LEGACY_BIOS_COPY_LEGACY_REGION CopyLegacyRegion; - - /// - /// Allows the user to boot off an unconventional device such as a PARTIES partition. - /// - EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE BootUnconventionalDevice; -}; - -// -// Legacy BIOS needs to access memory in page 0 (0-4095), which is disabled if -// NULL pointer detection feature is enabled. Following macro can be used to -// enable/disable page 0 before/after accessing it. -// -#define ACCESS_PAGE0_CODE(statements) \ - do { \ - EFI_STATUS Status_; \ - EFI_GCD_MEMORY_SPACE_DESCRIPTOR Desc_; \ - \ - Desc_.Attributes = 0; \ - Status_ = gDS->GetMemorySpaceDescriptor (0, &Desc_); \ - ASSERT_EFI_ERROR (Status_); \ - if ((Desc_.Attributes & EFI_MEMORY_RP) != 0) { \ - Status_ = gDS->SetMemorySpaceAttributes ( \ - 0, \ - EFI_PAGES_TO_SIZE(1), \ - Desc_.Attributes & ~(UINT64)EFI_MEMORY_RP \ - ); \ - ASSERT_EFI_ERROR (Status_); \ - } \ - \ - { \ - statements; \ - } \ - \ - if ((Desc_.Attributes & EFI_MEMORY_RP) != 0) { \ - Status_ = gDS->SetMemorySpaceAttributes ( \ - 0, \ - EFI_PAGES_TO_SIZE(1), \ - Desc_.Attributes \ - ); \ - ASSERT_EFI_ERROR (Status_); \ - } \ - } while (FALSE) - -extern EFI_GUID gEfiLegacyBiosProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h b/IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h deleted file mode 100644 index 0a164da..0000000 --- a/IntelFrameworkPkg/Include/Protocol/LegacyBiosPlatform.h +++ /dev/null @@ -1,755 +0,0 @@ -/** @file - 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 - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Framework for EFI Compatibility Support Module spec - Version 0.97. - -**/ - -#ifndef _EFI_LEGACY_BIOS_PLATFORM_H_ -#define _EFI_LEGACY_BIOS_PLATFORM_H_ - -/// -/// Legacy BIOS Platform depends on HDD_INFO and EFI_COMPATIBILITY16_TABLE that -/// are defined with the Legacy BIOS Protocol -/// -#include - -#define EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID \ - { \ - 0x783658a3, 0x4172, 0x4421, {0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4 } \ - } - -typedef struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL EFI_LEGACY_BIOS_PLATFORM_PROTOCOL; - -/** - This enum specifies the Mode param values for GetPlatformInfo() -**/ -typedef enum { - /// - /// This mode is invoked twice. The first invocation has LegacySegment and - /// LegacyOffset set to 0. The mode returns the MP table address in EFI memory, along with its size. - /// The second invocation has LegacySegment and LegacyOffset set to the location - /// in the 0xF0000 or 0xE0000 block to which the MP table is to be copied. The second - /// invocation allows any MP table address fixes to occur in the EFI memory copy of the - /// MP table. The caller, not EfiGetPlatformBinaryMpTable, copies the modified MP - /// table to the allocated region in 0xF0000 or 0xE0000 block after the second invocation. - /// - /// The function parameters associated with this mode are: - /// - /// Table Pointer to the MP table. - /// - /// TableSize Size in bytes of the MP table. - /// - /// Location Location to place table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. - /// Bit 0 = 1 0xF0000 64 KB block. - /// Bit 1 = 1 0xE0000 64 KB block. - /// Multiple bits can be set. - /// - /// Alignment Bit-mapped address alignment granularity. - /// The first nonzero bit from the right is the address granularity. - /// - // LegacySegment Segment in which EfiCompatibility code will place the MP table. - /// - /// LegacyOffset Offset in which EfiCompatibility code will place the MP table. - /// - /// The return values associated with this mode are: - /// - /// EFI_SUCCESS The MP table was returned. - /// - /// EFI_UNSUPPORTED The MP table is not supported on this platform. - /// - EfiGetPlatformBinaryMpTable = 0, - /// - /// This mode returns a block of data. The content and usage is IBV or OEM defined. - /// OEMs or IBVs normally use this function for nonstandard Compatibility16 runtime soft - /// INTs. It is the responsibility of this routine to coalesce multiple OEM 16 bit functions, if - /// they exist, into one coherent package that is understandable by the Compatibility16 code. - /// This function is invoked twice. The first invocation has LegacySegment and - /// LegacyOffset set to 0. The function returns the table address in EFI memory, as well as its size. - /// The second invocation has LegacySegment and LegacyOffset set to the location - /// in the 0xF0000 or 0xE0000 block to which the data (table) is to be copied. The second - /// invocation allows any data (table) address fixes to occur in the EFI memory copy of - /// the table. The caller, not GetOemIntData(), copies the modified data (table) to the - /// allocated region in 0xF0000 or 0xE0000 block after the second invocation. - /// - /// The function parameters associated with this mode are: - /// - /// Table Pointer to OEM legacy 16 bit code or data. - /// - /// TableSize Size of data. - /// - /// Location Location to place table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. - /// Bit 0 = 1 0xF0000 64 KB block. - /// Bit 1 = 1 0xE0000 64 KB block. - /// Multiple bits can be set. - /// - /// Alignment Bit mapped address alignment granularity. - /// The first nonzero bit from the right is the address granularity. - /// - /// LegacySegment Segment in which EfiCompatibility code will place the table or data. - /// - /// LegacyOffset Offset in which EfiCompatibility code will place the table or data. - /// - /// The return values associated with this mode are: - /// - /// EFI_SUCCESS The data was returned successfully. - /// - /// EFI_UNSUPPORTED Oem INT is not supported on this platform. - /// - EfiGetPlatformBinaryOemIntData = 1, - /// - /// This mode returns a block of data. The content and usage is IBV defined. OEMs or - /// IBVs normally use this mode for nonstandard Compatibility16 runtime 16 bit routines. It - /// is the responsibility of this routine to coalesce multiple OEM 16 bit functions, if they - /// exist, into one coherent package that is understandable by the Compatibility16 code. - /// - /// Example usage: A legacy mobile BIOS that has a pre-existing runtime - /// interface to return the battery status to calling applications. - /// - /// This mode is invoked twice. The first invocation has LegacySegment and - /// LegacyOffset set to 0. The mode returns the table address in EFI memory and its size. - /// The second invocation has LegacySegment and LegacyOffset set to the location - /// in the 0xF0000 or 0xE0000 block to which the table is to be copied. The second - /// invocation allows any table address fixes to occur in the EFI memory copy of the table. - /// The caller, not EfiGetPlatformBinaryOem16Data, copies the modified table to - /// the allocated region in 0xF0000 or 0xE0000 block after the second invocation. - /// - /// The function parameters associated with this mode are: - /// - /// Table Pointer to OEM legacy 16 bit code or data. - /// - /// TableSize Size of data. - /// - /// Location Location to place the table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. - /// Bit 0 = 1 0xF0000 64 KB block. - /// Bit 1 = 1 0xE0000 64 KB block. - /// Multiple bits can be set. - /// - /// Alignment Bit mapped address alignment granularity. - /// The first nonzero bit from the right is the address granularity. - /// - /// LegacySegment Segment in which EfiCompatibility code will place the table or data. - /// - /// LegacyOffset Offset in which EfiCompatibility code will place the table or data. - /// - /// The return values associated with this mode are: - /// - /// EFI_SUCCESS The data was returned successfully. - /// - /// EFI_UNSUPPORTED Oem16 is not supported on this platform. - /// - EfiGetPlatformBinaryOem16Data = 2, -/// -/// This mode returns a block of data. The content and usage are IBV defined. OEMs or -/// IBVs normally use this mode for nonstandard Compatibility16 runtime 32 bit routines. It -/// is the responsibility of this routine to coalesce multiple OEM 32 bit functions, if they -/// exist, into one coherent package that is understandable by the Compatibility16 code. -/// -/// Example usage: A legacy mobile BIOS that has a pre existing runtime -/// interface to return the battery status to calling applications. -/// -/// This mode is invoked twice. The first invocation has LegacySegment and -/// LegacyOffset set to 0. The mode returns the table address in EFI memory and its size. -/// -/// The second invocation has LegacySegment and LegacyOffset set to the location -/// in the 0xF0000 or 0xE0000 block to which the table is to be copied. The second -/// invocation allows any table address fix ups to occur in the EFI memory copy of the table. -/// The caller, not EfiGetPlatformBinaryOem32Data, copies the modified table to -/// the allocated region in 0xF0000 or 0xE0000 block after the second invocation.. -/// -/// Note: There are two generic mechanisms by which this mode can be used. -/// Mechanism 1: This mode returns the data and the Legacy BIOS Protocol copies -/// the data into the F0000 or E0000 block in the Compatibility16 code. The -/// EFI_COMPATIBILITY16_TABLE entries Oem32Segment and Oem32Offset can -/// be viewed as two UINT16 entries. -/// Mechanism 2: This mode directly fills in the EFI_COMPATIBILITY16_TABLE with -/// a pointer to the INT15 E820 region containing the 32 bit code. It returns -/// EFI_UNSUPPORTED. The EFI_COMPATIBILITY16_TABLE entries, -/// Oem32Segment and Oem32Offset, can be viewed as two UINT16 entries or -/// as a single UINT32 entry as determined by the IBV. -/// -/// The function parameters associated with this mode are: -/// -/// TableSize Size of data. -/// -/// Location Location to place the table. 0x00 or 0xE0000 or 0xF0000 64 KB blocks. -/// Bit 0 = 1 0xF0000 64 KB block. -/// Bit 1 = 1 0xE0000 64 KB block. -/// Multiple bits can be set. -/// -/// Alignment Bit mapped address alignment granularity. -/// The first nonzero bit from the right is the address granularity. -/// -/// LegacySegment Segment in which EfiCompatibility code will place the table or data. -/// -/// LegacyOffset Offset in which EfiCompatibility code will place the table or data. -/// -/// The return values associated with this mode are: -/// EFI_SUCCESS The data was returned successfully. -/// EFI_UNSUPPORTED Oem32 is not supported on this platform. -/// -EfiGetPlatformBinaryOem32Data = 3, - /// - /// This mode returns a TPM binary image for the onboard TPM device. - /// - /// The function parameters associated with this mode are: - /// - /// Table TPM binary image for the onboard TPM device. - /// - /// TableSize Size of BinaryImage in bytes. - /// - /// Location Location to place the table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. - /// Bit 0 = 1 0xF0000 64 KB block. - /// Bit 1 = 1 0xE0000 64 KB block. - /// Multiple bits can be set. - /// - /// Alignment Bit mapped address alignment granularity. - /// The first nonzero bit from the right is the address granularity. - /// - /// LegacySegment Segment in which EfiCompatibility code will place the table or data. - /// - /// LegacyOffset Offset in which EfiCompatibility code will place the table or data. - /// - /// The return values associated with this mode are: - /// - /// EFI_SUCCESS BinaryImage is valid. - /// - /// EFI_UNSUPPORTED Mode is not supported on this platform. - /// - /// EFI_NOT_FOUND No BinaryImage was found. - /// - EfiGetPlatformBinaryTpmBinary = 4, - /// - /// The mode finds the Compatibility16 Rom Image. - /// - /// The function parameters associated with this mode are: - /// - /// System ROM image for the platform. - /// - /// TableSize Size of Table in bytes. - /// - /// Location Ignored. - /// - /// Alignment Ignored. - /// - /// LegacySegment Ignored. - /// - /// LegacyOffset Ignored. - /// - /// The return values associated with this mode are: - /// - /// EFI_SUCCESS ROM image found. - /// - /// EFI_NOT_FOUND ROM not found. - /// - EfiGetPlatformBinarySystemRom = 5, - /// - /// This mode returns the Base address of PciExpress memory mapped configuration - /// address space. - /// - /// The function parameters associated with this mode are: - /// - /// Table System ROM image for the platform. - /// - /// TableSize Size of Table in bytes. - /// - /// Location Ignored. - /// - /// Alignment Ignored. - /// - /// LegacySegment Ignored. - /// - /// LegacyOffset Ignored. - /// - /// The return values associated with this mode are: - /// - /// EFI_SUCCESS Address is valid. - /// - /// EFI_UNSUPPORTED System does not PciExpress. - /// - EfiGetPlatformPciExpressBase = 6, - /// - EfiGetPlatformPmmSize = 7, - /// - EfiGetPlatformEndOpromShadowAddr = 8, - /// -} EFI_GET_PLATFORM_INFO_MODE; - -/** - This enum specifies the Mode param values for GetPlatformHandle(). -**/ -typedef enum { - /// - /// This mode returns the Compatibility16 policy for the device that should be the VGA - /// controller used during a Compatibility16 boot. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0x00. - /// - /// HandleBuffer Buffer of all VGA handles found. - /// - /// HandleCount Number of VGA handles found. - /// - /// AdditionalData NULL. - /// - EfiGetPlatformVgaHandle = 0, - /// - /// This mode returns the Compatibility16 policy for the device that should be the IDE - /// controller used during a Compatibility16 boot. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0x00. - /// - /// HandleBuffer Buffer of all IDE handles found. - /// - /// HandleCount Number of IDE handles found. - /// - /// AdditionalData Pointer to HddInfo. - /// Information about all onboard IDE controllers. - /// - EfiGetPlatformIdeHandle = 1, - /// - /// This mode returns the Compatibility16 policy for the device that should be the ISA bus - /// controller used during a Compatibility16 boot. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0x00. - /// - /// HandleBuffer Buffer of all ISA bus handles found. - /// - /// HandleCount Number of ISA bus handles found. - /// - /// AdditionalData NULL. - /// - EfiGetPlatformIsaBusHandle = 2, - /// - /// This mode returns the Compatibility16 policy for the device that should be the USB - /// device used during a Compatibility16 boot. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0x00. - /// - /// HandleBuffer Buffer of all USB handles found. - /// - /// HandleCount Number of USB bus handles found. - /// - /// AdditionalData NULL. - /// - EfiGetPlatformUsbHandle = 3 -} EFI_GET_PLATFORM_HANDLE_MODE; - -/** - This enum specifies the Mode param values for PlatformHooks(). - Note: Any OEM defined hooks start with 0x8000. -**/ -typedef enum { - /// - /// This mode allows any preprocessing before scanning OpROMs. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0. - /// - /// DeviceHandle Handle of device OpROM is associated with. - /// - /// ShadowAddress Address where OpROM is shadowed. - /// - /// Compatibility16Table NULL. - /// - /// AdditionalData NULL. - /// - EfiPlatformHookPrepareToScanRom = 0, - /// - /// This mode shadows legacy OpROMS that may not have a physical device associated with - /// them. It returns EFI_SUCCESS if the ROM was shadowed. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0. - /// - /// DeviceHandle 0. - /// - /// ShadowAddress First free OpROM area, after other OpROMs have been dispatched.. - /// - /// Compatibility16Table Pointer to the Compatability16 Table. - /// - /// AdditionalData NULL. - /// - EfiPlatformHookShadowServiceRoms= 1, - /// - /// This mode allows platform to perform any required operation after an OpROM has - /// completed its initialization. - /// - /// The function parameters associated with this mode are: - /// - /// Type 0. - /// - /// DeviceHandle Handle of device OpROM is associated with. - /// - /// ShadowAddress Address where OpROM is shadowed. - /// - /// Compatibility16Table NULL. - /// - /// AdditionalData NULL. - /// - EfiPlatformHookAfterRomInit = 2 -} EFI_GET_PLATFORM_HOOK_MODE; - -/// -/// This IRQ has not been assigned to PCI. -/// -#define PCI_UNUSED 0x00 -/// -/// This IRQ has been assigned to PCI. -/// -#define PCI_USED 0xFF -/// -/// This IRQ has been used by an SIO legacy device and cannot be used by PCI. -/// -#define LEGACY_USED 0xFE - -#pragma pack(1) - -typedef struct { - /// - /// IRQ for this entry. - /// - UINT8 Irq; - /// - /// Status of this IRQ. - /// - /// PCI_UNUSED 0x00. This IRQ has not been assigned to PCI. - /// - /// PCI_USED 0xFF. This IRQ has been assigned to PCI. - /// - /// LEGACY_USED 0xFE. This IRQ has been used by an SIO legacy - /// device and cannot be used by PCI. - /// - UINT8 Used; -} EFI_LEGACY_IRQ_PRIORITY_TABLE_ENTRY; - -// -// Define PIR table structures -// -#define EFI_LEGACY_PIRQ_TABLE_SIGNATURE SIGNATURE_32 ('$', 'P', 'I', 'R') - -typedef struct { - /// - /// $PIR. - /// - UINT32 Signature; - /// - /// 0x00. - /// - UINT8 MinorVersion; - /// - /// 0x01 for table version 1.0. - /// - UINT8 MajorVersion; - /// - /// 0x20 + RoutingTableEntries * 0x10. - /// - UINT16 TableSize; - /// - /// PCI interrupt router bus. - /// - UINT8 Bus; - /// - /// PCI interrupt router device/function. - /// - UINT8 DevFun; - /// - /// If nonzero, bit map of IRQs reserved for PCI. - /// - UINT16 PciOnlyIrq; - /// - /// Vendor ID of a compatible PCI interrupt router. - /// - UINT16 CompatibleVid; - /// - /// Device ID of a compatible PCI interrupt router. - /// - UINT16 CompatibleDid; - /// - /// If nonzero, a value passed directly to the IRQ miniport's Initialize function. - /// - UINT32 Miniport; - /// - /// Reserved for future usage. - /// - UINT8 Reserved[11]; - /// - /// This byte plus the sum of all other bytes in the LocalPirqTable equal 0x00. - /// - UINT8 Checksum; -} EFI_LEGACY_PIRQ_TABLE_HEADER; - - -typedef struct { - /// - /// If nonzero, a value assigned by the IBV. - /// - UINT8 Pirq; - /// - /// If nonzero, the IRQs that can be assigned to this device. - /// - UINT16 IrqMask; -} EFI_LEGACY_PIRQ_ENTRY; - -typedef struct { - /// - /// PCI bus of the entry. - /// - UINT8 Bus; - /// - /// PCI device of this entry. - /// - UINT8 Device; - /// - /// An IBV value and IRQ mask for PIRQ pins A through D. - /// - EFI_LEGACY_PIRQ_ENTRY PirqEntry[4]; - /// - /// If nonzero, the slot number assigned by the board manufacturer. - /// - UINT8 Slot; - /// - /// Reserved for future use. - /// - UINT8 Reserved; -} EFI_LEGACY_IRQ_ROUTING_ENTRY; - -#pragma pack() - - -/** - Finds the binary data or other platform information. - - @param This The protocol instance pointer. - @param Mode Specifies what data to return. See See EFI_GET_PLATFORM_INFO_MODE enum. - @param Table Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. - @param TableSize Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. - @param Location Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. - @param Alignment Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. - @param LegacySegment Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. - @param LegacyOffset Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. - - @retval EFI_SUCCESS Data returned successfully. - @retval EFI_UNSUPPORTED Mode is not supported on the platform. - @retval EFI_NOT_FOUND Binary image or table not found. - -**/ -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 - ); - -/** - Returns a buffer of handles for the requested subfunction. - - @param This The protocol instance pointer. - @param Mode Specifies what handle to return. See EFI_GET_PLATFORM_HANDLE_MODE enum. - @param Type Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. - @param HandleBuffer Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. - @param HandleCount Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. - @param AdditionalData Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. - - @retval EFI_SUCCESS Handle is valid. - @retval EFI_UNSUPPORTED Mode is not supported on the platform. - @retval EFI_NOT_FOUND Handle is not known. - -**/ -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 - ); - -/** - Load and initialize the Legacy BIOS SMM handler. - - @param This The protocol instance pointer. - @param EfiToLegacy16BootTable A pointer to Legacy16 boot table. - - @retval EFI_SUCCESS SMM code loaded. - @retval EFI_DEVICE_ERROR SMM code failed to load - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_SMM_INIT)( - IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, - IN VOID *EfiToLegacy16BootTable - ); - -/** - Allows platform to perform any required action after a LegacyBios operation. - Invokes the specific sub function specified by Mode. - - @param This The protocol instance pointer. - @param Mode Specifies what handle to return. See EFI_GET_PLATFORM_HOOK_MODE enum. - @param Type Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. - @param DeviceHandle Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. - @param ShadowAddress Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. - @param Compatibility16Table Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. - @param AdditionalData Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. - - @retval EFI_SUCCESS The operation performed successfully. Mode specific. - @retval EFI_UNSUPPORTED Mode is not supported on the platform. - -**/ -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, OPTIONAL - IN OUT UINTN *ShadowAddress, OPTIONAL - IN EFI_COMPATIBILITY16_TABLE *Compatibility16Table, OPTIONAL - OUT VOID **AdditionalData OPTIONAL - ); - -/** - Returns information associated with PCI IRQ routing. - This function returns the following information associated with PCI IRQ routing: - * An IRQ routing table and number of entries in the table. - * The $PIR table and its size. - * A list of PCI IRQs and the priority order to assign them. - - @param This The protocol instance pointer. - @param RoutingTable The pointer to PCI IRQ Routing table. - This location is the $PIR table minus the header. - @param RoutingTableEntries The number of entries in table. - @param LocalPirqTable $PIR table. - @param PirqTableSize $PIR table size. - @param LocalIrqPriorityTable A list of interrupts in priority order to assign. - @param IrqPriorityTableEntries The number of entries in the priority table. - - @retval EFI_SUCCESS Data was successfully returned. - -**/ -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 - ); - -/** - Translates the given PIRQ accounting for bridge. - This function translates the given PIRQ back through all buses, if required, - and returns the true PIRQ and associated IRQ. - - @param This The protocol instance pointer. - @param PciBus The PCI bus number for this device. - @param PciDevice The PCI device number for this device. - @param PciFunction The PCI function number for this device. - @param Pirq Input is PIRQ reported by device, and output is true PIRQ. - @param PciIrq The IRQ already assigned to the PIRQ, or the IRQ to be - assigned to the PIRQ. - - @retval EFI_SUCCESS The PIRQ was translated. - -**/ -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 - ); - -/** - Attempt to legacy boot the BootOption. If the EFI contexted has been - compromised this function will not return. - - @param This The protocol instance pointer. - @param BbsDevicePath The EFI Device Path from BootXXXX variable. - @param BbsTable The Internal BBS table. - @param LoadOptionSize The size of LoadOption in size. - @param LoadOption The LoadOption from BootXXXX variable - @param EfiToLegacy16BootTable A pointer to BootTable structure - - @retval EFI_SUCCESS Ready to boot. - -**/ -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 - ); - -/** - This protocol abstracts the platform portion of the traditional BIOS. -**/ -struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL { - /// - /// Gets binary data or other platform information. - /// - EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO GetPlatformInfo; - /// - /// Returns a buffer of all handles matching the requested subfunction. - /// - EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE GetPlatformHandle; - /// - /// Loads and initializes the traditional BIOS SMM handler. - EFI_LEGACY_BIOS_PLATFORM_SMM_INIT SmmInit; - /// - /// Allows platform to perform any required actions after a LegacyBios operation. - /// - EFI_LEGACY_BIOS_PLATFORM_HOOKS PlatformHooks; - /// - /// Gets $PIR table. - EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE GetRoutingTable; - /// - /// Translates the given PIRQ to the final value after traversing any PCI bridges. - /// - EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ TranslatePirq; - /// - /// Final platform function before the system attempts to boot to a traditional OS. - /// - EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT PrepareToBoot; -}; - -extern EFI_GUID gEfiLegacyBiosPlatformProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h b/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h deleted file mode 100644 index b3ad2ff..0000000 --- a/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h +++ /dev/null @@ -1,122 +0,0 @@ -/** @file - This protocol abstracts the PIRQ programming from the generic EFI Compatibility Support Modules (CSMs). - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Framework for the EFI Compatibility Support Module specification. - Version 0.97. - -**/ - -#ifndef _EFI_LEGACY_INTERRUPT_H_ -#define _EFI_LEGACY_INTERRUPT_H_ - - -#define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \ - { \ - 0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe } \ - } - -typedef struct _EFI_LEGACY_INTERRUPT_PROTOCOL EFI_LEGACY_INTERRUPT_PROTOCOL; - -/** - Get the number of PIRQs this hardware supports. - - @param This The protocol instance pointer. - @param NumberPirsq The number of PIRQs that are supported. - - @retval EFI_SUCCESS The number of PIRQs was returned successfully. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS)( - IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, - OUT UINT8 *NumberPirqs - ); - -/** - Gets the PCI location associated with this protocol. - - @param This The Protocol instance pointer. - @param Bus The PCI Bus. - @param Device The PCI Device. - @param Function The PCI Function. - - @retval EFI_SUCCESS The Bus, Device, and Function were returned successfully. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_INTERRUPT_GET_LOCATION)( - IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, - OUT UINT8 *Bus, - OUT UINT8 *Device, - OUT UINT8 *Function - ); - -/** - Read the PIRQ register and return the data - - @param This The protocol instance pointer. - @param PirqNumber The PIRQ register to read. - @param PirqData The data read. - - @retval EFI_SUCCESS The data was read. - @retval EFI_INVALID_PARAMETER Invalid PIRQ number. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ)( - IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, - IN UINT8 PirqNumber, - OUT UINT8 *PirqData - ); - -/** - Write the specified PIRQ register with the given data. - - @param This The protocol instance pointer. - @param PirqNumber A PIRQ register to read. - @param PirqData The data to write. - - @retval EFI_SUCCESS The PIRQ was programmed. - @retval EFI_INVALID_PARAMETER Invalid PIRQ number. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ)( - IN EFI_LEGACY_INTERRUPT_PROTOCOL *This, - IN UINT8 PirqNumber, - IN UINT8 PirqData - ); - -struct _EFI_LEGACY_INTERRUPT_PROTOCOL { - /// - /// Gets the number of PIRQs supported. - /// - EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs; - - /// - /// Gets the PCI bus, device, and function that is associated with this protocol. - /// - EFI_LEGACY_INTERRUPT_GET_LOCATION GetLocation; - - /// - /// Reads the indicated PIRQ register. - /// - EFI_LEGACY_INTERRUPT_READ_PIRQ ReadPirq; - - /// - /// Writes to the indicated PIRQ register. - /// - EFI_LEGACY_INTERRUPT_WRITE_PIRQ WritePirq; -}; - -extern EFI_GUID gEfiLegacyInterruptProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyRegion.h b/IntelFrameworkPkg/Include/Protocol/LegacyRegion.h deleted file mode 100644 index 01a411d..0000000 --- a/IntelFrameworkPkg/Include/Protocol/LegacyRegion.h +++ /dev/null @@ -1,119 +0,0 @@ -/** @file - This protocol manages the legacy memory regions between 0xc0000 - 0xfffff. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Framework for EFI Compatibility Support Module spec - Version 0.97. - -**/ - -#ifndef _EFI_LEGACY_REGION_H_ -#define _EFI_LEGACY_REGION_H_ - - -#define EFI_LEGACY_REGION_PROTOCOL_GUID \ - { \ - 0xfc9013a, 0x568, 0x4ba9, {0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b } \ - } - -typedef struct _EFI_LEGACY_REGION_PROTOCOL EFI_LEGACY_REGION_PROTOCOL; - -/** - Sets hardware to decode or not decode a region. - - @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance - @param Start The start of the region to decode. - @param Length The size in bytes of the region. - @param On The decode/nondecode flag. - - @retval EFI_SUCCESS The decode range successfully changed. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_REGION_DECODE)( - IN EFI_LEGACY_REGION_PROTOCOL *This, - IN UINT32 Start, - IN UINT32 Length, - IN BOOLEAN *On - ); - -/** - Sets a region to read only. - - @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance. - @param Start The start of region to lock. - @param Length The size in bytes of the region. - @param Granularity Lock attribute affects this granularity in bytes. - - @retval EFI_SUCCESS The region was made read only. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_REGION_LOCK)( - IN EFI_LEGACY_REGION_PROTOCOL *This, - IN UINT32 Start, - IN UINT32 Length, - OUT UINT32 *Granularity OPTIONAL - ); - -/** - Sets a region to read only and ensures that flash is locked from being - inadvertently modified. - - @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance - @param Start The start of region to lock. - @param Length The size in bytes of the region. - @param Granularity Lock attribute affects this granularity in bytes. - - @retval EFI_SUCCESS The region was made read only and flash is locked. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_REGION_BOOT_LOCK)( - IN EFI_LEGACY_REGION_PROTOCOL *This, - IN UINT32 Start, - IN UINT32 Length, - OUT UINT32 *Granularity OPTIONAL - ); - -/** - Sets a region to read-write. - - @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance - @param Start The start of region to lock. - @param Length The size in bytes of the region. - @param Granularity Lock attribute affects this granularity in bytes. - - @retval EFI_SUCCESS The region was successfully made read-write. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LEGACY_REGION_UNLOCK)( - IN EFI_LEGACY_REGION_PROTOCOL *This, - IN UINT32 Start, - IN UINT32 Length, - OUT UINT32 *Granularity OPTIONAL - ); - -/** - Abstracts the hardware control of the physical address region 0xC0000-C0xFFFFF - for the traditional BIOS. -**/ -struct _EFI_LEGACY_REGION_PROTOCOL { - EFI_LEGACY_REGION_DECODE Decode; ///< Specifies a region for the chipset to decode. - EFI_LEGACY_REGION_LOCK Lock; ///< Makes the specified OpROM region read only or locked. - EFI_LEGACY_REGION_BOOT_LOCK BootLock; ///< Sets a region to read only and ensures tat flash is locked from. - ///< inadvertent modification. - EFI_LEGACY_REGION_UNLOCK UnLock; ///< Makes the specified OpROM region read-write or unlocked. -}; - -extern EFI_GUID gEfiLegacyRegionProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SectionExtraction.h b/IntelFrameworkPkg/Include/Protocol/SectionExtraction.h deleted file mode 100644 index 8773981..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SectionExtraction.h +++ /dev/null @@ -1,155 +0,0 @@ -/** @file - This file declares Section Extraction Protocol. - - This interface provides a means of decoding a set of sections into a linked list of - leaf sections. This provides for an extensible and flexible file format. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This protocol is defined in Firmware Volume Specification. - Version 0.9. - -**/ - -#ifndef _SECTION_EXTRACTION_PROTOCOL_H_ -#define _SECTION_EXTRACTION_PROTOCOL_H_ - -// -// Protocol GUID definition -// -#define EFI_SECTION_EXTRACTION_PROTOCOL_GUID \ - { \ - 0x448F5DA4, 0x6DD7, 0x4FE1, {0x93, 0x07, 0x69, 0x22, 0x41, 0x92, 0x21, 0x5D } \ - } - -typedef struct _EFI_SECTION_EXTRACTION_PROTOCOL EFI_SECTION_EXTRACTION_PROTOCOL; - -// -// Protocol member functions -// -/** - Creates and returns a new section stream handle to represent the new section stream. - - @param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance. - @param SectionStreamLength The size in bytes of the section stream. - @param SectionStream A buffer containing the new section stream. - @param SectionStreamHandle A pointer to a caller-allocated UINTN that, - on output, contains the new section stream handle. - - @retval EFI_SUCCESS The SectionStream was successfully processed, and - the section stream handle was returned. - @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to - process the request. - @retval EFI_INVALID_PARAMETER The section stream may be corrupt or the value - of SectionStreamLength may be incorrect. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_OPEN_SECTION_STREAM)( - IN EFI_SECTION_EXTRACTION_PROTOCOL *This, - IN UINTN SectionStreamLength, - IN VOID *SectionStream, - OUT UINTN *SectionStreamHandle - ); - -/** - Reads and returns a single section from a section stream. - - @param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance. - @param SectionStreamHandle Indicates from which section stream to read. - @param SectionType The pointer to an EFI_SECTION_TYPE. If SectionType == NULL, - the contents of the entire section stream are returned - in Buffer. If SectionType is not NULL, only the - requested section is returned. EFI_SECTION_ALL - matches all section types and can be used as a - wild card to extract all sections in order. - @param SectionDefinitionGuid The pointer to an EFI_GUID. If SectionType == - EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid - indicates what section GUID to search for. If - SectionType !=EFI_SECTION_GUID_DEFINED, then - SectionDefinitionGuid is unused and is ignored. - @param SectionInstance Indicates which instance of the requested section - type to return when SectionType is not NULL. - @param SectionStreamHandle A pointer to a caller-allocated UINTN that, on output, - contains the new section stream handle. - @param Buffer Pointer to a pointer to a buffer in which the section - contents are returned. - @param BufferSize A pointer to a caller-allocated UINTN. - @param AuthenticationStatus A pointer to a caller-allocated UINT32 in - which any meta-data from encapsulation GUID-defined - sections is returned. - - @retval EFI_SUCCESS The SectionStream was successfully processed and - the section contents were returned in Buffer. - @retval EFI_PROTOCOL_ERROR A GUID-defined section was encountered inthe section - stream with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED - bit set, but there was no corresponding GUIDed - Section Extraction Protocol in the handle database. - @retval EFI_NOT_FOUND An error was encountered when parsing the SectionStream, - which indicates that the SectionStream is not - correctly formatted. Or, the requested section does not exist. - @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process - the request. - @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist. - @retval EFI_WARN_BUFFER_TOO_SMALL The size of the input buffer is insufficient - to contain the requested section. The input - buffer is filled and section contents are truncated. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_SECTION)( - IN EFI_SECTION_EXTRACTION_PROTOCOL *This, - IN UINTN SectionStreamHandle, - IN EFI_SECTION_TYPE *SectionType, - IN EFI_GUID *SectionDefinitionGuid, - IN UINTN SectionInstance, - IN VOID **Buffer, - IN OUT UINTN *BufferSize, - OUT UINT32 *AuthenticationStatus - ); - -/** - Deletes a section stream handle and returns all associated resources to the system. - - @param This Indicates the EFI_SECTION_EXTRACTION_PROTOCOL instance. - @param SectionStreamHandle Indicates the section stream to close. - @retval EFI_SUCCESS The SectionStream was successfully processed and - the section stream handle was returned. - @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CLOSE_SECTION_STREAM)( - IN EFI_SECTION_EXTRACTION_PROTOCOL *This, - IN UINTN SectionStreamHandle - ); - -// -// Protocol definition -// -struct _EFI_SECTION_EXTRACTION_PROTOCOL { - /// - /// Takes a bounded stream of sections and returns a section stream handle. - /// - EFI_OPEN_SECTION_STREAM OpenSectionStream; - - /// - /// Given a section stream handle, retrieves the requested section and - /// meta-data from the section stream. - /// - EFI_GET_SECTION GetSection; - - /// - /// Given a section stream handle, closes the section stream. - /// - EFI_CLOSE_SECTION_STREAM CloseSectionStream; -}; - -extern EFI_GUID gEfiSectionExtractionProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmAccess.h b/IntelFrameworkPkg/Include/Protocol/SmmAccess.h deleted file mode 100644 index df19758..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmAccess.h +++ /dev/null @@ -1,124 +0,0 @@ -/** @file - This file declares the SMM SMRAM Access abstraction protocol, which is used to control - the visibility of the SMRAM on the platform. The expectation is - that the north bridge or memory controller would publish this protocol. - For example, the Memory Controller Hub (MCH) has the hardware provision for this - type of control. Because of the protected, distinguished class of memory for IA-32 - systems, the expectation is that this protocol would be supported only on IA-32 systems. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. -**/ - -#ifndef _SMM_ACCESS_H_ -#define _SMM_ACCESS_H_ - -#include - -typedef struct _EFI_SMM_ACCESS_PROTOCOL EFI_SMM_ACCESS_PROTOCOL; - -#define EFI_SMM_ACCESS_PROTOCOL_GUID \ - { \ - 0x3792095a, 0xe309, 0x4c1e, {0xaa, 0x01, 0x85, 0xf5, 0x65, 0x5a, 0x17, 0xf1 } \ - } - -// -// SMM Access specification Member Function -// -/** - Opens the SMRAM area to be accessible by a boot-service driver. - - @param This The EFI_SMM_ACCESS_PROTOCOL instance. - @param DescriptorIndex Indicates that the driver wishes to open - the memory tagged by this index. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_INVALID_PARAMETER The given DescriptorIndex is not supported. - @retval EFI_NOT_STARTED The SMM base service has not been initialized. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_OPEN)( - IN EFI_SMM_ACCESS_PROTOCOL *This, - UINTN DescriptorIndex - ); - -/** - Inhibits access to the SMRAM. - - @param This The EFI_SMM_ACCESS_PROTOCOL instance. - @param DescriptorIndex Indicates that the driver wishes to close - the memory tagged by this index. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_DEVICE_ERROR The given DescriptorIndex is not open. - @retval EFI_INVALID_PARAMETER The given DescriptorIndex is not supported. - @retval EFI_NOT_STARTED The SMM base service has not been initialized. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_CLOSE)( - IN EFI_SMM_ACCESS_PROTOCOL *This, - UINTN DescriptorIndex - ); - -/** - Inhibits access to the SMRAM. - - @param This The EFI_SMM_ACCESS_PROTOCOL instance. - @param DescriptorIndex Indicates that the driver wishes to lock - the memory tagged by this index. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_DEVICE_ERROR The given DescriptorIndex is not open. - @retval EFI_INVALID_PARAMETER The given DescriptorIndex is not supported. - @retval EFI_NOT_STARTED The SMM base service has not been initialized. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_LOCK)( - IN EFI_SMM_ACCESS_PROTOCOL *This, - UINTN DescriptorIndex - ); - -/** - Queries the memory controller for the possible regions that will support SMRAM. - - @param This The EFI_SMM_ACCESS_PROTOCOL instance. - @param SmramMapSize A pointer to the size, in bytes, of the SmramMemoryMap buffer. - @param SmramMap A pointer to the buffer in which firmware places the current memory map. - - @retval EFI_SUCCESS The chipset supported the given resource. - @retval EFI_BUFFER_TOO_SMALL The SmramMap parameter was too small. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_CAPABILITIES)( - IN EFI_SMM_ACCESS_PROTOCOL *This, - IN OUT UINTN *SmramMapSize, - IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap - ); - -/** - This protocol is used to control the visibility of the SMRAM on the platform. -**/ -struct _EFI_SMM_ACCESS_PROTOCOL { - EFI_SMM_OPEN Open; ///< Opens the SMRAM. - EFI_SMM_CLOSE Close; ///< Closes the SMRAM. - EFI_SMM_LOCK Lock; ///< Locks the SMRAM. - EFI_SMM_CAPABILITIES GetCapabilities; ///< Gets information on possible SMRAM regions. - BOOLEAN LockState; ///< Indicates the current state of the SMRAM. Set to TRUE if any region is locked. - BOOLEAN OpenState; ///< Indicates the current state of the SMRAM. Set to TRUE if any region is open. -}; - -extern EFI_GUID gEfiSmmAccessProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmBase.h b/IntelFrameworkPkg/Include/Protocol/SmmBase.h deleted file mode 100644 index d2d476d..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmBase.h +++ /dev/null @@ -1,304 +0,0 @@ -/** @file - This file declares SMM Base abstraction protocol. - This protocol is used to install SMM handlers for support of subsequent SMI/PMI activations. This - protocol is available on both IA-32 and Itanium-based systems. - - The EFI_SMM_BASE_PROTOCOL is a set of services that is exported by a processor device. It is - a required protocol for the platform processor. This protocol can be used in both boot services and - runtime mode. However, only the following member functions need to exist during runtime: - - InSmm() - - Communicate() - This protocol is responsible for registering the handler services. The order in which the handlers are - executed is prescribed only with respect to the MakeLast flag in the RegisterCallback() - service. The driver exports these registration and unregistration services in boot services mode, but - the registered handlers will execute through the preboot and runtime. The only way to change the - behavior of a registered driver after ExitBootServices() has been invoked is to use some - private communication mechanism with the driver to order it to quiesce. This model permits typical - use cases, such as invoking the handler to enter ACPI mode, where the OS loader would make this - call before boot services are terminated. On the other hand, handlers for services such as chipset - workarounds for the century rollover in CMOS should provide commensurate services throughout - preboot and OS runtime. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _SMM_BASE_H_ -#define _SMM_BASE_H_ - -// -// Share some common definitions with PI SMM -// -#include -#include - -/// -/// Global ID for the EFI_SMM_BASE_PROTOCOL. -/// -#define EFI_SMM_BASE_PROTOCOL_GUID \ - { \ - 0x1390954D, 0xda95, 0x4227, {0x93, 0x28, 0x72, 0x82, 0xc2, 0x17, 0xda, 0xa8 } \ - } - -/// -/// Forward declaration for EFI_SMM_BASE_PROTOCOL. -/// -typedef struct _EFI_SMM_BASE_PROTOCOL EFI_SMM_BASE_PROTOCOL; - -/// -/// EFI SMM Handler return codes -/// -///@{ -#define EFI_HANDLER_SUCCESS 0x0000 -#define EFI_HANDLER_CRITICAL_EXIT 0x0001 -#define EFI_HANDLER_SOURCE_QUIESCED 0x0002 -#define EFI_HANDLER_SOURCE_PENDING 0x0003 -///@} - -/** - Entry Point to Callback service - - @param[in] SmmImageHandle A handle allocated by the SMM infrastructure code - to uniquely designate a specific DXE SMM driver. - @param[in] CommunicationBuffer A pointer to a collection of data in memory - that will be conveyed from a non-SMM environment - into an SMM environment. The buffer must be - contiguous and physically mapped, and must be - a physical address. - @param[in] SourceSize The size of the CommunicationBuffer. - - @return Status code - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_CALLBACK_ENTRY_POINT)( - IN EFI_HANDLE SmmImageHandle, - IN OUT VOID *CommunicationBuffer OPTIONAL, - IN OUT UINTN *SourceSize OPTIONAL - ); - -// -// SMM Base Protocol Definition -// -/** - Register a given driver into SMRAM. This is the equivalent of performing - the LoadImage/StartImage into System Management Mode. - - @param[in] This The protocol instance pointer. - @param[in] FilePath The location of the image to be installed as the handler. - @param[in] SourceBuffer An optional source buffer in case the image file - is in memory. - @param[in] SourceSize The size of the source image file, if in memory. - @param[out] ImageHandle The handle that the base driver uses to decode - the handler. Unique among SMM handlers only; - not unique across DXE/EFI. - @param[in] LegacyIA32Binary An optional parameter specifying that the associated - file is a real-mode IA-32 binary. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_OUT_OF_RESOURCES There were no additional SMRAM resources to load the handler - @retval EFI_UNSUPPORTED This platform does not support 16-bit handlers. - @retval EFI_UNSUPPORTED The platform is in runtime. - @retval EFI_INVALID_PARAMETER The handlers were not the correct image type. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_REGISTER_HANDLER)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - IN VOID *SourceBuffer OPTIONAL, - IN UINTN SourceSize, - OUT EFI_HANDLE *ImageHandle, - IN BOOLEAN LegacyIA32Binary OPTIONAL - ); - -/** - Removes a handler from execution within SMRAM. This is the equivalent of performing - the UnloadImage in System Management Mode. - - @param[in] This The protocol instance pointer. - @param[in] ImageHandle The handler to be removed. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_INVALID_PARAMETER The handler did not exist. - @retval EFI_UNSUPPORTED The platform is in runtime. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_UNREGISTER_HANDLER)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN EFI_HANDLE ImageHandle - ); - -/** - The SMM Inter-module Communicate Service Communicate() function - provides a service to send/receive messages from a registered - EFI service. The BASE protocol driver is responsible for doing - any of the copies such that the data lives in boot-service-accessible RAM. - - @param[in] This The protocol instance pointer. - @param[in] ImageHandle The handle of the registered driver. - @param[in,out] CommunicationBuffer The pointer to the buffer to convey into SMRAM. - @param[in,out] SourceSize The size of the data buffer being passed in. - On exit, the size of data being returned. - Zero if the handler does not wish to reply with any data. - - @retval EFI_SUCCESS The message was successfully posted. - @retval EFI_INVALID_PARAMETER The buffer was NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_COMMUNICATE)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN EFI_HANDLE ImageHandle, - IN OUT VOID *CommunicationBuffer, - IN OUT UINTN *SourceSize - ); - -/** - Register a callback to execute within SMM. - This allows receipt of messages created with EFI_SMM_BASE_PROTOCOL.Communicate(). - - @param[in] This Protocol instance pointer. - @param[in] SmmImageHandle Handle of the callback service. - @param[in] CallbackAddress Address of the callback service. - @param[in] MakeLast If present, will stipulate that the handler is posted to - be executed last in the dispatch table. - @param[in] FloatingPointSave An optional parameter that informs the - EFI_SMM_ACCESS_PROTOCOL Driver core if it needs to save - the floating point register state. If any handler - require this, the state will be saved for all handlers. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_OUT_OF_RESOURCES Not enough space in the dispatch queue. - @retval EFI_UNSUPPORTED The platform is in runtime. - @retval EFI_UNSUPPORTED The caller is not in SMM. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_CALLBACK_SERVICE)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN EFI_HANDLE SmmImageHandle, - IN EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress, - IN BOOLEAN MakeLast OPTIONAL, - IN BOOLEAN FloatingPointSave OPTIONAL - ); - -/** - The SmmAllocatePool() function allocates a memory region of Size bytes from memory of - type PoolType and returns the address of the allocated memory in the location referenced - by Buffer. This function allocates pages from EFI SMRAM Memory as needed to grow the - requested pool type. All allocations are eight-byte aligned. - - @param[in] This Protocol instance pointer. - @param[in] PoolType The type of pool to allocate. - The only supported type is EfiRuntimeServicesData; - the interface will internally map this runtime request to - SMRAM for IA-32 and leave as this type for the Itanium - processor family. Other types can be ignored. - @param[in] Size The number of bytes to allocate from the pool. - @param[out] Buffer A pointer to a pointer to the allocated buffer if the call - succeeds; undefined otherwise. - - @retval EFI_SUCCESS The requested number of bytes was allocated. - @retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated. - @retval EFI_UNSUPPORTED The platform is in runtime. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_ALLOCATE_POOL)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN EFI_MEMORY_TYPE PoolType, - IN UINTN Size, - OUT VOID **Buffer - ); - -/** - The SmmFreePool() function returns the memory specified by Buffer to the system. - On return, the memory's type is EFI SMRAM Memory. The Buffer that is freed must - have been allocated by SmmAllocatePool(). - - @param[in] This The protocol instance pointer. - @param[in] Buffer The pointer to the buffer allocation. - - @retval EFI_SUCCESS The memory was returned to the system. - @retval EFI_INVALID_PARAMETER The buffer was invalid. - @retval EFI_UNSUPPORTED The platform is in runtime. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_FREE_POOL)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN VOID *Buffer - ); - -/** - This routine tells caller if execution context is SMM or not. - - @param[in] This The protocol instance pointer. - @param[out] InSmm Whether the caller is inside SMM for IA-32 - or servicing a PMI for the Itanium processor - family. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_INVALID_PARAMETER InSmm was NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_INSIDE_OUT)( - IN EFI_SMM_BASE_PROTOCOL *This, - OUT BOOLEAN *InSmm - ); - -/** - The GetSmstLocation() function returns the location of the System Management - Service Table. The use of the API is such that a driver can discover the - location of the SMST in its entry point and then cache it in some driver - global variable so that the SMST can be invoked in subsequent callbacks. - - @param[in] This The protocol instance pointer. - @param[in] Smst The pointer to the SMST. - - @retval EFI_SUCCESS The operation was successful - @retval EFI_INVALID_PARAMETER Smst was invalid. - @retval EFI_UNSUPPORTED Not in SMM. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_GET_SMST_LOCATION)( - IN EFI_SMM_BASE_PROTOCOL *This, - IN OUT EFI_SMM_SYSTEM_TABLE **Smst - ); - -/// -/// This protocol is used to install SMM handlers for support of subsequent SMI/PMI -/// activations. This protocol is available on both IA-32 and Itanium-based systems. -/// -struct _EFI_SMM_BASE_PROTOCOL { - EFI_SMM_REGISTER_HANDLER Register; - EFI_SMM_UNREGISTER_HANDLER UnRegister; - EFI_SMM_COMMUNICATE Communicate; - EFI_SMM_CALLBACK_SERVICE RegisterCallback; - EFI_SMM_INSIDE_OUT InSmm; - EFI_SMM_ALLOCATE_POOL SmmAllocatePool; - EFI_SMM_FREE_POOL SmmFreePool; - EFI_SMM_GET_SMST_LOCATION GetSmstLocation; -}; - -extern EFI_GUID gEfiSmmBaseProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmControl.h b/IntelFrameworkPkg/Include/Protocol/SmmControl.h deleted file mode 100644 index 2d0884c..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmControl.h +++ /dev/null @@ -1,174 +0,0 @@ -/** @file - This file declares the SMM Control abstraction protocol. - This protocol is used to initiate SMI/PMI activations. This protocol could be published by either: - - A processor driver to abstract the SMI/PMI IPI - - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an - Intel chipset - Because of the possibility of performing SMI or PMI IPI transactions, the ability to generate this - event from a platform chipset agent is an optional capability for both IA-32 and Itanium-based - systems. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _SMM_CONTROL_H_ -#define _SMM_CONTROL_H_ - - -typedef struct _EFI_SMM_CONTROL_PROTOCOL EFI_SMM_CONTROL_PROTOCOL; - -#define EFI_SMM_CONTROL_PROTOCOL_GUID \ - { \ - 0x8d12e231, 0xc667, 0x4fd1, {0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5 } \ - } -// -// SMM Access specification Data Structures -// -typedef struct { - /// - /// Describes the I/O location of the particular port that engendered the synchronous - /// SMI. For example, this location can include but is not limited to the traditional - /// PCAT* APM port of 0B2h. - /// - UINT8 SmiTriggerRegister; - /// - /// Describes the value that was written to the respective activation port. - /// - UINT8 SmiDataRegister; -} EFI_SMM_CONTROL_REGISTER; - -// -// SMM Control specification member function -// -/** - Invokes SMI activation from either the preboot or runtime environment. - - @param This The EFI_SMM_CONTROL_PROTOCOL instance. - @param ArgumentBuffer The optional sized data to pass into the protocol activation. - @param ArgumentBufferSize The optional size of the data. - @param Periodic An optional mechanism to periodically repeat activation. - @param ActivationInterval An optional parameter to repeat at this period one - time or, if the Periodic Boolean is set, periodically. - - @retval EFI_SUCCESS The SMI/PMI has been engendered. - @retval EFI_DEVICE_ERROR The timing is unsupported. - @retval EFI_INVALID_PARAMETER The activation period is unsupported. - @retval EFI_NOT_STARTED The SMM base service has not been initialized. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_ACTIVATE)( - IN EFI_SMM_CONTROL_PROTOCOL *This, - IN OUT INT8 *ArgumentBuffer OPTIONAL, - IN OUT UINTN *ArgumentBufferSize OPTIONAL, - IN BOOLEAN Periodic OPTIONAL, - IN UINTN ActivationInterval OPTIONAL - ); - -/** - Clears any system state that was created in response to the Active call. - - @param This The EFI_SMM_CONTROL_PROTOCOL instance. - @param Periodic Optional parameter to repeat at this period one - time or, if the Periodic Boolean is set, periodically. - - @retval EFI_SUCCESS The SMI/PMI has been engendered. - @retval EFI_DEVICE_ERROR The source could not be cleared. - @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_DEACTIVATE)( - IN EFI_SMM_CONTROL_PROTOCOL *This, - IN BOOLEAN Periodic OPTIONAL - ); - -/** - Provides information on the source register used to generate the SMI. - - @param This The EFI_SMM_CONTROL_PROTOCOL instance. - @param SmiRegister A pointer to the SMI register description structure. - - @retval EFI_SUCCESS The register structure has been returned. - @retval EFI_DEVICE_ERROR The source could not be cleared. - @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_GET_REGISTER_INFO)( - IN EFI_SMM_CONTROL_PROTOCOL *This, - IN OUT EFI_SMM_CONTROL_REGISTER *SmiRegister - ); - -/** - @par Protocol Description: - This protocol is used to initiate SMI/PMI activations. - - @param Trigger - Initiates the SMI/PMI activation. - - @param Clear - Quiesces the SMI/PMI activation. - - @param GetRegisterInfo - Provides data on the register used as the source of the SMI. - - @param MinimumTriggerPeriod - Minimum interval at which the platform can set the period. - - @retval EFI_SUCCESS The register structure has been returned. -**/ - -// -// SMM Control Protocol -// -/** - This protocol is used to initiate SMI/PMI activations. - This protocol could be published by either: - - A processor driver to abstract the SMI/PMI IPI. - - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an Intel chipset. - Because of the possibility of performing SMI or PMI IPI transactions, the ability to generate this. - - The EFI_SMM_CONTROL_PROTOCOL is used by the platform chipset or processor driver. This - protocol is usable both in boot services and at runtime. The runtime aspect enables an - implementation of EFI_SMM_BASE_PROTOCOL.Communicate() to layer upon this service - and provide an SMI callback from a general EFI runtime driver. - This protocol provides an abstraction to the platform hardware that generates an - SMI or PMI. There are often I/O ports that, when accessed, will engender the SMI or PMI. - Also, this hardware optionally supports the periodic genearation of these signals. - -**/ -struct _EFI_SMM_CONTROL_PROTOCOL { - /// - /// Initiates the SMI/PMI activation. - /// - EFI_SMM_ACTIVATE Trigger; - /// - /// Quiesces the SMI/PMI activation. - /// - EFI_SMM_DEACTIVATE Clear; - /// - /// Provides data on the register used as the source of the SMI. - /// - EFI_SMM_GET_REGISTER_INFO GetRegisterInfo; - /// - /// Minimum interval at which the platform can set the period. A maximum is not - /// specified in that the SMM infrastructure code can emulate a maximum interval that is - /// greater than the hardware capabilities by using software emulation in the SMM - /// infrastructure code. - /// - UINTN MinimumTriggerPeriod; -}; - -extern EFI_GUID gEfiSmmControlProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h b/IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h deleted file mode 100644 index d3dfe7c..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmCpuIo.h +++ /dev/null @@ -1,82 +0,0 @@ -/** @file - SMM CPU I/O protocol as defined in the Intel Framework specification. - - This protocol provides CPU I/O and memory access within SMM. - -Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _SMM_CPU_IO_H_ -#define _SMM_CPU_IO_H_ - -#include - -#define EFI_SMM_CPU_IO_GUID \ - { \ - 0x5f439a0b, 0x45d8, 0x4682, {0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41} \ - } - -typedef struct _EFI_SMM_CPU_IO_INTERFACE EFI_SMM_CPU_IO_INTERFACE; - -/** - Provides the basic memory and I/O interfaces used to abstract accesses to devices. - - The I/O operations are carried out exactly as requested. The caller is - responsible for any alignment and I/O width issues that the bus, device, - platform, or type of I/O might require. - - @param[in] This The EFI_SMM_CPU_IO_INTERFACE instance. - @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is - responsible for aligning the Address, if required. - @param[in] Count The number of I/O operations to perform. - @param[in,out] Buffer For read operations, the destination buffer to store - the results. For write operations, the source buffer - from which to write data. - - @retval EFI_SUCCESS The data was read from or written to the device. - @retval EFI_UNSUPPORTED The Address is not valid for this system. - @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack - of resources. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_CPU_IO)( - IN EFI_SMM_CPU_IO_INTERFACE *This, - IN EFI_SMM_IO_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN OUT VOID *Buffer - ); - -typedef struct { - /// - /// This service provides the various modalities of memory and I/O read. - /// - EFI_SMM_CPU_IO Read; - /// - /// This service provides the various modalities of memory and I/O write. - /// - EFI_SMM_CPU_IO Write; -} EFI_SMM_IO_ACCESS; - -/// -/// SMM CPU I/O Protocol provides CPU I/O and memory access within SMM. -/// -struct _EFI_SMM_CPU_IO_INTERFACE { - /// - /// Allows reads and writes to memory-mapped I/O space. - /// - EFI_SMM_IO_ACCESS Mem; - /// - /// Allows reads and writes to I/O space. - /// - EFI_SMM_IO_ACCESS Io; -}; - -extern EFI_GUID gEfiSmmCpuIoGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h b/IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h deleted file mode 100644 index ccf3e85..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmCpuSaveState.h +++ /dev/null @@ -1,169 +0,0 @@ -/** @file - This file declares the SMM CPU Save State protocol, which provides the processor - save-state information for IA-32 and Itanium processors. - -Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.91. -**/ - -#ifndef _SMM_CPU_SAVE_STATE_H_ -#define _SMM_CPU_SAVE_STATE_H_ - -#define EFI_SMM_CPU_SAVE_STATE_PROTOCOL_GUID \ - { \ - 0x21f302ad, 0x6e94, 0x471b, {0x84, 0xbc, 0xb1, 0x48, 0x0, 0x40, 0x3a, 0x1d} \ - } - -typedef struct _EFI_SMM_CPU_SAVE_STATE_PROTOCOL EFI_SMM_CPU_SAVE_STATE_PROTOCOL; - -#define EFI_SMM_MIN_REV_ID_x64 0x30006 - -#pragma pack (1) - -/// -/// CPU save-state strcuture for IA32 and X64. -/// -/// This struct declaration does not exctly match the Framework SMM CIS 0.91 because the -/// union in the Framework SMM CIS 0.91 contains an unnamed union member that causes build -/// breaks on many compilers with high warning levels. Instead, the UINT8 Reserved[0x200] -/// field has been moved into EFI_SMM_CPU_STATE32. This maintains binary compatibility for -/// the layout and also maintains source comaptibility for access of all fields in this -/// union. -/// -/// This struct declaration does not exctly match the Framework SMM CIS 0.91 because -/// the Framework SMM CIS 0.91 uses ASM_XXX for base types in this structure. These -/// have been changed to use the base types defined in the UEFI Specification. -/// -typedef struct { - UINT8 Reserved[0x200]; - UINT8 Reserved1[0xf8]; // fe00h - UINT32 SMBASE; // fef8h - UINT32 SMMRevId; // fefch - UINT16 IORestart; // ff00h - UINT16 AutoHALTRestart; // ff02h - UINT32 IEDBASE; // ff04h - UINT8 Reserved2[0x98]; // ff08h - UINT32 IOMemAddr; // ffa0h - UINT32 IOMisc; // ffa4h - UINT32 _ES; - UINT32 _CS; - UINT32 _SS; - UINT32 _DS; - UINT32 _FS; - UINT32 _GS; - UINT32 _LDTBase; - UINT32 _TR; - UINT32 _DR7; - UINT32 _DR6; - UINT32 _EAX; - UINT32 _ECX; - UINT32 _EDX; - UINT32 _EBX; - UINT32 _ESP; - UINT32 _EBP; - UINT32 _ESI; - UINT32 _EDI; - UINT32 _EIP; - UINT32 _EFLAGS; - UINT32 _CR3; - UINT32 _CR0; -} EFI_SMM_CPU_STATE32; - -/// -/// This struct declaration does not exctly match the Framework SMM CIS 0.91 because -/// the Framework SMM CIS 0.91 uses ASM_XXX for base types in this structure. These -/// have been changed to use the base types defined in the UEFI Specification. -/// -typedef struct { - UINT8 Reserved1[0x1d0]; // fc00h - UINT32 GdtBaseHiDword; // fdd0h - UINT32 LdtBaseHiDword; // fdd4h - UINT32 IdtBaseHiDword; // fdd8h - UINT8 Reserved2[0xc]; // fddch - UINT64 IO_EIP; // fde8h - UINT8 Reserved3[0x50]; // fdf0h - UINT32 _CR4; // fe40h - UINT8 Reserved4[0x48]; // fe44h - UINT32 GdtBaseLoDword; // fe8ch - UINT32 GdtLimit; // fe90h - UINT32 IdtBaseLoDword; // fe94h - UINT32 IdtLimit; // fe98h - UINT32 LdtBaseLoDword; // fe9ch - UINT32 LdtLimit; // fea0h - UINT32 LdtInfo; // fea4h - UINT8 Reserved5[0x50]; // fea8h - UINT32 SMBASE; // fef8h - UINT32 SMMRevId; // fefch - UINT16 AutoHALTRestart; // ff00h - UINT16 IORestart; // ff02h - UINT32 IEDBASE; // ff04h - UINT8 Reserved6[0x14]; // ff08h - UINT64 _R15; // ff1ch - UINT64 _R14; - UINT64 _R13; - UINT64 _R12; - UINT64 _R11; - UINT64 _R10; - UINT64 _R9; - UINT64 _R8; - UINT64 _RAX; // ff5ch - UINT64 _RCX; - UINT64 _RDX; - UINT64 _RBX; - UINT64 _RSP; - UINT64 _RBP; - UINT64 _RSI; - UINT64 _RDI; - UINT64 IOMemAddr; // ff9ch - UINT32 IOMisc; // ffa4h - UINT32 _ES; // ffa8h - UINT32 _CS; - UINT32 _SS; - UINT32 _DS; - UINT32 _FS; - UINT32 _GS; - UINT32 _LDTR; // ffc0h - UINT32 _TR; - UINT64 _DR7; // ffc8h - UINT64 _DR6; - UINT64 _RIP; // ffd8h - UINT64 IA32_EFER; // ffe0h - UINT64 _RFLAGS; // ffe8h - UINT64 _CR3; // fff0h - UINT64 _CR0; // fff8h -} EFI_SMM_CPU_STATE64; - -/// -/// Union of CPU save-state strcutures for IA32 and X64. -/// -/// This union declaration does not exctly match the Framework SMM CIS 0.91 because the -/// union in the Framework SMM CIS 0.91 contains an unnamed union member that causes build -/// breaks on many compilers with high warning levels. Instead, the UINT8 Reserved[0x200] -/// field has been moved into EFI_SMM_CPU_STATE32. This maintains binary compatibility for -/// the layout and also maintains source comaptibility for access of all fields in this -/// union. -/// -typedef union { - EFI_SMM_CPU_STATE32 x86; - EFI_SMM_CPU_STATE64 x64; -} EFI_SMM_CPU_STATE; - -#pragma pack () - -/// -/// Provides a programatic means to access SMM save state. -/// -struct _EFI_SMM_CPU_SAVE_STATE_PROTOCOL { - /// - /// Reference to a list of save states. - /// - EFI_SMM_CPU_STATE **CpuSaveState; -}; - -extern EFI_GUID gEfiSmmCpuSaveStateProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h deleted file mode 100644 index 8acd6c5..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmGpiDispatch.h +++ /dev/null @@ -1,130 +0,0 @@ -/** @file - This file declares the Smm Gpi Smi Child Protocol. - - The EFI_SMM_GPI_DISPATCH_PROTOCOL is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. It provides the ability to install child handlers for the given event types. - Several inputs can be enabled. This purpose of this interface is to generate an - SMI in response to any of these inputs having a true value provided. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _SMM_GPI_DISPATCH_H_ -#define _SMM_GPI_DISPATCH_H_ - - -// -// Global ID for the GPI SMI Protocol -// -#define EFI_SMM_GPI_DISPATCH_PROTOCOL_GUID \ - { \ - 0xe0744b81, 0x9513, 0x49cd, {0x8c, 0xea, 0xe9, 0x24, 0x5e, 0x70, 0x39, 0xda } \ - } - -typedef struct _EFI_SMM_GPI_DISPATCH_PROTOCOL EFI_SMM_GPI_DISPATCH_PROTOCOL; - -// -// Related Definitions -// - -// -// GpiMask is a bit mask of 32 possible general purpose inputs that can generate -// an SMI. Bit 0 corresponds to logical GPI[0], 1 corresponds to logical GPI[1], and so on. -// -// The logical GPI index to physical pin on device is described by the GPI device name -// found on the same handle as the GpiSmi child dispatch protocol. The GPI device name -// is defined as protocol with a GUID name and NULL protocol pointer. -// -typedef struct { - UINTN GpiNum; -} EFI_SMM_GPI_DISPATCH_CONTEXT; - -// -// Member functions -// - -/** - Dispatch function for a GPI SMI handler. - - @param DispatchHandle The handle of this dispatch function. - @param DispatchContext The pointer to the dispatch function's context. - The DispatchContext fields are filled in by the - dispatching driver prior to invoking this dispatch - function. -**/ -typedef -VOID -(EFIAPI *EFI_SMM_GPI_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_GPI_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Register a child SMI source dispatch function with a parent SMM driver - - @param This The pointer to the EFI_SMM_GPI_DISPATCH_PROTOCOL instance. - @param DispatchFunction Function to install. - @param DispatchContext The pointer to the dispatch function's context. - Indicates to the register - function the GPI(s) for which the dispatch function - should be invoked. - @param DispatchHandle The handle generated by the dispatcher to track the - function instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered, and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The driver was unable to enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The GPI input value - is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_GPI_REGISTER)( - IN EFI_SMM_GPI_DISPATCH_PROTOCOL *This, - IN EFI_SMM_GPI_DISPATCH DispatchFunction, - IN EFI_SMM_GPI_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregisters a General Purpose Input (GPI) service. - - @param This The pointer to the EFI_SMM_GPI_DISPATCH_PROTOCOL instance. - @param DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered, and the SMI source has been disabled, - if there are no other registered child dispatch - functions for this SMI source. - @retval EFI_INVALID_PARAMETER DispatchHandle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_GPI_UNREGISTER)( - IN EFI_SMM_GPI_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -// -// Interface structure for the SMM GPI SMI Dispatch Protocol -// -struct _EFI_SMM_GPI_DISPATCH_PROTOCOL { - EFI_SMM_GPI_REGISTER Register; - EFI_SMM_GPI_UNREGISTER UnRegister; - - /// - /// Denotes the maximum value of inputs that can have handlers attached. - /// - UINTN NumSupportedGpis; -}; - -extern EFI_GUID gEfiSmmGpiDispatchProtocolGuid; - -#endif - diff --git a/IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h deleted file mode 100644 index 3cf86c0..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmIchnDispatch.h +++ /dev/null @@ -1,183 +0,0 @@ -/** @file - Provides the parent dispatch service for a given SMI source generator. - The EFI_SMM_ICHN_DISPATCH_PROTOCOL provides the ability to install child handlers for - the given event types. - -Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_ICHN_DISPATCH_H_ -#define _EFI_SMM_ICHN_DISPATCH_H_ - - -// -// Global ID for the ICH SMI Protocol -// -#define EFI_SMM_ICHN_DISPATCH_PROTOCOL_GUID \ - { \ - 0xc50b323e, 0x9075, 0x4f2a, {0xac, 0x8e, 0xd2, 0x59, 0x6a, 0x10, 0x85, 0xcc } \ - } - -typedef struct _EFI_SMM_ICHN_DISPATCH_PROTOCOL EFI_SMM_ICHN_DISPATCH_PROTOCOL; - -// -// Related Definitions -// -// -// ICHN Specific SMIs. These are miscellaneous SMI sources that are supported by the -// ICHN specific SMI implementation. These may change over time. TrapNumber is only -// valid if the Type is Trap. -// -typedef enum { - // - // NOTE: NEVER delete items from this list/enumeration! Doing so will prevent other versions - // of the code from compiling. If the ICH version your driver is written for doesn't support - // some of these SMIs, then simply return EFI_UNSUPPORTED when a child/client tries to register - // for them. - // - IchnMch, - IchnPme, - IchnRtcAlarm, - IchnRingIndicate, - IchnAc97Wake, - IchnSerialIrq, - IchnY2KRollover, - IchnTcoTimeout, - IchnOsTco, - IchnNmi, - IchnIntruderDetect, - IchnBiosWp, - IchnMcSmi, - IchnPmeB0, - IchnThrmSts, - IchnSmBus, - IchnIntelUsb2, - IchnMonSmi7, - IchnMonSmi6, - IchnMonSmi5, - IchnMonSmi4, - IchnDevTrap13, - IchnDevTrap12, - IchnDevTrap11, - IchnDevTrap10, - IchnDevTrap9, - IchnDevTrap8, - IchnDevTrap7, - IchnDevTrap6, - IchnDevTrap5, - IchnDevTrap3, - IchnDevTrap2, - IchnDevTrap1, - IchnDevTrap0, - IchnIoTrap3, - IchnIoTrap2, - IchnIoTrap1, - IchnIoTrap0, - IchnPciExpress, - IchnMonitor, - IchnSpi, - IchnQRT, - IchnGpioUnlock, - // - // INSERT NEW ITEMS JUST BEFORE THIS LINE - // - NUM_ICHN_TYPES // the number of items in this enumeration -} EFI_SMM_ICHN_SMI_TYPE; - -typedef struct { - EFI_SMM_ICHN_SMI_TYPE Type; -} EFI_SMM_ICHN_DISPATCH_CONTEXT; - -// -// Member functions -// -/** - Dispatch function for a ICHN specific SMI handler. - - @param DispatchHandle The handle of this dispatch function. - @param DispatchContext The pointer to the dispatch function's context. - The DispatchContext fields are filled in - by the dispatching driver prior to - invoking this dispatch function. - - @return None - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_ICHN_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Register a child SMI source dispatch function with a parent SMM driver. - - @param This The pointer to the EFI_SMM_ICHN_DISPATCH_PROTOCOL instance. - @param DispatchFunction The function to install. - @param DispatchContext The pointer to the dispatch function's context. - The caller fills in this context before calling - the register function to indicate to the register - function the ICHN SMI source for which the dispatch - function should be invoked. - @param DispatchHandle The handle generated by the dispatcher to track the function - instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The driver could not enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The ICHN input value - is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_ICHN_REGISTER)( - IN EFI_SMM_ICHN_DISPATCH_PROTOCOL *This, - IN EFI_SMM_ICHN_DISPATCH DispatchFunction, - IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregister a child SMI source dispatch function with a parent SMM driver - - @param This The pointer to the EFI_SMM_ICHN_DISPATCH_PROTOCOL instance. - @param DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered, and the SMI source has been disabled, - if there are no other registered child dispatch - functions for this SMI source. - @retval EFI_INVALID_PARAMETER The handle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_ICHN_UNREGISTER)( - IN EFI_SMM_ICHN_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -// -// Interface structure for the SMM ICHN specific SMI Dispatch Protocol -// -/** - Provides the parent dispatch service for a given SMI source generator. -**/ -struct _EFI_SMM_ICHN_DISPATCH_PROTOCOL { - EFI_SMM_ICHN_REGISTER Register; ///< Installs a child service to be dispatched by this protocol. - EFI_SMM_ICHN_UNREGISTER UnRegister; ///< Removes a child service dispatched by this protocol. -}; - -extern EFI_GUID gEfiSmmIchnDispatchProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h deleted file mode 100644 index 8cda37c..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmPeriodicTimerDispatch.h +++ /dev/null @@ -1,170 +0,0 @@ -/** @file - Provides the parent dispatch service for the periodical timer SMI source generator. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_PERIODIC_TIMER_DISPATCH_H_ -#define _EFI_SMM_PERIODIC_TIMER_DISPATCH_H_ - - -// -// Global ID for the Periodic Timer SMI Protocol -// -#define EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL_GUID \ - { \ - 0x9cca03fc, 0x4c9e, 0x4a19, {0x9b, 0x6, 0xed, 0x7b, 0x47, 0x9b, 0xde, 0x55 } \ - } - -typedef struct _EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL; - -// -// Related Definitions -// - -typedef struct { - /// - /// The minimum period of time that the child gets called, in 100 nanosecond units. - /// The child will be called back after a time greater than the time Period. - /// - UINT64 Period; - /// - /// The period of time interval between SMIs. Children of this interface - /// should use this field when registering for periodic timer intervals when a finer - /// granularity periodic SMI is desired. Valid values for this field are those returned - /// by GetNextInterval. A value of 0 indicates the parent is allowed to use any SMI - /// interval period to satisfy the requested period. - /// - UINT64 SmiTickInterval; - /// - /// The actual time in 100 nanosecond units elapsed since last called. A - /// value of 0 indicates an unknown amount of time. - /// - UINT64 ElapsedTime; -} EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT; - -// -// Member functions -// -/** - Dispatch function for a Periodic Timer SMI handler. - - @param DispatchHandle The handle of this dispatch function. - @param DispatchContext The pointer to the dispatch function's context. - The DispatchContext fields are filled in - by the dispatching driver prior to - invoking this dispatch function. - - @return None - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_PERIODIC_TIMER_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Returns the next SMI tick period supported by the chipset. The order - returned is from longest to shortest interval period. - - @param This The protocol instance pointer. - @param SmiTickInterval The pointer to pointer of next shorter SMI interval - period supported by the child. This parameter works as a get-first, - get-next field. The first time this function is called, *SmiTickInterval - should be set to NULL to get the longest SMI interval. The returned - *SmiTickInterval should be passed in on subsequent calls to get the - next shorter interval period until *SmiTickInterval = NULL. - - @retval EFI_SUCCESS The service returned successfully. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_PERIODIC_TIMER_INTERVAL)( - IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL *This, - IN OUT UINT64 **SmiTickInterval - ); - -/** - Register a child SMI source dispatch function with a parent SMM driver - - @param This The pointer to the EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL instance. - @param DispatchFunction The function to install. - @param DispatchContext The pointer to the dispatch function's context. - Indicates to the register - function the period at which the dispatch function - should be invoked. - @param DispatchHandle The handle generated by the dispatcher to track the function instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered, and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The driver was unable to enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The period input value - is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_PERIODIC_TIMER_REGISTER)( - IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL *This, - IN EFI_SMM_PERIODIC_TIMER_DISPATCH DispatchFunction, - IN EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregisters a periodic timer service. - - @param This The pointer to the EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL instance. - @param DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered, and the SMI source has been disabled - if there are no other registered child dispatch - functions for this SMI source. - @retval EFI_INVALID_PARAMETER The handle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_PERIODIC_TIMER_UNREGISTER)( - IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -// -// Interface structure for the SMM Periodic Timer Dispatch Protocol -// -/** - Provides the parent dispatch service for the periodical timer SMI source generator. -**/ -struct _EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL { - /// - /// Installs a child service to be dispatched by this protocol. - /// - EFI_SMM_PERIODIC_TIMER_REGISTER Register; - - /// - /// Removes a child service dispatched by this protocol. - /// - EFI_SMM_PERIODIC_TIMER_UNREGISTER UnRegister; - - /// - /// Returns the next SMI tick period that is supported by the chipset. - /// - EFI_SMM_PERIODIC_TIMER_INTERVAL GetNextShorterInterval; -}; - -extern EFI_GUID gEfiSmmPeriodicTimerDispatchProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h deleted file mode 100644 index df14fb9..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmPowerButtonDispatch.h +++ /dev/null @@ -1,135 +0,0 @@ -/** @file - Provides the parent dispatch service for the power button SMI source generator. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_POWER_BUTTON_DISPATCH_H_ -#define _EFI_SMM_POWER_BUTTON_DISPATCH_H_ - - -// -// Global ID for the Power Button SMI Protocol -// -#define EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL_GUID \ - { \ - 0xb709efa0, 0x47a6, 0x4b41, {0xb9, 0x31, 0x12, 0xec, 0xe7, 0xa8, 0xee, 0x56 } \ - } - -typedef struct _EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL; - -// -// Related Definitions -// -// -// Power Button. Example, Use for changing LEDs before ACPI OS is on. -// - DXE/BDS Phase -// - OS Install Phase -// -typedef enum { - PowerButtonEntry, - PowerButtonExit -} EFI_POWER_BUTTON_PHASE; - -typedef struct { - EFI_POWER_BUTTON_PHASE Phase; -} EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT; - -// -// Member functions -// -/** - Dispatch function for a Power Button SMI handler. - - @param[in] DispatchHandle The handle of this dispatch function. - @param[in] DispatchContext The pointer to the dispatch function's context. - The DispatchContext fields are filled in - by the dispatching driver prior to - invoking this dispatch function. - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_POWER_BUTTON_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Provides the parent dispatch service for a given SMI source generator - - @param[in] This The pointer to the - EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL instance. - @param[in] DispatchFunction The function to install. - @param[in] DispatchContext The pointer to the dispatch function's context. - Indicates to the register - function the Power Button SMI phase for which - to invoke the dispatch function. - @param[out] DispatchHandle Handle generated by the dispatcher to track - the function instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The driver was unable to enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The Power Button SMI - phase is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_POWER_BUTTON_REGISTER)( - IN EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL *This, - IN EFI_SMM_POWER_BUTTON_DISPATCH DispatchFunction, - IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregisters a power-button service. - - @param[in] This The pointer to the EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL instance. - @param[in] DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered, and the SMI source has been - disabled, if there are no other registered - child dispatch functions for this SMI - source. - @retval EFI_INVALID_PARAMETER The handle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_POWER_BUTTON_UNREGISTER)( - IN EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -/** - @par Protocol Description: - Provides the parent dispatch service for the SMM power button SMI source generator. - -**/ -struct _EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL { - /// - /// Installs a child service to be dispatched by this protocol. - /// - EFI_SMM_POWER_BUTTON_REGISTER Register; - - /// - /// Removes a child service dispatched by this protocol. - /// - EFI_SMM_POWER_BUTTON_UNREGISTER UnRegister; -}; - -extern EFI_GUID gEfiSmmPowerButtonDispatchProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h deleted file mode 100644 index 1b5a988..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmStandbyButtonDispatch.h +++ /dev/null @@ -1,137 +0,0 @@ -/** @file - Provides the parent dispatch service for the standby button SMI source generator. - - The SMM Standby Button Dispatch Protocol is defined in - the Intel Platform Innovation Framework for EFI SMM Core Interface Specification - (SMM CIS) Version 0.9. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_STANDBY_BUTTON_DISPATCH_H_ -#define _EFI_SMM_STANDBY_BUTTON_DISPATCH_H_ - -// -// Share some common definitions with PI SMM -// -#include - -// -// Global ID for the Standby Button SMI Protocol -// -#define EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL_GUID \ - { \ - 0x78965b98, 0xb0bf, 0x449e, {0x8b, 0x22, 0xd2, 0x91, 0x4e, 0x49, 0x8a, 0x98 } \ - } - -typedef struct _EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL; - -// -// Related Definitions -// - -typedef struct { - /// Describes whether the child handler should be invoked upon the entry to the button - /// activation or upon exit (i.e., upon receipt of the button press event or upon release of - /// the event). - EFI_STANDBY_BUTTON_PHASE Phase; -} EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT; - -// -// Member functions -// - -/** - Dispatch function for a Standby Button SMI handler. - - @param DispatchHandle The handle of this dispatch function. - @param DispatchContext The pointer to the dispatch function's context. - The DispatchContext fields are filled in - by the dispatching driver prior to - invoking this dispatch function. - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_STANDBY_BUTTON_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Provides the parent dispatch service for a given SMI source generator - - @param This The pointer to the EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL instance. - @param DispatchFunction The function to install. - @param DispatchContext The pointer to the dispatch function's context. - Indicates to the register function the Standby - Button SMI phase for which to invoke the dispatch - function. - @param DispatchHandle The handle generated by the dispatcher to track the - function instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered, and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The driver could not enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The Standby Button SMI - phase is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_STANDBY_BUTTON_REGISTER)( - IN EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL *This, - IN EFI_SMM_STANDBY_BUTTON_DISPATCH DispatchFunction, - IN EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregister a child SMI source dispatch function with a parent SMM driver. - - @param This The pointer to the EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL instance. - @param DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered, and the SMI source has been disabled, - if there are no other registered child dispatch - functions for this SMI source. - @retval EFI_INVALID_PARAMETER The handle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_STANDBY_BUTTON_UNREGISTER)( - IN EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -// -// Interface structure for the SMM Standby Button SMI Dispatch Protocol -// -/** - This protocol provices the parent dispatch service for the standby button SMI source generator. - Provides the ability to install child handlers for the given event types. - **/ -struct _EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL { - /// - /// Installs a child service to be dispatched by this protocol. - /// - EFI_SMM_STANDBY_BUTTON_REGISTER Register;\ - /// - /// Removes a child service dispatched by this protocol. - /// - EFI_SMM_STANDBY_BUTTON_UNREGISTER UnRegister; -}; - -extern EFI_GUID gEfiSmmStandbyButtonDispatchProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h deleted file mode 100644 index eff188f..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmSwDispatch.h +++ /dev/null @@ -1,145 +0,0 @@ -/** @file - Provides the parent dispatch service for a given SMI source generator. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework for EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_SW_DISPATCH_H_ -#define _EFI_SMM_SW_DISPATCH_H_ - - -// -// Global ID for the SW SMI Protocol -// -#define EFI_SMM_SW_DISPATCH_PROTOCOL_GUID \ - { \ - 0xe541b773, 0xdd11, 0x420c, {0xb0, 0x26, 0xdf, 0x99, 0x36, 0x53, 0xf8, 0xbf } \ - } - -typedef struct _EFI_SMM_SW_DISPATCH_PROTOCOL EFI_SMM_SW_DISPATCH_PROTOCOL; - -// -// Related Definitions -// -// -// A particular chipset may not support all possible software SMI input values. -// For example, the ICH supports only values 00h to 0FFh. The parent only allows a single -// child registration for each SwSmiInputValue. -// -typedef struct { - UINTN SwSmiInputValue; -} EFI_SMM_SW_DISPATCH_CONTEXT; - -// -// Member functions -// -/** - Dispatch function for a Software SMI handler. - - @param DispatchHandle The handle of this dispatch function. - @param DispatchContext The pointer to the dispatch function's context. - The SwSmiInputValue field is filled in - by the software dispatch driver prior to - invoking this dispatch function. - The dispatch function will only be called - for input values for which it is registered. - - @return None - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_SW_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Register a child SMI source dispatch function with a parent SMM driver. - - @param This The pointer to the EFI_SMM_SW_DISPATCH_PROTOCOL instance. - @param DispatchFunction The function to install. - @param DispatchContext The pointer to the dispatch function's context. - Indicates to the register - function the Software SMI input value for which - to invoke the dispatch function. - @param DispatchHandle The handle generated by the dispatcher to track - the function instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The SW driver could not enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The SW SMI input value - is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_SW_REGISTER)( - IN EFI_SMM_SW_DISPATCH_PROTOCOL *This, - IN EFI_SMM_SW_DISPATCH DispatchFunction, - IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregister a child SMI source dispatch function with a parent SMM driver - - @param This The pointer to the EFI_SMM_SW_DISPATCH_PROTOCOL instance. - @param DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered and the SMI source has been disabled - if there are no other registered child dispatch - functions for this SMI source. - @retval EFI_INVALID_PARAMETER The handle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_SW_UNREGISTER)( - IN EFI_SMM_SW_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - - -// -// Interface structure for the SMM Software SMI Dispatch Protocol -// -/** - Provides the parent dispatch service for a given SMI source generator. -**/ -/// -/// Inconsistent with the specification here: -/// In The Framework specification SmmCis, this definition is named as -/// _EFI_SMM_ICHN_DISPATCH_PROTOCOL by mistake. -/// -struct _EFI_SMM_SW_DISPATCH_PROTOCOL { - /// - /// Installs a child service to be dispatched by this protocol. - /// - EFI_SMM_SW_REGISTER Register; - - /// - /// Removes a child service dispatched by this protocol. - /// - EFI_SMM_SW_UNREGISTER UnRegister; - - /// - /// A read-only field that describes the maximum value that can be used - /// in the EFI_SMM_SW_DISPATCH_PROTOCOL.Register() service. - /// - UINTN MaximumSwiValue; -}; - -extern EFI_GUID gEfiSmmSwDispatchProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h deleted file mode 100644 index 6f2bb7f..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmSxDispatch.h +++ /dev/null @@ -1,129 +0,0 @@ -/** @file - Provides the parent dispatch service for a given Sx-state source generator. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_SX_DISPATCH_H_ -#define _EFI_SMM_SX_DISPATCH_H_ - -// -// Share some common definitions with PI SMM -// -#include - -// -// Global ID for the Sx SMI Protocol -// -#define EFI_SMM_SX_DISPATCH_PROTOCOL_GUID \ - { \ - 0x14fc52be, 0x1dc, 0x426c, {0x91, 0xae, 0xa2, 0x3c, 0x3e, 0x22, 0xa, 0xe8 } \ - } - -typedef struct _EFI_SMM_SX_DISPATCH_PROTOCOL EFI_SMM_SX_DISPATCH_PROTOCOL; - -typedef struct { - EFI_SLEEP_TYPE Type; - EFI_SLEEP_PHASE Phase; -} EFI_SMM_SX_DISPATCH_CONTEXT; - -// -// Member functions -// -/** - Dispatch function for a Sx state SMI handler. - - @param DispatchHandle The handle of this dispatch function. - @param DispatchContext The pointer to the dispatch function's context. - The Type and Phase fields are filled in by the Sx dispatch driver - prior to invoking this dispatch function. For this interface, - the Sx driver will call the dispatch function for all Sx type - and phases, so the Sx state handler(s) must check the Type and - Phase field of EFI_SMM_SX_DISPATCH_CONTEXT, and act accordingly. - - @return None - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_SX_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Register a child SMI source dispatch function with a parent SMM driver. - - @param This The pointer to the EFI_SMM_SX_DISPATCH_PROTOCOL instance. - @param DispatchFunction The function to install. - @param DispatchContext The pointer to the dispatch function's context. - The caller fills in this context before calling - the register function to indicates to the register - function which Sx state type and phase the caller - wishes to be called back on. For this interface, - the Sx driver will call the registered handlers for - all Sx type and phases, so the Sx state handler(s) - must check the Type and Phase field of the Dispatch - context, and act accordingly. - @param DispatchHandle The handle of dispatch function, for interfacing - with the parent Sx state SMM driver. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered and the SMI source has been enabled. - @retval EFI_UNSUPPORTED The Sx driver or hardware does not support that - Sx Type/Phase. - @retval EFI_DEVICE_ERROR The Sx driver was unable to enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. Type & Phase are not - within a valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_SX_REGISTER)( - IN EFI_SMM_SX_DISPATCH_PROTOCOL *This, - IN EFI_SMM_SX_DISPATCH DispatchFunction, - IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregisters an Sx-state service - - @param This The pointer to the EFI_SMM_SX_DISPATCH_PROTOCOL instance. - @param DispatchHandle The handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully unregistered, and the - SMI source has been disabled, if there are no other registered child - dispatch functions for this SMI source. - @retval EFI_INVALID_PARAMETER Handle is invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_SX_UNREGISTER)( - IN EFI_SMM_SX_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -// -// Interface structure for the SMM Child Dispatch Protocol -// -/** - Provides the parent dispatch service for a given Sx-state source generator. -**/ -struct _EFI_SMM_SX_DISPATCH_PROTOCOL { - EFI_SMM_SX_REGISTER Register; ///< Installs a child service to be dispatched by this protocol. - EFI_SMM_SX_UNREGISTER UnRegister; ///< Removes a child service dispatched by this protocol. -}; - -extern EFI_GUID gEfiSmmSxDispatchProtocolGuid; - -#endif diff --git a/IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h b/IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h deleted file mode 100644 index 8cfc8da..0000000 --- a/IntelFrameworkPkg/Include/Protocol/SmmUsbDispatch.h +++ /dev/null @@ -1,130 +0,0 @@ -/** @file - Provides the parent dispatch service for the USB SMI source generator. - -Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - - @par Revision Reference: - This Protocol is defined in Framework of EFI SMM Core Interface Spec - Version 0.9. - -**/ - -#ifndef _EFI_SMM_USB_DISPATCH_H_ -#define _EFI_SMM_USB_DISPATCH_H_ - -// -// Share some common definitions with PI SMM -// -#include - -// -// Global ID for the USB Protocol -// -#define EFI_SMM_USB_DISPATCH_PROTOCOL_GUID \ - { \ - 0xa05b6ffd, 0x87af, 0x4e42, {0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3 } \ - } - -typedef struct _EFI_SMM_USB_DISPATCH_PROTOCOL EFI_SMM_USB_DISPATCH_PROTOCOL; - -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; - -// -// Member functions -// -/** - Dispatch function for a USB SMI handler. - - @param[in] DispatchHandle Handle of this dispatch function. - @param[in] DispatchContext Pointer to the dispatch function's context. - The DispatchContext fields are filled in - by the dispatching driver prior to - invoking this dispatch function. - -**/ -typedef -VOID -(EFIAPI *EFI_SMM_USB_DISPATCH)( - IN EFI_HANDLE DispatchHandle, - IN EFI_SMM_USB_DISPATCH_CONTEXT *DispatchContext - ); - -/** - Register a child SMI source dispatch function with a parent SMM driver. - - @param[in] This The pointer to the EFI_SMM_USB_DISPATCH_PROTOCOL instance. - @param[in] DispatchFunction The pointer to dispatch function to be invoked - for this SMI source. - @param[in] DispatchContext The pointer to the dispatch function's context. - The caller fills this context in before calling - the register function to indicate to the register - function the USB SMI types for which the dispatch - function should be invoked. - @param[out] DispatchHandle The handle generated by the dispatcher to track the - function instance. - - @retval EFI_SUCCESS The dispatch function has been successfully - registered and the SMI source has been enabled. - @retval EFI_DEVICE_ERROR The driver was unable to enable the SMI source. - @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this - child. - @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The USB SMI type - is not within valid range. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_USB_REGISTER)( - IN EFI_SMM_USB_DISPATCH_PROTOCOL *This, - IN EFI_SMM_USB_DISPATCH DispatchFunction, - IN EFI_SMM_USB_DISPATCH_CONTEXT *DispatchContext, - OUT EFI_HANDLE *DispatchHandle - ); - -/** - Unregisters a USB service. - - @param[in] This The pointer to the EFI_SMM_USB_DISPATCH_PROTOCOL instance. - @param[in] DispatchHandle Handle of the service to remove. - - @retval EFI_SUCCESS The dispatch function has been successfully - unregistered and the SMI source has been disabled - if there are no other registered child dispatch - functions for this SMI source. - @retval EFI_INVALID_PARAMETER The DispatchHandle was not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SMM_USB_UNREGISTER)( - IN EFI_SMM_USB_DISPATCH_PROTOCOL *This, - IN EFI_HANDLE DispatchHandle - ); - -/// -/// The EFI_SMM_USB_DISPATCH_PROTOCOL provides the ability to install child handlers for the -/// given event types. -/// -struct _EFI_SMM_USB_DISPATCH_PROTOCOL { - EFI_SMM_USB_REGISTER Register; - EFI_SMM_USB_UNREGISTER UnRegister; -}; - -extern EFI_GUID gEfiSmmUsbDispatchProtocolGuid; - -#endif -- cgit v1.1