mirror of https://github.com/acidanthera/audk.git
132 lines
4.0 KiB
C
132 lines
4.0 KiB
C
/**
|
|
This protocol is used to report and control what BIOS is mapped to the
|
|
BIOS address space anchored at 4GB boundary.
|
|
|
|
This protocol is EFI compatible.
|
|
|
|
E.G. For current generation ICH, the 4GB-16MB to 4GB range can be mapped
|
|
to PCI, SPI, or FWH.
|
|
|
|
Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
|
|
|
This program and the accompanying materials are licensed and made available under
|
|
the terms and conditions of the BSD License that accompanies this distribution.
|
|
The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php.
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
**/
|
|
|
|
|
|
#ifndef _EFI_ACTIVE_BIOS_PROTOCOL_H_
|
|
#define _EFI_ACTIVE_BIOS_PROTOCOL_H_
|
|
|
|
//
|
|
// Define the protocol GUID
|
|
//
|
|
#define EFI_ACTIVE_BIOS_PROTOCOL_GUID \
|
|
{ 0xebbe2d1b, 0x1647, 0x4bda, {0xab, 0x9a, 0x78, 0x63, 0xe3, 0x96, 0xd4, 0x1a} }
|
|
|
|
typedef struct _EFI_ACTIVE_BIOS_PROTOCOL EFI_ACTIVE_BIOS_PROTOCOL;
|
|
|
|
//
|
|
// Protocol definitions
|
|
//
|
|
typedef enum {
|
|
ActiveBiosStateSpi,
|
|
ActiveBiosStatePci,
|
|
ActiveBiosStateLpc,
|
|
ActiveBiosStateMax
|
|
} EFI_ACTIVE_BIOS_STATE;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_ACTIVE_BIOS_SET_ACTIVE_BIOS_STATE) (
|
|
IN EFI_ACTIVE_BIOS_PROTOCOL *This,
|
|
IN EFI_ACTIVE_BIOS_STATE DesiredState,
|
|
IN UINTN Key
|
|
);
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Change the current active BIOS settings to the requested state.
|
|
The caller is responsible for requesting a supported state from
|
|
the EFI_ACTIVE_BIOS_STATE selections.
|
|
|
|
This will fail if someone has locked the interface and the correct key is
|
|
not provided.
|
|
|
|
Arguments:
|
|
|
|
This Pointer to the EFI_ACTIVE_BIOS_PROTOCOL instance.
|
|
DesiredState The requested state to configure the system for.
|
|
Key If the interface is locked, Key must be the Key
|
|
returned from the LockState function call.
|
|
|
|
Returns:
|
|
|
|
EFI_SUCCESS Command succeed.
|
|
EFI_ACCESS_DENIED The interface is currently locked.
|
|
EFI_DEVICE_ERROR Device error, command aborts abnormally.
|
|
|
|
--*/
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_ACTIVE_BIOS_LOCK_ACTIVE_BIOS_STATE) (
|
|
IN EFI_ACTIVE_BIOS_PROTOCOL *This,
|
|
IN BOOLEAN Lock,
|
|
IN OUT UINTN *Key
|
|
);
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Lock the current active BIOS state from further changes. This allows a
|
|
caller to implement a critical section. This is optionally supported
|
|
functionality. Size conscious implementations may choose to require
|
|
callers cooperate without support from this protocol.
|
|
|
|
Arguments:
|
|
|
|
This Pointer to the EFI_ACTIVE_BIOS_PROTOCOL instance.
|
|
Lock TRUE to lock the current state, FALSE to unlock.
|
|
Key If Lock is TRUE, then a key will be returned. If
|
|
Lock is FALSE, the key returned from the prior call
|
|
to lock the protocol must be provided to unlock the
|
|
protocol. The value of Key is undefined except that it
|
|
will never be 0.
|
|
|
|
Returns:
|
|
|
|
EFI_SUCCESS Command succeed.
|
|
EFI_UNSUPPORTED The function is not supported.
|
|
EFI_ACCESS_DENIED The interface is currently locked.
|
|
EFI_DEVICE_ERROR Device error, command aborts abnormally.
|
|
|
|
--*/
|
|
|
|
//
|
|
// Protocol definition
|
|
//
|
|
// Note that some functions are optional. This means that they may be NULL.
|
|
// Caller is required to verify that an optional function is defined by checking
|
|
// that the value is not NULL.
|
|
//
|
|
struct _EFI_ACTIVE_BIOS_PROTOCOL {
|
|
EFI_ACTIVE_BIOS_STATE State;
|
|
EFI_ACTIVE_BIOS_SET_ACTIVE_BIOS_STATE SetState;
|
|
EFI_ACTIVE_BIOS_LOCK_ACTIVE_BIOS_STATE LockState;
|
|
};
|
|
|
|
//
|
|
// Extern the GUID for protocol users.
|
|
//
|
|
extern EFI_GUID gEfiActiveBiosProtocolGuid;
|
|
|
|
#endif
|