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