Move to directory "Include"
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2646 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
141
MdePkg/Include/Uefi/UefiBaseType.h
Normal file
141
MdePkg/Include/Uefi/UefiBaseType.h
Normal file
@@ -0,0 +1,141 @@
|
||||
|
||||
/* @file
|
||||
|
||||
Defines data types and constants introduced in UEFI.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_BASETYPE_H__
|
||||
#define __UEFI_BASETYPE_H__
|
||||
|
||||
#include "Base.h"
|
||||
|
||||
//
|
||||
// Basical data type definitions introduced in UEFI.
|
||||
//
|
||||
typedef GUID EFI_GUID;
|
||||
typedef RETURN_STATUS EFI_STATUS;
|
||||
typedef VOID *EFI_HANDLE;
|
||||
|
||||
typedef VOID *EFI_EVENT;
|
||||
|
||||
typedef UINTN EFI_TPL;
|
||||
|
||||
|
||||
typedef UINT64 EFI_LBA;
|
||||
|
||||
|
||||
typedef UINT16 EFI_HII_HANDLE;
|
||||
typedef UINT16 STRING_REF;
|
||||
|
||||
typedef UINT64 EFI_PHYSICAL_ADDRESS;
|
||||
typedef UINT64 EFI_VIRTUAL_ADDRESS;
|
||||
|
||||
//
|
||||
// EFI Time Abstraction:
|
||||
// Year: 2000 - 20XX
|
||||
// Month: 1 - 12
|
||||
// Day: 1 - 31
|
||||
// Hour: 0 - 23
|
||||
// Minute: 0 - 59
|
||||
// Second: 0 - 59
|
||||
// Nanosecond: 0 - 999,999,999
|
||||
// TimeZone: -1440 to 1440 or 2047
|
||||
//
|
||||
typedef struct {
|
||||
UINT16 Year;
|
||||
UINT8 Month;
|
||||
UINT8 Day;
|
||||
UINT8 Hour;
|
||||
UINT8 Minute;
|
||||
UINT8 Second;
|
||||
UINT8 Pad1;
|
||||
UINT32 Nanosecond;
|
||||
INT16 TimeZone;
|
||||
UINT8 Daylight;
|
||||
UINT8 Pad2;
|
||||
} EFI_TIME;
|
||||
|
||||
//
|
||||
// Enumeration of EFI_STATUS.
|
||||
//
|
||||
#define EFI_SUCCESS RETURN_SUCCESS
|
||||
#define EFI_LOAD_ERROR RETURN_LOAD_ERROR
|
||||
#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER
|
||||
#define EFI_UNSUPPORTED RETURN_UNSUPPORTED
|
||||
#define EFI_BAD_BUFFER_SIZE RETURN_BAD_BUFFER_SIZE
|
||||
#define EFI_BUFFER_TOO_SMALL RETURN_BUFFER_TOO_SMALL
|
||||
#define EFI_NOT_READY RETURN_NOT_READY
|
||||
#define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR
|
||||
#define EFI_WRITE_PROTECTED RETURN_WRITE_PROTECTED
|
||||
#define EFI_OUT_OF_RESOURCES RETURN_OUT_OF_RESOURCES
|
||||
#define EFI_VOLUME_CORRUPTED RETURN_VOLUME_CORRUPTED
|
||||
#define EFI_VOLUME_FULL RETURN_VOLUME_FULL
|
||||
#define EFI_NO_MEDIA RETURN_NO_MEDIA
|
||||
#define EFI_MEDIA_CHANGED RETURN_MEDIA_CHANGED
|
||||
#define EFI_NOT_FOUND RETURN_NOT_FOUND
|
||||
#define EFI_ACCESS_DENIED RETURN_ACCESS_DENIED
|
||||
#define EFI_NO_RESPONSE RETURN_NO_RESPONSE
|
||||
#define EFI_NO_MAPPING RETURN_NO_MAPPING
|
||||
#define EFI_TIMEOUT RETURN_TIMEOUT
|
||||
#define EFI_NOT_STARTED RETURN_NOT_STARTED
|
||||
#define EFI_ALREADY_STARTED RETURN_ALREADY_STARTED
|
||||
#define EFI_ABORTED RETURN_ABORTED
|
||||
#define EFI_ICMP_ERROR RETURN_ICMP_ERROR
|
||||
#define EFI_TFTP_ERROR RETURN_TFTP_ERROR
|
||||
#define EFI_PROTOCOL_ERROR RETURN_PROTOCOL_ERROR
|
||||
#define EFI_INCOMPATIBLE_VERSION RETURN_INCOMPATIBLE_VERSION
|
||||
#define EFI_SECURITY_VIOLATION RETURN_SECURITY_VIOLATION
|
||||
#define EFI_CRC_ERROR RETURN_CRC_ERROR
|
||||
#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA
|
||||
#define EFI_END_OF_FILE RETURN_END_OF_FILE
|
||||
|
||||
#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH
|
||||
#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE
|
||||
#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE
|
||||
#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL
|
||||
|
||||
|
||||
#define NULL_HANDLE ((VOID *) 0)
|
||||
|
||||
//
|
||||
// Define macro to encode the status code.
|
||||
//
|
||||
#define EFIERR(_a) ENCODE_ERROR(_a)
|
||||
|
||||
#define EFI_ERROR(A) RETURN_ERROR(A)
|
||||
|
||||
//
|
||||
// Define macros to build data structure signatures from characters.
|
||||
//
|
||||
#define EFI_SIGNATURE_16(A, B) ((A) | (B << 8))
|
||||
#define EFI_SIGNATURE_32(A, B, C, D) (EFI_SIGNATURE_16 (A, B) | (EFI_SIGNATURE_16 (C, D) << 16))
|
||||
#define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H) \
|
||||
(EFI_SIGNATURE_32 (A, B, C, D) | ((UINT64) (EFI_SIGNATURE_32 (E, F, G, H)) << 32))
|
||||
|
||||
|
||||
//
|
||||
// Returns the byte offset to a field within a structure
|
||||
//
|
||||
#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field)))
|
||||
|
||||
//
|
||||
// The EFI memory allocation functions work in units of EFI_PAGEs that are
|
||||
// 4K. This should in no way be confused with the page size of the processor.
|
||||
// An EFI_PAGE is just the quanta of memory in EFI.
|
||||
//
|
||||
#define EFI_PAGE_SIZE 0x1000
|
||||
#define EFI_PAGE_MASK 0xFFF
|
||||
#define EFI_PAGE_SHIFT 12
|
||||
|
||||
|
||||
#endif
|
466
MdePkg/Include/Uefi/UefiDevicePath.h
Normal file
466
MdePkg/Include/Uefi/UefiDevicePath.h
Normal file
@@ -0,0 +1,466 @@
|
||||
/* @file
|
||||
Device Path definitions introduced in UEFI.
|
||||
|
||||
This include file must only contain things defined in the UEFI 2.0 specification.
|
||||
If a code construct is defined in the UEFI 2.0 specification it must be included
|
||||
by this include file.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name: UefiDevicePath.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_DEVICE_PATH_H__
|
||||
#define __UEFI_DEVICE_PATH_H__
|
||||
|
||||
//
|
||||
// Device Path information
|
||||
//
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
//
|
||||
// Hardware Device Paths
|
||||
//
|
||||
#define HARDWARE_DEVICE_PATH 0x01
|
||||
|
||||
#define HW_PCI_DP 0x01
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT8 Function;
|
||||
UINT8 Device;
|
||||
} PCI_DEVICE_PATH;
|
||||
|
||||
#define HW_PCCARD_DP 0x02
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT8 FunctionNumber;
|
||||
} PCCARD_DEVICE_PATH;
|
||||
|
||||
#define HW_MEMMAP_DP 0x03
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 MemoryType;
|
||||
EFI_PHYSICAL_ADDRESS StartingAddress;
|
||||
EFI_PHYSICAL_ADDRESS EndingAddress;
|
||||
} MEMMAP_DEVICE_PATH;
|
||||
|
||||
#define HW_VENDOR_DP 0x04
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_GUID Guid;
|
||||
} VENDOR_DEVICE_PATH;
|
||||
|
||||
#define HW_CONTROLLER_DP 0x05
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 ControllerNumber;
|
||||
} CONTROLLER_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// ACPI Device Paths
|
||||
//
|
||||
#define ACPI_DEVICE_PATH 0x02
|
||||
|
||||
#define ACPI_DP 0x01
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 HID;
|
||||
UINT32 UID;
|
||||
} ACPI_HID_DEVICE_PATH;
|
||||
|
||||
#define ACPI_EXTENDED_DP 0x02
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 HID;
|
||||
UINT32 UID;
|
||||
UINT32 CID;
|
||||
//
|
||||
// Optional variable length _HIDSTR
|
||||
// Optional variable length _UIDSTR
|
||||
//
|
||||
} ACPI_EXTENDED_HID_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// EISA ID Macro
|
||||
// EISA ID Definition 32-bits
|
||||
// bits[15:0] - three character compressed ASCII EISA ID.
|
||||
// bits[31:16] - binary number
|
||||
// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
|
||||
//
|
||||
#define PNP_EISA_ID_CONST 0x41d0
|
||||
#define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16))
|
||||
#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
|
||||
#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
|
||||
|
||||
#define PNP_EISA_ID_MASK 0xffff
|
||||
#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
|
||||
|
||||
|
||||
#define ACPI_ADR_DP 0x03
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 ADR;
|
||||
} ACPI_ADR_DEVICE_PATH;
|
||||
|
||||
|
||||
//
|
||||
// Messaging Device Paths
|
||||
//
|
||||
#define MESSAGING_DEVICE_PATH 0x03
|
||||
|
||||
#define MSG_ATAPI_DP 0x01
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT8 PrimarySecondary;
|
||||
UINT8 SlaveMaster;
|
||||
UINT16 Lun;
|
||||
} ATAPI_DEVICE_PATH;
|
||||
|
||||
#define MSG_SCSI_DP 0x02
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT16 Pun;
|
||||
UINT16 Lun;
|
||||
} SCSI_DEVICE_PATH;
|
||||
|
||||
#define MSG_FIBRECHANNEL_DP 0x03
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 Reserved;
|
||||
UINT64 WWN;
|
||||
UINT64 Lun;
|
||||
} FIBRECHANNEL_DEVICE_PATH;
|
||||
|
||||
#define MSG_1394_DP 0x04
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 Reserved;
|
||||
UINT64 Guid;
|
||||
} F1394_DEVICE_PATH;
|
||||
|
||||
#define MSG_USB_DP 0x05
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT8 ParentPortNumber;
|
||||
UINT8 InterfaceNumber;
|
||||
} USB_DEVICE_PATH;
|
||||
|
||||
#define MSG_USB_CLASS_DP 0x0f
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT16 VendorId;
|
||||
UINT16 ProductId;
|
||||
UINT8 DeviceClass;
|
||||
UINT8 DeviceSubClass;
|
||||
UINT8 DeviceProtocol;
|
||||
} USB_CLASS_DEVICE_PATH;
|
||||
|
||||
#define MSG_USB_WWID_DP 0x10
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT16 InterfaceNumber;
|
||||
UINT16 VendorId;
|
||||
UINT16 ProductId;
|
||||
// CHAR16 SerialNumber[...];
|
||||
} USB_WWID_DEVICE_PATH;
|
||||
|
||||
|
||||
#define MSG_DEVICE_LOGICAL_UNIT_DP 0x11
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT8 Lun;
|
||||
} DEVICE_LOGICAL_UNIT_DEVICE_PATH;
|
||||
|
||||
#define MSG_SATA_DP 0x12
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT16 HbaPortNumber;
|
||||
UINT16 PortMultiplierPort;
|
||||
UINT16 LogicalUnitNumber;
|
||||
} SATA_DEVICE_PATH;
|
||||
|
||||
#define MSG_I2O_DP 0x06
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 Tid;
|
||||
} I2O_DEVICE_PATH;
|
||||
|
||||
#define MSG_MAC_ADDR_DP 0x0b
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_MAC_ADDRESS MacAddress;
|
||||
UINT8 IfType;
|
||||
} MAC_ADDR_DEVICE_PATH;
|
||||
|
||||
#define MSG_IPv4_DP 0x0c
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_IPv4_ADDRESS LocalIpAddress;
|
||||
EFI_IPv4_ADDRESS RemoteIpAddress;
|
||||
UINT16 LocalPort;
|
||||
UINT16 RemotePort;
|
||||
UINT16 Protocol;
|
||||
BOOLEAN StaticIpAddress;
|
||||
} IPv4_DEVICE_PATH;
|
||||
|
||||
#define MSG_IPv6_DP 0x0d
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_IPv6_ADDRESS LocalIpAddress;
|
||||
EFI_IPv6_ADDRESS RemoteIpAddress;
|
||||
UINT16 LocalPort;
|
||||
UINT16 RemotePort;
|
||||
UINT16 Protocol;
|
||||
BOOLEAN StaticIpAddress;
|
||||
} IPv6_DEVICE_PATH;
|
||||
|
||||
#define MSG_INFINIBAND_DP 0x09
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 ResourceFlags;
|
||||
UINT8 PortGid[16];
|
||||
UINT64 ServiceId;
|
||||
UINT64 TargetPortId;
|
||||
UINT64 DeviceId;
|
||||
} INFINIBAND_DEVICE_PATH;
|
||||
|
||||
#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
|
||||
#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
|
||||
#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
|
||||
#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
|
||||
#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
|
||||
|
||||
#define MSG_UART_DP 0x0e
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 Reserved;
|
||||
UINT64 BaudRate;
|
||||
UINT8 DataBits;
|
||||
UINT8 Parity;
|
||||
UINT8 StopBits;
|
||||
} UART_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// Use VENDOR_DEVICE_PATH struct
|
||||
//
|
||||
#define MSG_VENDOR_DP 0x0a
|
||||
typedef VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH;
|
||||
|
||||
#define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID
|
||||
#define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID
|
||||
#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
|
||||
#define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID
|
||||
|
||||
#define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL EFI_UART_DEVICE_PATH_GUID
|
||||
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_GUID Guid;
|
||||
UINT32 FlowControlMap;
|
||||
} UART_FLOW_CONTROL_DEVICE_PATH;
|
||||
|
||||
#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID
|
||||
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_GUID Guid;
|
||||
UINT32 Reserved;
|
||||
UINT64 SasAddress;
|
||||
UINT64 Lun;
|
||||
UINT16 DeviceTopology;
|
||||
UINT16 RelativeTargetPort;
|
||||
} SAS_DEVICE_PATH;
|
||||
|
||||
#define MSG_ISCSI_DP 0x13
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT16 NetworkProtocol;
|
||||
UINT16 LoginOption;
|
||||
UINT16 Reserved;
|
||||
UINT16 TargetPortalGroupTag;
|
||||
UINT64 LUN;
|
||||
// CHAR8 iSCSI Target Name
|
||||
} ISCSI_DEVICE_PATH;
|
||||
|
||||
#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000
|
||||
#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002
|
||||
#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000
|
||||
#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008
|
||||
#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000
|
||||
#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000
|
||||
#define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000
|
||||
#define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000
|
||||
|
||||
//
|
||||
// Media Device Path
|
||||
//
|
||||
#define MEDIA_DEVICE_PATH 0x04
|
||||
|
||||
#define MEDIA_HARDDRIVE_DP 0x01
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 PartitionNumber;
|
||||
UINT64 PartitionStart;
|
||||
UINT64 PartitionSize;
|
||||
UINT8 Signature[16];
|
||||
UINT8 MBRType;
|
||||
UINT8 SignatureType;
|
||||
} HARDDRIVE_DEVICE_PATH;
|
||||
|
||||
#define MBR_TYPE_PCAT 0x01
|
||||
#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
|
||||
|
||||
#define SIGNATURE_TYPE_MBR 0x01
|
||||
#define SIGNATURE_TYPE_GUID 0x02
|
||||
|
||||
#define MEDIA_CDROM_DP 0x02
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT32 BootEntry;
|
||||
UINT64 PartitionStart;
|
||||
UINT64 PartitionSize;
|
||||
} CDROM_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// Use VENDOR_DEVICE_PATH struct
|
||||
//
|
||||
#define MEDIA_VENDOR_DP 0x03
|
||||
|
||||
#define MEDIA_FILEPATH_DP 0x04
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
CHAR16 PathName[1];
|
||||
} FILEPATH_DEVICE_PATH;
|
||||
|
||||
#define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
|
||||
|
||||
#define MEDIA_PROTOCOL_DP 0x05
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_GUID Protocol;
|
||||
} MEDIA_PROTOCOL_DEVICE_PATH;
|
||||
|
||||
|
||||
#define MEDIA_PIWG_FW_VOL_DP 0x6
|
||||
typedef MEDIA_PROTOCOL_DEVICE_PATH MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
|
||||
|
||||
|
||||
#define MEDIA_PIWG_FW_FILE_DP 0x7
|
||||
typedef MEDIA_PROTOCOL_DEVICE_PATH MEDIA_FW_VOL_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// BBS Device Path
|
||||
//
|
||||
#define BBS_DEVICE_PATH 0x05
|
||||
#define BBS_BBS_DP 0x01
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
UINT16 DeviceType;
|
||||
UINT16 StatusFlag;
|
||||
CHAR8 String[1];
|
||||
} BBS_BBS_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// DeviceType definitions - from BBS specification
|
||||
//
|
||||
#define BBS_TYPE_FLOPPY 0x01
|
||||
#define BBS_TYPE_HARDDRIVE 0x02
|
||||
#define BBS_TYPE_CDROM 0x03
|
||||
#define BBS_TYPE_PCMCIA 0x04
|
||||
#define BBS_TYPE_USB 0x05
|
||||
#define BBS_TYPE_EMBEDDED_NETWORK 0x06
|
||||
#define BBS_TYPE_BEV 0x80
|
||||
#define BBS_TYPE_UNKNOWN 0xFF
|
||||
|
||||
|
||||
//
|
||||
// Union of all possible Device Paths and pointers to Device Paths
|
||||
//
|
||||
|
||||
typedef union {
|
||||
EFI_DEVICE_PATH_PROTOCOL DevPath;
|
||||
PCI_DEVICE_PATH Pci;
|
||||
PCCARD_DEVICE_PATH PcCard;
|
||||
MEMMAP_DEVICE_PATH MemMap;
|
||||
VENDOR_DEVICE_PATH Vendor;
|
||||
|
||||
CONTROLLER_DEVICE_PATH Controller;
|
||||
ACPI_HID_DEVICE_PATH Acpi;
|
||||
|
||||
ATAPI_DEVICE_PATH Atapi;
|
||||
SCSI_DEVICE_PATH Scsi;
|
||||
FIBRECHANNEL_DEVICE_PATH FibreChannel;
|
||||
|
||||
F1394_DEVICE_PATH F1394;
|
||||
USB_DEVICE_PATH Usb;
|
||||
SATA_DEVICE_PATH Sata;
|
||||
USB_CLASS_DEVICE_PATH UsbClass;
|
||||
I2O_DEVICE_PATH I2O;
|
||||
MAC_ADDR_DEVICE_PATH MacAddr;
|
||||
IPv4_DEVICE_PATH Ipv4;
|
||||
IPv6_DEVICE_PATH Ipv6;
|
||||
INFINIBAND_DEVICE_PATH InfiniBand;
|
||||
UART_DEVICE_PATH Uart;
|
||||
|
||||
HARDDRIVE_DEVICE_PATH HardDrive;
|
||||
CDROM_DEVICE_PATH CD;
|
||||
|
||||
FILEPATH_DEVICE_PATH FilePath;
|
||||
MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
|
||||
|
||||
BBS_BBS_DEVICE_PATH Bbs;
|
||||
} EFI_DEV_PATH;
|
||||
|
||||
|
||||
|
||||
typedef union {
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevPath;
|
||||
PCI_DEVICE_PATH *Pci;
|
||||
PCCARD_DEVICE_PATH *PcCard;
|
||||
MEMMAP_DEVICE_PATH *MemMap;
|
||||
VENDOR_DEVICE_PATH *Vendor;
|
||||
|
||||
CONTROLLER_DEVICE_PATH *Controller;
|
||||
ACPI_HID_DEVICE_PATH *Acpi;
|
||||
ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
|
||||
|
||||
ATAPI_DEVICE_PATH *Atapi;
|
||||
SCSI_DEVICE_PATH *Scsi;
|
||||
FIBRECHANNEL_DEVICE_PATH *FibreChannel;
|
||||
|
||||
F1394_DEVICE_PATH *F1394;
|
||||
USB_DEVICE_PATH *Usb;
|
||||
SATA_DEVICE_PATH *Sata;
|
||||
USB_CLASS_DEVICE_PATH *UsbClass;
|
||||
I2O_DEVICE_PATH *I2O;
|
||||
MAC_ADDR_DEVICE_PATH *MacAddr;
|
||||
IPv4_DEVICE_PATH *Ipv4;
|
||||
IPv6_DEVICE_PATH *Ipv6;
|
||||
INFINIBAND_DEVICE_PATH *InfiniBand;
|
||||
UART_DEVICE_PATH *Uart;
|
||||
|
||||
HARDDRIVE_DEVICE_PATH *HardDrive;
|
||||
CDROM_DEVICE_PATH *CD;
|
||||
|
||||
FILEPATH_DEVICE_PATH *FilePath;
|
||||
MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
|
||||
|
||||
BBS_BBS_DEVICE_PATH *Bbs;
|
||||
UINT8 *Raw;
|
||||
} EFI_DEV_PATH_PTR;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
67
MdePkg/Include/Uefi/UefiGpt.h
Normal file
67
MdePkg/Include/Uefi/UefiGpt.h
Normal file
@@ -0,0 +1,67 @@
|
||||
/* @file
|
||||
EFI Guid Partition Table Format Definition.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name: UefiGpt.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_GPT_H__
|
||||
#define __UEFI_GPT_H__
|
||||
|
||||
#define PRIMARY_PART_HEADER_LBA 1
|
||||
|
||||
//
|
||||
// EFI Partition Table Signature: "EFI PART"
|
||||
//
|
||||
#define EFI_PTAB_HEADER_ID 0x5452415020494645ULL
|
||||
|
||||
#pragma pack(1)
|
||||
//
|
||||
// GPT Partition Table Header
|
||||
//
|
||||
typedef struct {
|
||||
EFI_TABLE_HEADER Header;
|
||||
EFI_LBA MyLBA;
|
||||
EFI_LBA AlternateLBA;
|
||||
EFI_LBA FirstUsableLBA;
|
||||
EFI_LBA LastUsableLBA;
|
||||
EFI_GUID DiskGUID;
|
||||
EFI_LBA PartitionEntryLBA;
|
||||
UINT32 NumberOfPartitionEntries;
|
||||
UINT32 SizeOfPartitionEntry;
|
||||
UINT32 PartitionEntryArrayCRC32;
|
||||
} EFI_PARTITION_TABLE_HEADER;
|
||||
|
||||
//
|
||||
// GPT Partition Entry
|
||||
//
|
||||
typedef struct {
|
||||
EFI_GUID PartitionTypeGUID;
|
||||
EFI_GUID UniquePartitionGUID;
|
||||
EFI_LBA StartingLBA;
|
||||
EFI_LBA EndingLBA;
|
||||
UINT64 Attributes;
|
||||
CHAR16 PartitionName[36];
|
||||
} EFI_PARTITION_ENTRY;
|
||||
|
||||
//
|
||||
// GPT Partition Entry Status
|
||||
//
|
||||
typedef struct {
|
||||
BOOLEAN OutOfRange;
|
||||
BOOLEAN Overlap;
|
||||
} EFI_PARTITION_ENTRY_STATUS;
|
||||
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
|
425
MdePkg/Include/Uefi/UefiInternalFormRepresentation.h
Normal file
425
MdePkg/Include/Uefi/UefiInternalFormRepresentation.h
Normal file
@@ -0,0 +1,425 @@
|
||||
|
||||
/** @file
|
||||
This file defines the encoding for the VFR (Visual Form Representation) language.
|
||||
IFR is primarily consumed by the EFI presentation engine, and produced by EFI
|
||||
internal application and drivers as well as all add-in card option-ROM drivers
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name: UefiInternalFormRepresentation.h
|
||||
|
||||
@par Revision Reference:
|
||||
These definitions are from UEFI2.1.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
|
||||
#define __UEFI_INTERNAL_FORMREPRESENTATION_H__
|
||||
|
||||
//
|
||||
// The following types are currently defined:
|
||||
//
|
||||
typedef UINT32 RELOFST;
|
||||
typedef CHAR16 *EFI_STRING;
|
||||
|
||||
//
|
||||
// IFR Op codes
|
||||
//
|
||||
#define EFI_IFR_FORM_OP 0x01
|
||||
#define EFI_IFR_SUBTITLE_OP 0x02
|
||||
#define EFI_IFR_TEXT_OP 0x03
|
||||
#define EFI_IFR_GRAPHIC_OP 0x04
|
||||
#define EFI_IFR_ONE_OF_OP 0x05
|
||||
#define EFI_IFR_CHECKBOX_OP 0x06
|
||||
#define EFI_IFR_NUMERIC_OP 0x07
|
||||
#define EFI_IFR_PASSWORD_OP 0x08
|
||||
#define EFI_IFR_ONE_OF_OPTION_OP 0x09 // ONEOF OPTION field
|
||||
#define EFI_IFR_SUPPRESS_IF_OP 0x0A
|
||||
#define EFI_IFR_END_FORM_OP 0x0B
|
||||
#define EFI_IFR_HIDDEN_OP 0x0C
|
||||
#define EFI_IFR_END_FORM_SET_OP 0x0D
|
||||
#define EFI_IFR_FORM_SET_OP 0x0E
|
||||
#define EFI_IFR_REF_OP 0x0F
|
||||
#define EFI_IFR_END_ONE_OF_OP 0x10
|
||||
#define EFI_IFR_END_OP EFI_IFR_END_ONE_OF_OP
|
||||
#define EFI_IFR_INCONSISTENT_IF_OP 0x11
|
||||
#define EFI_IFR_EQ_ID_VAL_OP 0x12
|
||||
#define EFI_IFR_EQ_ID_ID_OP 0x13
|
||||
#define EFI_IFR_EQ_ID_LIST_OP 0x14
|
||||
#define EFI_IFR_AND_OP 0x15
|
||||
#define EFI_IFR_OR_OP 0x16
|
||||
#define EFI_IFR_NOT_OP 0x17
|
||||
#define EFI_IFR_END_IF_OP 0x18 // for endif of inconsistentif, suppressif, grayoutif
|
||||
#define EFI_IFR_GRAYOUT_IF_OP 0x19
|
||||
#define EFI_IFR_DATE_OP 0x1A
|
||||
#define EFI_IFR_TIME_OP 0x1B
|
||||
#define EFI_IFR_STRING_OP 0x1C
|
||||
#define EFI_IFR_LABEL_OP 0x1D
|
||||
#define EFI_IFR_SAVE_DEFAULTS_OP 0x1E
|
||||
#define EFI_IFR_RESTORE_DEFAULTS_OP 0x1F
|
||||
#define EFI_IFR_BANNER_OP 0x20
|
||||
#define EFI_IFR_INVENTORY_OP 0x21
|
||||
#define EFI_IFR_EQ_VAR_VAL_OP 0x22
|
||||
#define EFI_IFR_ORDERED_LIST_OP 0x23
|
||||
#define EFI_IFR_VARSTORE_OP 0x24
|
||||
#define EFI_IFR_VARSTORE_SELECT_OP 0x25
|
||||
#define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26
|
||||
#define EFI_IFR_TRUE_OP 0x27
|
||||
#define EFI_IFR_FALSE_OP 0x28
|
||||
#define EFI_IFR_GT_OP 0x29
|
||||
#define EFI_IFR_GE_OP 0x2A
|
||||
#define EFI_IFR_OEM_DEFINED_OP 0x2B
|
||||
#define EFI_IFR_LAST_OPCODE EFI_IFR_OEM_DEFINED_OP
|
||||
#define EFI_IFR_OEM_OP 0xFE
|
||||
#define EFI_IFR_NV_ACCESS_COMMAND 0xFF
|
||||
|
||||
//
|
||||
// Define values for the flags fields in some VFR opcodes. These are
|
||||
// bitmasks.
|
||||
//
|
||||
#define EFI_IFR_FLAG_DEFAULT 0x01
|
||||
#define EFI_IFR_FLAG_MANUFACTURING 0x02
|
||||
#define EFI_IFR_FLAG_INTERACTIVE 0x04
|
||||
#define EFI_IFR_FLAG_NV_ACCESS 0x08
|
||||
#define EFI_IFR_FLAG_RESET_REQUIRED 0x10
|
||||
#define EFI_IFR_FLAG_LATE_CHECK 0x20
|
||||
|
||||
#define EFI_NON_DEVICE_CLASS 0x00 // Useful when you do not want something in the Device Manager
|
||||
#define EFI_DISK_DEVICE_CLASS 0x01
|
||||
#define EFI_VIDEO_DEVICE_CLASS 0x02
|
||||
#define EFI_NETWORK_DEVICE_CLASS 0x04
|
||||
#define EFI_INPUT_DEVICE_CLASS 0x08
|
||||
#define EFI_ON_BOARD_DEVICE_CLASS 0x10
|
||||
#define EFI_OTHER_DEVICE_CLASS 0x20
|
||||
|
||||
#define EFI_SETUP_APPLICATION_SUBCLASS 0x00
|
||||
#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01
|
||||
#define EFI_FRONT_PAGE_SUBCLASS 0x02
|
||||
#define EFI_SINGLE_USE_SUBCLASS 0x03 // Used to display a single entity and then exit
|
||||
|
||||
//
|
||||
// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set
|
||||
// and the browser since we need to distinguish between compiled NV map data and created data.
|
||||
// We do not allow new entries to be created in the NV map dynamically however we still need
|
||||
// to display this information correctly. To dynamically create op-codes and assume that their
|
||||
// data will be saved, ensure that the NV starting location they refer to is pre-defined in the
|
||||
// NV map.
|
||||
//
|
||||
#define EFI_IFR_FLAG_CREATED 128
|
||||
|
||||
#pragma pack(1)
|
||||
//
|
||||
// IFR Structure definitions
|
||||
//
|
||||
typedef struct {
|
||||
UINT8 OpCode;
|
||||
UINT8 Length;
|
||||
} EFI_IFR_OP_HEADER;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
EFI_GUID Guid;
|
||||
STRING_REF FormSetTitle;
|
||||
STRING_REF Help;
|
||||
EFI_PHYSICAL_ADDRESS CallbackHandle;
|
||||
UINT16 Class;
|
||||
UINT16 SubClass;
|
||||
UINT16 NvDataSize; // set once, size of the NV data as defined in the script
|
||||
} EFI_IFR_FORM_SET;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 FormId;
|
||||
STRING_REF FormTitle;
|
||||
} EFI_IFR_FORM;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 LabelId;
|
||||
} EFI_IFR_LABEL;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
STRING_REF SubTitle;
|
||||
} EFI_IFR_SUBTITLE;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
STRING_REF Help;
|
||||
STRING_REF Text;
|
||||
STRING_REF TextTwo;
|
||||
UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
} EFI_IFR_TEXT;
|
||||
|
||||
//
|
||||
// goto
|
||||
//
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 FormId;
|
||||
STRING_REF Prompt;
|
||||
STRING_REF Help; // The string Token for the context-help
|
||||
UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
} EFI_IFR_REF;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_END_FORM;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_END_FORM_SET;
|
||||
|
||||
//
|
||||
// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......code assumes this to be true, if this ever
|
||||
// changes we need to revisit the InitializeTagStructures code
|
||||
//
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
|
||||
UINT8 Width; // The Size of the Data being saved
|
||||
STRING_REF Prompt; // The String Token for the Prompt
|
||||
STRING_REF Help; // The string Token for the context-help
|
||||
} EFI_IFR_ONE_OF;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // The offset in NV for storage of the data
|
||||
UINT8 MaxEntries; // The maximum number of options in the ordered list (=size of NVStore)
|
||||
STRING_REF Prompt; // The string token for the prompt
|
||||
STRING_REF Help; // The string token for the context-help
|
||||
} EFI_IFR_ORDERED_LIST;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
|
||||
UINT8 Width; // The Size of the Data being saved
|
||||
STRING_REF Prompt; // The String Token for the Prompt
|
||||
STRING_REF Help; // The string Token for the context-help
|
||||
UINT8 Flags; // For now, if non-zero, means that it is the default option, - further definition likely
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
} EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
STRING_REF Option; // The string token describing the option
|
||||
UINT16 Value; // The value associated with this option that is stored in the NVRAM if chosen
|
||||
UINT8 Flags; // For now, if non-zero, means that it is the default option, - further definition likely above
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
} EFI_IFR_ONE_OF_OPTION;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
|
||||
UINT8 Width; // The Size of the Data being saved
|
||||
STRING_REF Prompt; // The String Token for the Prompt
|
||||
STRING_REF Help; // The string Token for the context-help
|
||||
UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
UINT16 Minimum;
|
||||
UINT16 Maximum;
|
||||
UINT16 Step; // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for
|
||||
UINT16 Default;
|
||||
} EFI_IFR_NUMERIC;
|
||||
|
||||
//
|
||||
// There is an interesting twist with regards to Time and Date. This is one of the few items which can accept input from
|
||||
// a user, however may or may not need to use storage in the NVRAM space. The decided method for determining if NVRAM space
|
||||
// will be used (only for a TimeOp or DateOp) is: If .QuestionId == 0 && .Width == 0 (normally an impossibility) then use system
|
||||
// resources to store the data away and not NV resources. In other words, the setup engine will call gRT->SetTime, and gRT->SetDate
|
||||
// for the saving of data, and the values displayed will be from the gRT->GetXXXX series of calls.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_IFR_NUMERIC Hour;
|
||||
EFI_IFR_NUMERIC Minute;
|
||||
EFI_IFR_NUMERIC Second;
|
||||
} EFI_IFR_TIME;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_NUMERIC Year;
|
||||
EFI_IFR_NUMERIC Month;
|
||||
EFI_IFR_NUMERIC Day;
|
||||
} EFI_IFR_DATE;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
|
||||
UINT8 Width; // The Size of the Data being saved -- BUGBUG -- remove someday
|
||||
STRING_REF Prompt; // The String Token for the Prompt
|
||||
STRING_REF Help; // The string Token for the context-help
|
||||
UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
UINT8 MinSize; // Minimum allowable sized password
|
||||
UINT8 MaxSize; // Maximum allowable sized password
|
||||
UINT16 Encoding;
|
||||
} EFI_IFR_PASSWORD;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
|
||||
UINT8 Width; // The Size of the Data being saved -- BUGBUG -- remove someday
|
||||
STRING_REF Prompt; // The String Token for the Prompt
|
||||
STRING_REF Help; // The string Token for the context-help
|
||||
UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.
|
||||
UINT16 Key; // Value to be passed to caller to identify this particular op-code
|
||||
UINT8 MinSize; // Minimum allowable sized password
|
||||
UINT8 MaxSize; // Maximum allowable sized password
|
||||
} EFI_IFR_STRING;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_END_ONE_OF;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 Value;
|
||||
UINT16 Key;
|
||||
} EFI_IFR_HIDDEN;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT8 Flags;
|
||||
} EFI_IFR_SUPPRESS;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT8 Flags;
|
||||
} EFI_IFR_GRAY_OUT;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
STRING_REF Popup;
|
||||
UINT8 Flags;
|
||||
} EFI_IFR_INCONSISTENT;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // offset into variable storage
|
||||
UINT8 Width; // size of variable storage
|
||||
UINT16 Value; // value to compare against
|
||||
} EFI_IFR_EQ_ID_VAL;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId; // offset into variable storage
|
||||
UINT8 Width; // size of variable storage
|
||||
UINT16 ListLength;
|
||||
UINT16 ValueList[1];
|
||||
} EFI_IFR_EQ_ID_LIST;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 QuestionId1; // offset into variable storage for first value to compare
|
||||
UINT8 Width; // size of variable storage (must be same for both)
|
||||
UINT16 QuestionId2; // offset into variable storage for second value to compare
|
||||
} EFI_IFR_EQ_ID_ID;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 VariableId; // offset into variable storage
|
||||
UINT16 Value; // value to compare against
|
||||
} EFI_IFR_EQ_VAR_VAL;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_AND;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_OR;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_NOT;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_END_EXPR, EFI_IFR_END_IF;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 FormId;
|
||||
STRING_REF Prompt;
|
||||
STRING_REF Help;
|
||||
UINT8 Flags;
|
||||
UINT16 Key;
|
||||
} EFI_IFR_SAVE_DEFAULTS;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
STRING_REF Help;
|
||||
STRING_REF Text;
|
||||
STRING_REF TextTwo; // optional text
|
||||
} EFI_IFR_INVENTORY;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
EFI_GUID Guid; // GUID for the variable
|
||||
UINT16 VarId; // variable store ID, as referenced elsewhere in the form
|
||||
UINT16 Size; // size of the variable storage
|
||||
} EFI_IFR_VARSTORE;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 VarId; // variable store ID, as referenced elsewhere in the form
|
||||
} EFI_IFR_VARSTORE_SELECT;
|
||||
|
||||
//
|
||||
// Used for the ideqid VFR statement where two variable stores may be referenced in the
|
||||
// same VFR statement.
|
||||
// A browser should treat this as an EFI_IFR_VARSTORE_SELECT statement and assume that all following
|
||||
// IFR opcodes use the VarId as defined here.
|
||||
//
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT16 VarId; // variable store ID, as referenced elsewhere in the form
|
||||
UINT16 SecondaryVarId; // variable store ID, as referenced elsewhere in the form
|
||||
} EFI_IFR_VARSTORE_SELECT_PAIR;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_TRUE;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_FALSE;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_GT;
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
} EFI_IFR_GE;
|
||||
|
||||
//
|
||||
// Save defaults and restore defaults have same structure
|
||||
//
|
||||
#define EFI_IFR_RESTORE_DEFAULTS EFI_IFR_SAVE_DEFAULTS
|
||||
|
||||
typedef struct {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
STRING_REF Title; // The string token for the banner title
|
||||
UINT16 LineNumber; // 1-based line number
|
||||
UINT8 Alignment; // left, center, or right-aligned
|
||||
} EFI_IFR_BANNER;
|
||||
|
||||
#define EFI_IFR_BANNER_ALIGN_LEFT 0
|
||||
#define EFI_IFR_BANNER_ALIGN_CENTER 1
|
||||
#define EFI_IFR_BANNER_ALIGN_RIGHT 2
|
||||
#define EFI_IFR_BANNER_TIMEOUT 0xFF
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
|
||||
#endif
|
234
MdePkg/Include/Uefi/UefiMultiPhase.h
Normal file
234
MdePkg/Include/Uefi/UefiMultiPhase.h
Normal file
@@ -0,0 +1,234 @@
|
||||
/** @file
|
||||
This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name: UefiMultiPhase.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_MULTIPHASE_H__
|
||||
#define __UEFI_MULTIPHASE_H__
|
||||
|
||||
//
|
||||
// Enumeration of memory types introduced in UEFI.
|
||||
//
|
||||
typedef enum {
|
||||
EfiReservedMemoryType,
|
||||
EfiLoaderCode,
|
||||
EfiLoaderData,
|
||||
EfiBootServicesCode,
|
||||
EfiBootServicesData,
|
||||
EfiRuntimeServicesCode,
|
||||
EfiRuntimeServicesData,
|
||||
EfiConventionalMemory,
|
||||
EfiUnusableMemory,
|
||||
EfiACPIReclaimMemory,
|
||||
EfiACPIMemoryNVS,
|
||||
EfiMemoryMappedIO,
|
||||
EfiMemoryMappedIOPortSpace,
|
||||
EfiPalCode,
|
||||
EfiMaxMemoryType
|
||||
} EFI_MEMORY_TYPE;
|
||||
|
||||
|
||||
//
|
||||
// Data structure that precedes all of the standard EFI table types.
|
||||
//
|
||||
typedef struct {
|
||||
UINT64 Signature;
|
||||
UINT32 Revision;
|
||||
UINT32 HeaderSize;
|
||||
UINT32 CRC32;
|
||||
UINT32 Reserved;
|
||||
} EFI_TABLE_HEADER;
|
||||
|
||||
//
|
||||
// Attributes of variable.
|
||||
//
|
||||
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
|
||||
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
|
||||
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
|
||||
#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
|
||||
|
||||
//
|
||||
// This attribute is identified by the mnemonic 'HR'
|
||||
// elsewhere in this specification.
|
||||
//
|
||||
#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
|
||||
|
||||
|
||||
|
||||
//
|
||||
// _WIN_CERTIFICATE.wCertificateType
|
||||
//
|
||||
#define WIN_CERT_TYPE_EFI_PKCS115 0x0EF0
|
||||
#define WIN_CERT_TYPE_EFI_GUID 0x0EF1
|
||||
|
||||
/**
|
||||
|
||||
The WIN_CERTIFICATE structure is part of the PE/COFF
|
||||
specification and has the following definition:
|
||||
|
||||
@param dwLength The length of the entire certificate,
|
||||
including the length of the header, in
|
||||
bytes.
|
||||
|
||||
@param wRevision The revision level of the WIN_CERTIFICATE
|
||||
structure. The current revision level is
|
||||
0x0200.
|
||||
|
||||
@param wCertificateType The certificate type. See
|
||||
WIN_CERT_TYPE_xxx for the UEFI
|
||||
certificate types. The UEFI
|
||||
specification reserves the range of
|
||||
certificate type values from 0x0EF0
|
||||
to 0x0EFF.
|
||||
|
||||
@param bCertificate The actual certificate. The format of
|
||||
the certificate depends on
|
||||
wCertificateType. The format of the UEFI
|
||||
certificates is defined below.
|
||||
|
||||
|
||||
**/
|
||||
typedef struct _WIN_CERTIFICATE {
|
||||
UINT32 dwLength;
|
||||
UINT16 wRevision;
|
||||
UINT16 wCertificateType;
|
||||
//UINT8 bCertificate[ANYSIZE_ARRAY];
|
||||
} WIN_CERTIFICATE;
|
||||
|
||||
//
|
||||
// WIN_CERTIFICATE_UEFI_GUID.CertType
|
||||
//
|
||||
#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \
|
||||
{0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }
|
||||
|
||||
//
|
||||
// WIN_CERTIFICATE_UEFI_GUID.CertData
|
||||
//
|
||||
typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {
|
||||
UINT32 HashType;
|
||||
UINT8 PublicKey[256];
|
||||
UINT8 Signature[256];
|
||||
} EFI_CERT_BLOCK_RSA_2048_SHA256;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@param Hdr This is the standard WIN_CERTIFICATE header, where
|
||||
wCertificateType is set to
|
||||
WIN_CERT_TYPE_UEFI_GUID.
|
||||
|
||||
@param CertType This is the unique id which determines the
|
||||
format of the CertData. In this case, the
|
||||
value is EFI_CERT_TYPE_RSA2048_SHA256_GUID.
|
||||
|
||||
@param CertData This is the certificate data. The format of
|
||||
the data is determined by the CertType. In
|
||||
this case the value is
|
||||
EFI_CERT_BLOCK_RSA_2048_SHA256.
|
||||
|
||||
@param Information The WIN_CERTIFICATE_UEFI_GUID certificate
|
||||
type allows new types of certificates to
|
||||
be developed for driver authentication
|
||||
without requiring a new certificate type.
|
||||
The CertType defines the format of the
|
||||
CertData, which length is defined by the
|
||||
size of the certificate less the fixed
|
||||
size of the WIN_CERTIFICATE_UEFI_GUID
|
||||
structure.
|
||||
|
||||
**/
|
||||
typedef struct _WIN_CERTIFICATE_UEFI_GUID {
|
||||
WIN_CERTIFICATE Hdr;
|
||||
EFI_GUID CertType;
|
||||
// UINT8 CertData[ANYSIZE_ARRAY];
|
||||
} WIN_CERTIFICATE_UEFI_GUID;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital
|
||||
signature.
|
||||
|
||||
The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from
|
||||
WIN_CERTIFICATE and encapsulate the information needed to
|
||||
implement the RSASSA-PKCS1-v1_5 digital signature algorithm as
|
||||
specified in RFC2437.
|
||||
|
||||
@param Hdr This is the standard WIN_CERTIFICATE header, where
|
||||
wCertificateType is set to
|
||||
WIN_CERT_TYPE_UEFI_PKCS1_15.
|
||||
|
||||
@param HashAlgorithm This is the hashing algorithm which was
|
||||
performed on the UEFI executable when
|
||||
creating the digital signature. It is
|
||||
one of the enumerated values pre-defined
|
||||
in Section 26.4.1. See
|
||||
EFI_HASH_ALGORITHM_x.
|
||||
|
||||
@param Signature This is the actual digital signature. The
|
||||
size of the signature is the same size as
|
||||
the key (1024-bit key is 128 bytes) and can
|
||||
be determined by subtracting the length of
|
||||
the other parts of this header from the
|
||||
total length of the certificate as found in
|
||||
Hdr.dwLength.
|
||||
|
||||
**/
|
||||
typedef struct _WIN_CERTIFICATE_EFI_PKCS1_15 {
|
||||
WIN_CERTIFICATE Hdr;
|
||||
EFI_GUID HashAlgorithm;
|
||||
// UINT8 Signature[ANYSIZE_ARRAY];
|
||||
} WIN_CERTIFICATE_EFI_PKCS1_15;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
AuthInfo is a WIN_CERTIFICATE using the wCertificateType
|
||||
WIN_CERTIFICATE_UEFI_GUID and the CertType
|
||||
EFI_CERT_TYPE_RSA2048_SHA256. If the attribute specifies
|
||||
authenticated access, then the Data buffer should begin with an
|
||||
authentication descriptor prior to the data payload and DataSize
|
||||
should reflect the the data.and descriptor size. The caller
|
||||
shall digest the Monotonic Count value and the associated data
|
||||
for the variable update using the SHA-256 1-way hash algorithm.
|
||||
The ensuing the 32-byte digest will be signed using the private
|
||||
key associated w/ the public/private 2048-bit RSA key-pair. The
|
||||
WIN_CERTIFICATE shall be used to describe the signature of the
|
||||
Variable data *Data. In addition, the signature will also
|
||||
include the MonotonicCount value to guard against replay attacks
|
||||
|
||||
@param MonotonicCount Included in the signature of
|
||||
AuthInfo.Used to ensure freshness/no
|
||||
replay. Incremented during each
|
||||
"Write" access.
|
||||
|
||||
@param AuthInfo Provides the authorization for the variable
|
||||
access. It is a signature across the
|
||||
variable data and the Monotonic Count
|
||||
value. Caller uses Private key that is
|
||||
associated with a public key that has been
|
||||
provisioned via the key exchange.
|
||||
|
||||
**/
|
||||
typedef struct {
|
||||
UINT64 MonotonicCount;
|
||||
WIN_CERTIFICATE_UEFI_GUID AuthInfo;
|
||||
} EFI_VARIABLE_AUTHENTICATION;
|
||||
|
||||
#endif
|
||||
|
1813
MdePkg/Include/Uefi/UefiPxe.h
Normal file
1813
MdePkg/Include/Uefi/UefiPxe.h
Normal file
File diff suppressed because it is too large
Load Diff
1744
MdePkg/Include/Uefi/UefiSpec.h
Normal file
1744
MdePkg/Include/Uefi/UefiSpec.h
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user