c9bd2dcf5de64699dd0f0ff309b0d275111ec4b8
[mirror_edk2.git] / MdePkg / Include / Common / DataHubRecords.h
1 /** @file
2 This file defines GUIDs and associated data structures for records posted to the Data Hub.
3 The producers of these records use these definitions to construct records.
4 The consumers of these records use these definitions to retrieve, filter and parse records.
5
6 Copyright (c) 2006, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 Module Name: DataHubRecords.h
16
17 @par Revision Reference:
18 DataHubRecord.h include all data hub sub class defitions from Cache subclass
19 spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9, Processor
20 Subclass spec 0.9,Misc SubClass spec 0.9.
21
22 **/
23
24 #ifndef _DATAHUB_RECORDS_H_
25 #define _DATAHUB_RECORDS_H_
26
27 #define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000
28
29
30 #pragma pack(1)
31
32 typedef struct _USB_PORT_DEVICE_PATH {
33 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
34 PCI_DEVICE_PATH PciBusDevicePath;
35 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
36 } USB_PORT_DEVICE_PATH;
37
38 //
39 // IDE
40 //
41 typedef struct _IDE_DEVICE_PATH {
42 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
43 PCI_DEVICE_PATH PciBusDevicePath;
44 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
45 } IDE_DEVICE_PATH;
46
47 //
48 // RMC Connector
49 //
50 typedef struct _RMC_CONN_DEVICE_PATH {
51 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
52 PCI_DEVICE_PATH PciBridgeDevicePath;
53 PCI_DEVICE_PATH PciBusDevicePath;
54 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
55 } RMC_CONN_DEVICE_PATH;
56
57 //
58 // RIDE
59 //
60 typedef struct _RIDE_DEVICE_PATH {
61 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
62 PCI_DEVICE_PATH PciBridgeDevicePath;
63 PCI_DEVICE_PATH PciBusDevicePath;
64 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
65 } RIDE_DEVICE_PATH;
66
67 //
68 // Gigabit NIC
69 //
70 typedef struct _GB_NIC_DEVICE_PATH {
71 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
72 PCI_DEVICE_PATH PciBridgeDevicePath;
73 PCI_DEVICE_PATH PciXBridgeDevicePath;
74 PCI_DEVICE_PATH PciXBusDevicePath;
75 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
76 } GB_NIC_DEVICE_PATH;
77
78 //
79 // P/S2 Connector
80 //
81 typedef struct _PS2_CONN_DEVICE_PATH {
82 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
83 PCI_DEVICE_PATH LpcBridgeDevicePath;
84 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
85 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
86 } PS2_CONN_DEVICE_PATH;
87
88 //
89 // Serial Port Connector
90 //
91 typedef struct _SERIAL_CONN_DEVICE_PATH {
92 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
93 PCI_DEVICE_PATH LpcBridgeDevicePath;
94 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
95 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
96 } SERIAL_CONN_DEVICE_PATH;
97
98 //
99 // Parallel Port Connector
100 //
101 typedef struct _PARALLEL_CONN_DEVICE_PATH {
102 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
103 PCI_DEVICE_PATH LpcBridgeDevicePath;
104 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
105 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
106 } PARALLEL_CONN_DEVICE_PATH;
107
108 //
109 // Floopy Connector
110 //
111 typedef struct _FLOOPY_CONN_DEVICE_PATH {
112 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
113 PCI_DEVICE_PATH LpcBridgeDevicePath;
114 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
115 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
116 } FLOOPY_CONN_DEVICE_PATH;
117
118 typedef union _EFI_MISC_PORT_DEVICE_PATH {
119 USB_PORT_DEVICE_PATH UsbDevicePath;
120 IDE_DEVICE_PATH IdeDevicePath;
121 RMC_CONN_DEVICE_PATH RmcConnDevicePath;
122 RIDE_DEVICE_PATH RideDevicePath;
123 GB_NIC_DEVICE_PATH GbNicDevicePath;
124 PS2_CONN_DEVICE_PATH Ps2ConnDevicePath;
125 SERIAL_CONN_DEVICE_PATH SerialConnDevicePath;
126 PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;
127 FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath;
128 } EFI_MISC_PORT_DEVICE_PATH;
129
130 #pragma pack()
131
132 //
133 // String Token Definition
134 //
135 #define EFI_STRING_TOKEN UINT16
136
137 typedef struct {
138 UINT32 Version;
139 UINT32 HeaderSize;
140 UINT16 Instance;
141 UINT16 SubInstance;
142 UINT32 RecordType;
143 } EFI_SUBCLASS_TYPE1_HEADER;
144
145 typedef struct {
146 EFI_GUID ProducerName;
147 UINT16 Instance;
148 UINT16 SubInstance;
149 } EFI_INTER_LINK_DATA;
150
151
152 //
153 // EXP data
154 //
155
156 typedef struct {
157 UINT16 Value;
158 UINT16 Exponent;
159 } EFI_EXP_BASE2_DATA;
160
161
162 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;
163
164 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;
165
166 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA;
167
168 typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;
169
170 typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;
171
172 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA;
173
174 typedef STRING_REF EFI_PROCESSOR_VERSION_DATA;
175
176 typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA;
177
178 typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA;
179
180 typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA;
181
182 typedef struct {
183 UINT32 ProcessorSteppingId:4;
184 UINT32 ProcessorModel: 4;
185 UINT32 ProcessorFamily: 4;
186 UINT32 ProcessorType: 2;
187 UINT32 ProcessorReserved1: 2;
188 UINT32 ProcessorXModel: 4;
189 UINT32 ProcessorXFamily: 8;
190 UINT32 ProcessorReserved2: 4;
191 } EFI_PROCESSOR_SIGNATURE;
192
193 typedef struct {
194 UINT32 ProcessorBrandIndex :8;
195 UINT32 ProcessorClflush :8;
196 UINT32 ProcessorReserved :8;
197 UINT32 ProcessorDfltApicId :8;
198 } EFI_PROCESSOR_MISC_INFO;
199
200 typedef struct {
201 UINT32 ProcessorFpu: 1;
202 UINT32 ProcessorVme: 1;
203 UINT32 ProcessorDe: 1;
204 UINT32 ProcessorPse: 1;
205 UINT32 ProcessorTsc: 1;
206 UINT32 ProcessorMsr: 1;
207 UINT32 ProcessorPae: 1;
208 UINT32 ProcessorMce: 1;
209 UINT32 ProcessorCx8: 1;
210 UINT32 ProcessorApic: 1;
211 UINT32 ProcessorReserved1: 1;
212 UINT32 ProcessorSep: 1;
213 UINT32 ProcessorMtrr: 1;
214 UINT32 ProcessorPge: 1;
215 UINT32 ProcessorMca: 1;
216 UINT32 ProcessorCmov: 1;
217 UINT32 ProcessorPat: 1;
218 UINT32 ProcessorPse36: 1;
219 UINT32 ProcessorPsn: 1;
220 UINT32 ProcessorClfsh: 1;
221 UINT32 ProcessorReserved2: 1;
222 UINT32 ProcessorDs: 1;
223 UINT32 ProcessorAcpi: 1;
224 UINT32 ProcessorMmx: 1;
225 UINT32 ProcessorFxsr: 1;
226 UINT32 ProcessorSse: 1;
227 UINT32 ProcessorSse2: 1;
228 UINT32 ProcessorSs: 1;
229 UINT32 ProcessorReserved3: 1;
230 UINT32 ProcessorTm: 1;
231 UINT32 ProcessorReserved4: 2;
232 } EFI_PROCESSOR_FEATURE_FLAGS;
233
234 typedef struct {
235 EFI_PROCESSOR_SIGNATURE Signature;
236 EFI_PROCESSOR_MISC_INFO MiscInfo;
237 UINT32 Reserved;
238 EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;
239 } EFI_PROCESSOR_ID_DATA;
240
241 typedef enum {
242 EfiProcessorOther = 1,
243 EfiProcessorUnknown = 2,
244 EfiCentralProcessor = 3,
245 EfiMathProcessor = 4,
246 EfiDspProcessor = 5,
247 EfiVideoProcessor = 6
248 } EFI_PROCESSOR_TYPE_DATA;
249
250 typedef enum {
251 EfiProcessorFamilyOther = 1,
252 EfiProcessorFamilyUnknown = 2,
253 EfiProcessorFamily8086 = 3,
254 EfiProcessorFamily80286 = 4,
255 EfiProcessorFamilyIntel386 = 5,
256 EfiProcessorFamilyIntel486 = 6,
257 EfiProcessorFamily8087 = 7,
258 EfiProcessorFamily80287 = 8,
259 EfiProcessorFamily80387 = 9,
260 EfiProcessorFamily80487 = 0x0A,
261 EfiProcessorFamilyPentium = 0x0B,
262 EfiProcessorFamilyPentiumPro = 0x0C,
263 EfiProcessorFamilyPentiumII = 0x0D,
264 EfiProcessorFamilyPentiumMMX = 0x0E,
265 EfiProcessorFamilyCeleron = 0x0F,
266 EfiProcessorFamilyPentiumIIXeon = 0x10,
267 EfiProcessorFamilyPentiumIII = 0x11,
268 EfiProcessorFamilyM1 = 0x12,
269 EfiProcessorFamilyM1Reserved1 = 0x13,
270 EfiProcessorFamilyM1Reserved2 = 0x14,
271 EfiProcessorFamilyM1Reserved3 = 0x15,
272 EfiProcessorFamilyM1Reserved4 = 0x16,
273 EfiProcessorFamilyM1Reserved5 = 0x17,
274 EfiProcessorFamilyM1Reserved6 = 0x18,
275 EfiProcessorFamilyK5 = 0x19,
276 EfiProcessorFamilyK5Reserved1 = 0x1A,
277 EfiProcessorFamilyK5Reserved2 = 0x1B,
278 EfiProcessorFamilyK5Reserved3 = 0x1C,
279 EfiProcessorFamilyK5Reserved4 = 0x1D,
280 EfiProcessorFamilyK5Reserved5 = 0x1E,
281 EfiProcessorFamilyK5Reserved6 = 0x1F,
282 EfiProcessorFamilyPowerPC = 0x20,
283 EfiProcessorFamilyPowerPC601 = 0x21,
284 EfiProcessorFamilyPowerPC603 = 0x22,
285 EfiProcessorFamilyPowerPC603Plus = 0x23,
286 EfiProcessorFamilyPowerPC604 = 0x24,
287 EfiProcessorFamilyAlpha2 = 0x30,
288 EfiProcessorFamilyMips = 0x40,
289 EfiProcessorFamilySparc = 0x50,
290 EfiProcessorFamily68040 = 0x60,
291 EfiProcessorFamily68xxx = 0x61,
292 EfiProcessorFamily68000 = 0x62,
293 EfiProcessorFamily68010 = 0x63,
294 EfiProcessorFamily68020 = 0x64,
295 EfiProcessorFamily68030 = 0x65,
296 EfiProcessorFamilyHobbit = 0x70,
297 EfiProcessorFamilyWeitek = 0x80,
298 EfiProcessorFamilyPARISC = 0x90,
299 EfiProcessorFamilyV30 = 0xA0,
300 EfiProcessorFamilyPentiumIIIXeon = 0xB0,
301 EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,
302 EfiProcessorFamilyPentium4 = 0xB2,
303 EfiProcessorFamilyIntelXeon = 0xB3,
304 EfiProcessorFamilyAS400 = 0xB4,
305 EfiProcessorFamilyIntelXeonMP = 0xB5,
306 EfiProcessorFamilyAMDAthlonXP = 0xB6,
307 EfiProcessorFamilyAMDAthlonMP = 0xB7,
308 EfiProcessorFamilyIBM390 = 0xC8,
309 EfiProcessorFamilyG4 = 0xC9,
310 EfiProcessorFamilyG5 = 0xCA,
311 EfiProcessorFamilyi860 = 0xFA,
312 EfiProcessorFamilyi960 = 0xFB
313 } EFI_PROCESSOR_FAMILY_DATA;
314
315 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;
316
317 typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;
318
319 typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;
320
321 typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;
322
323 typedef enum {
324 EfiProcessorIa32Microcode = 1,
325 EfiProcessorIpfPalAMicrocode = 2,
326 EfiProcessorIpfPalBMicrocode = 3
327 } EFI_PROCESSOR_MICROCODE_TYPE;
328
329 typedef struct {
330 EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType;
331 UINT32 ProcessorMicrocodeRevisionNumber;
332 } EFI_PROCESSOR_MICROCODE_REVISION_DATA;
333
334 typedef struct {
335 UINT32 CpuStatus :3;
336 UINT32 Reserved1 :3;
337 UINT32 SocketPopulated :1;
338 UINT32 Reserved2 :1;
339 UINT32 ApicEnable :1;
340 UINT32 BootApplicationProcessor :1;
341 UINT32 Reserved3 :22;
342 } EFI_PROCESSOR_STATUS_DATA;
343
344 typedef enum {
345 EfiCpuStatusUnknown = 0,
346 EfiCpuStatusEnabled = 1,
347 EfiCpuStatusDisabledByUser = 2,
348 EfiCpuStatusDisabledbyBios = 3,
349 EfiCpuStatusIdle = 4,
350 EfiCpuStatusOther = 7
351 } EFI_CPU_STATUS;
352
353 typedef enum {
354 EfiProcessorSocketOther = 1,
355 EfiProcessorSocketUnknown = 2,
356 EfiProcessorSocketDaughterBoard = 3,
357 EfiProcessorSocketZIF = 4,
358 EfiProcessorSocketReplacePiggyBack = 5,
359 EfiProcessorSocketNone = 6,
360 EfiProcessorSocketLIF = 7,
361 EfiProcessorSocketSlot1 = 8,
362 EfiProcessorSocketSlot2 = 9,
363 EfiProcessorSocket370Pin = 0xA,
364 EfiProcessorSocketSlotA = 0xB,
365 EfiProcessorSocketSlotM = 0xC,
366 EfiProcessorSocket423 = 0xD,
367 EfiProcessorSocketA462 = 0xE,
368 EfiProcessorSocket478 = 0xF,
369 EfiProcessorSocket754 = 0x10,
370 EfiProcessorSocket940 = 0x11,
371 EfiProcessorSocketLG775 = 0x12
372
373 } EFI_PROCESSOR_SOCKET_TYPE_DATA;
374
375 typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;
376
377 typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;
378
379 typedef enum {
380 EfiProcessorHealthy = 1,
381 EfiProcessorPerfRestricted = 2,
382 EfiProcessorFuncRestricted = 3
383 } EFI_PROCESSOR_HEALTH_STATUS;
384
385 typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;
386
387
388 typedef enum {
389 ProcessorCoreFrequencyRecordType = 1,
390 ProcessorFsbFrequencyRecordType = 2,
391 ProcessorVersionRecordType = 3,
392 ProcessorManufacturerRecordType = 4,
393 ProcessorSerialNumberRecordType = 5,
394 ProcessorIdRecordType = 6,
395 ProcessorTypeRecordType = 7,
396 ProcessorFamilyRecordType = 8,
397 ProcessorVoltageRecordType = 9,
398 ProcessorApicBaseAddressRecordType = 10,
399 ProcessorApicIdRecordType = 11,
400 ProcessorApicVersionNumberRecordType = 12,
401 CpuUcodeRevisionDataRecordType = 13,
402 ProcessorStatusRecordType = 14,
403 ProcessorSocketTypeRecordType = 15,
404 ProcessorSocketNameRecordType = 16,
405 CacheAssociationRecordType = 17,
406 ProcessorMaxCoreFrequencyRecordType = 18,
407 ProcessorAssetTagRecordType = 19,
408 ProcessorMaxFsbFrequencyRecordType = 20,
409 ProcessorPackageNumberRecordType = 21,
410 ProcessorCoreFrequencyListRecordType = 22,
411 ProcessorFsbFrequencyListRecordType = 23,
412 ProcessorHealthStatusRecordType = 24
413 } EFI_CPU_VARIABLE_RECORD_TYPE;
414
415 typedef union {
416 EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;
417 EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;
418 EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber;
419 EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency;
420 EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency;
421 EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency;
422 EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency;
423 EFI_PROCESSOR_VERSION_DATA ProcessorVersion;
424 EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer;
425 EFI_PROCESSOR_ID_DATA ProcessorId;
426 EFI_PROCESSOR_TYPE_DATA ProcessorType;
427 EFI_PROCESSOR_FAMILY_DATA ProcessorFamily;
428 EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage;
429 EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase;
430 EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId;
431 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber;
432 EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData;
433 EFI_PROCESSOR_STATUS_DATA ProcessorStatus;
434 EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType;
435 EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName;
436 EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag;
437 EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus;
438 EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber;
439 } EFI_CPU_VARIABLE_RECORD;
440
441 typedef struct {
442 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;
443 EFI_CPU_VARIABLE_RECORD VariableRecord;
444 } EFI_CPU_DATA_RECORD;
445
446 #define EFI_CACHE_SUBCLASS_VERSION 0x00010000
447
448
449 typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA;
450
451 typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA;
452
453 typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;
454
455 typedef STRING_REF EFI_CACHE_SOCKET_DATA;
456
457 typedef struct {
458 UINT32 Other :1;
459 UINT32 Unknown :1;
460 UINT32 NonBurst :1;
461 UINT32 Burst :1;
462 UINT32 PipelineBurst :1;
463 UINT32 Asynchronous :1;
464 UINT32 Synchronous :1;
465 UINT32 Reserved :25;
466 } EFI_CACHE_SRAM_TYPE_DATA;
467
468 typedef enum {
469 EfiCacheErrorOther = 1,
470 EfiCacheErrorUnknown = 2,
471 EfiCacheErrorNone = 3,
472 EfiCacheErrorParity = 4,
473 EfiCacheErrorSingleBit = 5,
474 EfiCacheErrorMultiBit = 6
475 } EFI_CACHE_ERROR_TYPE_DATA;
476
477 typedef enum {
478 EfiCacheTypeOther = 1,
479 EfiCacheTypeUnknown = 2,
480 EfiCacheTypeInstruction = 3,
481 EfiCacheTypeData = 4,
482 EfiCacheTypeUnified = 5
483 } EFI_CACHE_TYPE_DATA;
484
485 typedef enum {
486 EfiCacheAssociativityOther = 1,
487 EfiCacheAssociativityUnknown = 2,
488 EfiCacheAssociativityDirectMapped = 3,
489 EfiCacheAssociativity2Way = 4,
490 EfiCacheAssociativity4Way = 5,
491 EfiCacheAssociativityFully = 6,
492 EfiCacheAssociativity8Way = 7,
493 EfiCacheAssociativity16Way = 8
494 } EFI_CACHE_ASSOCIATIVITY_DATA;
495
496 typedef struct {
497 UINT32 Level :3;
498 UINT32 Socketed :1;
499 UINT32 Reserved2 :1;
500 UINT32 Location :2;
501 UINT32 Enable :1;
502 UINT32 OperationalMode :2;
503 UINT32 Reserved1 :22;
504 } EFI_CACHE_CONFIGURATION_DATA;
505
506 #define EFI_CACHE_L1 1
507 #define EFI_CACHE_L2 2
508 #define EFI_CACHE_L3 3
509 #define EFI_CACHE_L4 4
510 #define EFI_CACHE_LMAX EFI_CACHE_L4
511
512 #define EFI_CACHE_SOCKETED 1
513 #define EFI_CACHE_NOT_SOCKETED 0
514
515 typedef enum {
516 EfiCacheInternal = 0,
517 EfiCacheExternal = 1,
518 EfiCacheReserved = 2,
519 EfiCacheUnknown = 3
520 } EFI_CACHE_LOCATION;
521
522 #define EFI_CACHE_ENABLED 1
523 #define EFI_CACHE_DISABLED 0
524
525 typedef enum {
526 EfiCacheWriteThrough = 0,
527 EfiCacheWriteBack = 1,
528 EfiCacheDynamicMode = 2,
529 EfiCacheUnknownMode = 3
530 } EFI_CACHE_OPERATIONAL_MODE;
531
532
533
534 typedef enum {
535 CacheSizeRecordType = 1,
536 MaximumSizeCacheRecordType = 2,
537 CacheSpeedRecordType = 3,
538 CacheSocketRecordType = 4,
539 CacheSramTypeRecordType = 5,
540 CacheInstalledSramTypeRecordType = 6,
541 CacheErrorTypeRecordType = 7,
542 CacheTypeRecordType = 8,
543 CacheAssociativityRecordType = 9,
544 CacheConfigRecordType = 10
545 } EFI_CACHE_VARIABLE_RECORD_TYPE;
546
547
548 typedef union {
549 EFI_CACHE_SIZE_DATA CacheSize;
550 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;
551 EFI_CACHE_SPEED_DATA CacheSpeed;
552 EFI_CACHE_SOCKET_DATA CacheSocket;
553 EFI_CACHE_SRAM_TYPE_DATA CacheSramType;
554 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;
555 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;
556 EFI_CACHE_TYPE_DATA CacheType;
557 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;
558 EFI_CACHE_CONFIGURATION_DATA CacheConfig;
559 EFI_CACHE_ASSOCIATION_DATA CacheAssociation;
560 } EFI_CACHE_VARIABLE_RECORD;
561
562 typedef struct {
563 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;
564 EFI_CACHE_VARIABLE_RECORD VariableRecord;
565 } EFI_CACHE_DATA_RECORD;
566
567 #define EFI_MEMORY_SUBCLASS_VERSION 0x0100
568
569
570 #define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001
571
572 typedef enum _EFI_MEMORY_REGION_TYPE {
573 EfiMemoryRegionMemory = 0x01,
574 EfiMemoryRegionReserved = 0x02,
575 EfiMemoryRegionAcpi = 0x03,
576 EfiMemoryRegionNvs = 0x04
577 } EFI_MEMORY_REGION_TYPE;
578
579 typedef struct {
580 UINT32 ProcessorNumber;
581 UINT16 StartBusNumber;
582 UINT16 EndBusNumber;
583 EFI_MEMORY_REGION_TYPE MemoryRegionType;
584 EFI_EXP_BASE2_DATA MemorySize;
585 EFI_PHYSICAL_ADDRESS MemoryStartAddress;
586 } EFI_MEMORY_SIZE_DATA;
587
588
589 #define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002
590
591 typedef enum _EFI_MEMORY_ARRAY_LOCATION {
592 EfiMemoryArrayLocationOther = 0x01,
593 EfiMemoryArrayLocationUnknown = 0x02,
594 EfiMemoryArrayLocationSystemBoard = 0x03,
595 EfiMemoryArrayLocationIsaAddonCard = 0x04,
596 EfiMemoryArrayLocationEisaAddonCard = 0x05,
597 EfiMemoryArrayLocationPciAddonCard = 0x06,
598 EfiMemoryArrayLocationMcaAddonCard = 0x07,
599 EfiMemoryArrayLocationPcmciaAddonCard = 0x08,
600 EfiMemoryArrayLocationProprietaryAddonCard = 0x09,
601 EfiMemoryArrayLocationNuBus = 0x0A,
602 EfiMemoryArrayLocationPc98C20AddonCard = 0xA0,
603 EfiMemoryArrayLocationPc98C24AddonCard = 0xA1,
604 EfiMemoryArrayLocationPc98EAddonCard = 0xA2,
605 EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3
606 } EFI_MEMORY_ARRAY_LOCATION;
607
608 typedef enum _EFI_MEMORY_ARRAY_USE {
609 EfiMemoryArrayUseOther = 0x01,
610 EfiMemoryArrayUseUnknown = 0x02,
611 EfiMemoryArrayUseSystemMemory = 0x03,
612 EfiMemoryArrayUseVideoMemory = 0x04,
613 EfiMemoryArrayUseFlashMemory = 0x05,
614 EfiMemoryArrayUseNonVolatileRam = 0x06,
615 EfiMemoryArrayUseCacheMemory = 0x07,
616 } EFI_MEMORY_ARRAY_USE;
617
618 typedef enum _EFI_MEMORY_ERROR_CORRECTION {
619 EfiMemoryErrorCorrectionOther = 0x01,
620 EfiMemoryErrorCorrectionUnknown = 0x02,
621 EfiMemoryErrorCorrectionNone = 0x03,
622 EfiMemoryErrorCorrectionParity = 0x04,
623 EfiMemoryErrorCorrectionSingleBitEcc = 0x05,
624 EfiMemoryErrorCorrectionMultiBitEcc = 0x06,
625 EfiMemoryErrorCorrectionCrc = 0x07,
626 } EFI_MEMORY_ERROR_CORRECTION;
627
628 typedef struct {
629 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;
630 EFI_MEMORY_ARRAY_USE MemoryArrayUse;
631 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;
632 EFI_EXP_BASE2_DATA MaximumMemoryCapacity;
633 UINT16 NumberMemoryDevices;
634 } EFI_MEMORY_ARRAY_LOCATION_DATA;
635
636
637 #define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003
638
639 typedef enum _EFI_MEMORY_FORM_FACTOR {
640 EfiMemoryFormFactorOther = 0x01,
641 EfiMemoryFormFactorUnknown = 0x02,
642 EfiMemoryFormFactorSimm = 0x03,
643 EfiMemoryFormFactorSip = 0x04,
644 EfiMemoryFormFactorChip = 0x05,
645 EfiMemoryFormFactorDip = 0x06,
646 EfiMemoryFormFactorZip = 0x07,
647 EfiMemoryFormFactorProprietaryCard = 0x08,
648 EfiMemoryFormFactorDimm = 0x09,
649 EfiMemoryFormFactorTsop = 0x0A,
650 EfiMemoryFormFactorRowOfChips = 0x0B,
651 EfiMemoryFormFactorRimm = 0x0C,
652 EfiMemoryFormFactorSodimm = 0x0D,
653 EfiMemoryFormFactorSrimm = 0x0E,
654 EfiMemoryFormFactorFbDimm = 0x0F
655 } EFI_MEMORY_FORM_FACTOR;
656
657 typedef enum _EFI_MEMORY_ARRAY_TYPE {
658 EfiMemoryTypeOther = 0x01,
659 EfiMemoryTypeUnknown = 0x02,
660 EfiMemoryTypeDram = 0x03,
661 EfiMemoryTypeEdram = 0x04,
662 EfiMemoryTypeVram = 0x05,
663 EfiMemoryTypeSram = 0x06,
664 EfiMemoryTypeRam = 0x07,
665 EfiMemoryTypeRom = 0x08,
666 EfiMemoryTypeFlash = 0x09,
667 EfiMemoryTypeEeprom = 0x0A,
668 EfiMemoryTypeFeprom = 0x0B,
669 EfiMemoryTypeEprom = 0x0C,
670 EfiMemoryTypeCdram = 0x0D,
671 EfiMemoryType3Dram = 0x0E,
672 EfiMemoryTypeSdram = 0x0F,
673 EfiMemoryTypeSgram = 0x10,
674 EfiMemoryTypeRdram = 0x11,
675 EfiMemoryTypeDdr = 0x12,
676 EfiMemoryTypeDdr2 = 0x13,
677 EfiMemoryTypeDdr2FbDimm = 0x14
678 } EFI_MEMORY_ARRAY_TYPE;
679
680 typedef struct {
681 UINT32 Reserved :1;
682 UINT32 Other :1;
683 UINT32 Unknown :1;
684 UINT32 FastPaged :1;
685 UINT32 StaticColumn :1;
686 UINT32 PseudoStatic :1;
687 UINT32 Rambus :1;
688 UINT32 Synchronous :1;
689 UINT32 Cmos :1;
690 UINT32 Edo :1;
691 UINT32 WindowDram :1;
692 UINT32 CacheDram :1;
693 UINT32 Nonvolatile :1;
694 UINT32 Reserved1 :19;
695 } EFI_MEMORY_TYPE_DETAIL;
696
697 typedef enum {
698 EfiMemoryStateEnabled = 0,
699 EfiMemoryStateUnknown = 1,
700 EfiMemoryStateUnsupported = 2,
701 EfiMemoryStateError = 3,
702 EfiMemoryStateAbsent = 4,
703 EfiMemoryStateDisabled = 5,
704 EfiMemoryStatePartial = 6
705 } EFI_MEMORY_STATE;
706
707 typedef struct {
708 STRING_REF MemoryDeviceLocator;
709 STRING_REF MemoryBankLocator;
710 STRING_REF MemoryManufacturer;
711 STRING_REF MemorySerialNumber;
712 STRING_REF MemoryAssetTag;
713 STRING_REF MemoryPartNumber;
714 EFI_INTER_LINK_DATA MemoryArrayLink;
715 EFI_INTER_LINK_DATA MemorySubArrayLink;
716 UINT16 MemoryTotalWidth;
717 UINT16 MemoryDataWidth;
718 EFI_EXP_BASE2_DATA MemoryDeviceSize;
719 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;
720 UINT8 MemoryDeviceSet;
721 EFI_MEMORY_ARRAY_TYPE MemoryType;
722 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;
723 EFI_EXP_BASE10_DATA MemorySpeed;
724 EFI_MEMORY_STATE MemoryState;
725 } EFI_MEMORY_ARRAY_LINK_DATA;
726
727
728 #define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004
729
730 typedef struct {
731 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;
732 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;
733 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
734 UINT16 MemoryArrayPartitionWidth;
735 } EFI_MEMORY_ARRAY_START_ADDRESS_DATA;
736
737
738 #define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005
739
740 typedef struct {
741 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;
742 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;
743 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;
744 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
745 UINT8 MemoryDevicePartitionRowPosition;
746 UINT8 MemoryDeviceInterleavePosition;
747 UINT8 MemoryDeviceInterleaveDataDepth;
748 } EFI_MEMORY_DEVICE_START_ADDRESS_DATA;
749
750
751 //
752 // Memory. Channel Device Type - SMBIOS Type 37
753 //
754
755 #define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006
756
757 typedef enum _EFI_MEMORY_CHANNEL_TYPE {
758 EfiMemoryChannelTypeOther = 1,
759 EfiMemoryChannelTypeUnknown = 2,
760 EfiMemoryChannelTypeRambus = 3,
761 EfiMemoryChannelTypeSyncLink = 4
762 } EFI_MEMORY_CHANNEL_TYPE;
763
764 typedef struct {
765 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;
766 UINT8 MemoryChannelMaximumLoad;
767 UINT8 MemoryChannelDeviceCount;
768 } EFI_MEMORY_CHANNEL_TYPE_DATA;
769
770 #define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007
771
772 typedef struct {
773 UINT8 DeviceId;
774 EFI_INTER_LINK_DATA DeviceLink;
775 UINT8 MemoryChannelDeviceLoad;
776 } EFI_MEMORY_CHANNEL_DEVICE_DATA;
777
778
779
780 typedef union _EFI_MEMORY_SUBCLASS_RECORDS {
781 EFI_MEMORY_SIZE_DATA SizeData;
782 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;
783 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink;
784 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress;
785 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;
786 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData;
787 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData;
788 } EFI_MEMORY_SUBCLASS_RECORDS;
789
790 typedef struct {
791 EFI_SUBCLASS_TYPE1_HEADER Header;
792 EFI_MEMORY_SUBCLASS_RECORDS Record;
793 } EFI_MEMORY_SUBCLASS_DRIVER_DATA;
794
795 #define EFI_MISC_SUBCLASS_VERSION 0x0100
796
797 #pragma pack(1)
798 //
799 //////////////////////////////////////////////////////////////////////////////
800 //
801 // Last PCI Bus Number
802 //
803 #define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001
804
805 typedef struct {
806 UINT8 LastPciBus;
807 } EFI_MISC_LAST_PCI_BUS_DATA;
808
809 //
810 //////////////////////////////////////////////////////////////////////////////
811 //
812 // Misc. BIOS Vendor - SMBIOS Type 0
813 //
814 #define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002
815
816 typedef struct {
817 UINT64 Reserved1 :2;
818 UINT64 Unknown :1;
819 UINT64 BiosCharacteristicsNotSupported :1;
820 UINT64 IsaIsSupported :1;
821 UINT64 McaIsSupported :1;
822 UINT64 EisaIsSupported :1;
823 UINT64 PciIsSupported :1;
824 UINT64 PcmciaIsSupported :1;
825 UINT64 PlugAndPlayIsSupported :1;
826 UINT64 ApmIsSupported :1;
827 UINT64 BiosIsUpgradable :1;
828 UINT64 BiosShadowingAllowed :1;
829 UINT64 VlVesaIsSupported :1;
830 UINT64 EscdSupportIsAvailable :1;
831 UINT64 BootFromCdIsSupported :1;
832 UINT64 SelectableBootIsSupported :1;
833 UINT64 RomBiosIsSocketed :1;
834 UINT64 BootFromPcmciaIsSupported :1;
835 UINT64 EDDSpecificationIsSupported :1;
836 UINT64 JapaneseNecFloppyIsSupported :1;
837 UINT64 JapaneseToshibaFloppyIsSupported :1;
838 UINT64 Floppy525_360IsSupported :1;
839 UINT64 Floppy525_12IsSupported :1;
840 UINT64 Floppy35_720IsSupported :1;
841 UINT64 Floppy35_288IsSupported :1;
842 UINT64 PrintScreenIsSupported :1;
843 UINT64 Keyboard8042IsSupported :1;
844 UINT64 SerialIsSupported :1;
845 UINT64 PrinterIsSupported :1;
846 UINT64 CgaMonoIsSupported :1;
847 UINT64 NecPc98 :1;
848 UINT64 AcpiIsSupported :1;
849 UINT64 UsbLegacyIsSupported :1;
850 UINT64 AgpIsSupported :1;
851 UINT64 I20BootIsSupported :1;
852 UINT64 Ls120BootIsSupported :1;
853 UINT64 AtapiZipDriveBootIsSupported :1;
854 UINT64 Boot1394IsSupported :1;
855 UINT64 SmartBatteryIsSupported :1;
856 UINT64 BiosBootSpecIsSupported :1;
857 UINT64 FunctionKeyNetworkBootIsSupported :1;
858 UINT64 Reserved :22;
859 } EFI_MISC_BIOS_CHARACTERISTICS;
860
861 typedef struct {
862 UINT64 BiosReserved :16;
863 UINT64 SystemReserved :16;
864 UINT64 Reserved :32;
865 } EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;
866
867 typedef struct {
868 STRING_REF BiosVendor;
869 STRING_REF BiosVersion;
870 STRING_REF BiosReleaseDate;
871 EFI_PHYSICAL_ADDRESS BiosStartingAddress;
872 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize;
873 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;
874 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION BiosCharacteristics2;
875 UINT8 BiosMajorRelease;
876 UINT8 BiosMinorRelease;
877 UINT8 BiosEmbeddedFirmwareMajorRelease;
878 UINT8 BiosEmbeddedFirmwareMinorRelease;
879 } EFI_MISC_BIOS_VENDOR_DATA;
880
881 //
882 //////////////////////////////////////////////////////////////////////////////
883 //
884 // Misc. System Manufacturer - SMBIOS Type 1
885 //
886 #define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003
887
888 typedef enum {
889 EfiSystemWakeupTypeReserved = 0,
890 EfiSystemWakeupTypeOther = 1,
891 EfiSystemWakeupTypeUnknown = 2,
892 EfiSystemWakeupTypeApmTimer = 3,
893 EfiSystemWakeupTypeModemRing = 4,
894 EfiSystemWakeupTypeLanRemote = 5,
895 EfiSystemWakeupTypePowerSwitch = 6,
896 EfiSystemWakeupTypePciPme = 7,
897 EfiSystemWakeupTypeAcPowerRestored = 8,
898 } EFI_MISC_SYSTEM_WAKEUP_TYPE;
899
900 typedef struct {
901 STRING_REF SystemManufacturer;
902 STRING_REF SystemProductName;
903 STRING_REF SystemVersion;
904 STRING_REF SystemSerialNumber;
905 EFI_GUID SystemUuid;
906 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;
907 STRING_REF SystemSKUNumber;
908 STRING_REF SystemFamily;
909 } EFI_MISC_SYSTEM_MANUFACTURER_DATA;
910
911 //
912 //////////////////////////////////////////////////////////////////////////////
913 //
914 // Misc. Base Board Manufacturer - SMBIOS Type 2
915 //
916 #define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004
917
918 typedef struct {
919 UINT32 Motherboard :1;
920 UINT32 RequiresDaughterCard :1;
921 UINT32 Removable :1;
922 UINT32 Replaceable :1;
923 UINT32 HotSwappable :1;
924 UINT32 Reserved :27;
925 } EFI_BASE_BOARD_FEATURE_FLAGS;
926
927 typedef enum {
928 EfiBaseBoardTypeUnknown = 1,
929 EfiBaseBoardTypeOther = 2,
930 EfiBaseBoardTypeServerBlade = 3,
931 EfiBaseBoardTypeConnectivitySwitch = 4,
932 EfiBaseBoardTypeSystemManagementModule = 5,
933 EfiBaseBoardTypeProcessorModule = 6,
934 EfiBaseBoardTypeIOModule = 7,
935 EfiBaseBoardTypeMemoryModule = 8,
936 EfiBaseBoardTypeDaughterBoard = 9,
937 EfiBaseBoardTypeMotherBoard = 0xA,
938 EfiBaseBoardTypeProcessorMemoryModule = 0xB,
939 EfiBaseBoardTypeProcessorIOModule = 0xC,
940 EfiBaseBoardTypeInterconnectBoard = 0xD,
941 } EFI_BASE_BOARD_TYPE;
942
943 typedef struct {
944 STRING_REF BaseBoardManufacturer;
945 STRING_REF BaseBoardProductName;
946 STRING_REF BaseBoardVersion;
947 STRING_REF BaseBoardSerialNumber;
948 STRING_REF BaseBoardAssetTag;
949 STRING_REF BaseBoardChassisLocation;
950 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags;
951 EFI_BASE_BOARD_TYPE BaseBoardType;
952 EFI_INTER_LINK_DATA BaseBoardChassisLink;
953 UINT32 BaseBoardNumberLinks;
954 EFI_INTER_LINK_DATA LinkN;
955 } EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;
956
957 //
958 //////////////////////////////////////////////////////////////////////////////
959 //
960 // Misc. System/Chassis Enclosure - SMBIOS Type 3
961 //
962 #define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005
963
964 typedef enum {
965 EfiMiscChassisTypeOther = 0x1,
966 EfiMiscChassisTypeUnknown = 0x2,
967 EfiMiscChassisTypeDeskTop = 0x3,
968 EfiMiscChassisTypeLowProfileDesktop = 0x4,
969 EfiMiscChassisTypePizzaBox = 0x5,
970 EfiMiscChassisTypeMiniTower = 0x6,
971 EfiMiscChassisTypeTower = 0x7,
972 EfiMiscChassisTypePortable = 0x8,
973 EfiMiscChassisTypeLapTop = 0x9,
974 EfiMiscChassisTypeNotebook = 0xA,
975 EfiMiscChassisTypeHandHeld = 0xB,
976 EfiMiscChassisTypeDockingStation = 0xC,
977 EfiMiscChassisTypeAllInOne = 0xD,
978 EfiMiscChassisTypeSubNotebook = 0xE,
979 EfiMiscChassisTypeSpaceSaving = 0xF,
980 EfiMiscChassisTypeLunchBox = 0x10,
981 EfiMiscChassisTypeMainServerChassis = 0x11,
982 EfiMiscChassisTypeExpansionChassis = 0x12,
983 EfiMiscChassisTypeSubChassis = 0x13,
984 EfiMiscChassisTypeBusExpansionChassis = 0x14,
985 EfiMiscChassisTypePeripheralChassis = 0x15,
986 EfiMiscChassisTypeRaidChassis = 0x16,
987 EfiMiscChassisTypeRackMountChassis = 0x17,
988 EfiMiscChassisTypeSealedCasePc = 0x18,
989 EfiMiscChassisMultiSystemChassis = 0x19,
990 } EFI_MISC_CHASSIS_TYPE;
991
992 typedef struct {
993 UINT32 ChassisType :16;
994 UINT32 ChassisLockPresent:1;
995 UINT32 Reserved :15;
996 } EFI_MISC_CHASSIS_STATUS;
997
998 typedef enum {
999 EfiChassisStateOther = 0x01,
1000 EfiChassisStateUnknown = 0x02,
1001 EfiChassisStateSafe = 0x03,
1002 EfiChassisStateWarning = 0x04,
1003 EfiChassisStateCritical = 0x05,
1004 EfiChassisStateNonRecoverable = 0x06,
1005 } EFI_MISC_CHASSIS_STATE;
1006
1007 typedef enum {
1008 EfiChassisSecurityStatusOther = 0x01,
1009 EfiChassisSecurityStatusUnknown = 0x02,
1010 EfiChassisSecurityStatusNone = 0x03,
1011 EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04,
1012 EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05,
1013 } EFI_MISC_CHASSIS_SECURITY_STATE;
1014
1015 typedef struct {
1016 UINT32 RecordType :1;
1017 UINT32 Reserved :24;
1018 } EFI_MISC_ELEMENT_TYPE;
1019
1020 typedef struct {
1021 EFI_MISC_ELEMENT_TYPE ChassisElementType;
1022 EFI_INTER_LINK_DATA ChassisElementStructure;
1023 EFI_BASE_BOARD_TYPE ChassisBaseBoard;
1024 UINT32 ChassisElementMinimum;
1025 UINT32 ChassisElementMaximum;
1026 } EFI_MISC_ELEMENTS;
1027
1028 typedef struct {
1029 STRING_REF ChassisManufacturer;
1030 STRING_REF ChassisVersion;
1031 STRING_REF ChassisSerialNumber;
1032 STRING_REF ChassisAssetTag;
1033 EFI_MISC_CHASSIS_STATUS ChassisType;
1034 EFI_MISC_CHASSIS_STATE ChassisBootupState;
1035 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState;
1036 EFI_MISC_CHASSIS_STATE ChassisThermalState;
1037 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;
1038 UINT32 ChassisOemDefined;
1039 UINT32 ChassisHeight;
1040 UINT32 ChassisNumberPowerCords;
1041 UINT32 ChassisElementCount;
1042 UINT32 ChassisElementRecordLength;//
1043 EFI_MISC_ELEMENTS ChassisElements;
1044 } EFI_MISC_CHASSIS_MANUFACTURER_DATA;
1045
1046 //
1047 //////////////////////////////////////////////////////////////////////////////
1048 //
1049 // Misc. Port Connector Information - SMBIOS Type 8
1050 //
1051 #define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006
1052
1053 typedef enum {
1054 EfiPortConnectorTypeNone = 0x00,
1055 EfiPortConnectorTypeCentronics = 0x01,
1056 EfiPortConnectorTypeMiniCentronics = 0x02,
1057 EfiPortConnectorTypeProprietary = 0x03,
1058 EfiPortConnectorTypeDB25Male = 0x04,
1059 EfiPortConnectorTypeDB25Female = 0x05,
1060 EfiPortConnectorTypeDB15Male = 0x06,
1061 EfiPortConnectorTypeDB15Female = 0x07,
1062 EfiPortConnectorTypeDB9Male = 0x08,
1063 EfiPortConnectorTypeDB9Female = 0x09,
1064 EfiPortConnectorTypeRJ11 = 0x0A,
1065 EfiPortConnectorTypeRJ45 = 0x0B,
1066 EfiPortConnectorType50PinMiniScsi = 0x0C,
1067 EfiPortConnectorTypeMiniDin = 0x0D,
1068 EfiPortConnectorTypeMicriDin = 0x0E,
1069 EfiPortConnectorTypePS2 = 0x0F,
1070 EfiPortConnectorTypeInfrared = 0x10,
1071 EfiPortConnectorTypeHpHil = 0x11,
1072 EfiPortConnectorTypeUsb = 0x12,
1073 EfiPortConnectorTypeSsaScsi = 0x13,
1074 EfiPortConnectorTypeCircularDin8Male = 0x14,
1075 EfiPortConnectorTypeCircularDin8Female = 0x15,
1076 EfiPortConnectorTypeOnboardIde = 0x16,
1077 EfiPortConnectorTypeOnboardFloppy = 0x17,
1078 EfiPortConnectorType9PinDualInline = 0x18,
1079 EfiPortConnectorType25PinDualInline = 0x19,
1080 EfiPortConnectorType50PinDualInline = 0x1A,
1081 EfiPortConnectorType68PinDualInline = 0x1B,
1082 EfiPortConnectorTypeOnboardSoundInput = 0x1C,
1083 EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,
1084 EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,
1085 EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,
1086 EfiPortConnectorTypeBNC = 0x20,
1087 EfiPortConnectorType1394 = 0x21,
1088 EfiPortConnectorTypePC98 = 0xA0,
1089 EfiPortConnectorTypePC98Hireso = 0xA1,
1090 EfiPortConnectorTypePCH98 = 0xA2,
1091 EfiPortConnectorTypePC98Note = 0xA3,
1092 EfiPortConnectorTypePC98Full = 0xA4,
1093 EfiPortConnectorTypeOther = 0xFF,
1094 } EFI_MISC_PORT_CONNECTOR_TYPE;
1095
1096 typedef enum {
1097 EfiPortTypeNone = 0x00,
1098 EfiPortTypeParallelXtAtCompatible = 0x01,
1099 EfiPortTypeParallelPortPs2 = 0x02,
1100 EfiPortTypeParallelPortEcp = 0x03,
1101 EfiPortTypeParallelPortEpp = 0x04,
1102 EfiPortTypeParallelPortEcpEpp = 0x05,
1103 EfiPortTypeSerialXtAtCompatible = 0x06,
1104 EfiPortTypeSerial16450Compatible = 0x07,
1105 EfiPortTypeSerial16550Compatible = 0x08,
1106 EfiPortTypeSerial16550ACompatible = 0x09,
1107 EfiPortTypeScsi = 0x0A,
1108 EfiPortTypeMidi = 0x0B,
1109 EfiPortTypeJoyStick = 0x0C,
1110 EfiPortTypeKeyboard = 0x0D,
1111 EfiPortTypeMouse = 0x0E,
1112 EfiPortTypeSsaScsi = 0x0F,
1113 EfiPortTypeUsb = 0x10,
1114 EfiPortTypeFireWire = 0x11,
1115 EfiPortTypePcmciaTypeI = 0x12,
1116 EfiPortTypePcmciaTypeII = 0x13,
1117 EfiPortTypePcmciaTypeIII = 0x14,
1118 EfiPortTypeCardBus = 0x15,
1119 EfiPortTypeAccessBusPort = 0x16,
1120 EfiPortTypeScsiII = 0x17,
1121 EfiPortTypeScsiWide = 0x18,
1122 EfiPortTypePC98 = 0x19,
1123 EfiPortTypePC98Hireso = 0x1A,
1124 EfiPortTypePCH98 = 0x1B,
1125 EfiPortTypeVideoPort = 0x1C,
1126 EfiPortTypeAudioPort = 0x1D,
1127 EfiPortTypeModemPort = 0x1E,
1128 EfiPortTypeNetworkPort = 0x1F,
1129 EfiPortType8251Compatible = 0xA0,
1130 EfiPortType8251FifoCompatible = 0xA1,
1131 EfiPortTypeOther = 0xFF,
1132 } EFI_MISC_PORT_TYPE;
1133
1134 typedef struct {
1135 STRING_REF PortInternalConnectorDesignator;
1136 STRING_REF PortExternalConnectorDesignator;
1137 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType;
1138 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType;
1139 EFI_MISC_PORT_TYPE PortType;
1140 EFI_MISC_PORT_DEVICE_PATH PortPath;
1141 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;
1142
1143 //
1144 //////////////////////////////////////////////////////////////////////////////
1145 //
1146 // Misc. System Slots - SMBIOS Type 9
1147 //
1148 #define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007
1149
1150 typedef enum {
1151 EfiSlotTypeOther = 0x01,
1152 EfiSlotTypeUnknown = 0x02,
1153 EfiSlotTypeIsa = 0x03,
1154 EfiSlotTypeMca = 0x04,
1155 EfiSlotTypeEisa = 0x05,
1156 EfiSlotTypePci = 0x06,
1157 EfiSlotTypePcmcia = 0x07,
1158 EfiSlotTypeVlVesa = 0x08,
1159 EfiSlotTypeProprietary = 0x09,
1160 EfiSlotTypeProcessorCardSlot = 0x0A,
1161 EfiSlotTypeProprietaryMemoryCardSlot = 0x0B,
1162 EfiSlotTypeIORiserCardSlot = 0x0C,
1163 EfiSlotTypeNuBus = 0x0D,
1164 EfiSlotTypePci66MhzCapable = 0x0E,
1165 EfiSlotTypeAgp = 0x0F,
1166 EfiSlotTypeApg2X = 0x10,
1167 EfiSlotTypeAgp4X = 0x11,
1168 EfiSlotTypePciX = 0x12,
1169 EfiSlotTypeAgp4x = 0x13,
1170 EfiSlotTypePC98C20 = 0xA0,
1171 EfiSlotTypePC98C24 = 0xA1,
1172 EfiSlotTypePC98E = 0xA2,
1173 EfiSlotTypePC98LocalBus = 0xA3,
1174 EfiSlotTypePC98Card = 0xA4,
1175 EfiSlotTypePciExpress = 0xA5
1176 } EFI_MISC_SLOT_TYPE;
1177
1178 typedef enum {
1179 EfiSlotDataBusWidthOther = 0x01,
1180 EfiSlotDataBusWidthUnknown = 0x02,
1181 EfiSlotDataBusWidth8Bit = 0x03,
1182 EfiSlotDataBusWidth16Bit = 0x04,
1183 EfiSlotDataBusWidth32Bit = 0x05,
1184 EfiSlotDataBusWidth64Bit = 0x06,
1185 EfiSlotDataBusWidth128Bit = 0x07,
1186 } EFI_MISC_SLOT_DATA_BUS_WIDTH;
1187
1188 typedef enum {
1189 EfiSlotUsageOther = 1,
1190 EfiSlotUsageUnknown = 2,
1191 EfiSlotUsageAvailable = 3,
1192 EfiSlotUsageInUse = 4,
1193 } EFI_MISC_SLOT_USAGE;
1194
1195 typedef enum {
1196 EfiSlotLengthOther = 1,
1197 EfiSlotLengthUnknown = 2,
1198 EfiSlotLengthShort = 3,
1199 EfiSlotLengthLong = 4
1200 } EFI_MISC_SLOT_LENGTH;
1201
1202 typedef struct {
1203 UINT32 CharacteristicsUnknown :1;
1204 UINT32 Provides50Volts :1;
1205 UINT32 Provides33Volts :1;
1206 UINT32 SharedSlot :1;
1207 UINT32 PcCard16Supported :1;
1208 UINT32 CardBusSupported :1;
1209 UINT32 ZoomVideoSupported :1;
1210 UINT32 ModemRingResumeSupported:1;
1211 UINT32 PmeSignalSupported :1;
1212 UINT32 HotPlugDevicesSupported :1;
1213 UINT32 SmbusSignalSupported :1;
1214 UINT32 Reserved :21;
1215 } EFI_MISC_SLOT_CHARACTERISTICS;
1216
1217 typedef struct {
1218 STRING_REF SlotDesignation;
1219 EFI_MISC_SLOT_TYPE SlotType;
1220 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth;
1221 EFI_MISC_SLOT_USAGE SlotUsage;
1222 EFI_MISC_SLOT_LENGTH SlotLength;
1223 UINT16 SlotId;
1224 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;
1225 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath;
1226 } EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;
1227
1228 //
1229 //////////////////////////////////////////////////////////////////////////////
1230 //
1231 // Misc. Onboard Device - SMBIOS Type 10
1232 //
1233 #define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008
1234
1235 typedef enum {
1236 EfiOnBoardDeviceTypeOther = 1,
1237 EfiOnBoardDeviceTypeUnknown = 2,
1238 EfiOnBoardDeviceTypeVideo = 3,
1239 EfiOnBoardDeviceTypeScsiController = 4,
1240 EfiOnBoardDeviceTypeEthernet = 5,
1241 EfiOnBoardDeviceTypeTokenRing = 6,
1242 EfiOnBoardDeviceTypeSound = 7,
1243 } EFI_MISC_ONBOARD_DEVICE_TYPE;
1244
1245 typedef struct {
1246 UINT32 DeviceType :16;
1247 UINT32 DeviceEnabled :1;
1248 UINT32 Reserved :15;
1249 } EFI_MISC_ONBOARD_DEVICE_STATUS;
1250
1251 typedef struct {
1252 STRING_REF OnBoardDeviceDescription;
1253 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;
1254 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;
1255 } EFI_MISC_ONBOARD_DEVICE_DATA;
1256
1257 //
1258 //////////////////////////////////////////////////////////////////////////////
1259 //
1260 // Misc. BIOS Language Information - SMBIOS Type 11
1261 //
1262 #define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009
1263
1264 typedef struct {
1265 STRING_REF OemStringRef[1];
1266 } EFI_MISC_OEM_STRING_DATA;
1267
1268 //
1269 //////////////////////////////////////////////////////////////////////////////
1270 //
1271 // Misc. System Options - SMBIOS Type 12
1272 //
1273 typedef struct {
1274 STRING_REF SystemOptionStringRef[1];
1275 } EFI_MISC_SYSTEM_OPTION_STRING_DATA;
1276
1277 #define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A
1278
1279 //
1280 //////////////////////////////////////////////////////////////////////////////
1281 //
1282 // Misc. Number of Installable Languages - SMBIOS Type 13
1283 //
1284 #define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B
1285
1286 typedef struct {
1287 UINT32 AbbreviatedLanguageFormat :1;
1288 UINT32 Reserved :31;
1289 } EFI_MISC_LANGUAGE_FLAGS;
1290
1291 typedef struct {
1292 UINT16 NumberOfInstallableLanguages;
1293 EFI_MISC_LANGUAGE_FLAGS LanguageFlags;
1294 UINT16 CurrentLanguageNumber;
1295 } EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;
1296
1297 //
1298 //////////////////////////////////////////////////////////////////////////////
1299 //
1300 // Misc. System Language String
1301 //
1302 #define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C
1303
1304 typedef struct {
1305 UINT16 LanguageId;
1306 STRING_REF SystemLanguageString;
1307 } EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;
1308
1309 //
1310 //////////////////////////////////////////////////////////////////////////////
1311 //
1312 // Group Associations - SMBIOS Type 14
1313 //
1314 #define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D
1315
1316 typedef struct {
1317 STRING_REF GroupName;
1318 UINT16 NumberGroupItems;
1319 UINT16 GroupId;
1320 } EFI_MISC_GROUP_NAME_DATA;
1321
1322 //
1323 //////////////////////////////////////////////////////////////////////////////
1324 //
1325 // Group Item Set Element
1326 //
1327 #define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E
1328
1329 typedef struct {
1330 EFI_GUID SubClass;
1331 EFI_INTER_LINK_DATA GroupLink;
1332 UINT16 GroupId;
1333 UINT16 GroupElementId;
1334 } EFI_MISC_GROUP_ITEM_SET_DATA;
1335
1336 // Misc. System Event Log - SMBIOS Type 15
1337 //
1338 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x0000000D
1339 typedef struct {
1340 UINT16 LogAreaLength;
1341 UINT16 LogHeaderStartOffset;
1342 UINT16 LogDataStartOffset;
1343 UINT8 AccessMethod;
1344 UINT8 LogStatus;
1345 UINT32 LogChangeToken;
1346 UINT32 AccessMethodAddress;
1347 UINT8 LogHeaderFormat;
1348 UINT8 NumberOfSupportedLogType;
1349 UINT8 LengthOfLogDescriptor;
1350 } EFI_MISC_SYSTEM_EVENT_LOG_DATA;
1351
1352 //
1353 // Access Method.
1354 // 0x00~0x04: as following definition
1355 // 0x05~0x7f: Available for future assignment.
1356 // 0x80~0xff: BIOS Vendor/OEM-specific.
1357 //
1358 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00
1359 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01
1360 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02
1361 #define ACCESS_MEMORY_MAPPED 0x03
1362 #define ACCESS_GPNV 0x04
1363
1364 //
1365 //////////////////////////////////////////////////////////////////////////////
1366 //
1367 // Misc. Pointing Device Type - SMBIOS Type 21
1368 //
1369 #define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F
1370
1371 typedef enum {
1372 EfiPointingDeviceTypeOther = 0x01,
1373 EfiPointingDeviceTypeUnknown = 0x02,
1374 EfiPointingDeviceTypeMouse = 0x03,
1375 EfiPointingDeviceTypeTrackBall = 0x04,
1376 EfiPointingDeviceTypeTrackPoint = 0x05,
1377 EfiPointingDeviceTypeGlidePoint = 0x06,
1378 EfiPointingDeviceTouchPad = 0x07,
1379 EfiPointingDeviceTouchScreen = 0x08,
1380 EfiPointingDeviceOpticalSensor = 0x09,
1381 } EFI_MISC_POINTING_DEVICE_TYPE;
1382
1383 typedef enum {
1384 EfiPointingDeviceInterfaceOther = 0x01,
1385 EfiPointingDeviceInterfaceUnknown = 0x02,
1386 EfiPointingDeviceInterfaceSerial = 0x03,
1387 EfiPointingDeviceInterfacePs2 = 0x04,
1388 EfiPointingDeviceInterfaceInfrared = 0x05,
1389 EfiPointingDeviceInterfaceHpHil = 0x06,
1390 EfiPointingDeviceInterfaceBusMouse = 0x07,
1391 EfiPointingDeviceInterfaceADB = 0x08,
1392 EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,
1393 EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,
1394 EfiPointingDeviceInterfaceUsb = 0xA2,
1395 } EFI_MISC_POINTING_DEVICE_INTERFACE;
1396
1397 typedef struct {
1398 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType;
1399 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;
1400 UINT16 NumberPointingDeviceButtons;
1401 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;
1402 } EFI_MISC_PORTING_DEVICE_TYPE_DATA;
1403
1404 //
1405 //////////////////////////////////////////////////////////////////////////////
1406 //
1407 // Portable Battery - SMBIOS Type 22
1408 //
1409 #define EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER 0x00000010
1410
1411 typedef enum {
1412 EfiBatteryDeviceChemistryTypeOther = 0x01,
1413 EfiBatteryDeviceChemistryTypeUnknown = 0x02,
1414 EfiBatteryDeviceChemistryTypeLeadAcid = 0x03,
1415 EfiBatteryDeviceChemistryTypeNickelCadmium = 0x04,
1416 EfiBatteryDeviceChemistryTypeNickelMetalHydride = 0x05,
1417 EfiBatteryDeviceChemistryTypeLithiumIon = 0x06,
1418 EfiBatteryDeviceChemistryTypeZincAir = 0x07,
1419 EfiBatteryDeviceChemistryTypeLithiumPolymer = 0x08,
1420 } EFI_MISC_BATTERY_DEVICE_CHEMISTRY;
1421
1422 typedef struct {
1423 UINT32 Date :5;
1424 UINT32 Month :4;
1425 UINT32 Year :7;
1426 UINT32 Reserved :16;
1427 } EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE;
1428
1429 typedef struct {
1430 STRING_REF BatteryLocation;
1431 STRING_REF BatteryManufacturer;
1432 STRING_REF BatteryManufactureDate;
1433 STRING_REF BatterySerialNumber;
1434 STRING_REF BatteryDeviceName;
1435 STRING_REF BatterySbdsVersionNumber;
1436 STRING_REF BatterySbdsDeviceChemistry;
1437 EFI_MISC_BATTERY_DEVICE_CHEMISTRY BatteryDeviceChemistry;
1438 EFI_EXP_BASE10_DATA BatteryDesignCapacity;
1439 EFI_EXP_BASE10_DATA BatteryDesignVoltage;
1440 UINT16 BatteryMaximumError;
1441 UINT16 BatterySbdsSerialNumber;
1442 EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE
1443 BatterySbdsManufacturingDate;
1444 UINT32 BatteryOemSpecific;
1445 } EFI_MISC_BATTERY_LOCATION_DATA;
1446
1447 //
1448 //////////////////////////////////////////////////////////////////////////////
1449 //
1450 // Misc. Reset Capabilities - SMBIOS Type 23
1451 //
1452 #define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011
1453
1454 typedef struct {
1455 UINT32 Status :1;
1456 UINT32 BootOption :2;
1457 UINT32 BootOptionOnLimit :2;
1458 UINT32 WatchdogTimerPresent:1;
1459 UINT32 Reserved :26;
1460 } EFI_MISC_RESET_CAPABILITIES_TYPE;
1461
1462 typedef struct {
1463 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities;
1464 UINT16 ResetCount;
1465 UINT16 ResetLimit;
1466 UINT16 ResetTimerInterval;
1467 UINT16 ResetTimeout;
1468 } EFI_MISC_RESET_CAPABILITIES;
1469
1470 typedef struct {
1471 EFI_MISC_RESET_CAPABILITIES ResetCapabilities;
1472 UINT16 ResetCount;
1473 UINT16 ResetLimit;
1474 UINT16 ResetTimerInterval;
1475 UINT16 ResetTimeout;
1476 } EFI_MISC_RESET_CAPABILITIES_DATA;
1477
1478 //
1479 //////////////////////////////////////////////////////////////////////////////
1480 //
1481 // Misc. Hardware Security - SMBIOS Type 24
1482 //
1483 #define EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER 0x00000012
1484
1485 typedef enum {
1486 EfiHardwareSecurityStatusDisabled = 0,
1487 EfiHardwareSecurityStatusEnabled = 1,
1488 EfiHardwareSecurityStatusNotImplemented = 2,
1489 EfiHardwareSecurityStatusUnknown = 3
1490 } EFI_MISC_HARDWARE_SECURITY_STATUS;
1491
1492 typedef struct {
1493 EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2;
1494 EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2;
1495 EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2;
1496 EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2;
1497 EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24;
1498 } EFI_MISC_HARDWARE_SECURITY_SETTINGS;
1499
1500 typedef struct {
1501 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;
1502 } EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;
1503
1504 //
1505 //////////////////////////////////////////////////////////////////////////////
1506 //
1507 // System Power Controls - SMBIOS Type 25
1508 //
1509 #define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013
1510
1511 typedef struct {
1512 UINT16 ScheduledPoweronMonth;
1513 UINT16 ScheduledPoweronDayOfMonth;
1514 UINT16 ScheduledPoweronHour;
1515 UINT16 ScheduledPoweronMinute;
1516 UINT16 ScheduledPoweronSecond;
1517 } EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;
1518
1519 //
1520 //////////////////////////////////////////////////////////////////////////////
1521 //
1522 // Voltage Probe - SMBIOS Type 26
1523 //
1524 #define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014
1525
1526 typedef struct {
1527 UINT32 VoltageProbeSite :5;
1528 UINT32 VoltageProbeStatus :3;
1529 UINT32 Reserved :24;
1530 } EFI_MISC_VOLTAGE_PROBE_LOCATION;
1531
1532 typedef struct {
1533 STRING_REF VoltageProbeDescription;
1534 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;
1535 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue;
1536 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue;
1537 EFI_EXP_BASE10_DATA VoltageProbeResolution;
1538 EFI_EXP_BASE10_DATA VoltageProbeTolerance;
1539 EFI_EXP_BASE10_DATA VoltageProbeAccuracy;
1540 EFI_EXP_BASE10_DATA VoltageProbeNominalValue;
1541 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1542 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1543 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1544 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1545 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1546 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1547 UINT32 VoltageProbeOemDefined;
1548 } EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;
1549
1550 //
1551 //////////////////////////////////////////////////////////////////////////////
1552 //
1553 // Cooling Device - SMBIOS Type 27
1554 //
1555 #define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015
1556
1557 typedef struct {
1558 UINT32 CoolingDevice :5;
1559 UINT32 CoolingDeviceStatus :3;
1560 UINT32 Reserved :24;
1561 } EFI_MISC_COOLING_DEVICE_TYPE;
1562
1563 typedef struct {
1564 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;
1565 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;
1566 UINT16 CoolingDeviceUnitGroup;
1567 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed;
1568 UINT32 CoolingDeviceOemDefined;
1569 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;
1570
1571 //
1572 //////////////////////////////////////////////////////////////////////////////
1573 //
1574 // Temperature Probe - SMBIOS Type 28
1575 //
1576 #define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016
1577
1578 typedef struct {
1579 UINT32 TemperatureProbeSite :5;
1580 UINT32 TemperatureProbeStatus :3;
1581 UINT32 Reserved :24;
1582 } EFI_MISC_TEMPERATURE_PROBE_LOCATION;
1583
1584 typedef struct {
1585 STRING_REF TemperatureProbeDescription;
1586 EFI_MISC_TEMPERATURE_PROBE_LOCATION
1587 TemperatureProbeLocation;
1588 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue;
1589 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue;
1590 EFI_EXP_BASE10_DATA TemperatureProbeResolution;
1591 EFI_EXP_BASE10_DATA TemperatureProbeTolerance;
1592 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy;
1593 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue;
1594 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1595 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1596 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1597 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1598 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1599 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1600 UINT32 TemperatureProbeOemDefined;
1601 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;
1602
1603 //
1604 //////////////////////////////////////////////////////////////////////////////
1605 //
1606 // Electrical Current Probe - SMBIOS Type 29
1607 //
1608
1609 #define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017
1610
1611 typedef struct {
1612 UINT32 ElectricalCurrentProbeSite :5;
1613 UINT32 ElectricalCurrentProbeStatus :3;
1614 UINT32 Reserved :24;
1615 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;
1616
1617 typedef struct {
1618 STRING_REF ElectricalCurrentProbeDescription;
1619 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
1620 ElectricalCurrentProbeLocation;
1621 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue;
1622 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue;
1623 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution;
1624 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance;
1625 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy;
1626 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue;
1627 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1628 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1629 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1630 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1631 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1632 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1633 UINT32 ElectricalCurrentProbeOemDefined;
1634 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;
1635
1636 //
1637 //////////////////////////////////////////////////////////////////////////////
1638 //
1639 // Out-of-Band Remote Access - SMBIOS Type 30
1640 //
1641
1642 #define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018
1643
1644 typedef struct {
1645 UINT32 InboundConnectionEnabled :1;
1646 UINT32 OutboundConnectionEnabled :1;
1647 UINT32 Reserved :30;
1648 } EFI_MISC_REMOTE_ACCESS_CONNECTIONS;
1649
1650 typedef struct {
1651 STRING_REF RemoteAccessManufacturerNameDescription;
1652 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;
1653 } EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;
1654
1655 //
1656 //////////////////////////////////////////////////////////////////////////////
1657 //
1658 // Misc. BIS Entry Point - SMBIOS Type 31
1659 //
1660 #define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019
1661
1662 typedef struct {
1663 EFI_PHYSICAL_ADDRESS BisEntryPoint;
1664 } EFI_MISC_BIS_ENTRY_POINT_DATA;
1665
1666 //
1667 //////////////////////////////////////////////////////////////////////////////
1668 //
1669 // Misc. Boot Information - SMBIOS Type 32
1670 //
1671 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A
1672
1673 typedef enum {
1674 EfiBootInformationStatusNoError = 0x00,
1675 EfiBootInformationStatusNoBootableMedia = 0x01,
1676 EfiBootInformationStatusNormalOSFailedLoading = 0x02,
1677 EfiBootInformationStatusFirmwareDetectedFailure = 0x03,
1678 EfiBootInformationStatusOSDetectedFailure = 0x04,
1679 EfiBootInformationStatusUserRequestedBoot = 0x05,
1680 EfiBootInformationStatusSystemSecurityViolation = 0x06,
1681 EfiBootInformationStatusPreviousRequestedImage = 0x07,
1682 EfiBootInformationStatusWatchdogTimerExpired = 0x08,
1683 EfiBootInformationStatusStartReserved = 0x09,
1684 EfiBootInformationStatusStartOemSpecific = 0x80,
1685 EfiBootInformationStatusStartProductSpecific = 0xC0,
1686 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;
1687
1688 typedef struct {
1689 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;
1690 UINT8 BootInformationData[9];
1691 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA;
1692
1693 //
1694 //////////////////////////////////////////////////////////////////////////////
1695 //
1696 // Management Device - SMBIOS Type 34
1697 //
1698 #define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B
1699
1700 typedef enum {
1701 EfiManagementDeviceTypeOther = 0x01,
1702 EfiManagementDeviceTypeUnknown = 0x02,
1703 EfiManagementDeviceTypeLm75 = 0x03,
1704 EfiManagementDeviceTypeLm78 = 0x04,
1705 EfiManagementDeviceTypeLm79 = 0x05,
1706 EfiManagementDeviceTypeLm80 = 0x06,
1707 EfiManagementDeviceTypeLm81 = 0x07,
1708 EfiManagementDeviceTypeAdm9240 = 0x08,
1709 EfiManagementDeviceTypeDs1780 = 0x09,
1710 EfiManagementDeviceTypeMaxim1617 = 0x0A,
1711 EfiManagementDeviceTypeGl518Sm = 0x0B,
1712 EfiManagementDeviceTypeW83781D = 0x0C,
1713 EfiManagementDeviceTypeHt82H791 = 0x0D,
1714 } EFI_MISC_MANAGEMENT_DEVICE_TYPE;
1715
1716 typedef enum {
1717 EfiManagementDeviceAddressTypeOther = 1,
1718 EfiManagementDeviceAddressTypeUnknown = 2,
1719 EfiManagementDeviceAddressTypeIOPort = 3,
1720 EfiManagementDeviceAddressTypeMemory = 4,
1721 EfiManagementDeviceAddressTypeSmbus = 5
1722 } EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;
1723
1724 typedef struct {
1725 STRING_REF ManagementDeviceDescription;
1726 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType;
1727 UINTN ManagementDeviceAddress;
1728 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
1729 ManagementDeviceAddressType;
1730 } EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;
1731
1732 //
1733 //////////////////////////////////////////////////////////////////////////////
1734 //
1735 // Management Device Component - SMBIOS Type 35
1736 //
1737
1738 #define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C
1739
1740 typedef struct {
1741 STRING_REF ManagementDeviceComponentDescription;
1742 EFI_INTER_LINK_DATA ManagementDeviceLink;
1743 EFI_INTER_LINK_DATA ManagementDeviceComponentLink;
1744 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;
1745
1746 //
1747 //////////////////////////////////////////////////////////////////////////////
1748 //
1749 // IPMI Data Record - SMBIOS Type 38
1750 //
1751 typedef enum {
1752 EfiIpmiOther = 0,
1753 EfiIpmiKcs = 1,
1754 EfiIpmiSmic = 2,
1755 EfiIpmiBt = 3,
1756 } EFI_MISC_IPMI_INTERFACE_TYPE;
1757
1758 typedef struct {
1759 UINT16 IpmiSpecLeastSignificantDigit:4;
1760 UINT16 IpmiSpecMostSignificantDigit: 4;
1761 UINT16 Reserved: 8;
1762 } EFI_MISC_IPMI_SPECIFICATION_REVISION;
1763
1764 typedef struct {
1765 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType;
1766 EFI_MISC_IPMI_SPECIFICATION_REVISION IpmiSpecificationRevision;
1767 UINT16 IpmiI2CSlaveAddress;
1768 UINT16 IpmiNvDeviceAddress;
1769 UINT64 IpmiBaseAddress;
1770 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath;
1771 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA;
1772
1773 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D
1774
1775 //
1776 //////////////////////////////////////////////////////////////////////////////
1777 //
1778 //System Power supply Record - SMBIOS Type 39
1779 //
1780 typedef struct {
1781 UINT16 PowerSupplyHotReplaceable :1;
1782 UINT16 PowerSupplyPresent :1;
1783 UINT16 PowerSupplyUnplugged :1;
1784 UINT16 InputVoltageRangeSwitch :4;
1785 UINT16 PowerSupplyStatus :3;
1786 UINT16 PowerSupplyType :4;
1787 UINT16 Reserved :2;
1788 } POWER_SUPPLY_CHARACTERISTICS;
1789
1790 typedef struct {
1791 UINT16 PowerUnitGroup;
1792 STRING_REF PowerSupplyLocation;
1793 STRING_REF PowerSupplyDeviceName;
1794 STRING_REF PowerSupplyManufacturer;
1795 STRING_REF PowerSupplySerialNumber;
1796 STRING_REF PowerSupplyAssetTagNumber;
1797 STRING_REF PowerSupplyModelPartNumber;
1798 STRING_REF PowerSupplyRevisionLevel;
1799 UINT16 PowerSupplyMaxPowerCapacity;
1800 POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;
1801 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;
1802 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;
1803 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;
1804 } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;
1805
1806 #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
1807
1808 //
1809 //////////////////////////////////////////////////////////////////////////////
1810 //
1811 // OEM Data Record - SMBIOS Type 0x80-0xFF
1812 //
1813 typedef struct {
1814 UINT8 Type;
1815 UINT8 Length;
1816 UINT16 Handle;
1817 } SMBIOS_STRUCTURE_HDR;
1818
1819 typedef struct {
1820 SMBIOS_STRUCTURE_HDR Header;
1821 UINT8 RawData[1];
1822 } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;
1823
1824 #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F
1825
1826 //
1827 // Declare the following strutures alias to use them more conviniently.
1828 //
1829 typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS;
1830 typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR;
1831 typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER;
1832 typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER;
1833 typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER;
1834 typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;
1835 typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;
1836 typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;
1837 typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;
1838 typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;
1839 typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;
1840 typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;
1841 typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING;
1842 typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG;
1843 typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;
1844 typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS;
1845 typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;
1846 typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;
1847
1848 typedef union {
1849 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;
1850 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;
1851 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer;
1852 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer;
1853 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer;
1854 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator;
1855 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation;
1856 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice;
1857 EFI_MISC_OEM_STRING_DATA MiscOemString;
1858 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString;
1859 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages;
1860 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString;
1861 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;
1862 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;
1863 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;
1864 EFI_MISC_PORTING_DEVICE_TYPE_DATA MiscPortingDeviceTypeData;
1865 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;
1866 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;
1867 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;
1868 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData;
1869 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData;
1870 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData;
1871 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;
1872 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
1873 MiscRemoteAccessManufacturerDescriptionData;
1874 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint;
1875 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus;
1876 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData;
1877 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
1878 MiscmangementDeviceComponentDescriptionData;
1879 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;
1880 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo;
1881 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;
1882 } EFI_MISC_SUBCLASS_RECORDS;
1883
1884 //
1885 //
1886 //
1887 typedef struct {
1888 EFI_SUBCLASS_TYPE1_HEADER Header;
1889 EFI_MISC_SUBCLASS_RECORDS Record;
1890 } EFI_MISC_SUBCLASS_DRIVER_DATA;
1891
1892 #pragma pack()
1893
1894 //
1895 // Sub Class Header type1
1896 //
1897
1898 #define EFI_SUBCLASS_INSTANCE_RESERVED 0
1899 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit
1900
1901 #endif
1902