1 /** 2 **/ 3 /** 4 5 Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved 6 7 This program and the accompanying materials are licensed and made available under 8 the terms and conditions of the BSD License that accompanies this distribution. 9 The full text of the license may be found at 10 http://opensource.org/licenses/bsd-license.php. 11 12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15 16 17 @file 18 ActiveBios.h 19 20 @brief 21 This protocol is used to report and control what BIOS is mapped to the 22 BIOS address space anchored at 4GB boundary. 23 24 This protocol is EFI compatible. 25 26 E.G. For current generation ICH, the 4GB-16MB to 4GB range can be mapped 27 to PCI, SPI, or FWH. 28 29 **/ 30 #ifndef _EFI_ACTIVE_BIOS_PROTOCOL_H_ 31 #define _EFI_ACTIVE_BIOS_PROTOCOL_H_ 32 33 34 35 36 // 37 #define EFI_ACTIVE_BIOS_PROTOCOL_GUID \ 38 { \ 39 0xebbe2d1b, 0x1647, 0x4bda, 0xab, 0x9a, 0x78, 0x63, 0xe3, 0x96, 0xd4, 0x1a \ 40 } 41 extern EFI_GUID gEfiActiveBiosProtocolGuid; 42 43 /// 44 /// Forward reference for ANSI C compatibility 45 /// 46 typedef struct _EFI_ACTIVE_BIOS_PROTOCOL EFI_ACTIVE_BIOS_PROTOCOL; 47 48 /// 49 /// Protocol definitions 50 /// 51 typedef enum { 52 ActiveBiosStateSpi, 53 ActiveBiosStatePci, /// Obsolete since VLV 54 ActiveBiosStateLpc, 55 ActiveBiosStateMax 56 } EFI_ACTIVE_BIOS_STATE; 57 58 typedef 59 EFI_STATUS 60 (EFIAPI *EFI_ACTIVE_BIOS_SET_ACTIVE_BIOS_STATE) ( 61 IN EFI_ACTIVE_BIOS_PROTOCOL * This, 62 IN EFI_ACTIVE_BIOS_STATE DesiredState, 63 IN UINTN Key 64 ) 65 /** 66 67 @brief 68 Change the current active BIOS settings to the requested state. 69 The caller is responsible for requesting a supported state from 70 the EFI_ACTIVE_BIOS_STATE selections. 71 This will fail if someone has locked the interface and the correct key is 72 not provided. 73 74 @param[in] This Pointer to the EFI_ACTIVE_BIOS_PROTOCOL instance. 75 @param[in] DesiredState The requested state to configure the system for. 76 @param[in] Key If the interface is locked, Key must be the Key 77 returned from the LockState function call. 78 79 @retval EFI_SUCCESS The function completed successfully 80 @retval EFI_ACCESS_DENIED The interface is currently locked. 81 82 **/ 83 ; 84 85 typedef 86 EFI_STATUS 87 (EFIAPI *EFI_ACTIVE_BIOS_LOCK_ACTIVE_BIOS_STATE) ( 88 IN EFI_ACTIVE_BIOS_PROTOCOL * This, 89 IN BOOLEAN Lock, 90 IN OUT UINTN *Key 91 ); 92 93 /** 94 95 @brief 96 Lock the current active BIOS state from further changes. This allows a 97 caller to implement a critical section. This is optionally supported 98 functionality. Size conscious implementations may choose to require 99 callers cooperate without support from this protocol. 100 101 @param[in] This Pointer to the EFI_ACTIVE_BIOS_PROTOCOL instance. 102 @param[in] Lock TRUE to lock the current state, FALSE to unlock. 103 @param[in] Key If Lock is TRUE, then a key will be returned. If 104 Lock is FALSE, the key returned from the prior call 105 to lock the protocol must be provided to unlock the 106 protocol. The value of Key is undefined except that 107 it cannot be 0. 108 109 @retval EFI_SUCCESS Command succeed. 110 @exception EFI_UNSUPPORTED The function is not supported. 111 @retval EFI_ACCESS_DENIED The interface is currently locked. 112 @retval EFI_DEVICE_ERROR Device error, command aborts abnormally. 113 114 **/ 115 116 /// 117 /// Protocol definition 118 /// 119 /// Note that some functions are optional. This means that they may be NULL. 120 /// Caller is required to verify that an optional function is defined by checking 121 /// that the value is not NULL. 122 /// 123 struct _EFI_ACTIVE_BIOS_PROTOCOL { 124 EFI_ACTIVE_BIOS_STATE State; 125 EFI_ACTIVE_BIOS_SET_ACTIVE_BIOS_STATE SetState; 126 EFI_ACTIVE_BIOS_LOCK_ACTIVE_BIOS_STATE LockState; 127 }; 128 129 #endif 130