199767f8919635c4928607450d9e0abb932109ceToomas Soome/* $FreeBSD$ */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#ifndef _DEVPATH_H
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define _DEVPATH_H
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*++
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeCopyright (c) 1999 - 2002 Intel Corporation. All rights reserved
199767f8919635c4928607450d9e0abb932109ceToomas SoomeThis software and associated documentation (if any) is furnished
199767f8919635c4928607450d9e0abb932109ceToomas Soomeunder a license and may only be used or copied in accordance
199767f8919635c4928607450d9e0abb932109ceToomas Soomewith the terms of the license. Except as permitted by such
199767f8919635c4928607450d9e0abb932109ceToomas Soomelicense, no part of this software or documentation may be
199767f8919635c4928607450d9e0abb932109ceToomas Soomereproduced, stored in a retrieval system, or transmitted in any
199767f8919635c4928607450d9e0abb932109ceToomas Soomeform or by any means without the express written consent of
199767f8919635c4928607450d9e0abb932109ceToomas SoomeIntel Corporation.
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeModule Name:
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome devpath.h
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeAbstract:
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome Defines for parsing the EFI Device Path structures
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeRevision History
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome--*/
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Device Path structures - Section C
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 Type;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 SubType;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 Length[2];
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_DP_TYPE_MASK 0x7F
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_DP_TYPE_UNPACKED 0x80
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define END_DEVICE_PATH_TYPE 0x7f
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define END_DEVICE_PATH_LENGTH (sizeof(EFI_DEVICE_PATH))
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DP_IS_END_TYPE(a)
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DP_IS_END_SUBTYPE(a) ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DevicePathType(a) ( ((a)->Type) & EFI_DP_TYPE_MASK )
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DevicePathSubType(a) ( (a)->SubType )
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DevicePathNodeLength(a) ( ((a)->Length[0]) | ((a)->Length[1] << 8) )
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define NextDevicePathNode(a) ( (EFI_DEVICE_PATH *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define IsDevicePathType(a, t) ( DevicePathType(a) == t )
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define IsDevicePathEndType(a) IsDevicePathType(a, END_DEVICE_PATH_TYPE)
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define IsDevicePathEndSubType(a) ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define IsDevicePathEnd(a) ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) )
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define IsDevicePathUnpacked(a) ( (a)->Type & EFI_DP_TYPE_UNPACKED )
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SetDevicePathNodeLength(a,l) { \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (a)->Length[0] = (UINT8) (l); \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (a)->Length[1] = (UINT8) ((l) >> 8); \
199767f8919635c4928607450d9e0abb932109ceToomas Soome }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SetDevicePathEndNode(a) { \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (a)->Type = END_DEVICE_PATH_TYPE; \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (a)->Length[0] = sizeof(EFI_DEVICE_PATH); \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (a)->Length[1] = 0; \
199767f8919635c4928607450d9e0abb932109ceToomas Soome }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome *
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define HARDWARE_DEVICE_PATH 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define HW_PCI_DP 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _PCI_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 Function;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 Device;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} PCI_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define HW_PCCARD_DP 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _PCCARD_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 FunctionNumber;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} PCCARD_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define HW_MEMMAP_DP 0x03
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _MEMMAP_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 MemoryType;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_PHYSICAL_ADDRESS StartingAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_PHYSICAL_ADDRESS EndingAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} MEMMAP_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define HW_VENDOR_DP 0x04
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _VENDOR_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_GUID Guid;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} VENDOR_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define UNKNOWN_DEVICE_GUID \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _UKNOWN_DEVICE_VENDOR_DP {
199767f8919635c4928607450d9e0abb932109ceToomas Soome VENDOR_DEVICE_PATH DevicePath;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 LegacyDriveLetter;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define HW_CONTROLLER_DP 0x05
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _CONTROLLER_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 Controller;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} CONTROLLER_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome *
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define ACPI_DEVICE_PATH 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define ACPI_DP 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _ACPI_HID_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 HID;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 UID;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} ACPI_HID_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define ACPI_EXTENDED_DP 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _ACPI_EXTENDED_HID_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 HID;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 UID;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 CID;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} ACPI_EXTENDED_HID_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// EISA ID Macro
199767f8919635c4928607450d9e0abb932109ceToomas Soome// EISA ID Definition 32-bits
199767f8919635c4928607450d9e0abb932109ceToomas Soome// bits[15:0] - three character compressed ASCII EISA ID.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// bits[31:16] - binary number
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define PNP_EISA_ID_CONST 0x41d0
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16))
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define PNP_EISA_ID_MASK 0xffff
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome *
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MESSAGING_DEVICE_PATH 0x03
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_ATAPI_DP 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _ATAPI_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 PrimarySecondary;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 SlaveMaster;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 Lun;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} ATAPI_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_SCSI_DP 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _SCSI_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 Pun;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 Lun;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} SCSI_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_FIBRECHANNEL_DP 0x03
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _FIBRECHANNEL_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 Reserved;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 WWN;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Lun;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} FIBRECHANNEL_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_1394_DP 0x04
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _F1394_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 Reserved;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Guid;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} F1394_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_USB_DP 0x05
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _USB_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 ParentPortNumber;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 InterfaceNumber;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} USB_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_USB_CLASS_DP 0x0F
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _USB_CLASS_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 VendorId;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 ProductId;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 DeviceClass;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 DeviceSubClass;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 DeviceProtocol;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} USB_CLASS_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_I2O_DP 0x06
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _I2O_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 Tid;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} I2O_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_MAC_ADDR_DP 0x0b
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _MAC_ADDR_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_MAC_ADDRESS MacAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 IfType;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} MAC_ADDR_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_IPv4_DP 0x0c
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _IPv4_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IPv4_ADDRESS LocalIpAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IPv4_ADDRESS RemoteIpAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 LocalPort;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 RemotePort;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 Protocol;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN StaticIpAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} IPv4_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_IPv6_DP 0x0d
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _IPv6_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IPv6_ADDRESS LocalIpAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IPv6_ADDRESS RemoteIpAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 LocalPort;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 RemotePort;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 Protocol;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN StaticIpAddress;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} IPv6_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_INFINIBAND_DP 0x09
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _INFINIBAND_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 ResourceFlags;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 PortGid[16];
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 ServiceId;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 TargetPortId;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 DeviceId;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} INFINIBAND_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_UART_DP 0x0e
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _UART_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 Reserved;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 BaudRate;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 DataBits;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 Parity;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 StopBits;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} UART_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_VENDOR_DP 0x0A
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Use VENDOR_DEVICE_PATH struct */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DEVICE_PATH_MESSAGING_PC_ANSI \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DEVICE_PATH_MESSAGING_VT_100 \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DEVICE_PATH_MESSAGING_VT_100_PLUS \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DEVICE_PATH_MESSAGING_VT_UTF8 \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MSG_SATA_DP 0x12
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _SATA_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 HBAPortNumber;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 PortMultiplierPortNumber;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 Lun;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} SATA_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MEDIA_DEVICE_PATH 0x04
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MEDIA_HARDDRIVE_DP 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _HARDDRIVE_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 PartitionNumber;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 PartitionStart;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 PartitionSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 Signature[16];
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 MBRType;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 SignatureType;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} HARDDRIVE_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MBR_TYPE_PCAT 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIGNATURE_TYPE_MBR 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIGNATURE_TYPE_GUID 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MEDIA_CDROM_DP 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _CDROM_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 BootEntry;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 PartitionStart;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 PartitionSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} CDROM_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MEDIA_VENDOR_DP 0x03
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Use VENDOR_DEVICE_PATH struct */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MEDIA_FILEPATH_DP 0x04
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _FILEPATH_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR16 PathName[1];
199767f8919635c4928607450d9e0abb932109ceToomas Soome} FILEPATH_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define MEDIA_PROTOCOL_DP 0x05
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _MEDIA_PROTOCOL_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_GUID Protocol;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} MEDIA_PROTOCOL_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_DEVICE_PATH 0x05
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_BBS_DP 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _BBS_BBS_DEVICE_PATH {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH Header;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 DeviceType;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT16 StatusFlag;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR8 String[1];
199767f8919635c4928607450d9e0abb932109ceToomas Soome} BBS_BBS_DEVICE_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* DeviceType definitions - from BBS specification */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_FLOPPY 0x01
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_HARDDRIVE 0x02
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_CDROM 0x03
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_PCMCIA 0x04
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_USB 0x05
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_EMBEDDED_NETWORK 0x06
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_DEV 0x80
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BBS_TYPE_UNKNOWN 0xFF
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef union {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH DevPath;
199767f8919635c4928607450d9e0abb932109ceToomas Soome PCI_DEVICE_PATH Pci;
199767f8919635c4928607450d9e0abb932109ceToomas Soome PCCARD_DEVICE_PATH PcCard;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MEMMAP_DEVICE_PATH MemMap;
199767f8919635c4928607450d9e0abb932109ceToomas Soome VENDOR_DEVICE_PATH Vendor;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CONTROLLER_DEVICE_PATH Controller;
199767f8919635c4928607450d9e0abb932109ceToomas Soome ACPI_HID_DEVICE_PATH Acpi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome ATAPI_DEVICE_PATH Atapi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome SCSI_DEVICE_PATH Scsi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome FIBRECHANNEL_DEVICE_PATH FibreChannel;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome F1394_DEVICE_PATH F1394;
199767f8919635c4928607450d9e0abb932109ceToomas Soome USB_DEVICE_PATH Usb;
199767f8919635c4928607450d9e0abb932109ceToomas Soome USB_CLASS_DEVICE_PATH UsbClass;
199767f8919635c4928607450d9e0abb932109ceToomas Soome I2O_DEVICE_PATH I2O;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MAC_ADDR_DEVICE_PATH MacAddr;
199767f8919635c4928607450d9e0abb932109ceToomas Soome IPv4_DEVICE_PATH Ipv4;
199767f8919635c4928607450d9e0abb932109ceToomas Soome IPv6_DEVICE_PATH Ipv6;
199767f8919635c4928607450d9e0abb932109ceToomas Soome INFINIBAND_DEVICE_PATH InfiniBand;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UART_DEVICE_PATH Uart;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome HARDDRIVE_DEVICE_PATH HardDrive;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CDROM_DEVICE_PATH CD;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome FILEPATH_DEVICE_PATH FilePath;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome BBS_BBS_DEVICE_PATH Bbs;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_DEV_PATH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef union {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_PATH *DevPath;
199767f8919635c4928607450d9e0abb932109ceToomas Soome PCI_DEVICE_PATH *Pci;
199767f8919635c4928607450d9e0abb932109ceToomas Soome PCCARD_DEVICE_PATH *PcCard;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MEMMAP_DEVICE_PATH *MemMap;
199767f8919635c4928607450d9e0abb932109ceToomas Soome VENDOR_DEVICE_PATH *Vendor;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CONTROLLER_DEVICE_PATH *Controller;
199767f8919635c4928607450d9e0abb932109ceToomas Soome ACPI_HID_DEVICE_PATH *Acpi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome ATAPI_DEVICE_PATH *Atapi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome SCSI_DEVICE_PATH *Scsi;
199767f8919635c4928607450d9e0abb932109ceToomas Soome FIBRECHANNEL_DEVICE_PATH *FibreChannel;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome F1394_DEVICE_PATH *F1394;
199767f8919635c4928607450d9e0abb932109ceToomas Soome USB_DEVICE_PATH *Usb;
199767f8919635c4928607450d9e0abb932109ceToomas Soome USB_CLASS_DEVICE_PATH *UsbClass;
199767f8919635c4928607450d9e0abb932109ceToomas Soome I2O_DEVICE_PATH *I2O;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MAC_ADDR_DEVICE_PATH *MacAddr;
199767f8919635c4928607450d9e0abb932109ceToomas Soome IPv4_DEVICE_PATH *Ipv4;
199767f8919635c4928607450d9e0abb932109ceToomas Soome IPv6_DEVICE_PATH *Ipv6;
199767f8919635c4928607450d9e0abb932109ceToomas Soome INFINIBAND_DEVICE_PATH *InfiniBand;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UART_DEVICE_PATH *Uart;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome HARDDRIVE_DEVICE_PATH *HardDrive;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome FILEPATH_DEVICE_PATH *FilePath;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome CDROM_DEVICE_PATH *CD;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BBS_BBS_DEVICE_PATH *Bbs;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_DEV_PATH_PTR;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#endif