Home | History | Annotate | Line # | Download | only in inc
efidevp.h revision 1.1
      1  1.1  jakllsch /*	$NetBSD: efidevp.h,v 1.1 2014/04/01 16:16:07 jakllsch Exp $	*/
      2  1.1  jakllsch 
      3  1.1  jakllsch #ifndef _DEVPATH_H
      4  1.1  jakllsch #define _DEVPATH_H
      5  1.1  jakllsch 
      6  1.1  jakllsch /*++
      7  1.1  jakllsch 
      8  1.1  jakllsch Copyright (c) 1998  Intel Corporation
      9  1.1  jakllsch 
     10  1.1  jakllsch Module Name:
     11  1.1  jakllsch 
     12  1.1  jakllsch     devpath.h
     13  1.1  jakllsch 
     14  1.1  jakllsch Abstract:
     15  1.1  jakllsch 
     16  1.1  jakllsch     Defines for parsing the EFI Device Path structures
     17  1.1  jakllsch 
     18  1.1  jakllsch 
     19  1.1  jakllsch 
     20  1.1  jakllsch Revision History
     21  1.1  jakllsch 
     22  1.1  jakllsch --*/
     23  1.1  jakllsch 
     24  1.1  jakllsch //
     25  1.1  jakllsch // Device Path structures - Section C
     26  1.1  jakllsch //
     27  1.1  jakllsch 
     28  1.1  jakllsch typedef struct _EFI_DEVICE_PATH {
     29  1.1  jakllsch         UINT8                           Type;
     30  1.1  jakllsch         UINT8                           SubType;
     31  1.1  jakllsch         UINT8                           Length[2];
     32  1.1  jakllsch } EFI_DEVICE_PATH;
     33  1.1  jakllsch 
     34  1.1  jakllsch #define EFI_DP_TYPE_MASK                    0x7F
     35  1.1  jakllsch #define EFI_DP_TYPE_UNPACKED                0x80
     36  1.1  jakllsch 
     37  1.1  jakllsch //#define END_DEVICE_PATH_TYPE                0xff
     38  1.1  jakllsch #define END_DEVICE_PATH_TYPE                0x7f
     39  1.1  jakllsch //#define END_DEVICE_PATH_TYPE_UNPACKED       0x7f
     40  1.1  jakllsch 
     41  1.1  jakllsch #define END_ENTIRE_DEVICE_PATH_SUBTYPE      0xff
     42  1.1  jakllsch #define END_INSTANCE_DEVICE_PATH_SUBTYPE    0x01
     43  1.1  jakllsch #define END_DEVICE_PATH_LENGTH              (sizeof(EFI_DEVICE_PATH))
     44  1.1  jakllsch 
     45  1.1  jakllsch 
     46  1.1  jakllsch #define DP_IS_END_TYPE(a)
     47  1.1  jakllsch #define DP_IS_END_SUBTYPE(a)        ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
     48  1.1  jakllsch 
     49  1.1  jakllsch #define DevicePathType(a)           ( ((a)->Type) & EFI_DP_TYPE_MASK )
     50  1.1  jakllsch #define DevicePathSubType(a)        ( (a)->SubType )
     51  1.1  jakllsch #define DevicePathNodeLength(a)     ( ((a)->Length[0]) | ((a)->Length[1] << 8) )
     52  1.1  jakllsch #define NextDevicePathNode(a)       ( (EFI_DEVICE_PATH *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
     53  1.1  jakllsch //#define IsDevicePathEndType(a)      ( DevicePathType(a) == END_DEVICE_PATH_TYPE_UNPACKED )
     54  1.1  jakllsch #define IsDevicePathEndType(a)      ( DevicePathType(a) == END_DEVICE_PATH_TYPE )
     55  1.1  jakllsch #define IsDevicePathEndSubType(a)   ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
     56  1.1  jakllsch #define IsDevicePathEnd(a)          ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) )
     57  1.1  jakllsch #define IsDevicePathUnpacked(a)     ( (a)->Type & EFI_DP_TYPE_UNPACKED )
     58  1.1  jakllsch 
     59  1.1  jakllsch 
     60  1.1  jakllsch #define SetDevicePathNodeLength(a,l) {                  \
     61  1.1  jakllsch             (a)->Length[0] = (UINT8) (l);               \
     62  1.1  jakllsch             (a)->Length[1] = (UINT8) ((l) >> 8);        \
     63  1.1  jakllsch             }
     64  1.1  jakllsch 
     65  1.1  jakllsch #define SetDevicePathEndNode(a)  {                      \
     66  1.1  jakllsch             (a)->Type = END_DEVICE_PATH_TYPE;           \
     67  1.1  jakllsch             (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE;     \
     68  1.1  jakllsch             (a)->Length[0] = sizeof(EFI_DEVICE_PATH);   \
     69  1.1  jakllsch             (a)->Length[1] = 0;                         \
     70  1.1  jakllsch             }
     71  1.1  jakllsch 
     72  1.1  jakllsch 
     73  1.1  jakllsch 
     74  1.1  jakllsch /*
     75  1.1  jakllsch  *
     76  1.1  jakllsch  */
     77  1.1  jakllsch #define HARDWARE_DEVICE_PATH            0x01
     78  1.1  jakllsch 
     79  1.1  jakllsch #define HW_PCI_DP                       0x01
     80  1.1  jakllsch typedef struct _PCI_DEVICE_PATH {
     81  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
     82  1.1  jakllsch         UINT8                           Function;
     83  1.1  jakllsch         UINT8                           Device;
     84  1.1  jakllsch } PCI_DEVICE_PATH;
     85  1.1  jakllsch 
     86  1.1  jakllsch #define HW_PCCARD_DP                    0x02
     87  1.1  jakllsch typedef struct _PCCARD_DEVICE_PATH {
     88  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
     89  1.1  jakllsch         UINT8                           SocketNumber;
     90  1.1  jakllsch } PCCARD_DEVICE_PATH;
     91  1.1  jakllsch 
     92  1.1  jakllsch #define HW_MEMMAP_DP                    0x03
     93  1.1  jakllsch typedef struct _MEMMAP_DEVICE_PATH {
     94  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
     95  1.1  jakllsch         UINT32                          MemoryType;
     96  1.1  jakllsch         EFI_PHYSICAL_ADDRESS            StartingAddress;
     97  1.1  jakllsch         EFI_PHYSICAL_ADDRESS            EndingAddress;
     98  1.1  jakllsch } MEMMAP_DEVICE_PATH;
     99  1.1  jakllsch 
    100  1.1  jakllsch #define HW_VENDOR_DP                    0x04
    101  1.1  jakllsch typedef struct _VENDOR_DEVICE_PATH {
    102  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    103  1.1  jakllsch         EFI_GUID                        Guid;
    104  1.1  jakllsch } VENDOR_DEVICE_PATH;
    105  1.1  jakllsch 
    106  1.1  jakllsch #define UNKNOWN_DEVICE_GUID \
    107  1.1  jakllsch     { 0xcf31fac5, 0xc24e, 0x11d2,  {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b}  }
    108  1.1  jakllsch 
    109  1.1  jakllsch typedef struct _UKNOWN_DEVICE_VENDOR_DP {
    110  1.1  jakllsch     VENDOR_DEVICE_PATH      DevicePath;
    111  1.1  jakllsch     UINT8                   LegacyDriveLetter;
    112  1.1  jakllsch } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
    113  1.1  jakllsch 
    114  1.1  jakllsch #define HW_CONTROLLER_DP            0x05
    115  1.1  jakllsch typedef struct _CONTROLLER_DEVICE_PATH {
    116  1.1  jakllsch         EFI_DEVICE_PATH     Header;
    117  1.1  jakllsch         UINT32              Controller;
    118  1.1  jakllsch } CONTROLLER_DEVICE_PATH;
    119  1.1  jakllsch 
    120  1.1  jakllsch /*
    121  1.1  jakllsch  *
    122  1.1  jakllsch  */
    123  1.1  jakllsch #define ACPI_DEVICE_PATH                 0x02
    124  1.1  jakllsch 
    125  1.1  jakllsch #define ACPI_DP                         0x01
    126  1.1  jakllsch typedef struct _ACPI_HID_DEVICE_PATH {
    127  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    128  1.1  jakllsch         UINT32                          HID;
    129  1.1  jakllsch         UINT32                          UID;
    130  1.1  jakllsch } ACPI_HID_DEVICE_PATH;
    131  1.1  jakllsch 
    132  1.1  jakllsch #define EXPANDED_ACPI_DP		0x02
    133  1.1  jakllsch typedef struct _EXPANDED_ACPI_HID_DEVICE_PATH {
    134  1.1  jakllsch 	EFI_DEVICE_PATH			Header;
    135  1.1  jakllsch 	UINT32				HID;
    136  1.1  jakllsch 	UINT32				UID;
    137  1.1  jakllsch 	UINT32				CID;
    138  1.1  jakllsch 	UINT8				HidStr[1];
    139  1.1  jakllsch } EXPANDED_ACPI_HID_DEVICE_PATH;
    140  1.1  jakllsch 
    141  1.1  jakllsch //
    142  1.1  jakllsch // EISA ID Macro
    143  1.1  jakllsch // EISA ID Definition 32-bits
    144  1.1  jakllsch //  bits[15:0] - three character compressed ASCII EISA ID.
    145  1.1  jakllsch //  bits[31:16] - binary number
    146  1.1  jakllsch //   Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
    147  1.1  jakllsch //
    148  1.1  jakllsch #define PNP_EISA_ID_CONST       0x41d0
    149  1.1  jakllsch #define EISA_ID(_Name, _Num)    ((UINT32) ((_Name) | (_Num) << 16))
    150  1.1  jakllsch #define EISA_PNP_ID(_PNPId)     (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
    151  1.1  jakllsch 
    152  1.1  jakllsch #define PNP_EISA_ID_MASK        0xffff
    153  1.1  jakllsch #define EISA_ID_TO_NUM(_Id)     ((_Id) >> 16)
    154  1.1  jakllsch /*
    155  1.1  jakllsch  *
    156  1.1  jakllsch  */
    157  1.1  jakllsch #define MESSAGING_DEVICE_PATH           0x03
    158  1.1  jakllsch 
    159  1.1  jakllsch #define MSG_ATAPI_DP                    0x01
    160  1.1  jakllsch typedef struct _ATAPI_DEVICE_PATH {
    161  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    162  1.1  jakllsch         UINT8                           PrimarySecondary;
    163  1.1  jakllsch         UINT8                           SlaveMaster;
    164  1.1  jakllsch         UINT16                          Lun;
    165  1.1  jakllsch } ATAPI_DEVICE_PATH;
    166  1.1  jakllsch 
    167  1.1  jakllsch #define MSG_SCSI_DP                     0x02
    168  1.1  jakllsch typedef struct _SCSI_DEVICE_PATH {
    169  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    170  1.1  jakllsch         UINT16                          Pun;
    171  1.1  jakllsch         UINT16                          Lun;
    172  1.1  jakllsch } SCSI_DEVICE_PATH;
    173  1.1  jakllsch 
    174  1.1  jakllsch #define MSG_FIBRECHANNEL_DP             0x03
    175  1.1  jakllsch typedef struct _FIBRECHANNEL_DEVICE_PATH {
    176  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    177  1.1  jakllsch         UINT32                          Reserved;
    178  1.1  jakllsch         UINT64                          WWN;
    179  1.1  jakllsch         UINT64                          Lun;
    180  1.1  jakllsch } FIBRECHANNEL_DEVICE_PATH;
    181  1.1  jakllsch 
    182  1.1  jakllsch #define MSG_1394_DP                     0x04
    183  1.1  jakllsch typedef struct _F1394_DEVICE_PATH {
    184  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    185  1.1  jakllsch         UINT32                          Reserved;
    186  1.1  jakllsch         UINT64                          Guid;
    187  1.1  jakllsch } F1394_DEVICE_PATH;
    188  1.1  jakllsch 
    189  1.1  jakllsch #define MSG_USB_DP                      0x05
    190  1.1  jakllsch typedef struct _USB_DEVICE_PATH {
    191  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    192  1.1  jakllsch         UINT8                           Port;
    193  1.1  jakllsch         UINT8                           Endpoint;
    194  1.1  jakllsch } USB_DEVICE_PATH;
    195  1.1  jakllsch 
    196  1.1  jakllsch #define MSG_USB_CLASS_DP                0x0F
    197  1.1  jakllsch typedef struct _USB_CLASS_DEVICE_PATH {
    198  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    199  1.1  jakllsch         UINT16                          VendorId;
    200  1.1  jakllsch         UINT16                          ProductId;
    201  1.1  jakllsch         UINT8                           DeviceClass;
    202  1.1  jakllsch         UINT8                           DeviceSubclass;
    203  1.1  jakllsch         UINT8                           DeviceProtocol;
    204  1.1  jakllsch } USB_CLASS_DEVICE_PATH;
    205  1.1  jakllsch 
    206  1.1  jakllsch #define MSG_I2O_DP                      0x06
    207  1.1  jakllsch typedef struct _I2O_DEVICE_PATH {
    208  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    209  1.1  jakllsch         UINT32                          Tid;
    210  1.1  jakllsch } I2O_DEVICE_PATH;
    211  1.1  jakllsch 
    212  1.1  jakllsch #define MSG_MAC_ADDR_DP                 0x0b
    213  1.1  jakllsch typedef struct _MAC_ADDR_DEVICE_PATH {
    214  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    215  1.1  jakllsch         EFI_MAC_ADDRESS                 MacAddress;
    216  1.1  jakllsch         UINT8                           IfType;
    217  1.1  jakllsch } MAC_ADDR_DEVICE_PATH;
    218  1.1  jakllsch 
    219  1.1  jakllsch #define MSG_IPv4_DP                     0x0c
    220  1.1  jakllsch typedef struct _IPv4_DEVICE_PATH {
    221  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    222  1.1  jakllsch         EFI_IPv4_ADDRESS                LocalIpAddress;
    223  1.1  jakllsch         EFI_IPv4_ADDRESS                RemoteIpAddress;
    224  1.1  jakllsch         UINT16                          LocalPort;
    225  1.1  jakllsch         UINT16                          RemotePort;
    226  1.1  jakllsch         UINT16                          Protocol;
    227  1.1  jakllsch         BOOLEAN                         StaticIpAddress;
    228  1.1  jakllsch } IPv4_DEVICE_PATH;
    229  1.1  jakllsch 
    230  1.1  jakllsch #define MSG_IPv6_DP                     0x0d
    231  1.1  jakllsch typedef struct _IPv6_DEVICE_PATH {
    232  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    233  1.1  jakllsch         EFI_IPv6_ADDRESS                LocalIpAddress;
    234  1.1  jakllsch         EFI_IPv6_ADDRESS                RemoteIpAddress;
    235  1.1  jakllsch         UINT16                          LocalPort;
    236  1.1  jakllsch         UINT16                          RemotePort;
    237  1.1  jakllsch         UINT16                          Protocol;
    238  1.1  jakllsch         BOOLEAN                         StaticIpAddress;
    239  1.1  jakllsch } IPv6_DEVICE_PATH;
    240  1.1  jakllsch 
    241  1.1  jakllsch #define MSG_INFINIBAND_DP               0x09
    242  1.1  jakllsch typedef struct _INFINIBAND_DEVICE_PATH {
    243  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    244  1.1  jakllsch         UINT32                          Reserved;
    245  1.1  jakllsch         UINT64                          NodeGuid;
    246  1.1  jakllsch         UINT64                          IocGuid;
    247  1.1  jakllsch         UINT64                          DeviceId;
    248  1.1  jakllsch } INFINIBAND_DEVICE_PATH;
    249  1.1  jakllsch 
    250  1.1  jakllsch #define MSG_UART_DP                     0x0e
    251  1.1  jakllsch typedef struct _UART_DEVICE_PATH {
    252  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    253  1.1  jakllsch         UINT32                          Reserved;
    254  1.1  jakllsch         UINT64                          BaudRate;
    255  1.1  jakllsch         UINT8                           DataBits;
    256  1.1  jakllsch         UINT8                           Parity;
    257  1.1  jakllsch         UINT8                           StopBits;
    258  1.1  jakllsch } UART_DEVICE_PATH;
    259  1.1  jakllsch 
    260  1.1  jakllsch #define MSG_VENDOR_DP                   0x0A
    261  1.1  jakllsch /* Use VENDOR_DEVICE_PATH struct */
    262  1.1  jakllsch 
    263  1.1  jakllsch #define DEVICE_PATH_MESSAGING_PC_ANSI \
    264  1.1  jakllsch     { 0xe0c14753, 0xf9be, 0x11d2,  {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d}  }
    265  1.1  jakllsch 
    266  1.1  jakllsch #define DEVICE_PATH_MESSAGING_VT_100 \
    267  1.1  jakllsch     { 0xdfa66065, 0xb419, 0x11d3,  {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d}  }
    268  1.1  jakllsch 
    269  1.1  jakllsch 
    270  1.1  jakllsch 
    271  1.1  jakllsch #define MEDIA_DEVICE_PATH               0x04
    272  1.1  jakllsch 
    273  1.1  jakllsch #define MEDIA_HARDDRIVE_DP              0x01
    274  1.1  jakllsch typedef struct _HARDDRIVE_DEVICE_PATH {
    275  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    276  1.1  jakllsch         UINT32                          PartitionNumber;
    277  1.1  jakllsch         UINT64                          PartitionStart;
    278  1.1  jakllsch         UINT64                          PartitionSize;
    279  1.1  jakllsch         UINT8                           Signature[16];
    280  1.1  jakllsch         UINT8                           MBRType;
    281  1.1  jakllsch         UINT8                           SignatureType;
    282  1.1  jakllsch } HARDDRIVE_DEVICE_PATH;
    283  1.1  jakllsch 
    284  1.1  jakllsch #define MBR_TYPE_PCAT                       0x01
    285  1.1  jakllsch #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
    286  1.1  jakllsch 
    287  1.1  jakllsch #define SIGNATURE_TYPE_MBR                  0x01
    288  1.1  jakllsch #define SIGNATURE_TYPE_GUID                 0x02
    289  1.1  jakllsch 
    290  1.1  jakllsch #define MEDIA_CDROM_DP                  0x02
    291  1.1  jakllsch typedef struct _CDROM_DEVICE_PATH {
    292  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    293  1.1  jakllsch         UINT32                          BootEntry;
    294  1.1  jakllsch         UINT64                          PartitionStart;
    295  1.1  jakllsch         UINT64                          PartitionSize;
    296  1.1  jakllsch } CDROM_DEVICE_PATH;
    297  1.1  jakllsch 
    298  1.1  jakllsch #define MEDIA_VENDOR_DP                 0x03
    299  1.1  jakllsch /* Use VENDOR_DEVICE_PATH struct */
    300  1.1  jakllsch 
    301  1.1  jakllsch #define MEDIA_FILEPATH_DP               0x04
    302  1.1  jakllsch typedef struct _FILEPATH_DEVICE_PATH {
    303  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    304  1.1  jakllsch         CHAR16                          PathName[1];
    305  1.1  jakllsch } FILEPATH_DEVICE_PATH;
    306  1.1  jakllsch 
    307  1.1  jakllsch #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
    308  1.1  jakllsch 
    309  1.1  jakllsch #define MEDIA_PROTOCOL_DP               0x05
    310  1.1  jakllsch typedef struct _MEDIA_PROTOCOL_DEVICE_PATH {
    311  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    312  1.1  jakllsch         EFI_GUID                        Protocol;
    313  1.1  jakllsch } MEDIA_PROTOCOL_DEVICE_PATH;
    314  1.1  jakllsch 
    315  1.1  jakllsch 
    316  1.1  jakllsch #define BBS_DEVICE_PATH                 0x05
    317  1.1  jakllsch #define BBS_BBS_DP                      0x01
    318  1.1  jakllsch typedef struct _BBS_BBS_DEVICE_PATH {
    319  1.1  jakllsch         EFI_DEVICE_PATH                 Header;
    320  1.1  jakllsch         UINT16                          DeviceType;
    321  1.1  jakllsch         UINT16                          StatusFlag;
    322  1.1  jakllsch         CHAR8                           String[1];
    323  1.1  jakllsch } BBS_BBS_DEVICE_PATH;
    324  1.1  jakllsch 
    325  1.1  jakllsch /* DeviceType definitions - from BBS specification */
    326  1.1  jakllsch #define BBS_TYPE_FLOPPY                 0x01
    327  1.1  jakllsch #define BBS_TYPE_HARDDRIVE              0x02
    328  1.1  jakllsch #define BBS_TYPE_CDROM                  0x03
    329  1.1  jakllsch #define BBS_TYPE_PCMCIA                 0x04
    330  1.1  jakllsch #define BBS_TYPE_USB                    0x05
    331  1.1  jakllsch #define BBS_TYPE_EMBEDDED_NETWORK       0x06
    332  1.1  jakllsch #define BBS_TYPE_DEV                    0x80
    333  1.1  jakllsch #define BBS_TYPE_UNKNOWN                0xFF
    334  1.1  jakllsch 
    335  1.1  jakllsch typedef union {
    336  1.1  jakllsch     EFI_DEVICE_PATH                      DevPath;
    337  1.1  jakllsch     PCI_DEVICE_PATH                      Pci;
    338  1.1  jakllsch     PCCARD_DEVICE_PATH                   PcCard;
    339  1.1  jakllsch     MEMMAP_DEVICE_PATH                   MemMap;
    340  1.1  jakllsch     VENDOR_DEVICE_PATH                   Vendor;
    341  1.1  jakllsch     UNKNOWN_DEVICE_VENDOR_DEVICE_PATH    UnknownVendor;
    342  1.1  jakllsch     CONTROLLER_DEVICE_PATH               Controller;
    343  1.1  jakllsch     ACPI_HID_DEVICE_PATH                 Acpi;
    344  1.1  jakllsch 
    345  1.1  jakllsch     ATAPI_DEVICE_PATH                    Atapi;
    346  1.1  jakllsch     SCSI_DEVICE_PATH                     Scsi;
    347  1.1  jakllsch     FIBRECHANNEL_DEVICE_PATH             FibreChannel;
    348  1.1  jakllsch 
    349  1.1  jakllsch     F1394_DEVICE_PATH                    F1394;
    350  1.1  jakllsch     USB_DEVICE_PATH                      Usb;
    351  1.1  jakllsch     USB_CLASS_DEVICE_PATH                UsbClass;
    352  1.1  jakllsch     I2O_DEVICE_PATH                      I2O;
    353  1.1  jakllsch     MAC_ADDR_DEVICE_PATH                 MacAddr;
    354  1.1  jakllsch     IPv4_DEVICE_PATH                     Ipv4;
    355  1.1  jakllsch     IPv6_DEVICE_PATH                     Ipv6;
    356  1.1  jakllsch     INFINIBAND_DEVICE_PATH               InfiniBand;
    357  1.1  jakllsch     UART_DEVICE_PATH                     Uart;
    358  1.1  jakllsch 
    359  1.1  jakllsch     HARDDRIVE_DEVICE_PATH                HardDrive;
    360  1.1  jakllsch     CDROM_DEVICE_PATH                    CD;
    361  1.1  jakllsch 
    362  1.1  jakllsch     FILEPATH_DEVICE_PATH                 FilePath;
    363  1.1  jakllsch     MEDIA_PROTOCOL_DEVICE_PATH           MediaProtocol;
    364  1.1  jakllsch 
    365  1.1  jakllsch     BBS_BBS_DEVICE_PATH                  Bbs;
    366  1.1  jakllsch 
    367  1.1  jakllsch } EFI_DEV_PATH;
    368  1.1  jakllsch 
    369  1.1  jakllsch typedef union {
    370  1.1  jakllsch     EFI_DEVICE_PATH                      *DevPath;
    371  1.1  jakllsch     PCI_DEVICE_PATH                      *Pci;
    372  1.1  jakllsch     PCCARD_DEVICE_PATH                   *PcCard;
    373  1.1  jakllsch     MEMMAP_DEVICE_PATH                   *MemMap;
    374  1.1  jakllsch     VENDOR_DEVICE_PATH                   *Vendor;
    375  1.1  jakllsch     UNKNOWN_DEVICE_VENDOR_DEVICE_PATH    *UnknownVendor;
    376  1.1  jakllsch     CONTROLLER_DEVICE_PATH               *Controller;
    377  1.1  jakllsch     ACPI_HID_DEVICE_PATH                 *Acpi;
    378  1.1  jakllsch 
    379  1.1  jakllsch     ATAPI_DEVICE_PATH                    *Atapi;
    380  1.1  jakllsch     SCSI_DEVICE_PATH                     *Scsi;
    381  1.1  jakllsch     FIBRECHANNEL_DEVICE_PATH             *FibreChannel;
    382  1.1  jakllsch 
    383  1.1  jakllsch     F1394_DEVICE_PATH                    *F1394;
    384  1.1  jakllsch     USB_DEVICE_PATH                      *Usb;
    385  1.1  jakllsch     USB_CLASS_DEVICE_PATH                *UsbClass;
    386  1.1  jakllsch     I2O_DEVICE_PATH                      *I2O;
    387  1.1  jakllsch     MAC_ADDR_DEVICE_PATH                 *MacAddr;
    388  1.1  jakllsch     IPv4_DEVICE_PATH                     *Ipv4;
    389  1.1  jakllsch     IPv6_DEVICE_PATH                     *Ipv6;
    390  1.1  jakllsch     INFINIBAND_DEVICE_PATH               *InfiniBand;
    391  1.1  jakllsch     UART_DEVICE_PATH                     *Uart;
    392  1.1  jakllsch 
    393  1.1  jakllsch     HARDDRIVE_DEVICE_PATH                *HardDrive;
    394  1.1  jakllsch 
    395  1.1  jakllsch     FILEPATH_DEVICE_PATH                 *FilePath;
    396  1.1  jakllsch     MEDIA_PROTOCOL_DEVICE_PATH           *MediaProtocol;
    397  1.1  jakllsch 
    398  1.1  jakllsch     CDROM_DEVICE_PATH                    *CD;
    399  1.1  jakllsch     BBS_BBS_DEVICE_PATH                  *Bbs;
    400  1.1  jakllsch 
    401  1.1  jakllsch } EFI_DEV_PATH_PTR;
    402  1.1  jakllsch 
    403  1.1  jakllsch 
    404  1.1  jakllsch #endif
    405