1 /*
2  * Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistribution of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistribution in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * Neither the name of Sun Microsystems, Inc. or the names of
16  * contributors may be used to endorse or promote products derived
17  * from this software without specific prior written permission.
18  *
19  * This software is provided "AS IS," without a warranty of any kind.
20  * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
21  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
22  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
23  * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
24  * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
25  * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL
26  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
27  * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
28  * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
29  * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
30  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
31  */
32 
33 #include <stddef.h>
34 #include <ipmitool/ipmi_strings.h>
35 #include <ipmitool/ipmi_constants.h>
36 #include <ipmitool/ipmi_sensor.h>
37 #include <ipmitool/ipmi_sel.h>  /* for IPMI_OEM */
38 
39 const struct valstr ipmi_oem_info[] = {
40 
41    { IPMI_OEM_UNKNOWN,                "Unknown" },
42    { IPMI_OEM_HP,                     "Hewlett-Packard" },
43    { IPMI_OEM_SUN,                    "Sun Microsystems" },
44    { IPMI_OEM_INTEL,                  "Intel Corporation" },
45    { IPMI_OEM_LMC,                    "LMC" },
46    { IPMI_OEM_RADISYS,                "RadiSys Corporation" },
47    { IPMI_OEM_TYAN,                   "Tyan Computer Corporation" },
48    { IPMI_OEM_NEWISYS,                "Newisys" },
49    { IPMI_OEM_SUPERMICRO,             "Supermicro" },
50    { IPMI_OEM_GOOGLE,                 "Google" },
51    { IPMI_OEM_KONTRON,                "Kontron" },
52    { IPMI_OEM_NOKIA,                  "Nokia" },
53    { IPMI_OEM_PICMG,                  "PICMG" },
54    { IPMI_OEM_PEPPERCON,              "Peppercon AG" },
55    { IPMI_OEM_DELL,                   "DELL Inc" },
56    { IPMI_OEM_NEC,                    "NEC" },
57    { IPMI_OEM_MAGNUM,                 "Magnum Technologies" },
58    { IPMI_OEM_FUJITSU_SIEMENS,        "Fujitsu Siemens" },
59    { IPMI_OEM_TATUNG,                 "Tatung" },
60    { IPMI_OEM_AMI,                    "AMI" },
61    { IPMI_OEM_RARITAN,                "Raritan" },
62    { IPMI_OEM_AVOCENT,                "Avocent" },
63    { IPMI_OEM_OSA,                    "OSA" },
64    { IPMI_OEM_TOSHIBA,                "Toshiba" },
65    { IPMI_OEM_HITACHI_116,            "Hitachi" },
66    { IPMI_OEM_HITACHI_399,            "Hitachi" },
67    { IPMI_OEM_NOKIA_SOLUTIONS_AND_NETWORKS, "Nokia Solutions and Networks" },
68    { IPMI_OEM_BULL,                   "Bull Company" },
69    { IPMI_OEM_PPS,                    "Pigeon Point Systems" },
70    { IPMI_OEM_BROADCOM,               "Broadcom Corporation" },
71    { IPMI_OEM_ERICSSON,               "Ericsson AB"},
72    { IPMI_OEM_QUANTA,                 "Quanta" },
73    { IPMI_OEM_VITA,                   "VITA" },
74    { IPMI_OEM_ADVANTECH,              "Advantech" },
75    /************************************************************************
76     * Add ID String for IANA Enterprise Number of IBM & ADLINK
77     * https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
78     *  2
79     *    IBM
80     *      Kristine Adamson
81     *        adamson&us.ibm.com
82     *  4769
83     *    IBM Corporation
84     *      Victor Sample
85     *        vsample&us.ibm.com
86     *  20301
87     *    IBM eServer X
88     *      Lynn Fore
89     *        sls&us.ibm.com
90     *  24339
91     *    ADLINK TECHNOLOGY INC.
92     *      Ryan Hsu
93     *        ryan.hsu&adlinktech.com
94     ************************************************************************/
95    { IPMI_OEM_IBM_2,                  "IBM" },
96    { IPMI_OEM_IBM_4769,               "IBM Corporation" },
97    { IPMI_OEM_IBM_20301,              "IBM eServer X" },
98    { IPMI_OEM_ADLINK_24339,           "ADLINK Technology Inc." },
99    { 0xffff , NULL },
100 };
101 
102 const struct oemvalstr ipmi_oem_product_info[] = {
103    /* Keep OEM grouped together */
104    /* Intel stuff, thanks to Tim Bell */
105    { IPMI_OEM_INTEL, 0x000C, "TSRLT2" },
106    { IPMI_OEM_INTEL, 0x001B, "TIGPR2U" },
107    { IPMI_OEM_INTEL, 0x0022, "TIGI2U" },
108    { IPMI_OEM_INTEL, 0x0026, "Bridgeport" },
109    { IPMI_OEM_INTEL, 0x0028, "S5000PAL" },
110    { IPMI_OEM_INTEL, 0x0029, "S5000PSL" },
111    { IPMI_OEM_INTEL, 0x0100, "Tiger4" },
112    { IPMI_OEM_INTEL, 0x0103, "McCarran" },
113    { IPMI_OEM_INTEL, 0x0800, "ZT5504" },
114    { IPMI_OEM_INTEL, 0x0808, "MPCBL0001" },
115    { IPMI_OEM_INTEL, 0x0811, "TIGW1U" },
116    { IPMI_OEM_INTEL, 0x4311, "NSI2U" },
117    /* Kontron */
118    { IPMI_OEM_KONTRON,4000, "AM4000 AdvancedMC" },
119    { IPMI_OEM_KONTRON,4001, "AM4001 AdvancedMC" },
120    { IPMI_OEM_KONTRON,4002, "AM4002 AdvancedMC" },
121    { IPMI_OEM_KONTRON,4010, "AM4010 AdvancedMC" },
122    { IPMI_OEM_KONTRON,5503, "AM4500/4520 AdvancedMC" },
123    { IPMI_OEM_KONTRON,5504, "AM4300 AdvancedMC" },
124    { IPMI_OEM_KONTRON,5507, "AM4301 AdvancedMC" },
125    { IPMI_OEM_KONTRON,5508, "AM4330 AdvancedMC" },
126    { IPMI_OEM_KONTRON,5520, "KTC5520/EATX" },
127    { IPMI_OEM_KONTRON,5703, "RTM8020" },
128    { IPMI_OEM_KONTRON,5704, "RTM8030" },
129    { IPMI_OEM_KONTRON,5705, "RTM8050" },
130    { IPMI_OEM_KONTRON,6000, "CP6000" },
131    { IPMI_OEM_KONTRON,6006, "DT-64" },
132    { IPMI_OEM_KONTRON,6010, "CP6010" },
133    { IPMI_OEM_KONTRON,6011, "CP6011" },
134    { IPMI_OEM_KONTRON,6012, "CP6012" },
135    { IPMI_OEM_KONTRON,6014, "CP6014" },
136    { IPMI_OEM_KONTRON,5002, "AT8001" },
137    { IPMI_OEM_KONTRON,5003, "AT8010" },
138    { IPMI_OEM_KONTRON,5004, "AT8020" },
139    { IPMI_OEM_KONTRON,5006, "AT8030 IPMC" },
140    { IPMI_OEM_KONTRON,2025, "AT8030 MMC" },
141    { IPMI_OEM_KONTRON,5007, "AT8050" },
142    { IPMI_OEM_KONTRON,5301, "AT8400" },
143    { IPMI_OEM_KONTRON,5303, "AT8901" },
144    /* Broadcom */
145    { IPMI_OEM_BROADCOM, 5725, "BCM5725" },
146    /* Ericsson */
147    { IPMI_OEM_ERICSSON, 0x0054, "Phantom" },
148    /* Advantech */
149    /* ATCA Blades */
150    { IPMI_OEM_ADVANTECH, 0x3393, "MIC-3393" },
151    { IPMI_OEM_ADVANTECH, 0x3395, "MIC-3395" },
152    { IPMI_OEM_ADVANTECH, 0x3396, "MIC-3396" },
153    { IPMI_OEM_ADVANTECH, 0x5302, "MIC-5302" },
154    { IPMI_OEM_ADVANTECH, 0x5304, "MIC-5304" },
155    { IPMI_OEM_ADVANTECH, 0x5320, "MIC-5320" },
156    { IPMI_OEM_ADVANTECH, 0x5321, "MIC-5321" },
157    { IPMI_OEM_ADVANTECH, 0x5322, "MIC-5322" },
158    { IPMI_OEM_ADVANTECH, 0x5332, "MIC-5332" },
159    { IPMI_OEM_ADVANTECH, 0x5333, "MIC-5333" },
160    { IPMI_OEM_ADVANTECH, 0x5342, "MIC-5342" },
161    { IPMI_OEM_ADVANTECH, 0x5343, "MIC-5343" },
162    { IPMI_OEM_ADVANTECH, 0x5344, "MIC-5344" },
163    { IPMI_OEM_ADVANTECH, 0x5345, "MIC-5345" },
164    { IPMI_OEM_ADVANTECH, 0x5201, "MIC-5201 Dual 10GE AMC"},
165    { IPMI_OEM_ADVANTECH, 0x5203, "MIC-5203 Quad GbE AMC"},
166    { IPMI_OEM_ADVANTECH, 0x5212, "MIC-5212 Dual 10GE AMC"},
167    /* AdvancedMC */
168    { IPMI_OEM_ADVANTECH, 0x5401, "MIC-5401" },
169    { IPMI_OEM_ADVANTECH, 0x5601, "MIC-5601" },
170    { IPMI_OEM_ADVANTECH, 0x5602, "MIC-5602" },
171    { IPMI_OEM_ADVANTECH, 0x5604, "MIC-5604" },
172    { IPMI_OEM_ADVANTECH, 0x5603, "MIC-5603" },
173    { IPMI_OEM_ADVANTECH, 0x6311, "MIC-6311" },
174    { IPMI_OEM_ADVANTECH, 0x6313, "MIC-6313" },
175    { IPMI_OEM_ADVANTECH, 0x8301, "MIC-8301" },
176    { IPMI_OEM_ADVANTECH, 0x8302, "MIC-8302" },
177    { IPMI_OEM_ADVANTECH, 0x8304, "MIC-8304" },
178    { IPMI_OEM_ADVANTECH, 0x5101, "RTM-5101" },
179    { IPMI_OEM_ADVANTECH, 0x5102, "RTM-5102" },
180    { IPMI_OEM_ADVANTECH, 0x5106, "RTM-5106" },
181    { IPMI_OEM_ADVANTECH, 0x5107, "RTM-5107" },
182    { IPMI_OEM_ADVANTECH, 0x5210, "RTM-5210" },
183    { IPMI_OEM_ADVANTECH, 0x5220, "RTM-5220" },
184    { IPMI_OEM_ADVANTECH, 0x5104, "RTM-5104" },
185    { IPMI_OEM_ADVANTECH, 0x5500, "UTCA-5500"},
186    { IPMI_OEM_ADVANTECH, 0x5503, "UTCA-5503"},
187    { IPMI_OEM_ADVANTECH, 0x5504, "UTCA-5504"},
188    { IPMI_OEM_ADVANTECH, 0x5801, "UTCA-5801"},
189    { IPMI_OEM_ADVANTECH, 0x2210, "NCPB-2210"},
190    { IPMI_OEM_ADVANTECH, 0x2305, "NCPB-2305"},
191    { IPMI_OEM_ADVANTECH, 0x2320, "NCPB-2320"},
192    { IPMI_OEM_ADVANTECH, 0x3109, "NCP-3109" },
193    { IPMI_OEM_ADVANTECH, 0x3110, "NCP-3110" },
194    { IPMI_OEM_ADVANTECH, 0x3200, "NCP-3200" },
195    { IPMI_OEM_ADVANTECH, 0x5060, "SMM-5060" },
196    { IPMI_OEM_ADVANTECH, 0x3210, "FWA-3210" },
197    { IPMI_OEM_ADVANTECH, 0x3220, "FWA-3220" },
198    { IPMI_OEM_ADVANTECH, 0x3221, "FWA-3221" },
199    { IPMI_OEM_ADVANTECH, 0x3230, "FWA-3230" },
200    { IPMI_OEM_ADVANTECH, 0x3231, "FWA-3231" },
201    { IPMI_OEM_ADVANTECH, 0x3233, "FWA-3233" },
202    { IPMI_OEM_ADVANTECH, 0x3250, "FWA-3250" },
203    { IPMI_OEM_ADVANTECH, 0x3260, "FWA-3260" },
204    { IPMI_OEM_ADVANTECH, 0x5020, "FWA-5020" },
205    { IPMI_OEM_ADVANTECH, 0x6510, "FWA-6510" },
206    { IPMI_OEM_ADVANTECH, 0x6511, "FWA-6511" },
207    { IPMI_OEM_ADVANTECH, 0x6512, "FWA-6512" },
208    { IPMI_OEM_ADVANTECH, 0x6520, "FWA-6520" },
209    { IPMI_OEM_ADVANTECH, 0x6521, "FWA-6521" },
210    { IPMI_OEM_ADVANTECH, 0x6522, "FWA-6522" },
211    { IPMI_OEM_ADVANTECH, 0x7310, "ATCA-7310"},
212    { IPMI_OEM_ADVANTECH, 0x7330, "ATCA-7330"},
213    { IPMI_OEM_ADVANTECH, 0x7410, "ATCA-7410"},
214    { IPMI_OEM_ADVANTECH, 0x9023, "ATCA-9023"},
215    { IPMI_OEM_ADVANTECH, 0x9112, "ATCA-9112"},
216    { IPMI_OEM_ADVANTECH, 0x4201, "AMC-4201" },
217    { IPMI_OEM_ADVANTECH, 0x4202, "AMC-4202" },
218    { IPMI_OEM_ADVANTECH, 0x3211, "NAMB-3211"},
219    { IPMI_OEM_ADVANTECH, 0x1207, "CPCI-1207"},
220    { IPMI_OEM_ADVANTECH, 0x120E, "CPCI-1207 Test Board"},
221    { IPMI_OEM_ADVANTECH, 0x1304, "CPCI-1304"},
222    { IPMI_OEM_ADVANTECH, 0x7001, "CPCI-7001"},
223    { IPMI_OEM_ADVANTECH, 0x8220, "CPCI-8220"},
224    { IPMI_OEM_ADVANTECH, 0x9001, "ESP-9001" },
225    { IPMI_OEM_ADVANTECH, 0x9002, "ESP-9002" },
226    { IPMI_OEM_ADVANTECH, 0x9012, "ESP-9012" },
227    { IPMI_OEM_ADVANTECH, 0x9212, "ESP-9212" },
228    { IPMI_OEM_ADVANTECH, 0x6000, "CGS-6000" },
229    { IPMI_OEM_ADVANTECH, 0x6010, "CGS-6010" },
230    /* ADLINK Technology Inc. */
231    /* AdvancedTCA Processor Blades */
232    { IPMI_OEM_ADLINK_24339, 0x3100, "aTCA-3100" },
233    { IPMI_OEM_ADLINK_24339, 0x3110, "aTCA-3110" },
234    { IPMI_OEM_ADLINK_24339, 0x3150, "aTCA-3150" },
235    { IPMI_OEM_ADLINK_24339, 0x3420, "aTCA-3420" },
236    { IPMI_OEM_ADLINK_24339, 0x3710, "aTCA-3710" },
237    { IPMI_OEM_ADLINK_24339, 0x6100, "aTCA-6100" },
238    { IPMI_OEM_ADLINK_24339, 0x6200, "aTCA-6200" },
239    { IPMI_OEM_ADLINK_24339, 0x6250, "aTCA-6250/6250STW" },
240    { IPMI_OEM_ADLINK_24339, 0x6270, "aTCA-R6270" },
241    { IPMI_OEM_ADLINK_24339, 0x6280, "aTCA-R6280" },
242    { IPMI_OEM_ADLINK_24339, 0x6890, "aTCA-6890" },
243    { IPMI_OEM_ADLINK_24339, 0x6891, "aTCA-6891" },
244    { IPMI_OEM_ADLINK_24339, 0x6900, "aTCA-6900" },
245    { IPMI_OEM_ADLINK_24339, 0x6905, "aTCA-R6905" },
246    { IPMI_OEM_ADLINK_24339, 0x690A, "aTCA-R6900" },
247    { IPMI_OEM_ADLINK_24339, 0x8214, "aTCA-8214" },
248    { IPMI_OEM_ADLINK_24339, 0x8606, "aTCA-8606" },
249    { IPMI_OEM_ADLINK_24339, 0x9300, "aTCA-9300" },
250    { IPMI_OEM_ADLINK_24339, 0x9700, "aTCA-9700" },
251    { IPMI_OEM_ADLINK_24339, 0x9700, "aTCA-R9700" },
252    { IPMI_OEM_ADLINK_24339, 0x970D, "aTCA-9700D" },
253    { IPMI_OEM_ADLINK_24339, 0x9710, "aTCA-9710" },
254    { IPMI_OEM_ADLINK_24339, 0x9710, "aTCA-R9710" },
255    { IPMI_OEM_ADLINK_24339, 0xF001, "aTCA-FN001" },
256    { IPMI_OEM_ADLINK_24339, 0xF2A0, "aTCA-F2AX" },
257    { IPMI_OEM_ADLINK_24339, 0xF5A0, "aTCA-F5AX" },
258    /* CompactPCI Blades */
259    { IPMI_OEM_ADLINK_24339, 0x3510, "cPCI-3510" },
260    { IPMI_OEM_ADLINK_24339, 0x3970, "cPCI-3970" },
261    { IPMI_OEM_ADLINK_24339, 0x6010, "cPCI-6010" },
262    { IPMI_OEM_ADLINK_24339, 0x6210, "cPCI-6210" },
263    { IPMI_OEM_ADLINK_24339, 0x6510, "cPCI-6510" },
264    { IPMI_OEM_ADLINK_24339, 0x6520, "cPCI-6520" },
265    { IPMI_OEM_ADLINK_24339, 0x6525, "cPCI-6525" },
266    { IPMI_OEM_ADLINK_24339, 0x6530, "cPCI-6530/6530BL" },
267    { IPMI_OEM_ADLINK_24339, 0x6600, "cPCI-6600" },
268    { IPMI_OEM_ADLINK_24339, 0x6840, "cPCI-6840" },
269    { IPMI_OEM_ADLINK_24339, 0x6870, "cPCI-6870" },
270    { IPMI_OEM_ADLINK_24339, 0x6880, "cPCI-6880" },
271    { IPMI_OEM_ADLINK_24339, 0x6910, "cPCI-6910" },
272    { IPMI_OEM_ADLINK_24339, 0x6920, "cPCI-6920" },
273    { IPMI_OEM_ADLINK_24339, 0x6930, "cPCI-6930" },
274    { IPMI_OEM_ADLINK_24339, 0x6940, "cPCI-6940" },
275    /* VPX Blades */
276    { IPMI_OEM_ADLINK_24339, 0x3000, "VPX3000" },
277    { IPMI_OEM_ADLINK_24339, 0x3001, "VPX3001" },
278    { IPMI_OEM_ADLINK_24339, 0x3002, "VPX3002" },
279    { IPMI_OEM_ADLINK_24339, 0x3010, "VPX3010" },
280    { IPMI_OEM_ADLINK_24339, 0x3F10, "VPX3G10" },
281    { IPMI_OEM_ADLINK_24339, 0x6000, "VPX6000" },
282    /* Network Appliance */
283    { IPMI_OEM_ADLINK_24339, 0x0410, "MXN-0410" },
284    { IPMI_OEM_ADLINK_24339, 0x2600, "MCN-2600" },
285    { IPMI_OEM_ADLINK_24339, 0x1500, "MCN-1500" },
286 
287    { 0xffffff        , 0xffff , NULL },
288  };
289 
290 const char *ipmi_generic_sensor_type_vals[] = {
291     "reserved",
292     "Temperature", "Voltage", "Current", "Fan",
293     "Physical Security", "Platform Security", "Processor",
294     "Power Supply", "Power Unit", "Cooling Device", "Other",
295     "Memory", "Drive Slot / Bay", "POST Memory Resize",
296     "System Firmwares", "Event Logging Disabled", "Watchdog1",
297     "System Event", "Critical Interrupt", "Button",
298     "Module / Board", "Microcontroller", "Add-in Card",
299     "Chassis", "Chip Set", "Other FRU", "Cable / Interconnect",
300     "Terminator", "System Boot Initiated", "Boot Error",
301     "OS Boot", "OS Critical Stop", "Slot / Connector",
302     "System ACPI Power State", "Watchdog2", "Platform Alert",
303     "Entity Presence", "Monitor ASIC", "LAN",
304     "Management Subsys Health", "Battery", "Session Audit",
305     "Version Change", "FRU State",
306     NULL
307 };
308 
309 const struct oemvalstr ipmi_oem_sensor_type_vals[] = {
310    /* Keep OEM grouped together */
311    { IPMI_OEM_KONTRON, 0xC0, "Firmware Info" },
312    { IPMI_OEM_KONTRON, 0xC2, "Init Agent" },
313    { IPMI_OEM_KONTRON, 0xC2, "Board Reset(cPCI)" },
314    { IPMI_OEM_KONTRON, 0xC3, "IPMBL Link State" },
315    { IPMI_OEM_KONTRON, 0xC4, "Board Reset" },
316    { IPMI_OEM_KONTRON, 0xC5, "FRU Information Agent" },
317    { IPMI_OEM_KONTRON, 0xC6, "POST Value Sensor" },
318    { IPMI_OEM_KONTRON, 0xC7, "FWUM Status" },
319    { IPMI_OEM_KONTRON, 0xC8, "Switch Mngt Software Status" },
320    { IPMI_OEM_KONTRON, 0xC9, "OEM Diagnostic Status" },
321    { IPMI_OEM_KONTRON, 0xCA, "Component Firmware Upgrade" },
322    { IPMI_OEM_KONTRON, 0xCB, "FRU Over Current" },
323    { IPMI_OEM_KONTRON, 0xCC, "FRU Sensor Error" },
324    { IPMI_OEM_KONTRON, 0xCD, "FRU Power Denied" },
325    { IPMI_OEM_KONTRON, 0xCE, "Reserved" },
326    { IPMI_OEM_KONTRON, 0xCF, "Board Reset" },
327    { IPMI_OEM_KONTRON, 0xD0, "Clock Resource Control" },
328    { IPMI_OEM_KONTRON, 0xD1, "Power State" },
329    { IPMI_OEM_KONTRON, 0xD2, "FRU Mngt Power Failure" },
330    { IPMI_OEM_KONTRON, 0xD3, "Jumper Status" },
331    { IPMI_OEM_KONTRON, 0xF2, "RTM Module Hotswap" },
332    /* PICMG Sensor Types */
333    { IPMI_OEM_PICMG, 0xF0, "FRU Hot Swap" },
334    { IPMI_OEM_PICMG, 0xF1,"IPMB Physical Link" },
335    { IPMI_OEM_PICMG, 0xF2, "Module Hot Swap" },
336    { IPMI_OEM_PICMG, 0xF3, "Power Channel Notification" },
337    { IPMI_OEM_PICMG, 0xF4, "Telco Alarm Input" },
338    /* VITA 46.11 Sensor Types */
339    { IPMI_OEM_VITA, 0xF0, "FRU State" },
340    { IPMI_OEM_VITA, 0xF1, "System IPMB Link" },
341    { IPMI_OEM_VITA, 0xF2, "FRU Health" },
342    { IPMI_OEM_VITA, 0xF3, "FRU Temperature" },
343    { IPMI_OEM_VITA, 0xF4, "Payload Test Results" },
344    { IPMI_OEM_VITA, 0xF5, "Payload Test Status" },
345 
346    { 0xffffff,      0x00,  NULL }
347 };
348 
349 const struct valstr ipmi_netfn_vals[] = {
350 	{ IPMI_NETFN_CHASSIS,	"Chassis" },
351 	{ IPMI_NETFN_BRIDGE,	"Bridge" },
352 	{ IPMI_NETFN_SE,	"SensorEvent" },
353 	{ IPMI_NETFN_APP,	"Application" },
354 	{ IPMI_NETFN_FIRMWARE,	"Firmware" },
355 	{ IPMI_NETFN_STORAGE,	"Storage" },
356 	{ IPMI_NETFN_TRANSPORT,	"Transport" },
357 	{ 0xff,			NULL },
358 };
359 
360 /*
361  * From table 26-4 of the IPMI v2 specification
362  */
363 const struct valstr ipmi_bit_rate_vals[] = {
364 	{ 0x00, "IPMI-Over-Serial-Setting"}, /* Using the value in the IPMI Over Serial Config */
365 	{ 0x06, "9.6" },
366 	{ 0x07, "19.2" },
367 	{ 0x08, "38.4" },
368 	{ 0x09, "57.6" },
369 	{ 0x0A, "115.2" },
370 	{ 0x00, NULL },
371 };
372 
373 const struct valstr ipmi_channel_activity_type_vals[] = {
374 	{ 0, "IPMI Messaging session active" },
375 	{ 1, "Callback Messaging session active" },
376 	{ 2, "Dial-out Alert active" },
377 	{ 3, "TAP Page Active" },
378 	{ 0x00, NULL },
379 };
380 
381 
382 const struct valstr ipmi_privlvl_vals[] = {
383 	{ IPMI_SESSION_PRIV_CALLBACK,   "CALLBACK" },
384 	{ IPMI_SESSION_PRIV_USER,    	"USER" },
385 	{ IPMI_SESSION_PRIV_OPERATOR,	"OPERATOR" },
386 	{ IPMI_SESSION_PRIV_ADMIN,	    "ADMINISTRATOR" },
387 	{ IPMI_SESSION_PRIV_OEM,    	"OEM" },
388 	{ 0xF,	        		    	"NO ACCESS" },
389 	{ 0xFF,			             	NULL },
390 };
391 
392 
393 const struct valstr ipmi_set_in_progress_vals[] = {
394 	{ IPMI_SET_IN_PROGRESS_SET_COMPLETE, "set-complete"    },
395 	{ IPMI_SET_IN_PROGRESS_IN_PROGRESS,  "set-in-progress" },
396 	{ IPMI_SET_IN_PROGRESS_COMMIT_WRITE, "commit-write"    },
397 	{ 0,                            NULL },
398 };
399 
400 
401 const struct valstr ipmi_authtype_session_vals[] = {
402 	{ IPMI_SESSION_AUTHTYPE_NONE,     "NONE" },
403 	{ IPMI_SESSION_AUTHTYPE_MD2,      "MD2" },
404 	{ IPMI_SESSION_AUTHTYPE_MD5,      "MD5" },
405 	{ IPMI_SESSION_AUTHTYPE_PASSWORD, "PASSWORD" },
406 	{ IPMI_SESSION_AUTHTYPE_OEM,      "OEM" },
407 	{ IPMI_SESSION_AUTHTYPE_RMCP_PLUS,"RMCP+" },
408 	{ 0xFF,                           NULL },
409 };
410 
411 
412 const struct valstr ipmi_authtype_vals[] = {
413 	{ IPMI_1_5_AUTH_TYPE_BIT_NONE,     "NONE" },
414 	{ IPMI_1_5_AUTH_TYPE_BIT_MD2,      "MD2" },
415 	{ IPMI_1_5_AUTH_TYPE_BIT_MD5,      "MD5" },
416 	{ IPMI_1_5_AUTH_TYPE_BIT_PASSWORD, "PASSWORD" },
417 	{ IPMI_1_5_AUTH_TYPE_BIT_OEM,      "OEM" },
418 	{ 0,                               NULL },
419 };
420 
421 const struct valstr entity_id_vals[] = {
422 	{ 0x00, "Unspecified" },
423 	{ 0x01, "Other" },
424 	{ 0x02, "Unknown" },
425 	{ 0x03, "Processor" },
426 	{ 0x04, "Disk or Disk Bay" },
427 	{ 0x05, "Peripheral Bay" },
428 	{ 0x06, "System Management Module" },
429 	{ 0x07, "System Board" },
430 	{ 0x08, "Memory Module" },
431 	{ 0x09, "Processor Module" },
432 	{ 0x0a, "Power Supply" },
433 	{ 0x0b, "Add-in Card" },
434 	{ 0x0c, "Front Panel Board" },
435 	{ 0x0d, "Back Panel Board" },
436 	{ 0x0e, "Power System Board" },
437 	{ 0x0f, "Drive Backplane" },
438 	{ 0x10, "System Internal Expansion Board" },
439 	{ 0x11, "Other System Board" },
440 	{ 0x12, "Processor Board" },
441 	{ 0x13, "Power Unit" },
442 	{ 0x14, "Power Module" },
443 	{ 0x15, "Power Management" },
444 	{ 0x16, "Chassis Back Panel Board" },
445 	{ 0x17, "System Chassis" },
446 	{ 0x18, "Sub-Chassis" },
447 	{ 0x19, "Other Chassis Board" },
448 	{ 0x1a, "Disk Drive Bay" },
449 	{ 0x1b, "Peripheral Bay" },
450 	{ 0x1c, "Device Bay" },
451 	{ 0x1d, "Fan Device" },
452 	{ 0x1e, "Cooling Unit" },
453 	{ 0x1f, "Cable/Interconnect" },
454 	{ 0x20, "Memory Device" },
455 	{ 0x21, "System Management Software" },
456 	{ 0x22, "BIOS" },
457 	{ 0x23, "Operating System" },
458 	{ 0x24, "System Bus" },
459 	{ 0x25, "Group" },
460 	{ 0x26, "Remote Management Device" },
461 	{ 0x27, "External Environment" },
462 	{ 0x28, "Battery" },
463 	{ 0x29, "Processing Blade" },
464 	{ 0x2A, "Connectivity Switch" },
465 	{ 0x2B, "Processor/Memory Module" },
466 	{ 0x2C, "I/O Module" },
467 	{ 0x2D, "Processor/IO Module" },
468 	{ 0x2E, "Management Controller Firmware" },
469 	{ 0x2F, "IPMI Channel" },
470 	{ 0x30, "PCI Bus" },
471 	{ 0x31, "PCI Express Bus" },
472 	{ 0x32, "SCSI Bus (parallel)" },
473 	{ 0x33, "SATA/SAS Bus" },
474 	{ 0x34, "Processor/Front-Side Bus" },
475 	{ 0x35, "Real Time Clock(RTC)" },
476 	{ 0x36, "Reserved" },
477 	{ 0x37, "Air Inlet" },
478 	{ 0x38, "Reserved" },
479 	{ 0x39, "Reserved" },
480 	{ 0x3A, "Reserved" },
481 	{ 0x3B, "Reserved" },
482 	{ 0x3C, "Reserved" },
483 	{ 0x3D, "Reserved" },
484 	{ 0x3E, "Reserved" },
485 	{ 0x3F, "Reserved" },
486 	{ 0x40, "Air Inlet" },
487 	{ 0x41, "Processor" },
488 	{ 0x42, "Baseboard/Main System Board" },
489 	/* PICMG */
490 	{ 0xA0, "PICMG Front Board" },
491 	{ 0xC0, "PICMG Rear Transition Module" },
492 	{ 0xC1, "PICMG AdvancedMC Module" },
493 	{ 0xF0, "PICMG Shelf Management Controller" },
494 	{ 0xF1, "PICMG Filtration Unit" },
495 	{ 0xF2, "PICMG Shelf FRU Information" },
496 	{ 0xF3, "PICMG Alarm Panel" },
497 	{ 0x00, NULL },
498 };
499 
500 const struct valstr entity_device_type_vals[] = {
501 	{ 0x00, "Reserved" },
502 	{ 0x01, "Reserved" },
503 	{ 0x02, "DS1624 temperature sensor" },
504 	{ 0x03, "DS1621 temperature sensor" },
505 	{ 0x04, "LM75 Temperature Sensor" },
506 	{ 0x05, "Heceta ASIC" },
507 	{ 0x06, "Reserved" },
508 	{ 0x07, "Reserved" },
509 	{ 0x08, "EEPROM, 24C01" },
510 	{ 0x09, "EEPROM, 24C02" },
511 	{ 0x0a, "EEPROM, 24C04" },
512 	{ 0x0b, "EEPROM, 24C08" },
513 	{ 0x0c, "EEPROM, 24C16" },
514 	{ 0x0d, "EEPROM, 24C17" },
515 	{ 0x0e, "EEPROM, 24C32" },
516 	{ 0x0f, "EEPROM, 24C64" },
517 	{ 0x1000, "IPMI FRU Inventory" },
518 	{ 0x1001, "DIMM Memory ID" },
519 	{ 0x1002, "IPMI FRU Inventory" },
520 	{ 0x1003, "System Processor Cartridge FRU" },
521 	{ 0x11, "Reserved" },
522 	{ 0x12, "Reserved" },
523 	{ 0x13, "Reserved" },
524 	{ 0x14, "PCF 8570 256 byte RAM" },
525 	{ 0x15, "PCF 8573 clock/calendar" },
526 	{ 0x16, "PCF 8574A I/O Port" },
527 	{ 0x17, "PCF 8583 clock/calendar" },
528 	{ 0x18, "PCF 8593 clock/calendar" },
529 	{ 0x19, "Clock calendar" },
530 	{ 0x1a, "PCF 8591 A/D, D/A Converter" },
531 	{ 0x1b, "I/O Port" },
532 	{ 0x1c, "A/D Converter" },
533 	{ 0x1d, "D/A Converter" },
534 	{ 0x1e, "A/D, D/A Converter" },
535 	{ 0x1f, "LCD Controller/Driver" },
536 	{ 0x20, "Core Logic (Chip set) Device" },
537 	{ 0x21, "LMC6874 Intelligent Battery controller" },
538 	{ 0x22, "Intelligent Batter controller" },
539 	{ 0x23, "Combo Management ASIC" },
540 	{ 0x24, "Maxim 1617 Temperature Sensor" },
541 	{ 0xbf, "Other/Unspecified" },
542 	{ 0x00, NULL },
543 };
544 
545 const struct valstr ipmi_channel_protocol_vals[] = {
546 	{ 0x00, "reserved" },
547 	{ 0x01, "IPMB-1.0" },
548 	{ 0x02, "ICMB-1.0" },
549 	{ 0x03, "reserved" },
550 	{ 0x04, "IPMI-SMBus" },
551 	{ 0x05, "KCS" },
552 	{ 0x06, "SMIC" },
553 	{ 0x07, "BT-10" },
554 	{ 0x08, "BT-15" },
555 	{ 0x09, "TMode" },
556 	{ 0x1c, "OEM 1" },
557 	{ 0x1d, "OEM 2" },
558 	{ 0x1e, "OEM 3" },
559 	{ 0x1f, "OEM 4" },
560 	{ 0x00, NULL },
561 };
562 
563 
564 const struct valstr ipmi_channel_medium_vals[] = {
565 	{ IPMI_CHANNEL_MEDIUM_RESERVED,	"reserved" },
566 	{ IPMI_CHANNEL_MEDIUM_IPMB_I2C,	"IPMB (I2C)" },
567 	{ IPMI_CHANNEL_MEDIUM_ICMB_1,	"ICMB v1.0" },
568 	{ IPMI_CHANNEL_MEDIUM_ICMB_09,	"ICMB v0.9" },
569 	{ IPMI_CHANNEL_MEDIUM_LAN,	"802.3 LAN" },
570 	{ IPMI_CHANNEL_MEDIUM_SERIAL,	"Serial/Modem" },
571 	{ IPMI_CHANNEL_MEDIUM_LAN_OTHER,"Other LAN" },
572 	{ IPMI_CHANNEL_MEDIUM_SMBUS_PCI,"PCI SMBus" },
573 	{ IPMI_CHANNEL_MEDIUM_SMBUS_1,	"SMBus v1.0/v1.1" },
574 	{ IPMI_CHANNEL_MEDIUM_SMBUS_2,	"SMBus v2.0" },
575 	{ IPMI_CHANNEL_MEDIUM_USB_1,	"USB 1.x" },
576 	{ IPMI_CHANNEL_MEDIUM_USB_2,	"USB 2.x" },
577 	{ IPMI_CHANNEL_MEDIUM_SYSTEM,	"System Interface" },
578 	{ 0x00, NULL },
579 };
580 
581 const struct valstr completion_code_vals[] = {
582 	{ 0x00, "Command completed normally" },
583 	{ 0xc0, "Node busy" },
584 	{ 0xc1, "Invalid command" },
585 	{ 0xc2, "Invalid command on LUN" },
586 	{ 0xc3, "Timeout" },
587 	{ 0xc4, "Out of space" },
588 	{ 0xc5, "Reservation cancelled or invalid" },
589 	{ 0xc6, "Request data truncated" },
590 	{ 0xc7, "Request data length invalid" },
591 	{ 0xc8, "Request data field length limit exceeded" },
592 	{ 0xc9, "Parameter out of range" },
593 	{ 0xca, "Cannot return number of requested data bytes" },
594 	{ 0xcb, "Requested sensor, data, or record not found" },
595 	{ 0xcc, "Invalid data field in request" },
596 	{ 0xcd, "Command illegal for specified sensor or record type" },
597 	{ 0xce, "Command response could not be provided" },
598 	{ 0xcf, "Cannot execute duplicated request" },
599 	{ 0xd0, "SDR Repository in update mode" },
600 	{ 0xd1, "Device firmeware in update mode" },
601 	{ 0xd2, "BMC initialization in progress" },
602 	{ 0xd3, "Destination unavailable" },
603 	{ 0xd4, "Insufficient privilege level" },
604 	{ 0xd5, "Command not supported in present state" },
605 	{ 0xd6, "Cannot execute command, command disabled" },
606 	{ 0xff, "Unspecified error" },
607 	{ 0x00, NULL }
608 };
609 
610 const struct valstr ipmi_chassis_power_control_vals[] = {
611 	{ IPMI_CHASSIS_CTL_POWER_DOWN,   "Down/Off" },
612 	{ IPMI_CHASSIS_CTL_POWER_UP,     "Up/On" },
613 	{ IPMI_CHASSIS_CTL_POWER_CYCLE,  "Cycle" },
614 	{ IPMI_CHASSIS_CTL_HARD_RESET,   "Reset" },
615 	{ IPMI_CHASSIS_CTL_PULSE_DIAG,   "Diag" },
616 	{ IPMI_CHASSIS_CTL_ACPI_SOFT,    "Soft" },
617 	{ 0x00, NULL },
618 };
619 
620 const struct valstr ipmi_auth_algorithms[] = {
621 	{ IPMI_AUTH_RAKP_NONE,      "none"      },
622 	{ IPMI_AUTH_RAKP_HMAC_SHA1, "hmac_sha1" },
623 	{ IPMI_AUTH_RAKP_HMAC_MD5,  "hmac_md5"  },
624 #ifdef HAVE_CRYPTO_SHA256
625 	{ IPMI_AUTH_RAKP_HMAC_SHA256, "hmac_sha256" },
626 #endif /* HAVE_CRYPTO_SHA256 */
627 	{ 0x00, NULL }
628 };
629 
630 const struct valstr ipmi_integrity_algorithms[] = {
631 	{ IPMI_INTEGRITY_NONE,         "none" },
632 	{ IPMI_INTEGRITY_HMAC_SHA1_96, "hmac_sha1_96" },
633 	{ IPMI_INTEGRITY_HMAC_MD5_128, "hmac_md5_128" },
634 	{ IPMI_INTEGRITY_MD5_128 ,     "md5_128"      },
635 #ifdef HAVE_CRYPTO_SHA256
636 	{ IPMI_INTEGRITY_HMAC_SHA256_128, "sha256_128" },
637 #endif /* HAVE_CRYPTO_SHA256 */
638 	{ 0x00, NULL }
639 };
640 
641 const struct valstr ipmi_encryption_algorithms[] = {
642 	{ IPMI_CRYPT_NONE,        "none"        },
643 	{ IPMI_CRYPT_AES_CBC_128, "aes_cbc_128" },
644 	{ IPMI_CRYPT_XRC4_128,    "xrc4_128"    },
645 	{ IPMI_CRYPT_XRC4_40,     "xrc4_40"     },
646 	{ 0x00, NULL }
647 };
648 
649 const struct valstr ipmi_user_enable_status_vals[] = {
650 	{ 0x00, "unknown" },
651 	{ 0x40, "enabled" },
652 	{ 0x80, "disabled" },
653 	{ 0xC0, "reserved" },
654 	{ 0xFF, NULL },
655 };
656 
657 const struct valstr picmg_frucontrol_vals[] = {
658 	{ 0, "Cold Reset" },
659 	{ 1, "Warm Reset"  },
660 	{ 2, "Graceful Reboot" },
661 	{ 3, "Issue Diagnostic Interrupt" },
662 	{ 4, "Quiesce" },
663 	{ 5, NULL },
664 };
665 
666 const struct valstr picmg_clk_family_vals[] = {
667 	{ 0x00, "Unspecified" },
668 	{ 0x01, "SONET/SDH/PDH" },
669 	{ 0x02, "Reserved for PCI Express" },
670 	{ 0x03, "Reserved" }, /* from 03h to C8h */
671 	{ 0xC9, "Vendor defined clock family" }, /* from C9h to FFh */
672 	{ 0x00, NULL },
673 };
674 
675 const struct oemvalstr picmg_clk_accuracy_vals[] = {
676 	{ 0x01, 10, "PRS" },
677 	{ 0x01, 20, "STU" },
678 	{ 0x01, 30, "ST2" },
679 	{ 0x01, 40, "TNC" },
680 	{ 0x01, 50, "ST3E" },
681 	{ 0x01, 60, "ST3" },
682 	{ 0x01, 70, "SMC" },
683 	{ 0x01, 80, "ST4" },
684 	{ 0x01, 90, "DUS" },
685    { 0x02, 0xE0, "PCI Express Generation 2" },
686    { 0x02, 0xF0, "PCI Express Generation 1" },
687    { 0xffffff, 0x00,  NULL }
688 };
689 
690 const struct oemvalstr picmg_clk_resource_vals[] = {
691 	{ 0x0, 0, "On-Carrier Device 0" },
692 	{ 0x0, 1, "On-Carrier Device 1" },
693 	{ 0x1, 1, "AMC Site 1 - A1" },
694 	{ 0x1, 2, "AMC Site 1 - A2" },
695 	{ 0x1, 3, "AMC Site 1 - A3" },
696 	{ 0x1, 4, "AMC Site 1 - A4" },
697 	{ 0x1, 5, "AMC Site 1 - B1" },
698 	{ 0x1, 6, "AMC Site 1 - B2" },
699 	{ 0x1, 7, "AMC Site 1 - B3" },
700 	{ 0x1, 8, "AMC Site 1 - B4" },
701    { 0x2, 0, "ATCA Backplane" },
702    { 0xffffff, 0x00,  NULL }
703 };
704 
705 const struct oemvalstr picmg_clk_id_vals[] = {
706 	{ 0x0, 0, "Clock 0" },
707 	{ 0x0, 1, "Clock 1" },
708 	{ 0x0, 2, "Clock 2" },
709 	{ 0x0, 3, "Clock 3" },
710 	{ 0x0, 4, "Clock 4" },
711 	{ 0x0, 5, "Clock 5" },
712 	{ 0x0, 6, "Clock 6" },
713 	{ 0x0, 7, "Clock 7" },
714 	{ 0x0, 8, "Clock 8" },
715 	{ 0x0, 9, "Clock 9" },
716 	{ 0x0, 10, "Clock 10" },
717 	{ 0x0, 11, "Clock 11" },
718 	{ 0x0, 12, "Clock 12" },
719 	{ 0x0, 13, "Clock 13" },
720 	{ 0x0, 14, "Clock 14" },
721 	{ 0x0, 15, "Clock 15" },
722 	{ 0x1, 1, "TCLKA" },
723 	{ 0x1, 2, "TCLKB" },
724 	{ 0x1, 3, "TCLKC" },
725 	{ 0x1, 4, "TCLKD" },
726 	{ 0x1, 5, "FLCKA" },
727    { 0x2, 1, "CLK1A" },
728    { 0x2, 2, "CLK1A" },
729    { 0x2, 3, "CLK1A" },
730    { 0x2, 4, "CLK1A" },
731    { 0x2, 5, "CLK1A" },
732    { 0x2, 6, "CLK1A" },
733    { 0x2, 7, "CLK1A" },
734    { 0x2, 8, "CLK1A" },
735    { 0x2, 9, "CLK1A" },
736    { 0xffffff, 0x00,  NULL }
737 };
738 
739 const struct valstr picmg_busres_id_vals[] = {
740    { 0x0, "Metallic Test Bus pair #1" },
741    { 0x1, "Metallic Test Bus pair #2" },
742    { 0x2, "Synch clock group 1 (CLK1)" },
743    { 0x3, "Synch clock group 2 (CLK2)" },
744    { 0x4, "Synch clock group 3 (CLK3)" },
745 	{ 0x5, NULL }
746 };
747 const struct valstr picmg_busres_board_cmd_vals[] = {
748   { 0x0, "Query" },
749   { 0x1, "Release" },
750   { 0x2, "Force" },
751   { 0x3, "Bus Free" },
752   { 0x4, NULL }
753 };
754 
755 const struct valstr picmg_busres_shmc_cmd_vals[] = {
756   { 0x0, "Request" },
757   { 0x1, "Relinquish" },
758   { 0x2, "Notify" },
759   { 0x3, NULL }
760 };
761 
762 const struct oemvalstr picmg_busres_board_status_vals[] = {
763  { 0x0, 0x0, "In control" },
764  { 0x0, 0x1, "No control" },
765  { 0x1, 0x0, "Ack" },
766  { 0x1, 0x1, "Refused" },
767  { 0x1, 0x2, "No control" },
768  { 0x2, 0x0, "Ack" },
769  { 0x2, 0x1, "No control" },
770  { 0x3, 0x0, "Accept" },
771  { 0x3, 0x1, "Not Needed" },
772  { 0xffffff, 0x00,  NULL }
773 };
774 
775 const struct oemvalstr picmg_busres_shmc_status_vals[] = {
776  { 0x0, 0x0, "Grant" },
777  { 0x0, 0x1, "Busy" },
778  { 0x0, 0x2, "Defer" },
779  { 0x0, 0x3, "Deny" },
780 
781  { 0x1, 0x0, "Ack" },
782  { 0x1, 0x1, "Error" },
783 
784  { 0x2, 0x0, "Ack" },
785  { 0x2, 0x1, "Error" },
786  { 0x2, 0x2, "Deny" },
787 
788  { 0xffffff, 0x00,  NULL }
789 };
790