]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Protocol/PlatformMemTest/PlatformMemTest.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Protocol / PlatformMemTest / PlatformMemTest.h
CommitLineData
3eb9473e 1\r
2 /*++\r
3\r
f57387d5
HT
4Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>\r
5This program and the accompanying materials \r
3eb9473e 6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
12\r
13Module Name:\r
14\r
15 PlatformMemtest.h\r
16\r
17Abstract:\r
18 This files defines the protocol produced by platform memory test driver.\r
19 \r
20--*/\r
21\r
22#ifndef __PLATFORM_MEMTEST_H__\r
23#define __PLATFORM_MEMTEST_H__\r
24\r
c7f33ca4 25#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
26#include EFI_PROTOCOL_CONSUMER (HiiDatabase)\r
27#else\r
3eb9473e 28#include EFI_PROTOCOL_CONSUMER (Hii)\r
c7f33ca4 29#endif\r
3eb9473e 30#include EFI_PROTOCOL_CONSUMER (GenericMemoryTest)\r
31\r
32\r
33#define EFI_PLATFORM_MEMTEST_PROTOCOL_GUID \\r
7ccf38a3 34 { 0x859ba18, 0x7dd7, 0x4ed7, {0xa8, 0x8e, 0x10, 0x9c, 0x63, 0x91, 0x7b, 0xdd} }\r
3eb9473e 35\r
36//\r
37// Forward reference for pure ANSI compatability\r
38//\r
39EFI_FORWARD_DECLARATION (EFI_PLATFORM_MEMTEST_PROTOCOL);\r
40\r
41\r
42// \r
43// Basic type definitions\r
44//\r
45typedef UINT16 EFI_DIMM_ID; \r
46#define EFI_INVALID_DIMM_ID 0xFFFF\r
47\r
48//\r
49// This describes the capabilities\r
50//\r
51typedef struct {\r
52 UINT32 HwCap;\r
53 EFI_PHYSICAL_ADDRESS InitBlockSize;\r
54 EFI_PHYSICAL_ADDRESS TestBlockSize; \r
55} EFI_PLATFORM_MEMTEST_CAPABILITIES;\r
56\r
57//\r
58// This defines the platform driver phases to use in notify phase \r
59//\r
60typedef enum {\r
61 EfiMemtestPhaseBegin,\r
62 EfiMemtestPhaseEnd,\r
63 EfiMemtestPhaseMaximum \r
64} EFI_MEMTEST_PHASE ;\r
65\r
66\r
67//\r
68// Definitions of Capability bits\r
69//\r
70#define EFI_MEMTEST_CAP_NONE 0X00000000 \r
71#define EFI_MEMTEST_CAP_ECC 0X00000001 \r
72#define EFI_MEMTEST_CAP_HW_TEST 0X00000002 \r
73#define EFI_MEMTEST_CAP_HW_INIT 0X00000004 \r
74\r
75//\r
76// This describes the pattern for testing all memory cells\r
77//\r
78typedef struct {\r
79 UINT32 Count; // Number of patterns\r
80 UINT32 Width; // Width of patterns\r
81 VOID *Pattern; // Array of patterns\r
82}EFI_MEMTEST_DATA_PATTERN;\r
83\r
84//\r
85// This describes the data and address line patterns\r
86//\r
87typedef struct {\r
88 UINT32 Count; // Number of patterns\r
89 EFI_PHYSICAL_ADDRESS *Address; // Array of addresses\r
90 EFI_PHYSICAL_ADDRESS *Pattern; // Array of patterns\r
91} EFI_MEMTEST_ADDRESS_PATTERN;\r
92\r
93\r
94#define EFI_INVALID_DIMM_ID 0xFFFF\r
95\r
96//\r
97// DIMM information exported by the platform driver\r
98//\r
99\r
100typedef struct { \r
101 EFI_DIMM_ID DimmId; \r
102 STRING_REF DimmReference;\r
103} EFI_MEMTEST_DIMM_INFO;\r
104\r
105\r
106//\r
107// Various types of errors\r
108//\r
109typedef enum {\r
110 EfiMemtestCorrectableError = 1,\r
111 EfiMemtestUncorrectableError,\r
70d18ad1 112 EfiMemtestErrorMaximum\r
3eb9473e 113} EFI_DIMM_ERROR;\r
114\r
115//\r
116// Actions to be taken. \r
117//\r
118typedef enum {\r
119 EfiMemtestActionReport = 1,\r
120 EfiMemtestActionDisableMem,\r
70d18ad1 121 EfiMemtestActionMaximum\r
3eb9473e 122} EFI_MEMTEST_ERROR_ACTION;\r
123\r
124\r
125//\r
126// Structure indicating a policy entry.\r
127//\r
128\r
129typedef struct {\r
130 EFI_DIMM_ERROR ErrorType;\r
131 UINT32 Threshold;\r
132 EFI_MEMTEST_ERROR_ACTION Action;\r
133} EFI_MEMTEST_POLICY_ENTRY;\r
134\r
135\r
136\r
137//\r
138// Error Information.\r
139//\r
140typedef struct {\r
141 EFI_DIMM_ERROR Error;\r
142 EFI_DIMM_ID DimmId;\r
143} EFI_PLATFORM_MEMTEST_ERROR;\r
144\r
145\r
146typedef\r
147EFI_STATUS\r
148(EFIAPI *EFI_PLATFORM_MEMTEST_NOTIFY_PHASE) (\r
149 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
150 IN EFI_MEMTEST_PHASE Phase\r
151 );\r
152\r
153typedef\r
154EFI_STATUS\r
155(EFIAPI *EFI_PLATFORM_MEMTEST_GET_PLATFORM_INFO) (\r
156 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
157 OUT EFI_PLATFORM_MEMTEST_CAPABILITIES *Capabilities,\r
158 OUT EFI_MEMTEST_ADDRESS_PATTERN *AddressPattern,\r
159 OUT EFI_MEMTEST_DATA_PATTERN *DataPattern,\r
160 OUT EFI_MEMTEST_DATA_PATTERN *MemoryPattern,\r
161 OUT UINT32 *EntryCount,\r
162 OUT EFI_MEMTEST_POLICY_ENTRY **PolicyGrid\r
163 );\r
164\r
165typedef\r
166EFI_STATUS\r
167(EFIAPI * EFI_PLATFORM_MEMTEST_GET_NEXT_DIMM_INFO) (\r
168 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
169 IN OUT EFI_MEMTEST_DIMM_INFO *DimmInfo\r
170 );\r
171\r
172typedef\r
173EFI_STATUS\r
174(EFIAPI *EFI_PLATFORM_MEMTEST_INITIALIZE_MEMORY) (\r
175 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
176 IN EFI_PHYSICAL_ADDRESS Start,\r
177 IN EFI_PHYSICAL_ADDRESS Size\r
178 );\r
179\r
180typedef\r
181EFI_STATUS\r
182(EFIAPI * EFI_PLATFORM_MEMTEST_HW_MEMORY_TEST) (\r
183 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
184 IN EXTENDMEM_COVERAGE_LEVEL Level,\r
185 IN EFI_PHYSICAL_ADDRESS Start,\r
186 IN EFI_PHYSICAL_ADDRESS Size,\r
187 OUT UINTN *ErrorCount,\r
188 OUT EFI_PLATFORM_MEMTEST_ERROR **ErrorInfo\r
189 );\r
190\r
191typedef\r
192EFI_STATUS\r
193(EFIAPI * EFI_PLATFORM_MEMTEST_FLUSH_BUFFER) (\r
194 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This\r
195 );\r
196\r
197typedef\r
198EFI_STATUS\r
199(EFIAPI * EFI_PLATFORM_MEMTEST_CHECK_FOR_ERROR) (\r
200 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
201 OUT UINT32 *ErrorCount,\r
202 OUT EFI_PLATFORM_MEMTEST_ERROR **ErrorInfo\r
203\r
204 );\r
205\r
206typedef\r
207EFI_STATUS\r
208(EFIAPI * EFI_PLATFORM_MEMTEST_LOCATE_BAD_DIMM) (\r
209 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
210 IN EFI_PHYSICAL_ADDRESS FailingAddress,\r
211 IN UINT8 Expected,\r
212 IN UINT8 Found,\r
213 OUT UINT32 *ErrorInfoCount,\r
214 OUT EFI_PLATFORM_MEMTEST_ERROR **ErrorInfoBuffer\r
215 );\r
216\r
217typedef\r
218EFI_STATUS\r
219(EFIAPI * EFI_PLATFORM_MEMTEST_CLEAR_ERROR) (\r
220 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This\r
221 );\r
222\r
223typedef\r
224EFI_STATUS\r
225(EFIAPI * EFI_PLATFORM_MEMTEST_DISABLE_DIMM) (\r
226 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
227 IN UINT16 *DimmCount,\r
228 IN EFI_DIMM_ID *DimmIds,\r
229 IN BOOLEAN RebootRequired\r
230\r
231 );\r
232\r
233typedef\r
234EFI_STATUS\r
235(EFIAPI * EFI_PLATFORM_MEMTEST_OVERLAP) (\r
236 IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,\r
237 IN EFI_DIMM_ID DimmId, \r
238 IN EFI_PHYSICAL_ADDRESS start,\r
239 IN EFI_PHYSICAL_ADDRESS Size,\r
240 OUT BOOLEAN *Overlap\r
241 );\r
242\r
9c092841 243struct _EFI_PLATFORM_MEMTEST_PROTOCOL {\r
3eb9473e 244 EFI_PLATFORM_MEMTEST_NOTIFY_PHASE NotifyPhase;\r
245 EFI_PLATFORM_MEMTEST_GET_PLATFORM_INFO GetPlatformInfo;\r
246 EFI_PLATFORM_MEMTEST_GET_NEXT_DIMM_INFO GetNextDimmInfo;\r
247 EFI_PLATFORM_MEMTEST_INITIALIZE_MEMORY InitializeMem;\r
248 EFI_PLATFORM_MEMTEST_HW_MEMORY_TEST HwTest;\r
249 EFI_PLATFORM_MEMTEST_FLUSH_BUFFER FlushBuffer;\r
250 EFI_PLATFORM_MEMTEST_CHECK_FOR_ERROR CheckError;\r
251 EFI_PLATFORM_MEMTEST_LOCATE_BAD_DIMM LocateBadDimm;\r
252 EFI_PLATFORM_MEMTEST_CLEAR_ERROR ClearError;\r
253 EFI_PLATFORM_MEMTEST_DISABLE_DIMM DisableDimm;\r
254 EFI_PLATFORM_MEMTEST_OVERLAP Overlap;\r
9c092841 255};\r
3eb9473e 256\r
257\r
258\r
259extern EFI_GUID gEfiPlatformMemTestGuid;\r
260\r
261#endif\r