1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (c) 2024 Linaro Limited
4  * Author: Raymond Mao <raymond.mao@linaro.org>
5  */
6 
7 #ifndef _SMBIOS_DEF_H_
8 #define _SMBIOS_DEF_H_
9 
10 /*
11  * BIOS characteristics
12  */
13 
14 #define BIOS_CHARACTERISTICS_PCI_SUPPORTED	0x80 /* BIT(7) */
15 #define BIOS_CHARACTERISTICS_UPGRADEABLE	0x800 /* BIT(11) */
16 #define BIOS_CHARACTERISTICS_SELECTABLE_BOOT	0x10000  /* BIT(16) */
17 
18 #define BIOS_CHARACTERISTICS_EXT1_ACPI		1 /* BIT(0) */
19 #define BIOS_CHARACTERISTICS_EXT2_UEFI		8 /* BIT(3) */
20 #define BIOS_CHARACTERISTICS_EXT2_TARGET	4 /* BIT(2) */
21 
22 /*
23  * System Information
24  */
25 
26 #define SMBIOS_WAKEUP_TYPE_RESERVED		0
27 #define SMBIOS_WAKEUP_TYPE_OTHER		1
28 #define SMBIOS_WAKEUP_TYPE_UNKNOWN		2
29 #define SMBIOS_WAKEUP_TYPE_APM_TIMER		3
30 #define SMBIOS_WAKEUP_TYPE_MODEM_RING		4
31 #define SMBIOS_WAKEUP_TYPE_LAN_REMOTE		5
32 #define SMBIOS_WAKEUP_TYPE_POWER_SWITCH		6
33 #define SMBIOS_WAKEUP_TYPE_PCI_PME		7
34 #define SMBIOS_WAKEUP_TYPE_AC_POWER_RESTORED	8
35 
36 /*
37  * Baseboard Information
38  */
39 
40 #define SMBIOS_BOARD_FEAT_HOST_BOARD		1 /* BIT(0) */
41 #define SMBIOS_BOARD_FEAT_REQ_AUX		2 /* BIT(1) */
42 #define SMBIOS_BOARD_FEAT_REMOVABLE		4 /* BIT(2) */
43 #define SMBIOS_BOARD_FEAT_REPLACEABLE		8 /* BIT(3) */
44 #define SMBIOS_BOARD_FEAT_HOT_SWAPPABLE		16 /* BIT(4) */
45 
46 #define SMBIOS_BOARD_TYPE_UNKNOWN		1
47 #define SMBIOS_BOARD_TYPE_OTHER			2
48 #define SMBIOS_BOARD_TYPE_SERVER_BLADE		3
49 #define SMBIOS_BOARD_TYPE_CON_SWITCH		4
50 #define SMBIOS_BOARD_TYPE_SM_MODULE		5
51 #define SMBIOS_BOARD_TYPE_PROCESSOR_MODULE	6
52 #define SMBIOS_BOARD_TYPE_IO_MODULE		7
53 #define SMBIOS_BOARD_TYPE_MEM_MODULE		8
54 #define SMBIOS_BOARD_TYPE_DAUGHTER_BOARD	9
55 #define SMBIOS_BOARD_TYPE_MOTHERBOARD		10
56 #define SMBIOS_BOARD_TYPE_PROC_MEM_MODULE	11
57 #define SMBIOS_BOARD_TYPE_PROC_IO_MODULE	12
58 #define SMBIOS_BOARD_TYPE_INTERCON		13
59 
60 /*
61  * System Enclosure or Chassis
62  */
63 #define SMBIOS_ENCLOSURE_UNKNOWN	2
64 #define SMBIOS_ENCLOSURE_DESKTOP	3
65 
66 #define SMBIOS_STATE_OTHER		1
67 #define SMBIOS_STATE_UNKNOWN		2
68 #define SMBIOS_STATE_SAFE		3
69 #define SMBIOS_STATE_WARNING		4
70 #define SMBIOS_STATE_CRITICAL		5
71 #define SMBIOS_STATE_NONRECOVERABLE	6
72 
73 #define SMBIOS_SECURITY_OTHER		1
74 #define SMBIOS_SECURITY_UNKNOWN		2
75 #define SMBIOS_SECURITY_NONE		3
76 #define SMBIOS_SECURITY_EXTINT_LOCK	4
77 #define SMBIOS_SECURITY_EXTINT_EN	5
78 
79 #define SMBIOS_ENCLOSURE_OEM_UND	0
80 #define SMBIOS_ENCLOSURE_HEIGHT_UND	0
81 #define SMBIOS_POWCORD_NUM_UND		0
82 #define SMBIOS_ELEMENT_TYPE_SELECT	0x80 /* BIT(7) */
83 
84 /*
85  * Processor Information
86  */
87 
88 #define SMBIOS_PROCESSOR_TYPE_OTHER	1
89 #define SMBIOS_PROCESSOR_TYPE_UNKNOWN	2
90 #define SMBIOS_PROCESSOR_TYPE_CENTRAL	3
91 #define SMBIOS_PROCESSOR_TYPE_MATH	4
92 #define SMBIOS_PROCESSOR_TYPE_DSP	5
93 #define SMBIOS_PROCESSOR_TYPE_VIDEO	6
94 
95 #define SMBIOS_PROCESSOR_STATUS_UNKNOWN		0
96 #define SMBIOS_PROCESSOR_STATUS_ENABLED		1
97 #define SMBIOS_PROCESSOR_STATUS_DISABLED_USER	2
98 #define SMBIOS_PROCESSOR_STATUS_DISABLED_BIOS	3
99 #define SMBIOS_PROCESSOR_STATUS_IDLE		4
100 #define SMBIOS_PROCESSOR_STATUS_OTHER		7
101 
102 #define SMBIOS_PROCESSOR_UPGRADE_OTHER		1
103 #define SMBIOS_PROCESSOR_UPGRADE_UNKNOWN	2
104 #define SMBIOS_PROCESSOR_UPGRADE_NONE		6
105 
106 #define SMBIOS_PROCESSOR_FAMILY_OTHER	1
107 #define SMBIOS_PROCESSOR_FAMILY_UNKNOWN	2
108 #define SMBIOS_PROCESSOR_FAMILY_RSVD	255
109 #define SMBIOS_PROCESSOR_FAMILY_ARMV7	256
110 #define SMBIOS_PROCESSOR_FAMILY_ARMV8	257
111 #define SMBIOS_PROCESSOR_FAMILY_RV32	512
112 #define SMBIOS_PROCESSOR_FAMILY_RV64	513
113 
114 #define SMBIOS_PROCESSOR_FAMILY_EXT	0xfe
115 
116 /* Processor Characteristics */
117 #define SMBIOS_PROCESSOR_RSVD		1 /* BIT(0) */
118 #define SMBIOS_PROCESSOR_UND		2 /* BIT(1) */
119 #define SMBIOS_PROCESSOR_64BIT		4 /* BIT(2) */
120 #define SMBIOS_PROCESSOR_MULTICORE	8 /* BIT(3) */
121 #define SMBIOS_PROCESSOR_HWTHREAD	16 /* BIT(4) */
122 #define SMBIOS_PROCESSOR_EXEC_PROT	32 /* BIT(5) */
123 #define SMBIOS_PROCESSOR_ENH_VIRT	64 /* BIT(6) */
124 #define SMBIOS_PROCESSOR_POW_CON	0x80 /* BIT(7) */
125 #define SMBIOS_PROCESSOR_128BIT		0x100 /* BIT(8) */
126 #define SMBIOS_PROCESSOR_ARM64_SOCID	0x200 /* BIT(9) */
127 
128 /*
129  * Cache Information
130  */
131 
132 #define SMBIOS_CACHE_SIZE_EXT_KB (2047 * 1024) /* 2047 MiB */
133 #define SMBIOS_CACHE_HANDLE_NONE 0xffff
134 
135 /* System Cache Type */
136 #define SMBIOS_CACHE_SYSCACHE_TYPE_OTHER	1
137 #define SMBIOS_CACHE_SYSCACHE_TYPE_UNKNOWN	2
138 #define SMBIOS_CACHE_SYSCACHE_TYPE_INST		3
139 #define SMBIOS_CACHE_SYSCACHE_TYPE_DATA		4
140 #define SMBIOS_CACHE_SYSCACHE_TYPE_UNIFIED	5
141 
142 /* Cache Speed */
143 #define SMBIOS_CACHE_SPEED_UNKNOWN	0
144 
145 /* SRAM Type */
146 #define SMBIOS_CACHE_SRAM_TYPE_UNKNOWN	2 /* BIT(1) */
147 
148 /* Error Correction Type */
149 #define SMBIOS_CACHE_ERRCORR_OTHER	1
150 #define SMBIOS_CACHE_ERRCORR_UNKNOWN	2
151 #define SMBIOS_CACHE_ERRCORR_NONE	3
152 #define SMBIOS_CACHE_ERRCORR_PARITY	4
153 #define SMBIOS_CACHE_ERRCORR_SBITECC	5
154 #define SMBIOS_CACHE_ERRCORR_MBITECC	6
155 
156 /* Cache Configuration */
157 #define SMBIOS_CACHE_LEVEL_1	0
158 #define SMBIOS_CACHE_LEVEL_2	1
159 #define SMBIOS_CACHE_LEVEL_3	2
160 #define SMBIOS_CACHE_LEVEL_4	3
161 #define SMBIOS_CACHE_LEVEL_5	4
162 #define SMBIOS_CACHE_LEVEL_6	5
163 #define SMBIOS_CACHE_LEVEL_7	6
164 #define SMBIOS_CACHE_LEVEL_8	7
165 #define SMBIOS_CACHE_SOCKETED	8 /* BIT(3) */
166 #define SMBIOS_CACHE_LOCATE_EXTERNAL	32 /* BIT(5) */
167 #define SMBIOS_CACHE_LOCATE_RESERVED	64 /* BIT(6) */
168 #define SMBIOS_CACHE_LOCATE_UNKNOWN	96 /* (BIT(5) | BIT(6)) */
169 #define SMBIOS_CACHE_ENABLED	0x80 /* BIT(7) */
170 #define SMBIOS_CACHE_OP_WB	0x100 /* BIT(8), Write Back */
171 #define SMBIOS_CACHE_OP_VAR	0x200 /* BIT(9), Varies with Memory Address */
172 #define SMBIOS_CACHE_OP_UND	0x300 /* (BIT(8) | BIT(9)), Unknown*/
173 
174 /* Cache Granularity */
175 #define SMBIOS_CACHE_GRANU_1K	0
176 #define SMBIOS_CACHE_GRANU_64K	1
177 
178 /* Cache Associativity */
179 #define SMBIOS_CACHE_ASSOC_OTHER	1
180 #define SMBIOS_CACHE_ASSOC_UNKNOWN	2
181 #define SMBIOS_CACHE_ASSOC_DMAPPED	3
182 #define SMBIOS_CACHE_ASSOC_2WAY		4
183 #define SMBIOS_CACHE_ASSOC_4WAY		5
184 #define SMBIOS_CACHE_ASSOC_FULLY	6
185 #define SMBIOS_CACHE_ASSOC_8WAY		7
186 #define SMBIOS_CACHE_ASSOC_16WAY	8
187 #define SMBIOS_CACHE_ASSOC_12WAY	9
188 #define SMBIOS_CACHE_ASSOC_24WAY	10
189 #define SMBIOS_CACHE_ASSOC_32WAY	11
190 #define SMBIOS_CACHE_ASSOC_48WAY	12
191 #define SMBIOS_CACHE_ASSOC_64WAY	13
192 #define SMBIOS_CACHE_ASSOC_20WAY	14
193 
194 #endif /* _SMBIOS_DEF_H_ */
195