hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/** @file
 
  @copyright
  Copyright 2012 - 2021 Intel Corporation. <BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
 
#ifndef _PLT_DEVS_UPDATE_H_
#define _PLT_DEVS_UPDATE_H_
 
// {1E22C6FA-B39E-419a-A071-D60B672B21C8}
#define EFI_PLT_DEVS_UPDATE_GUID \
  { \
   0x1e22c6fa, 0xb39e, 0x419a, { 0xa0, 0x71, 0xd6, 0xb, 0x67, 0x2b, 0x21, 0xc8 }\
  }
 
#define  PORTNUMMAX          8
 
typedef struct _EFI_PLT_DEVS_UPDATE_PROTOCOL EFI_PLT_DEVS_UPDATE_PROTOCOL;
 
typedef enum {
  NET_PXE_1GB               = 0,
  NET_PXE_10GB              = 1,
  NET_ISCSI                 = 2,
  NET_FCOE                  = 3,
  NET_INFINITBADN           = 4
} OPROM_FILE_TYPE;
 
typedef enum {
  HIDDEN                    = 0,
  ONBOARD_NIC               = 1,
  IO_MODULE_NIC             = 2,
} NIC_TYPE;
 
typedef enum {
  UNDEF                     = 0,
  ETHERNET                  = 1,
  INFIBAND                  = 2
} NIC_SUB_TYPE;
 
#define DFT_MAC_SIZE         0x20
#define DFT_GUID_SIZE        0x64
 
#define PXE1GBit             0x1
#define PXE10GBit            0x2
#define FcoeBit              0x4
#define iSCSIBit             0x8
 
#pragma pack(1)
typedef struct _PLAT_NIC_SETUP_INFO{
  NIC_TYPE             NicType;               //Onboard or IO module
  NIC_SUB_TYPE         NicSubType;            //Ethernect or Infinitband controller
  UINT8                NicIndex;              //Onboard Nic1,2,3 or IOM 1, 2,3 per setup option
  UINT8                RootPortBusNo;         //Root Bridge Bus No
  UINT8                RootPortDevNo;         //Root Bridge device No
  UINT8                RootPortFunNo;         //Root Bridge Function No
  UINT16               NicVID;                //Nic Vendor ID
  UINT16               NicDID;                //Nic Device ID
  UINT16               SubDID;                //Nic Subsystem ID
  UINT8                PortNumbers;           //Ports numbder after detection
  CHAR8                NicDescription[64];    //Nic description defined in Eps
  EFI_MAC_ADDRESS      PortMacAddress[PORTNUMMAX];
  EFI_GUID             InfinitbandGuid;
  UINT8                OpROMCapMap;
  UINT8                IsPchNIC;
}PLAT_NIC_SETUP_INFO;
#pragma pack()
 
typedef EFI_STATUS (*PLATFORM_HKS_GET_EMBEDED_OPTIONROM) (IN EFI_PLT_DEVS_UPDATE_PROTOCOL   *This, IN EFI_HANDLE PciHandle,OPROM_FILE_TYPE OpRomType);
typedef EFI_STATUS (*PLATFORM_HKS_DISPATCH_OPTIONROM) (IN EFI_PLT_DEVS_UPDATE_PROTOCOL   *This, IN EFI_HANDLE PciHandle);
typedef EFI_STATUS (*PLATFORM_HKS_BDS_UPDATE_MAC) (IN EFI_PLT_DEVS_UPDATE_PROTOCOL   *This);
typedef EFI_STATUS (*PLATFORM_HKS_ON_ENTER_SETUP) (IN EFI_PLT_DEVS_UPDATE_PROTOCOL   *This, OUT PLAT_NIC_SETUP_INFO **NicInfo, OUT UINT8 *NicNum);
 
typedef struct _EFI_PLT_DEVS_UPDATE_PROTOCOL {
  PLATFORM_HKS_GET_EMBEDED_OPTIONROM           PlatformHooksOnGettingEmbedOpRom;
  PLATFORM_HKS_DISPATCH_OPTIONROM              PlatformHooksOnDispatchOpRom;
  PLATFORM_HKS_BDS_UPDATE_MAC                  PlatformHooksBdsUpdateMac;
  PLATFORM_HKS_ON_ENTER_SETUP                  PlatformHooksGetNicInfo;
} EFI_PLT_DEVS_UPDATE_PROTOCOL;
 
extern EFI_GUID   gEfiPlatformDevsUpdateProtocolGuid;
extern EFI_GUID   gEfiVMDDriverProtocolGuid;
extern EFI_GUID   gEfiHfiPcieGen3ProtocolGuid;
 
#endif