1/** @file
2  Module to clarify the element info of the smbios structure.
3
4  Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>
5  This program and the accompanying materials
6  are licensed and made available under the terms and conditions of the BSD License
7  which accompanies this distribution.  The full text of the license may be found at
8  http://opensource.org/licenses/bsd-license.php
9
10  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _SMBIOS_PRINT_INFO_H_
16#define _SMBIOS_PRINT_INFO_H_
17
18#include <IndustryStandard/SmBios.h>
19
20extern UINT8  SmbiosMajorVersion;
21extern UINT8  SmbiosMinorVersion;
22
23#define SHOW_NONE     0x00
24#define SHOW_OUTLINE  0x01
25#define SHOW_NORMAL   0x02
26#define SHOW_DETAIL   0x03
27//
28// SHOW_ALL: WaitEnter() not wait input.
29//
30#define SHOW_ALL          0x04
31#define SHOW_STATISTICS   0x05
32
33#define AS_UINT16(pData)  (*((UINT16 *) pData))
34#define AS_UINT32(pData)  (*((UINT32 *) pData))
35#define AS_UINT64(pData)  (*((UINT64 *) pData))
36
37/**
38  Print the info of EPS(Entry Point Structure).
39
40  @param[in] SmbiosTable    Pointer to the SMBIOS table entry point.
41  @param[in] Option         Display option.
42**/
43VOID
44SmbiosPrintEPSInfo (
45  IN  SMBIOS_TABLE_ENTRY_POINT  *SmbiosTable,
46  IN  UINT8                     Option
47  );
48
49/**
50  Print the info of 64-bit EPS(Entry Point Structure).
51
52  @param[in] SmbiosTable    Pointer to the SMBIOS table entry point.
53  @param[in] Option         Display option.
54**/
55VOID
56Smbios64BitPrintEPSInfo (
57  IN  SMBIOS_TABLE_3_0_ENTRY_POINT  *SmbiosTable,
58  IN  UINT8                         Option
59  );
60
61/**
62  This function print the content of the structure pointed by Struct.
63
64  @param[in] Struct       Point to the structure to be printed.
65  @param[in] Option       Print option of information detail.
66
67  @retval EFI_SUCCESS               Successfully Printing this function.
68  @retval EFI_INVALID_PARAMETER     Invalid Structure.
69  @retval EFI_UNSUPPORTED           Unsupported.
70**/
71EFI_STATUS
72SmbiosPrintStructure (
73  IN  SMBIOS_STRUCTURE_POINTER  *Struct,
74  IN  UINT8                     Option
75  );
76
77/**
78  Display BIOS Information (Type 0) information.
79
80  @param[in] Chara    The information bits.
81  @param[in] Option   The optional information.
82**/
83VOID
84DisplayBiosCharacteristics (
85  IN UINT64  Chara,
86  IN UINT8   Option
87  );
88
89/**
90  Display Bios Characteristice extensions1 information.
91
92  @param[in] Byte1    The information.
93  @param[in] Option   The optional information.
94**/
95VOID
96DisplayBiosCharacteristicsExt1 (
97  IN UINT8 Byte1,
98  IN UINT8 Option
99  );
100
101/**
102  Display Bios Characteristice extensions2 information.
103
104  @param[in] Byte2    The information.
105  @param[in] Option   The optional information.
106**/
107VOID
108DisplayBiosCharacteristicsExt2 (
109  IN UINT8 Byte2,
110  IN UINT8 Option
111  );
112
113/**
114  Display Processor Information (Type 4) information.
115
116  @param[in] Family       The family value.
117  @param[in] Option       The option value.
118**/
119VOID
120DisplayProcessorFamily (
121  UINT8 Family,
122  UINT8 Option
123  );
124
125/**
126  Display processor family information.
127
128  @param[in] Family2      The family value.
129  @param[in] Option       The option value.
130**/
131VOID
132DisplayProcessorFamily2 (
133  IN UINT16 Family2,
134  IN UINT8  Option
135  );
136
137/**
138  Display processor voltage information.
139
140  @param[in] Voltage      The Voltage.
141                      Bit 7 Set to 0, indicating 'legacy' mode for processor voltage
142                      Bits 6:4  Reserved, must be zero
143                      Bits 3:0  Voltage Capability.
144                                A Set bit indicates that the voltage is supported.
145                        Bit 0 - 5V
146                        Bit 1 - 3.3V
147                        Bit 2 - 2.9V
148                        Bit 3 - Reserved, must be zero.
149
150                      Note:
151                        Setting of multiple bits indicates the socket is configurable
152                        If bit 7 is set to 1, the remaining seven bits of the field are set to
153                        contain the processor's current voltage times 10.
154                        For example, the field value for a processor voltage of 1.8 volts would be
155                        92h = 80h + (1.8 * 10) = 80h + 18 = 80h +12h.
156
157  @param[in] Option       The option.
158**/
159VOID
160DisplayProcessorVoltage (
161  IN UINT8 Voltage,
162  IN UINT8 Option
163  );
164
165/**
166  Display processor information.
167
168  @param[in] Status   The status.
169Bit 7 Reserved, must be 0
170Bit 6 CPU Socket Populated
171  1 - CPU Socket Populated
172  0 - CPU Socket Unpopulated
173Bits 5:3 Reserved, must be zero
174Bits 2:0 CPU Status
175  0h - Unknown
176  1h - CPU Enabled
177  2h - CPU Disabled by User via BIOS Setup
178  3h - CPU Disabled By BIOS (POST Error)
179  4h - CPU is Idle, waiting to be enabled.
180  5-6h - Reserved
181  7h - Other
182
183  @param[in] Option   The option
184**/
185VOID
186DisplayProcessorStatus (
187  IN UINT8 Status,
188  IN UINT8 Option
189  );
190
191/**
192  Display information about Memory Controller Information (Type 5).
193
194  @param[in] Size     Memory size.
195  @param[in] SlotNum  Which slot is this about.
196  @param[in] Option   Option for the level of detail output required.
197**/
198VOID
199DisplayMaxMemoryModuleSize (
200  IN UINT8 Size,
201  IN UINT8 SlotNum,
202  IN UINT8 Option
203  );
204
205/**
206  Display information about memory configuration handles.
207
208  @param[in] Handles  The buffer of handles to output info on.
209  @param[in] SlotNum  The number of handles in the above buffer.
210  @param[in] Option   Option for the level of detail output required.
211**/
212VOID
213DisplayMemoryModuleConfigHandles (
214  IN UINT16 *Handles,
215  IN UINT8  SlotNum,
216  IN UINT8  Option
217  );
218
219/**
220  Display Memory Module Information (Type 6).
221
222  @param[in] BankConnections
223  @param[in] Option
224**/
225VOID
226DisplayMmBankConnections (
227  IN UINT8 BankConnections,
228  IN UINT8 Option
229  );
230
231/**
232  Display memory informcation.
233
234  Bits 0:6  Size (n),
235      where 2**n is the size in MB with three special-case values:
236      7Dh Not determinable (Installed Size only)
237      7Eh Module is installed, but no memory has been enabled
238      7Fh Not installed
239  Bit  7  Defines whether the memory module has a single- (0)
240          or double-bank (1) connection.
241
242  @param[in] Size   - The size
243  @param[in] Option - The option
244**/
245VOID
246DisplayMmMemorySize (
247  IN UINT8 Size,
248  IN UINT8 Option
249  );
250
251/**
252  Display Cache Configuration.
253
254  @param[in] CacheConfiguration   Cache Configuration.
255Bits 15:10 Reserved, must be 0
256Bits 9:8 Operational Mode
257  0h - Write Through
258  1h - Write Back
259  2h - Varies with Memory Address
260  3h - Unknown
261Bit 7 Enabled/Disabled
262  1 - Enabled
263  0 - Disabled
264Bits 6:5 Location
265  0h - Internal
266  1h - External
267  2h - Reserved
268  3h - Unknown
269Bit 4 Reserved, must be zero
270Bit 3 Cache Socketed
271  1 - Socketed
272  0 - Unsocketed
273Bits 2:0 Cache Level
274  1 through 8 (For example, an L1 cache would
275  use value 000b and an L3 cache would use 010b.)
276
277  @param[in] Option   The option
278**/
279VOID
280DisplayCacheConfiguration (
281  IN UINT16 CacheConfiguration,
282  IN UINT8 Option
283  );
284
285/**
286  The Slot ID field of the System Slot structure provides a mechanism to
287  correlate the physical attributes of the slot to its logical access method
288  (which varies based on the Slot Type field).
289
290  @param[in] SlotId   - The slot ID
291  @param[in] SlotType - The slot type
292  @param[in] Option   - The Option
293**/
294VOID
295DisplaySystemSlotId (
296  IN UINT16  SlotId,
297  IN UINT8   SlotType,
298  IN UINT8   Option
299  );
300
301/**
302  Display Portable Battery (Type 22) information.
303
304  The date the cell pack was manufactured, in packed format:
305   Bits 15:9  Year, biased by 1980, in the range 0 to 127.
306   Bits 8:5 Month, in the range 1 to 12.
307   Bits 4:0 Date, in the range 1 to 31.
308  For example, 01 February 2000 would be identified as
309  0010 1000 0100 0001b (0x2841).
310
311  @param[in] Date     The date
312  @param[in] Option   The option
313**/
314VOID
315DisplaySBDSManufactureDate (
316  IN UINT16  Date,
317  IN UINT8   Option
318  );
319
320/**
321  Display System Reset  (Type 23) information.
322
323  Routine Description:
324  Identifies the system-reset capabilities for the system.
325   Bits 7:6 Reserved for future assignment via this specification, set to 00b.
326   Bit 5  System contains a watchdog timer, either True (1) or False (0).
327   Bits 4:3 Boot Option on Limit.
328    Identifies the system action to be taken when the Reset Limit is reached, one of:
329    00b Reserved, do not use.
330    01b Operating system
331    10b System utilities
332    11b Do not rebootBits
333   2:1  Boot Option.  Indicates the action to be taken following a watchdog reset, one of:
334    00b Reserved, do not use.
335    01b Operating system
336    10b System utilities
337    11b Do not reboot
338   Bit 0  Status.
339    1b The system reset is enabled by the user
340    0b The system reset is not enabled by the user
341
342  @param[in] Reset   Reset
343  @param[in] Option  The option
344**/
345VOID
346DisplaySystemResetCapabilities (
347  IN UINT8 Reset,
348  IN UINT8 Option
349  );
350
351/**
352  Display Hardware Security (Type 24) information.
353
354    Routine Description:
355    Identifies the password and reset status for the system:
356
357    Bits 7:6    Power-on Password Status, one of:
358      00b Disabled
359      01b Enabled
360      10b Not Implemented
361      11b Unknown
362    Bits 5:4    Keyboard Password Status, one of:
363      00b Disabled
364      01b Enabled
365      10b Not Implemented
366      11b Unknown
367    Bits 3:2    Administrator Password Status, one  of:
368      00b Disabled
369      01b Enabled
370      10b Not Implemented
371      11b Unknown
372    Bits 1:0    Front Panel Reset Status, one of:
373      00b Disabled
374      01b Enabled
375      10b Not Implemented
376      11b Unknown
377
378  @param[in] Settings The device settings.
379  @param[in] Option   The device options.
380**/
381VOID
382DisplayHardwareSecuritySettings (
383  IN UINT8 Settings,
384  IN UINT8 Option
385  );
386
387/**
388  Display Out-of-Band Remote Access (Type 30) information.
389
390  @param[in] Connections        The device characteristics.
391  @param[in] Option             The device options.
392**/
393VOID
394DisplayOBRAConnections (
395  IN UINT8   Connections,
396  IN UINT8   Option
397  );
398
399/**
400  Display System Boot Information (Type 32) information.
401
402  @param[in] Parameter      The parameter.
403  @param[in] Option         The options.
404**/
405VOID
406DisplaySystemBootStatus (
407  IN UINT8 Parameter,
408  IN UINT8 Option
409  );
410
411/**
412  Display System Power Supply (Type 39) information.
413
414  @param[in] Characteristics    The device characteristics.
415  @param[in] Option             The device options.
416**/
417VOID
418DisplaySPSCharacteristics (
419  IN UINT16  Characteristics,
420  IN UINT8   Option
421  );
422
423#endif
424