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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/** @file
  Dynamic link silicon library service access Protocol
 
  This protocol abstracts silicon static library accesses via a protocol
 
  @copyright
  Copyright 2021 Intel Corporation. <BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
 
#ifndef _DYNAMIC_SI_LIBARY_PROTOCOL_H_
#define _DYNAMIC_SI_LIBARY_PROTOCOL_H_
 
#include <Library/CompressedVariableLib.h>
#include <IioPlatformData.h>
#include <Include/SystemInfoVar.h>
#include <Guid/MemoryMapData.h>
#include <Library/CpuEarlyDataLib.h>
#include <UsraAccessType.h>
#include <IioUniversalData.h>
 
#define DYNAMIC_SI_LIBARY_PROTOCOL_GUID \
  { 0xb235fbed, 0x3b25, 0x4cb3, { 0x98, 0x9c, 0x8c, 0xe7, 0xec, 0x49, 0x8b, 0x7e } }
 
#define DYNAMIC_SI_LIBARY_PROTOCOL_SIGNATURE  SIGNATURE_32('D', 'S', 'L', 'P')
#define DYNAMIC_SI_LIBARY_PROTOCOL_VERSION    0x01
 
//
// Functions
//
 
typedef
EFI_STATUS
(EFIAPI *DXE_SET_GPIO_OUTPUT_VALUE) (
  IN  UINT32                              GPioPad,
  IN  UINT32                              Value
  );
 
typedef
BOOLEAN
(EFIAPI *DXE_IsCpuAndRevision) (
  IN UINT8  CpuType,
  IN UINT16 Revision
  );
 
typedef
CPU_VAR_DATA *
(EFIAPI *DXE_GetCpuVarData) (
  );
 
typedef
UINT8
(EFIAPI *DXE_MaxSataControllerNum) (
  VOID
  );
 
typedef
UINTN
(EFIAPI *DXE_MmPciBase) (
  IN UINT32                       Bus,
  IN UINT32                       Device,
  IN UINT32                       Function
  );
 
typedef
CPU_CSR_ACCESS_VAR *
(EFIAPI *DXE_GetSysCpuCsrAccessVar) (
  VOID
  );
 
typedef
VOID
(EFIAPI *DXE_IioPciHookBeforeEnumeration) (
  IN  UINT8          Segment,
  IN  UINT8          Bus,
  IN  UINT8          Device,
  IN  UINT8          Function,
  IN  UINT32         DidVid
  );
 
typedef
CHAR8*
(EFIAPI *DXE_PchGetSeriesStr) (
  );
 
typedef
EFI_STATUS
(EFIAPI *DXE_PchGetSteppingStr) (
  OUT    CHAR8                          *Buffer,
  IN     UINT32                         BufferSize
  );
 
typedef
CHAR8*
(EFIAPI *DXE_PchGetSkuStr) (
  VOID
  );
 
typedef
EFI_STATUS
(EFIAPI *DXE_SaveVariableFromHob) (
  IN EFI_GUID HobGuid,
  IN CHAR16 *VariableName,
  IN EFI_GUID VariableGuid
  );
 
typedef
VOID
(EFIAPI *DXE_SetColdBootSlowRequired) (
  IN  BOOLEAN ColdBootSlowRequired
  );
 
typedef
SYS_INFO_VAR_NVRAM *
(EFIAPI *DXE_GetSysInfoVarNvramPtr) (
  VOID
  );
 
typedef
BOOLEAN
(EFIAPI *DXE_HybridSystemLevelEmulationEnabled) (
  VOID
  );
 
typedef
SYSTEM_MEMORY_MAP_HOB *
(EFIAPI *DXE_GetSystemMemoryMapData) (
  VOID
  );
 
typedef
BOOLEAN
(EFIAPI *DXE_X2ApicIdDetect) (
  IN VOID  *Host
  );
 
typedef
RETURN_STATUS
(EFIAPI *DXE_RegisterRead) (
  IN USRA_ADDRESS             *Address,
  IN VOID                     *Buffer
  );
 
typedef
RETURN_STATUS
(EFIAPI *DXE_RegisterWrite) (
  IN USRA_ADDRESS             *Address,
  IN VOID                     *Buffer
  );
 
typedef
UINT8
(EFIAPI *DXE_SataDevNumber) (
  IN UINT32 SataCtrlIndex
  );
 
typedef
UINT8
(EFIAPI *DXE_SataFuncNumber) (
  IN UINT32 SataCtrlIndex
  );
 
typedef
UINT16
(EFIAPI *DXE_PmcGetAcpiBase) (
  VOID
  );
 
typedef
UINTN
(EFIAPI *DXE_PchGetPmcBaseByPchId) (
  IN  UINT8             PchId
  );
 
typedef
VOID
(EFIAPI *DXE_SetBiosInfoFlagWpe) (
  VOID
  );
 
typedef
VOID
(EFIAPI *DXE_ProgramGenProtRangeRegs) (
  IIO_UDS             *IioUds
  );
 
typedef
VOID
(EFIAPI *DXE_ProgramImrRegs) (
  IIO_UDS             *IioUds
  );
 
typedef
VOID
(EFIAPI *DXE_ProgramImr2Regs) (
  IIO_UDS             *IioUds
  );
 
typedef
VOID
(EFIAPI *DXE_CheckAndPopulateIedTraceMemory) (
  UINTN       IedTraceSize,
  IIO_UDS     *IioUds
  );
 
typedef
UINT32
(EFIAPI *DXE_ReadScratchpad7) (
  VOID
  );
 
//
// UBA specific silicon abstraction protocol
//
typedef struct {
  UINT32                                  Signature;
  UINT32                                  Version;
 
  DXE_GetCpuVarData                       GetCpuVarData;
  DXE_IsCpuAndRevision                    IsCpuAndRevision;
  DXE_MaxSataControllerNum                MaxSataControllerNum;
  DXE_MmPciBase                           MmPciBase;
  DXE_GetSysCpuCsrAccessVar               GetSysCpuCsrAccessVar;
  DXE_IioPciHookBeforeEnumeration         IioPciHookBeforeEnumeration;
  DXE_SET_GPIO_OUTPUT_VALUE               GpioSetOutputValue;
  DXE_PchGetSeriesStr                     PchGetSeriesStr;
  DXE_PchGetSteppingStr                   PchGetSteppingStr;
  DXE_PchGetSkuStr                        PchGetSkuStr;
  DXE_SaveVariableFromHob                 SaveVariableFromHob;
  DXE_SetColdBootSlowRequired             SetColdBootSlowRequired;
  DXE_GetSysInfoVarNvramPtr               GetSysInfoVarNvramPtr;
  DXE_X2ApicIdDetect                      X2ApicIdDetect;
  DXE_GetSystemMemoryMapData              GetSystemMemoryMapData;
  DXE_RegisterRead                        RegisterRead;
  DXE_RegisterWrite                       RegisterWrite;
  DXE_HybridSystemLevelEmulationEnabled   HybridSystemLevelEmulationEnabled;
  DXE_SataDevNumber                       SataDevNumber;
  DXE_SataFuncNumber                      SataFuncNumber;
  DXE_PmcGetAcpiBase                      PmcGetAcpiBase;
  DXE_PchGetPmcBaseByPchId                PchGetPmcBaseByPchId;
  DXE_SetBiosInfoFlagWpe                  SetBiosInfoFlagWpe;
  DXE_ProgramGenProtRangeRegs             ProgramGenProtRangeRegs;
  DXE_ProgramImrRegs                      ProgramImrRegs;
  DXE_ProgramImr2Regs                     ProgramImr2Regs;
  DXE_CheckAndPopulateIedTraceMemory      CheckAndPopulateIedTraceMemory;
  DXE_ReadScratchpad7                     ReadScratchpad7;
} DYNAMIC_SI_LIBARY_PROTOCOL;
 
extern EFI_GUID gDynamicSiLibraryProtocolGuid;
 
#endif // _DYNAMIC_SI_LIBARY_PROTOCOL_H_