https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			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
 |